:root {
  color-scheme: light;
  --ink: #111827;
  --muted: #65707c;
  --line: #d8dee4;
  --paper: #ffffff;
  --bg: #f6f7f9;
  --blue: #0f2742;
  --green: #16805d;
  --red: #c4362e;
  --amber: #b7791f;
  --teal: #247c86;
  --soft-blue: #eef5ff;
  --soft-green: #eef8f4;
  --soft-red: #fff2f0;
  --soft-amber: #fff8e8;
  --shadow: 0 10px 34px rgba(15, 39, 66, 0.08);
  --surface-subtle: #fbfcfd;
  /* アクセント色（多数の var(--brand) 参照先）と淡いパネル背景。未定義だったため補完。 */
  --brand: #0f2742;
  --soft: #f1f4f8;
  --danger: #c4362e;
}

/* ===== DATASET EXPANSION LAYER: support reach and RMO minimum data ===== */
.citizen-support-reach-requirements {
  margin: 0 0 10px;
  padding: 11px;
  border: 1px solid color-mix(in srgb, #0f766e 22%, var(--line));
  border-radius: 10px;
  background: color-mix(in srgb, #0f766e 6%, var(--paper));
}

.citizen-support-reach-requirements > div {
  display: grid;
  gap: 3px;
  margin-bottom: 7px;
}

.citizen-support-reach-requirements strong {
  color: #0f766e;
  font-size: 10px;
}

.citizen-support-reach-requirements > div span {
  color: var(--muted);
  font-size: 9px;
  font-weight: 800;
}

.citizen-support-reach-requirements p {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
  margin: 0;
}

.citizen-support-reach-requirements p b {
  padding: 4px 7px;
  border-radius: 999px;
  color: #115e59;
  background: #ccfbf1;
  font-size: 8px;
  font-weight: 900;
}

.citizen-support-reach-requirements small {
  display: block;
  margin-top: 7px;
  color: var(--muted);
  font-size: 8px;
  line-height: 1.55;
}

.rmo-minimum-data {
  border-color: color-mix(in srgb, #0f766e 24%, var(--line));
  background:
    radial-gradient(circle at top right, rgba(20, 184, 166, .12), transparent 34%),
    linear-gradient(135deg, color-mix(in srgb, #ecfdf5 82%, var(--paper)), var(--paper));
}

.rmo-minimum-data-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
  margin-top: 18px;
}

.rmo-minimum-data-grid article {
  padding: 15px;
  border: 1px solid var(--line);
  border-radius: 13px;
  background: color-mix(in srgb, var(--paper) 88%, #ecfdf5);
}

.rmo-minimum-data-grid small {
  color: #0f766e;
  font-size: 9px;
  font-weight: 900;
}

.rmo-minimum-data-grid strong {
  display: block;
  margin: 5px 0;
  font-size: 15px;
}

.rmo-minimum-data-grid span {
  color: #166534;
  font-size: 10px;
  font-weight: 900;
}

.rmo-minimum-data-grid p {
  margin: 7px 0 0;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.65;
}

.rmo-minimum-data-note {
  margin-top: 14px;
  padding: 14px 16px;
  border-left: 4px solid #0f766e;
  border-radius: 10px;
  background: color-mix(in srgb, #0f766e 7%, var(--paper));
}

.rmo-minimum-data-note strong {
  color: #0f766e;
}

.rmo-minimum-data-note p {
  margin: 5px 0 0;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.75;
}

.dataset-expansion-board {
  margin: 26px 0;
  padding: clamp(18px, 3vw, 30px);
  border: 1px solid color-mix(in srgb, #0f766e 18%, var(--line));
  border-radius: 24px;
  background:
    radial-gradient(circle at top right, rgba(20, 184, 166, .12), transparent 34%),
    linear-gradient(135deg, color-mix(in srgb, #ecfdf5 78%, var(--paper)), var(--paper));
  box-shadow: 0 18px 46px rgba(15, 39, 66, .08);
}

.dataset-expansion-head {
  display: grid;
  gap: 8px;
  max-width: 880px;
  margin-bottom: 20px;
}

.dataset-expansion-head span {
  color: #0f766e;
  font-size: 11px;
  font-weight: 950;
  letter-spacing: .12em;
}

.dataset-expansion-head h3 {
  margin: 0;
  font-size: clamp(22px, 3vw, 34px);
  letter-spacing: -.03em;
}

.dataset-expansion-head p {
  margin: 0;
  color: var(--muted);
  font-size: clamp(14px, 1.5vw, 16px);
  line-height: 1.85;
}

.dataset-sprint-board {
  margin: 0 0 22px;
  padding: clamp(15px, 2vw, 22px);
  border: 1px solid color-mix(in srgb, #0f766e 18%, var(--line));
  border-radius: 20px;
  background: color-mix(in srgb, var(--paper) 84%, #f0fdfa);
}

.dataset-sprint-head {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 14px;
  margin-bottom: 14px;
}

.dataset-sprint-head strong {
  font-size: clamp(18px, 2vw, 24px);
}

.dataset-sprint-head span {
  max-width: 560px;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.7;
}

.dataset-sprint-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
}

.dataset-sprint-grid article {
  display: grid;
  gap: 10px;
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 16px;
  background: var(--paper);
}

.dataset-sprint-grid header {
  display: flex;
  justify-content: space-between;
  gap: 8px;
}

.dataset-sprint-grid header span,
.dataset-sprint-grid header b {
  padding: 4px 8px;
  border-radius: 999px;
  font-size: 10px;
  font-weight: 950;
}

.dataset-sprint-grid header span {
  color: #0f766e;
  background: #ccfbf1;
}

.dataset-sprint-grid header b {
  color: #475569;
  background: #f1f5f9;
}

.dataset-sprint-grid h4 {
  margin: 0;
  font-size: 15px;
  line-height: 1.45;
}

.dataset-sprint-grid dl {
  display: grid;
  gap: 7px;
  margin: 0;
}

.dataset-sprint-grid dt {
  color: #0f766e;
  font-size: 10px;
  font-weight: 950;
}

.dataset-sprint-grid dd {
  margin: 2px 0 0;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.55;
}

.dataset-sprint-grid button {
  appearance: none;
  width: 100%;
  border: 1px solid color-mix(in srgb, #0f766e 26%, var(--line));
  border-radius: 999px;
  padding: 9px 12px;
  color: #0f766e;
  background: color-mix(in srgb, #0f766e 6%, var(--paper));
  font-size: 11px;
  font-weight: 950;
  cursor: pointer;
}

.dataset-expansion-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
}

.dataset-expansion-card {
  display: grid;
  gap: 15px;
  padding: clamp(16px, 2vw, 22px);
  border: 1px solid var(--line);
  border-radius: 20px;
  background: color-mix(in srgb, var(--paper) 92%, #ecfdf5);
}

.dataset-expansion-card.level-critical {
  border-color: color-mix(in srgb, #dc2626 28%, var(--line));
}

.dataset-expansion-card.level-high {
  border-color: color-mix(in srgb, #b7791f 30%, var(--line));
}

.dataset-expansion-card header {
  display: grid;
  gap: 5px;
}

.dataset-expansion-card header span {
  width: fit-content;
  padding: 5px 10px;
  border-radius: 999px;
  color: #0f766e;
  background: #ccfbf1;
  font-size: 10px;
  font-weight: 950;
}

.dataset-expansion-card.level-critical header span {
  color: #991b1b;
  background: #fee2e2;
}

.dataset-expansion-card.level-high header span {
  color: #92400e;
  background: #fef3c7;
}

.dataset-expansion-card header strong {
  font-size: clamp(18px, 2vw, 23px);
  line-height: 1.35;
}

.dataset-expansion-card header small {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.dataset-expansion-card header em {
  width: fit-content;
  padding: 4px 9px;
  border: 1px solid color-mix(in srgb, #0f766e 18%, var(--line));
  border-radius: 999px;
  color: #0f766e;
  background: color-mix(in srgb, #0f766e 6%, var(--paper));
  font-size: 11px;
  font-style: normal;
  font-weight: 900;
}

.dataset-expansion-card > p {
  margin: 0;
  color: var(--ink);
  font-size: 14px;
  line-height: 1.8;
}

.dataset-expansion-card > p b,
.dataset-expansion-card footer b {
  margin-right: 8px;
  color: #0f766e;
}

.dataset-expansion-sources {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}

.dataset-expansion-sources div {
  padding: 12px;
  border-radius: 14px;
  background: color-mix(in srgb, var(--paper) 74%, #f8fafc);
}

.dataset-expansion-sources strong {
  display: block;
  margin-bottom: 8px;
  font-size: 12px;
}

.dataset-expansion-sources p {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin: 0;
}

.dataset-expansion-sources span {
  padding: 5px 8px;
  border-radius: 999px;
  color: #334155;
  background: #f1f5f9;
  font-size: 11px;
  font-weight: 850;
}

.dataset-expansion-card footer {
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: center;
  gap: 14px;
  padding: 13px;
  border-left: 4px solid #0f766e;
  border-radius: 13px;
  background: color-mix(in srgb, #0f766e 7%, var(--paper));
  color: var(--muted);
  font-size: 13px;
  line-height: 1.7;
}

.dataset-expansion-card footer div {
  min-width: 0;
}

.dataset-expansion-card footer button {
  appearance: none;
  border: 0;
  border-radius: 999px;
  padding: 11px 15px;
  color: #fff;
  background: #0f766e;
  font-size: 12px;
  font-weight: 950;
  cursor: pointer;
  box-shadow: 0 10px 24px rgba(15, 118, 110, .18);
  transition: transform .18s ease, box-shadow .18s ease, background .18s ease;
}

.dataset-expansion-card footer button:hover,
.dataset-expansion-card footer button:focus-visible {
  background: #115e59;
  box-shadow: 0 14px 30px rgba(15, 118, 110, .26);
  transform: translateY(-1px);
}

@media (max-width: 1000px) {
  .rmo-minimum-data-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .dataset-expansion-grid,
  .dataset-expansion-sources,
  .dataset-sprint-grid {
    grid-template-columns: 1fr;
  }

  .dataset-sprint-head {
    align-items: start;
    flex-direction: column;
  }

  .dataset-expansion-card footer {
    grid-template-columns: 1fr;
  }

  .dataset-expansion-card footer button {
    width: 100%;
  }
}

@media (max-width: 560px) {
  .rmo-minimum-data-grid {
    grid-template-columns: 1fr;
  }
}

/* ===== CHART DELIGHT LAYER: charts should feel alive without hiding the data ===== */
.chart-fun-badge {
  position: absolute;
  top: 14px;
  right: 14px;
  z-index: 1;
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 6px 11px;
  border: 1px solid color-mix(in srgb, var(--uto-accent, #0f766e) 24%, transparent);
  border-radius: 999px;
  color: var(--uto-accent, #0f766e);
  background: color-mix(in srgb, var(--paper) 88%, transparent);
  box-shadow: 0 10px 28px rgba(15, 39, 66, .08);
  font-size: 11px;
  font-weight: 950;
  letter-spacing: .03em;
  pointer-events: none;
}

.chart-fun-badge span {
  width: 7px;
  height: 7px;
  border-radius: 999px;
  background: currentColor;
  box-shadow: 0 0 0 5px color-mix(in srgb, currentColor 12%, transparent);
}

main :is(.chart, .graph-chart, .os-chart, .trend-mini-chart, .utility-radar-card, .finance-radar-card, .policy-radar-card, .governance-radar, .risk-radar-card, .municipality-radar-panel, .population-history-chart) svg {
  overflow: visible;
}

main :is(.chart, .graph-chart, .os-chart, .trend-mini-chart, .utility-radar-card, .finance-radar-card, .policy-radar-card, .governance-radar, .risk-radar-card, .municipality-radar-panel, .population-history-chart) svg :is(polyline, path, polygon, rect, circle) {
  transition:
    opacity .22s ease,
    filter .22s ease,
    transform .22s ease,
    stroke-width .22s ease;
}

main :is(.chart, .graph-chart, .os-chart) svg :is(polyline, path[class*="line"], .graph-series-line, .line) {
  filter: drop-shadow(0 5px 8px rgba(15, 39, 66, .1));
}

main :is(.chart, .graph-chart, .os-chart) svg:hover :is(polyline, path[class*="line"], .graph-series-line, .line) {
  filter: drop-shadow(0 8px 12px rgba(15, 39, 66, .16));
}

main :is(.graph-panel, .chart, .graph-chart, .os-chart, .utility-radar-card, .finance-radar-card, .policy-radar-card, .governance-radar, .risk-radar-card):hover {
  --chart-glow: color-mix(in srgb, var(--uto-accent, #0f766e) 18%, transparent);
}

.graph-panel:hover {
  border-color: color-mix(in srgb, var(--uto-accent, #0f766e) 28%, var(--line));
  box-shadow: 0 20px 52px rgba(15, 39, 66, .13);
}

.svg-hover-node:hover .svg-hit-area,
.svg-hover-node:focus-visible .svg-hit-area {
  fill: color-mix(in srgb, var(--uto-accent, #0f766e) 12%, transparent);
  stroke: color-mix(in srgb, var(--uto-accent, #0f766e) 34%, transparent);
  stroke-width: 1.4;
}

.chart-legend-fun span {
  transition: transform .18s ease, color .18s ease;
}

.chart-legend-fun span:hover {
  color: var(--ink);
  transform: translateY(-1px);
}

.playful-chart-svg .grid,
.playful-chart-svg .grid-line {
  stroke-dasharray: 2 7;
  opacity: .62;
}

main :is(.utility-radar-value, .finance-radar-value, .policy-radar-value, .governance-radar-value, .risk-radar-value, .gac-radar-value, .radar-value) {
  filter: drop-shadow(0 8px 14px rgba(15, 39, 66, .16));
  transform-box: fill-box;
  transform-origin: center;
}

main :is(.uto-os-radar, .utility-radar-card, .finance-radar-card, .policy-radar-card, .governance-radar, .risk-radar-card) svg:hover :is(.utility-radar-value, .finance-radar-value, .policy-radar-value, .governance-radar-value, .risk-radar-value, .gac-radar-value, .radar-value) {
  filter: drop-shadow(0 12px 20px rgba(15, 39, 66, .22));
}

main :is(.bar-track, .tax-usage-bar, .wr-cmp-bar, .sd-cat-bar, .muni-rank-bar, .muni-health-bar, .cw-bar-row, .sc-track, .sb-srcbar-track) {
  transition: transform .18s ease, filter .18s ease;
}

main :is(.bar-row, .cw-bar-row, .sd-cat-row, .wr-cmp-row, .sc-row):hover :is(.bar-track, .tax-usage-bar, .wr-cmp-bar, .sd-cat-bar, .muni-rank-bar, .muni-health-bar, .sc-track) {
  filter: saturate(1.15) drop-shadow(0 6px 10px rgba(15, 39, 66, .12));
  transform: translateX(2px);
}

@media (prefers-reduced-motion: no-preference) {
  @keyframes chart-draw-long { from { stroke-dashoffset: 1800; } to { stroke-dashoffset: 0; } }
  @keyframes chart-draw-mid { from { stroke-dashoffset: 900; } to { stroke-dashoffset: 0; } }
  @keyframes chart-pop-soft { 0% { opacity: 0; transform: scale(.65); } 70% { opacity: 1; transform: scale(1.08); } 100% { transform: scale(1); } }
  @keyframes chart-rise-soft { from { opacity: .2; transform: scaleY(.02); } to { opacity: 1; transform: scaleY(1); } }
  @keyframes chart-sweep-x { from { transform: scaleX(0); } to { transform: scaleX(1); } }
  @keyframes radar-bloom { from { opacity: 0; transform: scale(.72) rotate(-3deg); } to { opacity: 1; transform: scale(1) rotate(0); } }
  @keyframes chart-pulse-dot { 0%, 100% { transform: scale(1); opacity: 1; } 50% { transform: scale(1.28); opacity: .72; } }
  @keyframes badge-twinkle { 0%, 100% { transform: scale(1); opacity: 1; } 50% { transform: scale(1.5); opacity: .6; } }
  @keyframes chip-pop-in { from { opacity: 0; transform: translateY(8px) scale(.98); } to { opacity: 1; transform: translateY(0) scale(1); } }

  .chart-fun-badge span {
    animation: badge-twinkle 1.8s ease-in-out infinite;
  }

  .chart-reveal-on-scroll:not(.is-chart-revealed) :is(svg, canvas, .graph-discovery-strip span, .chart-fun-badge span, polyline, path, polygon, rect, circle, i) {
    animation-play-state: paused !important;
  }

  .chart-reveal-on-scroll:not(.is-chart-revealed) {
    filter: saturate(.96);
  }

  .chart-reveal-on-scroll.is-chart-revealed {
    filter: saturate(1);
  }

  .graph-panel .graph-discovery-strip span {
    animation: chip-pop-in .45s cubic-bezier(.16, 1, .3, 1) both;
  }

  .graph-panel .graph-discovery-strip span:nth-child(2) { animation-delay: .06s; }
  .graph-panel .graph-discovery-strip span:nth-child(3) { animation-delay: .12s; }
  .graph-panel .graph-discovery-strip span:nth-child(4) { animation-delay: .18s; }

  .playful-chart-svg.line-show :is(.graph-series-line, .line),
  .graph-chart svg:not(.bar-show) > polyline,
  .chart svg > polyline,
  .stat-discovery-chart polyline,
  .uto-os-line polyline {
    stroke-dasharray: 1800;
    animation: chart-draw-long 1.25s cubic-bezier(.16, 1, .3, 1) both;
    animation-delay: calc(var(--series, 0) * .16s);
  }

  .playful-chart-svg .svg-series-point,
  .playful-chart-svg .point,
  .chart svg circle,
  .graph-chart svg circle,
  .uto-os-line circle {
    transform-box: fill-box;
    transform-origin: center;
    animation: chart-pop-soft .52s cubic-bezier(.34, 1.56, .64, 1) both;
    animation-delay: calc(.55s + var(--point, 0) * .045s + var(--series, 0) * .12s);
  }

  .playful-chart-svg.bar-show .graph-stack-seg,
  .chart svg rect:not(.svg-hit-area),
  .graph-chart svg rect:not(.svg-hit-area),
  .wf-bar,
  .stack-seg {
    transform-box: fill-box;
    transform-origin: bottom;
    animation: chart-rise-soft .62s cubic-bezier(.16, 1, .3, 1) both;
    animation-delay: calc(var(--col, 0) * .07s + var(--seg, 0) * .045s);
  }

  main :is(.bar-track, .tax-usage-bar, .wr-cmp-bar, .sd-cat-bar, .muni-rank-bar, .muni-health-bar, .sc-track) i,
  main :is(.en-bar, .sb-srcbar-track) i,
  main :is(.revenue-fill, .expense-fill, .ph-bar-fill) {
    transform-origin: left center;
    animation: chart-sweep-x .8s cubic-bezier(.16, 1, .3, 1) both;
  }

  main :is(.mpt-bars i, .wr-bars i, .population-age-bars i, .en-col i) {
    transform-origin: bottom;
    animation: chart-rise-soft .7s cubic-bezier(.16, 1, .3, 1) both;
  }

  main :is(.utility-radar-value, .finance-radar-value, .policy-radar-value, .governance-radar-value, .risk-radar-value, .gac-radar-value, .radar-value) {
    animation: radar-bloom .85s cubic-bezier(.16, 1, .3, 1) both;
  }

  .svg-series-point.is-last,
  .sparkline circle:last-child {
    animation: chart-pop-soft .5s cubic-bezier(.34, 1.56, .64, 1) .7s both, chart-pulse-dot 2.4s ease-in-out 1.4s infinite;
  }
}

@media (prefers-reduced-motion: reduce) {
  .chart-fun-badge {
    display: none;
  }

  main :is(.chart, .graph-chart, .os-chart, .trend-mini-chart, .utility-radar-card, .finance-radar-card, .policy-radar-card, .governance-radar, .risk-radar-card, .municipality-radar-panel, .population-history-chart) svg :is(polyline, path, polygon, rect, circle) {
    animation: none !important;
    transition: none !important;
  }
}

:root[data-theme="dark"] {
  color-scheme: dark;
  --ink: #edf2f7;
  --muted: #9aa8b7;
  --line: #293544;
  --paper: #111821;
  --bg: #0b1017;
  --blue: #72a7ff;
  --green: #56d6a1;
  --red: #ff7b72;
  --amber: #f5bd62;
  --teal: #62c8d2;
  --soft-blue: #14243a;
  --soft-green: #102820;
  --soft-red: #301817;
  --soft-amber: #302512;
  --surface-subtle: #151e28;
  --shadow: 0 16px 42px rgba(0, 0, 0, 0.24);
  --brand: #72a7ff;
  --soft: #161f2b;
  --danger: #ff7b72;
}

/* 宇土OS redesign foundation */
:root {
  --uto-navy: #13283f;
  --uto-accent: #176b5b;
  --uto-focus: #d7a52b;
  --status-good: #16805d;
  --status-watch: #b7791f;
  --status-warning: #c35d25;
  --status-decision: #7656a8;
  --status-structural: #b93632;
  --radius-card: 14px;
  --radius-control: 10px;
  --content-max: 1600px;
  --font-body: clamp(16px, 0.28vw + 15.2px, 18px);
  --font-ui: clamp(14px, 0.18vw + 13.4px, 15.5px);
  --font-caption: clamp(12.5px, 0.14vw + 12px, 14px);
  --font-micro: clamp(11.5px, 0.12vw + 11px, 13px);
  --line-body: 1.82;
  --line-ui: 1.64;
}

:root[data-theme="dark"] {
  --uto-navy: #dce9f7;
  --uto-accent: #62c7ae;
  --uto-focus: #f0c767;
}

* {
  box-sizing: border-box;
}

:where(button, a, input, select, summary):focus-visible {
  outline: 3px solid color-mix(in srgb, var(--uto-focus) 78%, white);
  outline-offset: 3px;
}

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

  *,
  *::before,
  *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
  }
}

/* VISUAL PRIORITY LAYER
   重要判断、リスク、アクションを視線が拾いやすい階層に引き上げる。 */
@media screen {
  main :is([class*="hero"]) {
    position: relative;
    overflow: hidden;
    isolation: isolate;
  }

  main :is([class*="hero"])::after {
    position: absolute;
    inset: -30% -12% auto auto;
    z-index: -1;
    width: min(420px, 42vw);
    height: min(420px, 42vw);
    border-radius: 999px;
    background: radial-gradient(circle, rgba(255,255,255,.22), transparent 68%);
    content: "";
  }

  main :is(.panel-head, header):has(> :is(h1, h2, h3)) {
    align-items: end;
    gap: 18px;
  }

  main :is(.panel-head, header):has(> :is(h1, h2, h3)) :is(h1, h2, h3) {
    margin-bottom: 4px;
  }

  main :is(.panel-head, header):has(> :is(h1, h2, h3)) :is(span:first-child, .eyebrow) {
    display: inline-flex;
    width: fit-content;
    min-height: 28px;
    align-items: center;
    padding: 5px 11px;
    border-radius: 999px;
    color: var(--uto-accent);
    background: color-mix(in srgb, var(--soft-green) 68%, var(--paper));
    font-weight: 950;
    letter-spacing: .1em;
  }

  main :is(.stat-ai-diagnosis, .ai-diagnosis, .diagnosis-card, .future-command-center, .city-health-card:first-of-type, .strategy-room-card:first-of-type, .integrated-os-card:first-of-type, .policy-ledger-card:first-of-type, .action-center-card:first-of-type) {
    border-color: color-mix(in srgb, var(--uto-accent) 42%, var(--line)) !important;
    background:
      linear-gradient(145deg, color-mix(in srgb, var(--soft-green) 42%, var(--paper)), color-mix(in srgb, var(--paper) 96%, transparent)) !important;
    box-shadow: 0 26px 74px rgba(23, 107, 91, .13);
  }

  main :is(.management-alerts article.red, .stat-health-grid article.alert, .city-health-domain-grid article.danger, .future-risk-list article, .data-gap-alert-card, .risk-card, .focus-insight.bad) {
    border-left: 6px solid var(--status-structural) !important;
    background:
      linear-gradient(90deg, color-mix(in srgb, var(--soft-red) 58%, transparent), color-mix(in srgb, var(--paper) 94%, transparent)) !important;
  }

  main :is(.management-alerts article.yellow, .city-health-domain-grid article.watch, .focus-insight.warn, .stat-alert-list article) {
    border-left: 6px solid var(--status-watch) !important;
    background:
      linear-gradient(90deg, color-mix(in srgb, var(--soft-amber) 66%, transparent), color-mix(in srgb, var(--paper) 94%, transparent)) !important;
  }

  main :is(.priority-board article, .city-health-priority article, .own-source-priorities article, .future-decision-list li, .action-center-card, .project-card, .policy-ledger-card) {
    position: relative;
  }

  main :is(.priority-board article, .city-health-priority article, .own-source-priorities article, .future-decision-list li)::before {
    position: absolute;
    inset: 12px auto 12px 0;
    width: 4px;
    border-radius: 999px;
    background: linear-gradient(180deg, var(--uto-accent), var(--uto-focus));
    content: "";
  }

  main :is(.priority-board article > b, .city-health-priority article > b, .stat-ranking article > b, .district-needs article > b) {
    box-shadow: 0 10px 22px rgba(15, 39, 66, .14);
    transform: translateZ(0);
  }

  main :is(.value, .metric-value, .kpi .value, .district-facility-summary strong, .future-horizon-grid > article > strong, .city-health-domain-grid article > div > strong, .economy-kpis strong, .own-source-kpis strong, .trading-public-support strong) {
    letter-spacing: -.04em;
    font-variant-numeric: tabular-nums;
  }

  main :is(.budget-gate-actions button, .future-choice-actions button, .future-project-grid button, .future-project-actions button, .smart-result-jump, .fac-card-open, .integrated-module-grid button, .city-health-domain-grid button) {
    box-shadow: 0 12px 28px rgba(23, 107, 91, .14);
  }

  main :is(.budget-gate-actions button, .future-choice-actions button, .future-project-grid button, .future-project-actions button, .smart-result-jump, .fac-card-open, .integrated-module-grid button, .city-health-domain-grid button):hover {
    box-shadow: 0 18px 42px rgba(23, 107, 91, .22);
    transform: translateY(-2px);
  }

  main :is(.grade, .health-badge, .status-badge, [data-status], .wf-score-pill, .uto-kpi-trend) {
    box-shadow: inset 0 0 0 1px color-mix(in srgb, currentColor 28%, transparent);
  }
}

/* DENSE CONTENT RELIEF LAYER
   一覧・表・ランキング・多列KPIの窮屈さをほどき、スクロール前提で読み進めやすくする。 */
@media screen {
  main > :is(section, div):not(.toolbar):not(.hidden) + :is(section, div):not(.toolbar):not(.hidden) {
    margin-top: clamp(18px, 3vw, 44px);
  }

  main :is(.stat-discovery-kpis, .stat-health-grid, .stat-action-grid, .budget-gate-readiness, .budget-gate-grid, .integrated-module-grid, .integrated-data-grid, .economy-score-grid, .economy-kpis, .own-source-kpis, .trading-resource-grid, .trading-public-support, .trading-kpi-list, .trading-scenarios, .trading-pilot, .future-horizon-grid, .citizen-support-results, .support-source-quality-grid, .national-policy-summary, .national-policy-frameworks, .national-funding-opportunities > div, .national-subsidy-audit-kpis, .national-subsidy-audit-themes, .support-delivery-funnel, .wf-kpi-grid, .wf-percapita-grid, .bm-rank-strip, .realloc-readouts, .committee-dd-grid, .insight-digest-grid, .skpi-panel .skpi-signal-grid, .fp-readouts, .district-kpis, .kpi-dictionary-summary, .kpi-dictionary-list, .kpi-dictionary-governance > div) {
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr)) !important;
    gap: clamp(16px, 2.2vw, 28px) !important;
  }

  main :is(.economy-command-grid, .own-source-grid, .trading-room-grid, .future-center-grid, .stat-discovery-main, .stat-discovery-grid, .integrated-os-split, .district-data-gaps, .bm-grid) {
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 420px), 1fr)) !important;
    gap: clamp(18px, 2.6vw, 34px) !important;
  }

  main :is(.priority-board article, .stat-ranking article, .management-alerts article, .future-risk-list article, .future-decision-list li, .own-source-priorities article, .economy-findings article, .tax-source-trends article, .trading-pilot article, .district-facility-list article, .metric-finder-row, .wf-similar-item, .bm-refs li, .realloc-cat, .cdd-theme) {
    gap: clamp(12px, 1.8vw, 22px) !important;
    padding: clamp(14px, 2vw, 22px) !important;
  }

  main :is(.integrated-os-loop, .integrated-operating-flow, .management-scenario, .management-flow, .economy-value-chain, .own-source-flow, .trading-value-chain, .future-center-flow, .stat-structure-flow, .scenario-cascade) {
    gap: 12px !important;
    padding: 14px 4px 22px !important;
    scroll-snap-type: x proximity;
    scrollbar-width: thin;
  }

  main :is(.integrated-os-loop, .integrated-operating-flow, .management-scenario, .management-flow, .economy-value-chain, .own-source-flow, .trading-value-chain, .future-center-flow, .stat-structure-flow, .scenario-cascade) > :is(span, article) {
    min-width: clamp(150px, 18vw, 240px) !important;
    padding: clamp(14px, 1.8vw, 20px) !important;
    border: 1px solid var(--premium-border);
    border-radius: 18px !important;
    scroll-snap-align: start;
  }

  main :is(.table-wrap, .table-panel, .pdf-table-panel, .raw-panel, .district-comparison-table, .wf-table, .comparison-table) {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: thin;
  }

  main :is(table, .wf-table) {
    width: 100%;
    border-collapse: separate !important;
    border-spacing: 0;
  }

  main :is(th, td) {
    padding: 14px 16px !important;
    border-bottom: 1px solid color-mix(in srgb, var(--line) 74%, transparent) !important;
    vertical-align: top;
  }

  main thead th {
    position: sticky;
    top: 0;
    z-index: 1;
    background: color-mix(in srgb, var(--paper) 94%, var(--soft-blue));
    box-shadow: 0 1px 0 var(--line);
  }

  main tbody tr {
    transition: background .16s ease;
  }

  main tbody tr:hover {
    background: color-mix(in srgb, var(--soft-blue) 36%, transparent);
  }

  main :is(.metric-finder-results, .skpi-cards, .citizen-support-results, .priority-board, .stat-alert-list, .stat-ranking, .stat-correlation, .management-alerts, .future-risk-list, .future-decision-list, .own-source-priorities, .economy-findings, .tax-source-trends, .district-facility-list) {
    gap: clamp(12px, 1.8vw, 20px) !important;
  }

  main :is(.status-badge, [data-status], .mf-chip, .district-metric-chip, .scenario-band-chip, .tax-usage-preset, .wf-badge, .bm-tag, .realloc-tag, .ch-partial-badge, .skpi-band) {
    min-height: 32px;
    padding: 6px 12px !important;
  }

  @media (max-width: 720px) {
    main :is(.priority-board article, .stat-ranking article, .management-alerts article, .future-risk-list article, .future-decision-list li, .own-source-priorities article, .economy-findings article, .tax-source-trends article, .metric-finder-row, .bm-refs li, .realloc-cat, .cdd-theme) {
      grid-template-columns: 1fr !important;
    }

    main :is(th, td) {
      padding: 13px 14px !important;
    }
  }
}

/* PREMIUM SPACIOUS UX LAYER
   ページ拡張で増えた情報量を、余白・階層・明確な導線で読みやすくする共通デザイン層。 */
@media screen {
  :root {
    --radius-card: 22px;
    --radius-control: 14px;
    --space-page-y: clamp(30px, 5vw, 72px);
    --space-section: clamp(28px, 4.4vw, 64px);
    --space-card: clamp(20px, 2.8vw, 34px);
    --premium-border: color-mix(in srgb, var(--line) 74%, transparent);
    --premium-shadow: 0 18px 54px rgba(15, 39, 66, .09);
    --premium-shadow-hover: 0 26px 70px rgba(15, 39, 66, .15);
    --premium-glow: 0 0 0 1px color-mix(in srgb, var(--paper) 70%, transparent), 0 22px 80px rgba(23, 107, 91, .12);
  }

  :root[data-theme="dark"] {
    --premium-shadow: 0 20px 62px rgba(0, 0, 0, .38);
    --premium-shadow-hover: 0 28px 80px rgba(0, 0, 0, .48);
    --premium-glow: 0 0 0 1px rgba(255,255,255,.04), 0 22px 74px rgba(98, 199, 174, .1);
  }

  html {
    scroll-behavior: smooth;
    scroll-padding-top: 112px;
  }

  body {
    background:
      radial-gradient(circle at 12% -8%, color-mix(in srgb, var(--soft-blue) 74%, transparent) 0, transparent 34vw),
      radial-gradient(circle at 92% 6%, color-mix(in srgb, var(--soft-green) 64%, transparent) 0, transparent 32vw),
      linear-gradient(180deg, color-mix(in srgb, var(--bg) 84%, var(--paper)), var(--bg) 360px);
  }

  :root[data-theme="dark"] body {
    background:
      radial-gradient(circle at 12% -8%, rgba(114,167,255,.14) 0, transparent 34vw),
      radial-gradient(circle at 92% 6%, rgba(98,200,210,.12) 0, transparent 32vw),
      linear-gradient(180deg, #101824, var(--bg) 380px);
  }

  .topbar {
    align-items: center;
    padding: clamp(26px, 4.4vw, 54px) clamp(18px, 5vw, 64px) clamp(20px, 3vw, 34px);
    border-bottom: 0;
    background: linear-gradient(180deg, color-mix(in srgb, var(--paper) 96%, transparent), color-mix(in srgb, var(--paper) 72%, transparent));
  }

  .brand-block {
    max-width: 900px;
  }

  .brand-block h1 {
    font-size: clamp(30px, 4.2vw, 58px);
    line-height: 1.08;
    letter-spacing: -.055em;
  }

  .brand-copy {
    max-width: 760px;
    margin-top: 12px;
    color: color-mix(in srgb, var(--muted) 86%, var(--ink));
    font-size: clamp(15px, 1.1vw, 18px) !important;
    line-height: 1.85;
  }

  .uto-global-nav {
    padding: 14px clamp(18px, 5vw, 64px);
    border-bottom: 1px solid color-mix(in srgb, var(--line) 64%, transparent);
    background: color-mix(in srgb, var(--paper) 84%, transparent);
    box-shadow: 0 12px 34px rgba(15, 39, 66, .06);
  }

  .uto-nav-shell {
    grid-template-columns: minmax(0, 1fr) 78px;
    gap: 14px;
  }

  .uto-nav-list {
    gap: 12px;
  }

  .uto-nav-list > button,
  .site-map-menu > summary,
  .site-map-featured > button,
  .site-map-start button,
  .site-map-group button,
  .site-map-pathway-grid button,
  .legacy-nav > button,
  .legacy-nav .more-view-menu button,
  main button:not(.theme-toggle) {
    transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease, background .18s ease, color .18s ease;
  }

  .uto-nav-list > button {
    min-height: 72px;
    padding: 14px 16px;
    border: 1px solid var(--premium-border);
    border-radius: 18px;
    background: color-mix(in srgb, var(--paper) 88%, transparent);
    box-shadow: 0 10px 28px rgba(15, 39, 66, .045);
  }

  .uto-nav-list > button:hover,
  .uto-nav-list > button:focus-visible {
    border-color: color-mix(in srgb, var(--uto-accent) 45%, var(--line));
    background: color-mix(in srgb, var(--soft-green) 34%, var(--paper));
    box-shadow: var(--premium-shadow);
    transform: translateY(-2px);
  }

  .uto-nav-list > button.active {
    border-color: color-mix(in srgb, var(--uto-accent) 56%, var(--line));
    background: linear-gradient(145deg, color-mix(in srgb, var(--soft-green) 72%, var(--paper)), var(--paper));
    box-shadow: var(--premium-glow);
  }

  .uto-nav-list > button span {
    font-size: 15.5px !important;
    letter-spacing: -.02em;
  }

  .uto-nav-list > button small {
    font-size: 13px !important;
  }

  .site-map-menu > summary {
    min-height: 72px;
    border-radius: 18px;
    box-shadow: 0 10px 28px rgba(15, 39, 66, .045);
  }

  .site-map-panel {
    width: min(1280px, calc(100vw - 40px));
    max-height: min(780px, calc(100vh - 120px));
    padding: clamp(22px, 3vw, 34px);
    border: 1px solid var(--premium-border);
    border-radius: 28px;
    background:
      linear-gradient(180deg, color-mix(in srgb, var(--paper) 96%, transparent), color-mix(in srgb, var(--paper) 90%, transparent));
    box-shadow: 0 30px 90px rgba(15, 35, 52, .24);
  }

  .site-map-heading,
  .integrated-os-heading,
  .decision-journey-head,
  .panel-head {
    padding-bottom: 12px;
    border-bottom: 1px solid color-mix(in srgb, var(--line) 58%, transparent);
  }

  .site-map-grid,
  .site-map-start,
  .site-map-pathway-grid {
    gap: 16px;
  }

  .site-map-group,
  .site-map-pathways,
  .site-map-featured > button,
  .site-map-start button {
    border-radius: 20px;
    box-shadow: 0 10px 32px rgba(15, 39, 66, .055);
  }

  .site-map-group button {
    min-height: 46px;
    padding: 11px 12px;
  }

  .toolbar {
    margin: 0 auto clamp(24px, 3.2vw, 46px);
    padding: clamp(16px, 2.2vw, 24px);
    border: 1px solid var(--premium-border);
    border-radius: 24px;
    background: color-mix(in srgb, var(--paper) 88%, transparent);
    box-shadow: 0 14px 42px rgba(15, 39, 66, .06);
  }

  .toolbar :is(input, select, button),
  .kpi-dictionary-controls :is(input, select, button),
  .common-scenario-body select,
  .metric-finder-search,
  .tax-usage-field input {
    min-height: 46px;
    border-radius: 14px !important;
  }

  main {
    display: grid;
    gap: var(--space-section);
    padding: var(--space-page-y) clamp(18px, 5vw, 72px) clamp(52px, 8vw, 112px);
  }

  main > :is(section, div):not(.toolbar):not(.hidden) {
    min-width: 0;
  }

  main :is(.panel, .dashboard, .table-panel, .analysis-panel, .detail-grid, .source-panel, .raw-panel, .pdf-table-panel, .focus-panel, .os-dashboard, .future-center-card, .city-health-card, .integrated-os-card, .strategy-room-card, .economy-command-card, .district-profile-card, .district-management-card, .kpi-dictionary-governance, .common-scenario-bar details, .committee-dd-card, .skpi-card, .wf-card, .bm-card, .realloc-section, .scenario-sim, .insight-card) {
    border: 1px solid var(--premium-border) !important;
    border-radius: var(--radius-card) !important;
    background: color-mix(in srgb, var(--paper) 94%, transparent) !important;
    box-shadow: var(--premium-shadow);
  }

  main :is(.panel, .dashboard, .table-panel, .analysis-panel, .source-panel, .raw-panel, .pdf-table-panel, .focus-panel, .future-center-card, .city-health-card, .integrated-os-card, .strategy-room-card, .economy-command-card, .district-profile-card, .district-management-card, .kpi-dictionary-governance, .common-scenario-bar details) {
    padding: var(--space-card) !important;
  }

  main :is(article, .metric-box, .kpi-card, .summary-card, .risk-card, .support-card, .decision-card, .project-card, .facility-card, .stat-discovery-card, .budget-gate-grid article, .executive-voices article, .decision-options article, .briefing-modes article, .integrated-module-grid article, .economy-kpis article, .district-needs article, .district-data-gaps article, .kpi-dictionary-list > article, .skpi-signal-grid article, .fp-readouts article, .scenario-readouts article) {
    border-color: var(--premium-border);
    border-radius: 18px !important;
  }

  main :is(article, .metric-box, .kpi-card, .summary-card, .risk-card, .support-card, .decision-card, .project-card, .facility-card, .stat-discovery-card):hover {
    box-shadow: 0 18px 48px rgba(15, 39, 66, .09);
  }

  main :is(.grid, .kpis, .score-context, .future-event-grid, .integrated-module-grid, .economy-command-grid, .economy-score-grid, .district-kpis, .kpi-dictionary-summary, .kpi-dictionary-list, .budget-gate-grid, .executive-voices, .decision-options, .briefing-modes, .stat-discovery-kpis, .scenario-readouts, .fp-readouts) {
    gap: clamp(14px, 2vw, 24px) !important;
  }

  main :is(h1, h2) {
    letter-spacing: -.035em;
  }

  main h2 {
    font-size: clamp(22px, 2vw, 30px);
  }

  main h3 {
    font-size: clamp(18px, 1.4vw, 23px);
    letter-spacing: -.02em;
  }

  main :is(section, article, div)[class*="hero"] {
    box-shadow: 0 24px 72px rgba(15, 39, 66, .16);
  }

  main :is(a[href]) {
    color: color-mix(in srgb, var(--uto-accent) 82%, var(--blue));
    font-weight: 850;
    text-decoration-line: underline;
    text-decoration-thickness: 2px;
    text-underline-offset: 4px;
  }

  main :is(a[href]):hover,
  main :is(a[href]):focus-visible {
    color: var(--uto-accent);
    text-decoration-thickness: 3px;
  }

  main :is(button[data-view], button[data-action], .site-map-pathway-grid button, .fac-card-open, .budget-gate-actions button, .integrated-module-grid button, .metric-finder-row button) {
    position: relative;
    min-height: 44px;
    border-radius: 999px !important;
    font-weight: 900;
  }

  main :is(button[data-view], .site-map-pathway-grid button, .fac-card-open, .integrated-module-grid button)::after {
    margin-left: 8px;
    content: "→";
  }

.page-transition-card {
  border-radius: 20px;
  box-shadow: 0 22px 70px rgba(15, 39, 66, .24);
}

  @media (max-width: 980px) {
    .uto-nav-shell {
      grid-template-columns: minmax(0, 1fr) 72px;
      padding-left: 18px;
    }

    .uto-nav-list > button {
      flex-basis: 168px;
    }

    .site-map-panel {
      top: 96px;
      right: 18px;
      left: 18px;
      width: auto;
      border-radius: 24px;
    }

    main {
      gap: clamp(26px, 5vw, 48px);
      padding-inline: clamp(16px, 4vw, 34px);
    }
  }

  @media (max-width: 640px) {
    html {
      scroll-padding-top: 94px;
    }

    .topbar {
      display: grid;
      gap: 16px;
      padding: 28px 18px 20px;
    }

    .brand-copy {
      max-width: none;
    }

    .uto-nav-list > button {
      flex-basis: 158px;
      min-height: 70px;
    }

    .site-map-panel {
      top: 86px;
      right: 10px;
      left: 10px;
      max-height: calc(100vh - 104px);
      padding: 18px;
      border-radius: 22px;
    }

    .toolbar {
      border-radius: 20px;
    }

    main {
      padding-top: 28px;
      padding-inline: 14px;
    }

    main :is(.panel, .dashboard, .table-panel, .analysis-panel, .source-panel, .raw-panel, .pdf-table-panel, .focus-panel, .future-center-card, .city-health-card, .integrated-os-card, .strategy-room-card, .economy-command-card, .district-profile-card, .district-management-card, .kpi-dictionary-governance, .common-scenario-bar details) {
      padding: clamp(18px, 5vw, 24px) !important;
      border-radius: 20px !important;
    }
  }
}

body {
  margin: 0;
  min-width: 320px;
  background: var(--bg);
  color: var(--ink);
  font-family: -apple-system, BlinkMacSystemFont, "Hiragino Sans", "Yu Gothic", "YuGothic", "Segoe UI", sans-serif;
  font-size: var(--font-body);
  line-height: var(--line-body);
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
}

.skip-link {
  position: fixed;
  top: 12px;
  left: 12px;
  z-index: 100;
  padding: 10px 14px;
  border-radius: 999px;
  color: #fff;
  background: var(--uto-accent);
  box-shadow: 0 12px 30px rgba(15, 39, 66, .22);
  font-weight: 900;
  text-decoration: none;
  transform: translateY(-140%);
  transition: transform .18s ease;
}

.skip-link:focus {
  transform: translateY(0);
}

.topbar {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 24px;
  padding: 24px clamp(16px, 4vw, 42px) 16px;
  background: var(--paper);
  border-bottom: 1px solid var(--line);
}

.brand-block {
  max-width: 680px;
}

.brand-block h1 {
  letter-spacing: -0.04em;
}

.brand-copy {
  font-size: 14px;
  line-height: 1.7;
}

.uto-global-nav {
  position: sticky;
  top: 0;
  z-index: 30;
  padding: 12px clamp(16px, 4vw, 42px);
  border-bottom: 1px solid var(--line);
  background: color-mix(in srgb, var(--paper) 92%, transparent);
  backdrop-filter: blur(16px);
}

.uto-nav-shell {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 64px;
  gap: 10px;
  width: min(100%, var(--content-max));
  margin: 0 auto;
}

.uto-nav-list {
  display: grid;
  grid-template-columns: repeat(6, minmax(110px, 1fr));
  width: 100%;
  margin: 0;
  padding: 0;
  border: 0;
  gap: 8px;
  background: transparent;
}

.site-map-menu {
  position: relative;
}

.site-map-menu > summary {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  min-height: 62px;
  padding: 7px 5px;
  border: 1px solid var(--line);
  border-radius: var(--radius-control);
  background: var(--surface-subtle);
  color: var(--muted);
  cursor: pointer;
  list-style: none;
}

.site-map-menu > summary::-webkit-details-marker {
  display: none;
}

.site-map-menu > summary span {
  font-size: 10px;
  font-weight: 800;
}

.site-map-menu > summary small {
  display: none;
  color: var(--muted);
  font-size: 9px;
  font-weight: 700;
}

.site-map-menu-icon {
  display: grid;
  grid-template-columns: repeat(3, 4px);
  gap: 3px;
  margin-bottom: 5px;
}

.site-map-menu-icon i {
  width: 4px;
  height: 4px;
  border-radius: 50%;
  background: currentColor;
}

.site-map-menu[open] > summary,
.site-map-menu.has-active-secondary > summary {
  border-color: color-mix(in srgb, var(--uto-accent) 38%, var(--line));
  background: color-mix(in srgb, var(--soft-green) 72%, var(--paper));
  color: var(--uto-accent);
}

.site-map-panel {
  position: absolute;
  top: calc(100% + 12px);
  right: 0;
  width: min(1120px, calc(100vw - 32px));
  max-height: min(720px, calc(100vh - 120px));
  overflow-y: auto;
  padding: 22px;
  border: 1px solid var(--line);
  border-radius: 18px;
  background: var(--paper);
  box-shadow: 0 24px 64px rgb(15 35 52 / 20%);
}

.site-map-heading {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 24px;
  margin-bottom: 18px;
}

.site-map-heading h2 {
  margin-top: 3px;
  font-size: clamp(20px, 2.5vw, 28px);
}

.site-map-heading > p {
  max-width: 440px;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.65;
}

.site-map-featured > button:hover,
.site-map-featured > button.active {
  border-color: var(--uto-accent);
  background:
    linear-gradient(120deg, color-mix(in srgb, var(--soft-green) 66%, var(--paper)), var(--paper));
  box-shadow: 0 14px 34px rgb(15 35 52 / 14%);
  transform: translateY(-1px);
}

.site-map-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
  padding: 0;
  border: 0;
  background: transparent;
}

.site-map-group {
  display: grid;
  align-content: start;
  gap: 6px;
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: var(--surface-subtle);
}

.site-map-group > p {
  margin: 0 4px 5px;
  color: var(--uto-accent);
  font-size: 12px;
  font-weight: 900;
}

.site-map-group > p b {
  display: inline-grid;
  place-items: center;
  width: 22px;
  height: 22px;
  margin-right: 5px;
  border-radius: 50%;
  background: var(--uto-accent);
  color: #fff;
  font-size: 10px;
}

.site-map-start {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
  margin-bottom: 14px;
  padding: 0;
  border: 0;
  background: transparent;
}

.site-map-start button {
  display: grid;
  gap: 4px;
  min-width: 0;
  padding: 15px;
  border: 1px solid color-mix(in srgb, var(--uto-accent) 32%, var(--line));
  border-radius: 13px;
  background: linear-gradient(145deg, color-mix(in srgb, var(--soft-green) 60%, var(--paper)), var(--paper));
  color: var(--ink);
  text-align: left;
}

.site-map-start button:hover,
.site-map-start button.active {
  border-color: var(--uto-accent);
  box-shadow: 0 8px 22px rgb(15 35 52 / 10%);
  transform: translateY(-1px);
}

.site-map-start button > span {
  color: var(--uto-accent);
  font-size: 10px;
  font-weight: 900;
}

.site-map-start button > strong {
  font-size: 15px;
}

.site-map-start button > small {
  color: var(--muted);
  font-size: 10px;
  line-height: 1.5;
}

.site-map-pathways {
  display: grid;
  gap: 12px;
  margin-bottom: 14px;
  padding: 16px;
  border: 1px solid color-mix(in srgb, var(--uto-accent) 26%, var(--line));
  border-radius: 16px;
  background:
    linear-gradient(135deg, color-mix(in srgb, var(--soft-green) 52%, transparent), transparent),
    var(--surface-subtle);
}

.site-map-pathways header {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 18px;
}

.site-map-pathways header span {
  color: var(--uto-accent);
  font-size: 10px;
  font-weight: 900;
  letter-spacing: .12em;
}

.site-map-pathways header h3 {
  margin: 3px 0 0;
  font-size: clamp(17px, 2vw, 22px);
}

.site-map-pathways header p {
  max-width: 420px;
  margin: 0;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.6;
}

.site-map-pathway-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
}

.site-map-pathway-grid article {
  display: grid;
  gap: 9px;
  min-width: 0;
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 13px;
  background: var(--paper);
}

.site-map-pathway-grid article > strong {
  color: var(--ink);
  font-size: 14px;
}

.site-map-pathway-grid article > p {
  margin: 0;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.55;
}

.site-map-pathway-grid article > div {
  display: grid;
  gap: 6px;
}

.site-map-pathway-grid button {
  display: flex;
  align-items: center;
  justify-content: space-between;
  min-height: 34px;
  padding: 8px 10px;
  border: 1px solid color-mix(in srgb, var(--uto-accent) 18%, var(--line));
  border-radius: 999px;
  background: color-mix(in srgb, var(--paper) 72%, var(--soft-green));
  color: var(--ink);
  cursor: pointer;
  font-size: 11px;
  font-weight: 800;
  text-align: left;
}

.site-map-pathway-grid button::after {
  color: var(--uto-accent);
  content: "→";
}

.site-map-pathway-grid button:hover,
.site-map-pathway-grid button.active {
  border-color: var(--uto-accent);
  background: var(--soft-green);
}

.site-map-group button {
  display: grid;
  gap: 3px;
  width: 100%;
  padding: 10px;
  border: 1px solid transparent;
  border-radius: 9px;
  background: transparent;
  color: var(--ink);
  text-align: left;
}

.site-map-group button:hover {
  border-color: var(--line);
  background: var(--paper);
}

.site-map-group button.active {
  border-color: color-mix(in srgb, var(--uto-accent) 38%, var(--line));
  background: var(--paper);
  box-shadow: 0 5px 16px rgb(15 35 52 / 8%);
}

.site-map-group button strong {
  font-size: 13px;
  line-height: 1.4;
}

.site-map-group button small {
  color: var(--muted);
  font-size: 10px;
  line-height: 1.4;
}

.uto-nav-list > button {
  display: grid;
  min-height: 62px;
  padding: 10px 12px;
  border: 1px solid transparent;
  border-radius: var(--radius-control);
  background: transparent;
  text-align: left;
}

.uto-nav-list > button span {
  color: var(--ink);
  font-size: 14px;
  font-weight: 800;
}

.uto-nav-list > button small {
  margin-top: 3px;
  color: var(--muted);
  font-size: 11px;
  font-weight: 600;
  white-space: nowrap;
}

.uto-nav-list > button:hover {
  border-color: var(--line);
  background: var(--surface-subtle);
}

.uto-nav-list > button.active {
  border-color: color-mix(in srgb, var(--uto-accent) 34%, var(--line));
  background: color-mix(in srgb, var(--soft-green) 72%, var(--paper));
  box-shadow: none;
}

.uto-nav-list > button.active span {
  color: var(--uto-accent);
}

.toolbar {
  position: relative;
  top: auto;
  z-index: 10;
  width: min(100%, var(--content-max));
  margin: 0 auto 18px;
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: var(--radius-card);
  background: var(--paper);
  backdrop-filter: none;
}

.advanced-tools summary:hover,
.advanced-tools.active summary {
  background: var(--surface-subtle);
  color: var(--uto-accent);
}

.legacy-nav > button,
.legacy-nav .more-view-menu button {
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--paper);
}

.status-badge,
[data-status] {
  display: inline-flex;
  align-items: center;
  width: fit-content;
  min-height: 26px;
  padding: 4px 9px;
  border: 1px solid currentColor;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 800;
}

.status-good,
[data-status="良好"] {
  color: var(--status-good);
}

.status-watch,
[data-status="注意"] {
  color: var(--status-watch);
}

.status-warning,
[data-status="警戒"] {
  color: var(--status-warning);
}

.status-decision,
[data-status="要判断"] {
  color: var(--status-decision);
}

.status-structural,
[data-status="構造課題"] {
  color: var(--status-structural);
}

@media (max-width: 980px) {
  .uto-global-nav {
    padding-right: 0;
    padding-left: 0;
  }

  .uto-nav-shell {
    grid-template-columns: minmax(0, 1fr) 64px;
    width: 100%;
    padding-left: 16px;
  }

  .uto-nav-list {
    display: flex;
    overflow-x: auto;
    padding: 0 0 6px;
    scroll-snap-type: x proximity;
    scrollbar-width: thin;
  }

  .uto-nav-list > button {
    flex: 0 0 142px;
    scroll-snap-align: start;
  }

  .site-map-menu {
    margin-right: 16px;
  }

  .site-map-panel {
    position: fixed;
    top: 86px;
    right: 16px;
    left: 16px;
    width: auto;
    max-height: calc(100vh - 108px);
  }

  .site-map-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .site-map-start {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .site-map-pathways header {
    align-items: flex-start;
    flex-direction: column;
    gap: 7px;
  }

  .site-map-pathway-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 640px) {
  .topbar {
    align-items: flex-start;
  }

  .brand-copy {
    max-width: 250px;
    font-size: 12px;
  }

  .uto-nav-list > button {
    flex-basis: 126px;
    min-height: 58px;
  }

  .uto-nav-shell {
    grid-template-columns: minmax(0, 1fr) 56px;
    padding-left: 12px;
  }

  .site-map-menu {
    margin-right: 12px;
  }

  .site-map-menu > summary {
    min-height: 58px;
    padding: 7px;
  }

  .site-map-panel {
    top: 76px;
    right: 10px;
    left: 10px;
    max-height: calc(100vh - 88px);
    padding: 16px;
    border-radius: 14px;
  }

  .site-map-heading {
    display: block;
  }

  .site-map-heading > p {
    margin-top: 8px;
  }

  .site-map-grid {
    grid-template-columns: 1fr;
  }

  .site-map-start {
    grid-template-columns: 1fr;
  }

  .site-map-pathways {
    padding: 12px;
  }

  .site-map-pathway-grid {
    grid-template-columns: 1fr;
  }

  .toolbar {
    margin-bottom: 14px;
    padding: 12px;
    border-radius: 12px;
  }
}

.brand-copy {
  margin-top: 7px;
  color: var(--muted);
  font-size: 13px;
}

.topbar-actions {
  display: flex;
  align-items: center;
  gap: 14px;
}

.theme-toggle {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  flex: 0 0 auto;
  padding: 0 12px;
  cursor: pointer;
  font-size: 13px;
  font-weight: 800;
}

/* 全ビュー共通の共有リンクボタン（topbar） */
.topbar-share {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  flex: 0 0 auto;
  padding: 0 12px;
  cursor: pointer;
  font-size: 13px;
  font-weight: 800;
  background: transparent;
  border: none;
  color: inherit;
}
.topbar-share:hover { color: var(--brand); }
.topbar-share-done { font-size: 11px; font-weight: 800; color: #0f766e; white-space: nowrap; }

.eyebrow {
  margin: 0 0 4px;
  color: var(--blue);
  font-size: 13px;
  font-weight: 700;
}

h1,
h2,
p {
  margin: 0;
}

h1 {
  font-size: clamp(24px, 3vw, 36px);
  line-height: 1.2;
}

h2 {
  font-size: 17px;
  line-height: 1.4;
}

main {
  padding: 20px clamp(16px, 4vw, 42px) 42px;
}

.app-loading {
  display: grid;
  gap: 12px;
  margin: 20px clamp(16px, 4vw, 42px) 0;
}

.loading-card {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 16px;
  align-items: center;
  padding: 18px;
  border: 1px solid rgba(15, 39, 66, 0.14);
  border-radius: 8px;
  background: var(--paper);
  box-shadow: var(--shadow);
}

.loading-card h2 {
  margin: 0 0 6px;
  font-size: 18px;
}

.loading-card p:last-child {
  color: var(--muted);
  font-size: 13px;
  line-height: 1.7;
}

.loading-spinner {
  width: 42px;
  height: 42px;
  border: 4px solid #e4e9ef;
  border-top-color: var(--blue);
  border-radius: 50%;
  animation: spin 0.9s linear infinite;
}

.loading-steps {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
}

.loading-steps span {
  height: 6px;
  overflow: hidden;
  border-radius: 999px;
  background: #e8edf2;
}

.loading-steps span::after {
  display: block;
  width: 38%;
  height: 100%;
  border-radius: inherit;
  background: var(--blue);
  animation: loading-step 1.4s ease-in-out infinite;
  content: "";
}

.loading-steps span:nth-child(2)::after {
  animation-delay: 0.16s;
}

.loading-steps span:nth-child(3)::after {
  animation-delay: 0.32s;
}

.app-loading {
  max-height: 700px;
  overflow: hidden;
  transition: opacity .4s ease, max-height .5s ease, margin .4s ease;
}
.is-loaded .app-loading {
  opacity: 0;
  max-height: 0;
  margin: 0;
  pointer-events: none;
}
.is-loaded .skeleton-dash { display: none; }

/* ダッシュボード スケルトン（初回ロード時の骨格・シマー） */
.skeleton-dash { display: grid; gap: 16px; }
.skeleton-dash .sk-hero { height: 148px; border-radius: 18px; }
.skeleton-dash .sk-kpis { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; }
.skeleton-dash .sk-kpis > div { height: 148px; border-radius: 14px; }
.skeleton-dash .sk-chart { height: 220px; border-radius: 16px; }
.skeleton-dash .sk-hero,
.skeleton-dash .sk-kpis > div,
.skeleton-dash .sk-chart {
  background: linear-gradient(100deg, #eceff3 30%, #f7f9fb 48%, #eceff3 66%);
  background-size: 300% 100%;
  animation: sk-shimmer 1.5s ease-in-out infinite;
}
@keyframes sk-shimmer { 0% { background-position: 130% 0; } 100% { background-position: -130% 0; } }
:root[data-theme="dark"] .skeleton-dash .sk-hero,
:root[data-theme="dark"] .skeleton-dash .sk-kpis > div,
:root[data-theme="dark"] .skeleton-dash .sk-chart {
  background: linear-gradient(100deg, #1a2230 30%, #243041 48%, #1a2230 66%);
  background-size: 300% 100%;
}
@media (max-width: 760px) { .skeleton-dash .sk-kpis { grid-template-columns: 1fr 1fr; } }
@media (prefers-reduced-motion: reduce) {
  .skeleton-dash .sk-hero, .skeleton-dash .sk-kpis > div, .skeleton-dash .sk-chart { animation: none; }
}

.is-loading main {
  padding-top: 16px;
}

.is-loading .toolbar select:empty {
  min-height: 38px;
  background: linear-gradient(90deg, #eef1f5, #f9fafb, #eef1f5);
  background-size: 200% 100%;
  animation: skeleton 1.3s ease-in-out infinite;
}

.load-failed .loading-card {
  border-color: rgba(196, 54, 46, 0.35);
  background: var(--soft-red);
}

.load-failed .loading-spinner {
  border-color: rgba(196, 54, 46, 0.2);
  border-top-color: var(--red);
}

.page-transition-loading {
  position: fixed;
  top: clamp(14px, 2.5vw, 24px);
  left: 50%;
  z-index: 250;
  opacity: 0;
  transform: translate(-50%, -10px) scale(.98);
  transition: opacity .18s ease, transform .18s ease;
  pointer-events: none;
}

.page-transition-loading::before {
  content: "";
  position: fixed;
  top: 0;
  left: 0;
  width: 100vw;
  height: 4px;
  background:
    linear-gradient(90deg, transparent, #0f766e, #2563eb, transparent);
  transform: translateX(-100%);
  animation: page-transition-sweep 1.05s ease-in-out infinite;
  box-shadow: 0 0 18px rgba(15, 118, 110, .36);
}

.page-transition-card {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 12px;
  align-items: center;
  width: min(520px, calc(100vw - 32px));
  padding: 16px 18px;
  border: 1px solid color-mix(in srgb, #0f766e 30%, rgba(15, 39, 66, 0.16));
  border-radius: 18px;
  color: var(--ink);
  background: color-mix(in srgb, var(--paper) 96%, transparent);
  box-shadow: 0 24px 70px rgba(15, 39, 66, .24);
  backdrop-filter: blur(18px);
}

.page-transition-card strong,
.page-transition-card small {
  display: block;
}

.page-transition-card strong {
  font-size: 16px;
}

.page-transition-card small {
  margin-top: 2px;
  color: var(--muted);
  font-size: 13.5px;
  line-height: 1.55;
}

.page-transition-spinner {
  width: 34px;
  height: 34px;
  border: 4px solid color-mix(in srgb, #0f766e 18%, var(--line));
  border-top-color: #0f766e;
  border-radius: 50%;
  animation: spin .75s linear infinite;
}

.is-view-loading .page-transition-loading {
  opacity: 1;
  transform: translate(-50%, 0) scale(1);
}

.is-view-loading main {
  cursor: progress;
}

.is-view-loading :is(button, a[href]) {
  cursor: progress;
}

button.is-navigating-to,
.is-view-loading button.is-navigating-to {
  position: relative;
  outline: 3px solid color-mix(in srgb, #0f766e 34%, transparent);
  outline-offset: 3px;
  filter: saturate(1.08);
}

button.is-navigating-to::before {
  content: "";
  position: absolute;
  inset: 6px auto 6px 8px;
  width: 14px;
  height: 14px;
  border: 2px solid currentColor;
  border-top-color: transparent;
  border-radius: 50%;
  animation: spin .75s linear infinite;
}

button.is-navigating-to :is(span, strong, small, b, p) {
  transform: translateX(12px);
}

@keyframes spin {
  to { transform: rotate(360deg); }
}

@keyframes page-transition-sweep {
  0% { transform: translateX(-100%); }
  55% { transform: translateX(0%); }
  100% { transform: translateX(100%); }
}

@keyframes loading-step {
  0% { transform: translateX(-105%); }
  100% { transform: translateX(265%); }
}

.source-note {
  max-width: 520px;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.6;
  text-align: right;
}

.toolbar {
  position: sticky;
  top: 0;
  z-index: 20;
  display: grid;
  grid-template-columns: auto auto minmax(260px, 1fr);
  align-items: end;
  gap: 12px;
  margin: -20px calc(clamp(16px, 4vw, 42px) * -1) 18px;
  padding: 12px clamp(16px, 4vw, 42px);
  border-bottom: 1px solid var(--line);
  background: rgba(244, 246, 248, 0.94);
  backdrop-filter: blur(10px);
}

label {
  display: grid;
  gap: 5px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
}

select,
input,
button {
  min-height: 38px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--paper);
  color: var(--ink);
  font: inherit;
}

select {
  min-width: 160px;
  padding: 0 34px 0 12px;
}

input {
  min-width: min(360px, 72vw);
  padding: 0 12px;
}

.segmented {
  display: flex;
  flex-wrap: wrap;
  min-height: 38px;
  padding: 3px;
  border: 1px solid var(--line);
  border-radius: 7px;
  background: #e9edf2;
}

.segmented button {
  min-width: 64px;
  min-height: 30px;
  border: 0;
  background: transparent;
  color: var(--muted);
  font-size: 13px;
  font-weight: 700;
  cursor: pointer;
}

.segmented button.active {
  background: var(--paper);
  color: var(--blue);
  box-shadow: 0 1px 3px rgba(31, 35, 40, 0.12);
}

.sub-tab-strip {
  width: max-content;
  max-width: 100%;
  margin-bottom: 20px;
}

.sub-tab-strip button {
  padding: 0 18px;
}

.primary-nav {
  justify-self: start;
  grid-column: 1 / -1;
}

.primary-nav > button {
  min-width: 78px;
}

.more-views[open] summary,
.more-views.active summary {
  background: var(--paper);
  color: var(--blue);
}

.data-sources {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
  justify-self: end;
  margin-left: 0;
  padding: 0 8px;
}

.data-sources label {
  display: flex;
  align-items: center;
  gap: 6px;
  margin: 0;
  cursor: pointer;
  color: var(--muted);
  font-size: 13px;
  font-weight: 600;
}

.data-sources label:has(input:disabled) {
  cursor: not-allowed;
  opacity: 0.42;
}

.data-sources input[type="radio"] {
  min-height: auto;
  min-width: 16px;
  width: 16px;
  height: 16px;
  margin: 0;
  flex: 0 0 16px;
  border: 2px solid var(--line);
  border-radius: 50%;
  cursor: pointer;
}

.data-sources input[type="radio"]:checked {
  border-color: var(--blue);
  background: var(--blue);
}

.kpis {
  display: grid;
  grid-template-columns: repeat(4, minmax(160px, 1fr));
  gap: 12px;
  margin-bottom: 18px;
}

.health-kpi {
  display: grid;
  gap: 10px;
  min-height: 300px;
}

.kpi-top,
.kpi-comparison {
  display: flex;
  justify-content: space-between;
  gap: 10px;
}

.grade {
  padding: 4px 8px;
  border-radius: 999px;
  background: var(--soft-blue);
  color: var(--blue);
  font-size: 12px;
  font-weight: 900;
  white-space: nowrap;
}

.grade-A { background: var(--soft-green); color: var(--green); }
.grade-D,
.grade-E { background: var(--soft-red); color: var(--red); }

.kpi-comparison {
  flex-direction: column;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.5;
}

.kpi-comparison .good { color: var(--green); }
.kpi-comparison .bad { color: var(--red); }

.plain-explanation {
  margin-top: auto;
  padding-top: 11px;
  border-top: 1px solid var(--line);
  color: var(--muted);
  font-size: 12px;
  line-height: 1.65;
}

.plain-explanation strong {
  display: block;
  margin-bottom: 3px;
  color: var(--ink);
}

:root[data-theme="dark"] .toolbar {
  background: rgba(11, 16, 23, 0.92);
}

:root[data-theme="dark"] .score-context article,
:root[data-theme="dark"] .score-context button,
:root[data-theme="dark"] .risk-pill,
:root[data-theme="dark"] .future-event,
:root[data-theme="dark"] .facility-chip,
:root[data-theme="dark"] .question-chain article,
:root[data-theme="dark"] .facility-location-audit {
  background: var(--surface-subtle);
}

:root[data-theme="dark"] .grid-line { stroke: #263342; }
:root[data-theme="dark"] .axis-line { stroke: #3a4858; }
:root[data-theme="dark"] .leaflet-container { filter: brightness(.78) contrast(1.08) saturate(.8); }

.focus-panel {
  margin-bottom: 18px;
}

.smart-search-panel {
  margin-bottom: 18px;
}

.smart-search-results,
.smart-search-empty {
  padding: 16px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--paper);
  box-shadow: var(--shadow);
}

.smart-search-head {
  display: flex;
  align-items: start;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 12px;
}

.smart-search-head p,
.smart-search-empty span {
  display: block;
  margin-top: 4px;
  color: var(--muted);
  font-size: 12px;
}

.smart-search-head > span {
  flex: 0 0 auto;
  padding: 4px 8px;
  border-radius: 4px;
  background: var(--soft-blue);
  color: var(--blue);
  font-size: 12px;
  font-weight: 700;
}

.smart-result-top,
.smart-result-meta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
}

.smart-result-top strong {
  color: var(--blue);
}

.smart-result-jump {
  justify-self: start;
  min-height: 34px;
  padding: 7px 12px;
  border: 1px solid var(--blue);
  border-radius: 6px;
  background: var(--blue);
  color: white;
  font-size: 12px;
  font-weight: 800;
  cursor: pointer;
}

.smart-result-jump:hover {
  background: #174f8d;
  border-color: #174f8d;
}

.smart-result-list {
  display: grid;
  border-top: 1px solid var(--line);
}

.smart-result-row {
  display: grid;
  grid-template-columns: 34px minmax(0, 1fr) minmax(150px, 0.28fr) 112px;
  gap: 16px;
  align-items: center;
  padding: 16px 4px;
  border-bottom: 1px solid var(--line);
}

.smart-result-row:hover {
  background: color-mix(in srgb, var(--soft-blue) 38%, transparent);
}

.smart-result-rank {
  align-self: start;
  padding-top: 2px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
  text-align: center;
}

.smart-result-body {
  min-width: 0;
}

.smart-result-row .smart-result-top {
  margin-bottom: 6px;
}

.smart-result-badges {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
  align-items: center;
}

.smart-result-badges span,
.smart-result-badges strong,
.smart-result-badges em {
  padding: 3px 7px;
  border-radius: 999px;
  background: var(--surface-subtle);
  color: var(--muted);
  font-size: 10px;
  font-style: normal;
  font-weight: 800;
}

.smart-result-badges strong.budget {
  background: color-mix(in srgb, var(--blue) 12%, var(--paper));
  color: var(--blue);
}

.smart-result-badges strong.settlement {
  background: color-mix(in srgb, var(--uto-accent) 13%, var(--paper));
  color: var(--uto-accent);
}

.smart-result-row h3 {
  margin: 0;
  font-size: 16px;
  line-height: 1.45;
}

.smart-result-path {
  margin-top: 4px;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.55;
}

.smart-result-details {
  display: flex;
  flex-wrap: wrap;
  gap: 5px 16px;
  margin-top: 9px;
}

.smart-result-details div {
  display: flex;
  gap: 5px;
  align-items: baseline;
}

.smart-result-details dt {
  color: var(--muted);
  font-size: 10px;
  font-weight: 800;
}

.smart-result-details dd {
  margin: 0;
  color: var(--ink);
  font-size: 11px;
  font-weight: 700;
}

.smart-result-details a {
  color: var(--blue);
  text-decoration: none;
}

.smart-result-value {
  display: grid;
  gap: 3px;
  text-align: right;
}

.smart-result-value span,
.smart-result-value small {
  color: var(--muted);
  font-size: 10px;
}

.smart-result-value strong {
  font-size: clamp(17px, 1.7vw, 23px);
  line-height: 1.2;
}

.smart-result-actions {
  display: grid;
  gap: 5px;
  justify-items: end;
}

.smart-result-actions .smart-result-jump {
  justify-self: end;
}

.smart-result-actions small {
  color: var(--muted);
  font-size: 9px;
  text-align: right;
}

.smart-result-limit {
  margin-top: 12px;
  color: var(--muted);
  font-size: 11px;
  text-align: center;
}

.search-jump-highlight {
  outline: 3px solid rgba(37, 99, 169, 0.32);
  outline-offset: 4px;
  background-color: rgba(37, 99, 169, 0.08) !important;
  transition: outline-color 0.2s ease, background-color 0.2s ease;
}

@media (max-width: 840px) {
  .smart-result-row {
    grid-template-columns: 26px minmax(0, 1fr) 112px;
  }

  .smart-result-value {
    grid-column: 2;
    text-align: left;
  }

  .smart-result-actions {
    grid-column: 3;
    grid-row: 1 / span 2;
  }
}

@media (max-width: 560px) {
  .smart-search-results {
    padding: 14px;
  }

  .smart-search-head {
    display: grid;
  }

  .smart-search-head > span {
    width: fit-content;
  }

  .smart-result-row {
    grid-template-columns: 22px minmax(0, 1fr);
    gap: 10px;
    padding: 15px 0;
  }

  .smart-result-value,
  .smart-result-actions {
    grid-column: 2;
  }

  .smart-result-actions {
    grid-row: auto;
    grid-template-columns: auto 1fr;
    justify-items: start;
    align-items: center;
  }

  .smart-result-actions .smart-result-jump {
    justify-self: start;
  }

  .smart-result-actions small {
    text-align: left;
  }
}

/* 統計変化発見センター */
.statistics-discovery { display: grid; gap: 18px; }
.stat-discovery-hero { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(210px, .6fr); gap: 24px; align-items: center; padding: 30px; border-radius: 22px; color: #f8fafc; background: linear-gradient(135deg, #10233f, #155e75); }
.stat-discovery-hero span,.stat-discovery-card header span { font-size: 10px; font-weight: 900; letter-spacing: .12em; }
.stat-discovery-hero h2 { margin: 7px 0 9px; font-size: clamp(24px, 4vw, 38px); }
.stat-discovery-hero p { margin: 0; color: #dbeafe; line-height: 1.75; }
.stat-discovery-hero aside { padding: 18px; border: 1px solid rgba(255,255,255,.24); border-radius: 16px; background: rgba(255,255,255,.09); }
.stat-discovery-hero aside small,.stat-discovery-hero aside strong,.stat-discovery-hero aside span { display: block; }
.stat-discovery-hero aside strong { margin: 5px 0; font-size: 25px; }
.stat-discovery-selector { display: grid; grid-template-columns: auto minmax(220px, 360px) 1fr; gap: 12px; align-items: center; padding: 14px 18px; border: 1px solid var(--line); border-radius: 14px; background: var(--paper); }
.stat-discovery-selector label { font-weight: 900; }
.stat-discovery-selector select { width: 100%; padding: 10px 12px; border: 1px solid var(--line); border-radius: 9px; color: var(--ink); background: var(--paper); }
.stat-discovery-selector p { margin: 0; color: var(--muted); font-size: 12px; }
.stat-discovery-kpis { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; }
.stat-discovery-kpis article { padding: 16px; border: 1px solid var(--line); border-radius: 14px; background: var(--paper); }
.stat-discovery-kpis span,.stat-discovery-kpis small { display: block; color: var(--muted); font-size: 10px; }
.stat-discovery-kpis strong { display: block; margin: 5px 0; font-size: 23px; }
.stat-discovery-main,.stat-discovery-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.stat-discovery-card { padding: 20px; border: 1px solid var(--line); border-radius: 16px; background: var(--paper); }
.stat-discovery-card header h3 { margin: 5px 0 16px; }
.stat-discovery-card header span { color: #0f766e; }
.stat-ai-diagnosis { border-top: 5px solid #0f766e; }
.stat-score-row { display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px; }
.stat-score-row div { padding: 12px; border-radius: 10px; background: var(--soft); }
.stat-score-row span,.stat-score-row b { display: block; }
.stat-score-row span { color: var(--muted); font-size: 10px; }
.stat-score-row b { margin-top: 4px; color: #b45309; letter-spacing: .08em; }
.stat-ai-diagnosis > p,.stat-cause p,.stat-action-grid p,.stat-health-grid p { line-height: 1.7; }
.stat-cause { padding: 13px; border-left: 4px solid #b45309; background: rgba(180,83,9,.07); }
.stat-cause p { margin: 5px 0 0; font-size: 12px; }
.stat-discovery-chart { width: 100%; min-height: 180px; overflow: visible; }
.stat-discovery-chart line { stroke: var(--line); }
.stat-discovery-chart polyline { fill: none; stroke: #0f766e; stroke-width: 4; }
.stat-discovery-chart circle { fill: var(--paper); stroke: #0f766e; stroke-width: 3; }
.stat-discovery-chart text { fill: var(--muted); font-size: 10px; }
.stat-alert-list,.stat-ranking,.stat-correlation { display: grid; gap: 8px; }
.stat-alert-list article { display: grid; grid-template-columns: 52px 1fr; gap: 10px; padding: 11px; border-radius: 10px; background: rgba(180,83,9,.07); }
.stat-alert-list article > b { color: #b45309; }
.stat-alert-list strong,.stat-alert-list p { margin: 0; }
.stat-alert-list p { margin-top: 3px; color: var(--muted); font-size: 10px; line-height: 1.5; }
.stat-empty,.stat-caution { color: var(--muted); font-size: 11px; line-height: 1.6; }
.stat-ranking article { display: grid; grid-template-columns: 28px 1fr auto; gap: 9px; align-items: center; padding: 9px 0; border-bottom: 1px solid var(--line); }
.stat-ranking article > b { display: grid; place-items: center; width: 24px; height: 24px; border-radius: 50%; color: #fff; background: #155e75; font-size: 10px; }
.stat-correlation article { display: grid; grid-template-columns: minmax(150px, 1fr) minmax(120px, 2fr) 45px; gap: 12px; align-items: center; }
.stat-correlation article div span { display: block; color: var(--muted); font-size: 9px; }
.stat-correlation meter { width: 100%; accent-color: #0f766e; }
.stat-health-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
.stat-health-grid article { padding: 14px; border-radius: 12px; background: var(--soft); border-top: 4px solid #2563eb; }
.stat-health-grid article.watch { border-color: #d97706; }
.stat-health-grid article.alert { border-color: #dc2626; }
.stat-health-grid article.monitor { border-color: #2563eb; }
.stat-health-grid article > span { font-size: 9px; font-weight: 900; }
.stat-health-grid h4 { margin: 5px 0; }
.stat-health-grid p { margin: 0; color: var(--muted); font-size: 11px; }
.stat-structure-flow { display: flex; gap: 7px; align-items: center; overflow-x: auto; padding: 8px 0 15px; }
.stat-structure-flow span { flex: 1; min-width: 150px; padding: 12px; border-radius: 10px; background: var(--soft); text-align: center; font-size: 11px; font-weight: 800; }
.stat-structure-flow i { color: #0f766e; font-style: normal; font-weight: 900; }
.stat-action-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
.stat-action-grid article { padding: 13px; border: 1px solid var(--line); border-radius: 10px; }
.stat-action-grid p { margin: 6px 0 0; color: var(--muted); font-size: 11px; }
.stat-citizen-guide dl { display: grid; grid-template-columns: repeat(2, 1fr); gap: 9px; margin: 0; }
.stat-citizen-guide dl div { padding: 13px; border-radius: 10px; background: var(--soft); }
.stat-citizen-guide dt { font-weight: 900; }
.stat-citizen-guide dd { margin: 5px 0 0; color: var(--muted); font-size: 11px; line-height: 1.6; }
@media (max-width: 900px) {
  .stat-discovery-kpis,.stat-health-grid { grid-template-columns: repeat(2, 1fr); }
  .stat-discovery-main,.stat-discovery-grid,.stat-action-grid { grid-template-columns: 1fr; }
  .stat-discovery-selector { grid-template-columns: 1fr; }
}

/* 自治体経営戦略室 */
.strategy-room-hero { display:grid;grid-template-columns:minmax(0,1.4fr) minmax(220px,.6fr);gap:24px;align-items:center;margin-bottom:14px;padding:30px;border-radius:22px;color:#f8fafc;background:linear-gradient(135deg,#172554,#0f766e) }
.strategy-room-hero>div>span,.strategy-room-card header span{font-size:10px;font-weight:900;letter-spacing:.12em}.strategy-room-hero h2{margin:7px 0;font-size:clamp(25px,4vw,39px)}.strategy-room-hero p{margin:0;color:#dbeafe;line-height:1.7}.strategy-room-hero aside{padding:18px;border:1px solid rgba(255,255,255,.25);border-radius:16px;background:rgba(255,255,255,.09)}.strategy-room-hero aside small,.strategy-room-hero aside strong,.strategy-room-hero aside p{display:block}.strategy-room-hero aside strong{margin:4px 0;font-size:38px}.strategy-room-hero aside strong b{font-size:14px}.strategy-room-hero aside p{font-size:10px}
.strategy-room-card{margin:14px 0;padding:20px;border:1px solid var(--line);border-radius:16px;background:var(--paper)}.strategy-room-card header span{color:#0f766e}.strategy-room-card header h3{margin:5px 0 16px}.strategy-room-grid{display:grid;grid-template-columns:1.25fr .75fr;gap:14px}.executive-voices,.decision-options,.briefing-modes{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.executive-voices article,.decision-options article,.briefing-modes article{padding:15px;border:1px solid var(--line);border-radius:12px;background:var(--soft)}.executive-voices b,.executive-voices strong{display:block}.executive-voices b{color:#0f766e;font-size:10px}.executive-voices strong{margin:4px 0}.executive-voices p,.briefing-modes p{margin:5px 0 0;color:var(--muted);font-size:11px;line-height:1.65}
.priority-board{display:grid;gap:8px}.priority-board article{display:grid;grid-template-columns:30px 1fr auto;gap:11px;align-items:center;padding:11px;border-bottom:1px solid var(--line)}.priority-board article>b{display:grid;place-items:center;width:27px;height:27px;border-radius:50%;color:#fff;background:#172554}.priority-board p,.priority-board small{display:block;margin:3px 0;color:var(--muted);font-size:10px}.priority-board article>span{font-weight:900;color:#0f766e}.risk-radar-card svg{display:block;width:min(100%,320px);margin:auto;overflow:visible}.risk-radar-card polygon,.risk-radar-card line{fill:none;stroke:var(--line)}.risk-radar-card text{fill:var(--muted);font-size:9px}.risk-radar-card .risk-radar-value{fill:rgba(15,118,110,.22);stroke:#0f766e;stroke-width:3}
.decision-options article.recommended{border:2px solid #0f766e}.decision-options article>span{color:#0f766e;font-size:10px;font-weight:900}.decision-options article>strong{display:block;margin:6px 0}.decision-options dl{display:grid;gap:5px;margin:10px 0 0}.decision-options dl div{display:grid;grid-template-columns:58px 1fr;gap:6px;font-size:10px}.decision-options dt{color:var(--muted)}.decision-options dd{margin:0}
.management-alerts{display:grid;gap:9px}.management-alerts article{display:grid;grid-template-columns:48px 1fr;gap:10px;padding:12px;border-radius:10px;background:var(--soft);border-left:5px solid #2563eb}.management-alerts article.red{border-color:#dc2626}.management-alerts article.yellow{border-color:#d97706}.management-alerts p{margin:3px 0 0;color:var(--muted);font-size:10px}.management-scenario,.management-flow{display:flex;align-items:center;gap:7px;overflow-x:auto}.management-scenario article{flex:1;min-width:105px;padding:13px;border-radius:10px;background:var(--soft);text-align:center}.management-scenario span,.management-scenario small{display:block;color:var(--muted);font-size:9px}.management-scenario strong{display:block;margin:4px;font-size:22px}.management-scenario i,.management-flow i{color:#0f766e;font-style:normal;font-weight:900}.strategy-room-note{color:var(--muted);font-size:10px;line-height:1.6}.management-flow{padding:5px 0 15px}.management-flow span{flex:1;min-width:105px;padding:11px;border-radius:999px;background:var(--soft);text-align:center;font-size:10px;font-weight:800}
.next-budget-checklist > p { margin: 0 0 14px; color: var(--muted); font-size: 11px; line-height: 1.7; }
.budget-gate-readiness { display: grid; grid-template-columns: repeat(6,minmax(0,1fr)); gap: 8px; margin-bottom: 14px; }
.budget-gate-readiness article { padding: 12px; border-radius: 10px; background: var(--soft); }
.budget-gate-readiness span,.budget-gate-readiness small { display: block; color: var(--muted); font-size: 8px; line-height: 1.45; }
.budget-gate-readiness strong { display: block; margin: 4px 0; font-size: 16px; }
.budget-gate-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 10px; }
.budget-gate-grid article { display: flex; flex-direction: column; gap: 9px; padding: 15px; border: 1px solid var(--line); border-top: 5px solid #0f766e; border-radius: 12px; background: var(--paper); }
.budget-gate-grid article:nth-child(2n) { border-top-color: #2563eb; }
.budget-gate-grid article:nth-child(3n) { border-top-color: #b45309; }
.budget-gate-grid article > div { display: grid; gap: 4px; }
.budget-gate-grid article > div span { color: #0f766e; font-size: 8px; font-weight: 900; letter-spacing: .1em; }
.budget-gate-grid article > div b { font-size: 14px; }
.budget-gate-grid p { margin: 0; color: var(--ink); font-size: 10px; font-weight: 800; line-height: 1.55; }
.budget-gate-grid dl { display: grid; gap: 6px; margin: 0; }
.budget-gate-grid dl div { padding-top: 6px; border-top: 1px solid var(--line); }
.budget-gate-grid dt,.budget-gate-grid dd { margin: 0; font-size: 9px; line-height: 1.5; }
.budget-gate-grid dt { color: var(--muted); font-weight: 900; }
.budget-gate-actions { display: flex; flex-wrap: wrap; gap: 8px; margin: 14px 0 8px; }
.budget-gate-actions button { padding: 10px 12px; border: 0; border-radius: 10px; color: #fff; background: #0f766e; font-size: 10px; font-weight: 900; cursor: pointer; }
@media(max-width:1100px){.budget-gate-readiness{grid-template-columns:repeat(3,1fr)}.budget-gate-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:900px){.strategy-room-grid,.strategy-room-hero{grid-template-columns:1fr}.executive-voices,.decision-options,.briefing-modes,.budget-gate-readiness,.budget-gate-grid{grid-template-columns:1fr}}
@media(max-width:600px){.strategy-room-hero{padding:21px}.strategy-room-card{padding:16px}.priority-board article{grid-template-columns:28px 1fr}.priority-board article>span{grid-column:2}.management-scenario{align-items:stretch}}

/* 宇土OS Ver2.0〜4.0 統合戦略 */
.integrated-os-hero{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(220px,.65fr);gap:24px;align-items:center;padding:34px;border-radius:24px;color:#f8fafc;background:linear-gradient(135deg,#0f172a,#134e4a 58%,#115e59)}.integrated-os-hero>div>span,.integrated-os-heading span{font-size:10px;font-weight:900;letter-spacing:.13em}.integrated-os-hero h1{margin:8px 0;font-size:clamp(28px,4vw,44px)}.integrated-os-hero p{margin:0;color:#ccfbf1;line-height:1.75}.integrated-os-hero aside{padding:18px;border:1px solid rgba(255,255,255,.25);border-radius:16px;background:rgba(255,255,255,.09)}.integrated-os-hero aside small,.integrated-os-hero aside strong,.integrated-os-hero aside p{display:block}.integrated-os-hero aside strong{font-size:40px}.integrated-os-hero aside strong b{font-size:13px}.integrated-os-hero aside p{font-size:10px}
.integrated-os-card{margin:15px 0;padding:22px;border:1px solid var(--line);border-radius:18px;background:var(--paper)}.integrated-os-heading{display:flex;justify-content:space-between;gap:20px;align-items:end}.integrated-os-heading span{color:#0f766e}.integrated-os-heading h2{margin:5px 0}.integrated-os-heading p{max-width:430px;margin:0;color:var(--muted);font-size:11px;line-height:1.6}.integrated-os-loop,.integrated-operating-flow{display:flex;align-items:center;gap:7px;overflow-x:auto;padding:18px 0 10px}.integrated-os-loop span,.integrated-operating-flow span{flex:1;min-width:125px;padding:12px;border-radius:10px;background:var(--soft);font-size:11px;font-weight:900;text-align:center}.integrated-os-loop i,.integrated-operating-flow i{color:#dc2626;font-style:normal;font-weight:900}.integrated-operating-flow i{color:#0f766e}.integrated-os-counter{display:flex;flex-wrap:wrap;gap:7px;align-items:center}.integrated-os-counter b{color:#0f766e}.integrated-os-counter span{padding:7px 10px;border-radius:999px;color:#115e59;background:rgba(15,118,110,.1);font-size:10px;font-weight:800}
.integrated-module-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:11px;margin-top:16px}.integrated-module-grid article{display:flex;flex-direction:column;padding:16px;border:1px solid var(--line);border-radius:13px;background:var(--soft)}.integrated-module-grid article>span{align-self:start;padding:4px 7px;border-radius:999px;color:#0f766e;background:rgba(15,118,110,.1);font-size:9px;font-weight:900}.integrated-module-grid h3{margin:9px 0 5px}.integrated-module-grid p{margin:0;color:var(--muted);font-size:11px;line-height:1.65}.integrated-module-grid small{display:block;margin:10px 0;color:#9a3412;line-height:1.5}.integrated-module-grid button{margin-top:auto;padding:8px 10px;border:1px solid #0f766e;border-radius:999px;color:#0f766e;background:var(--paper);font-size:10px;font-weight:900;cursor:pointer}.integrated-os-split{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.integrated-score-list,.integrated-version-list{display:grid;gap:10px;margin-top:15px}.integrated-score-list article>div,.integrated-version-list article>div{display:flex;justify-content:space-between;gap:10px}.integrated-score-list i,.integrated-version-list i{display:block;height:8px;margin:6px 0;border-radius:999px;background:var(--soft);overflow:hidden}.integrated-score-list em,.integrated-version-list em{display:block;height:100%;background:#0f766e}.integrated-score-list small,.integrated-version-list p{color:var(--muted);font-size:10px}.integrated-version-list strong{flex:1}.integrated-version-list p{margin:5px 0;line-height:1.5}.integrated-data-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:9px;margin-top:15px}.integrated-data-grid article{display:grid;grid-template-columns:58px 1fr;gap:10px;padding:13px;border-radius:11px;background:var(--soft)}.integrated-data-grid article>span{align-self:start;color:#9a3412;font-size:10px;font-weight:900}.integrated-data-grid p{margin:4px 0 0;color:var(--muted);font-size:10px;line-height:1.55}.integrated-os-card>.integrated-operating-flow+p{color:var(--muted);font-size:11px;line-height:1.7}
@media(max-width:920px){.integrated-os-hero,.integrated-os-split{grid-template-columns:1fr}.integrated-module-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:600px){.integrated-os-hero{padding:22px}.integrated-os-card{padding:16px}.integrated-os-heading{display:block}.integrated-module-grid,.integrated-data-grid{grid-template-columns:1fr}}

/* 地域経済ダッシュボード */
.economy-command-hero{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(210px,.6fr);gap:24px;align-items:center;padding:32px;border-radius:24px;color:#fff;background:linear-gradient(135deg,#3f2d20,#92400e 55%,#b45309)}.economy-command-hero>div>span,.economy-command-card header span{font-size:10px;font-weight:900;letter-spacing:.13em}.economy-command-hero h1{margin:8px 0;font-size:clamp(27px,4vw,42px)}.economy-command-hero p{margin:0;color:#ffedd5;line-height:1.75}.economy-command-hero aside{padding:18px;border:1px solid rgba(255,255,255,.25);border-radius:16px;background:rgba(255,255,255,.1)}.economy-command-hero aside small,.economy-command-hero aside strong,.economy-command-hero aside p{display:block}.economy-command-hero aside strong{font-size:40px}.economy-command-hero aside strong b{font-size:13px}.economy-command-hero aside p{font-size:10px}
.economy-command-card{margin:14px 0;padding:21px;border:1px solid var(--line);border-radius:17px;background:var(--paper)}.economy-command-card header span{color:#b45309}.economy-command-card header h2{margin:5px 0 14px}.economy-command-card>p{color:var(--muted);line-height:1.75}.economy-command-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.economy-score-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:9px;margin-top:16px}.economy-score-grid article{padding:12px;border-radius:10px;background:var(--soft)}.economy-score-grid article>div{display:flex;justify-content:space-between;gap:8px}.economy-score-grid i{display:block;height:7px;margin:7px 0;border-radius:999px;background:var(--paper);overflow:hidden}.economy-score-grid em{display:block;height:100%;background:#b45309}.economy-score-grid small{color:var(--muted);font-size:9px;line-height:1.4}
.economy-kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.economy-kpis article{padding:13px;border-radius:10px;background:var(--soft)}.economy-kpis span,.economy-kpis small{display:block;color:var(--muted);font-size:9px}.economy-kpis strong{display:block;margin:5px 0;font-size:18px}.economy-findings{display:grid;gap:8px}.economy-findings article{display:grid;grid-template-columns:44px 1fr;gap:10px;padding:11px;border-radius:10px;background:var(--soft)}.economy-findings article>b{color:#b45309}.economy-findings p{margin:4px 0 0;color:var(--muted);font-size:10px;line-height:1.55}
.economy-industry-bars{display:grid;gap:9px}.economy-industry-bars article{display:grid;grid-template-columns:minmax(140px,1fr) minmax(180px,3fr) 80px 70px;gap:10px;align-items:center}.economy-industry-bars i{display:block;height:10px;border-radius:999px;background:var(--soft);overflow:hidden}.economy-industry-bars em{display:block;height:100%;max-width:100%;background:#b45309}.economy-industry-bars strong,.economy-industry-bars small{text-align:right}.economy-industry-bars small{color:var(--muted)}.economy-value-chain{display:flex;align-items:center;gap:7px;overflow-x:auto;padding:8px 0 14px}.economy-value-chain span{flex:1;min-width:115px;padding:12px;border-radius:10px;background:var(--soft);font-size:10px;font-weight:900;text-align:center}.economy-value-chain i{color:#b45309;font-style:normal;font-weight:900}.economy-actions{display:grid;gap:8px;padding:0;list-style:none}.economy-actions li{display:grid;grid-template-columns:90px 1fr;gap:9px;padding:11px;border-bottom:1px solid var(--line)}.economy-actions b{color:#b45309}.economy-actions span{font-size:11px}.economy-data-needs{display:flex;flex-wrap:wrap;gap:7px}.economy-data-needs span{padding:7px 9px;border-radius:999px;color:#9a3412;background:rgba(180,83,9,.09);font-size:10px;font-weight:800}
@media(max-width:920px){.economy-command-hero,.economy-command-grid{grid-template-columns:1fr}.economy-score-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:600px){.economy-command-hero{padding:22px}.economy-command-card{padding:16px}.economy-score-grid,.economy-kpis{grid-template-columns:1fr}.economy-industry-bars article{grid-template-columns:1fr auto}.economy-industry-bars i{grid-column:1/-1;grid-row:2}.economy-industry-bars small{grid-column:2}}

/* 自主財源戦略 */
.own-source-hero{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(220px,.6fr);gap:24px;align-items:center;padding:32px;border-radius:24px;color:#fff;background:linear-gradient(135deg,#172554,#1d4ed8 55%,#0369a1)}.own-source-hero>div>span,.own-source-card header span{font-size:10px;font-weight:900;letter-spacing:.13em}.own-source-hero h1{margin:8px 0;font-size:clamp(27px,4vw,42px)}.own-source-hero p{margin:0;color:#dbeafe;line-height:1.75}.own-source-hero aside{padding:18px;border:1px solid rgba(255,255,255,.25);border-radius:16px;background:rgba(255,255,255,.1)}.own-source-hero aside small,.own-source-hero aside strong,.own-source-hero aside p{display:block}.own-source-hero aside strong{font-size:36px}.own-source-hero aside p{font-size:10px}
.own-source-card{margin:14px 0;padding:21px;border:1px solid var(--line);border-radius:17px;background:var(--paper)}.own-source-card header span{color:#1d4ed8}.own-source-card header h2{margin:5px 0 14px}.own-source-card>p{color:var(--muted);line-height:1.75}.own-source-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.own-source-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:9px}.own-source-kpis article{padding:14px;border-radius:11px;background:var(--soft)}.own-source-kpis span,.own-source-kpis small{display:block;color:var(--muted);font-size:9px}.own-source-kpis strong{display:block;margin:5px 0;font-size:20px}
.own-source-portfolio{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.own-source-portfolio article{padding:15px;border-top:5px solid #1d4ed8;border-radius:12px;background:var(--soft)}.own-source-portfolio article.growth{border-color:#0f766e}.own-source-portfolio article.temporary{border-color:#d97706}.own-source-portfolio article.service{border-color:#7c3aed}.own-source-portfolio article>span{font-size:9px;font-weight:900}.own-source-portfolio h3{margin:6px 0}.own-source-portfolio strong{font-size:21px}.own-source-portfolio p,.own-source-portfolio small{display:block;color:var(--muted);font-size:9px;line-height:1.5}
.tax-source-trends{display:grid;gap:8px}.tax-source-trends article{display:grid;grid-template-columns:1fr auto 70px;gap:10px;padding:11px;border-bottom:1px solid var(--line)}.tax-source-trends b{text-align:right}.hometown-waterfall{display:flex;align-items:center;gap:6px;overflow-x:auto}.hometown-waterfall article{flex:1;min-width:110px;padding:12px;border-radius:10px;background:var(--soft)}.hometown-waterfall article.net{color:#fff;background:#0f766e}.hometown-waterfall span,.hometown-waterfall strong{display:block}.hometown-waterfall span{font-size:9px}.hometown-waterfall i{font-style:normal;font-weight:900}.own-source-flow{display:flex;align-items:center;gap:7px;overflow-x:auto;padding:8px 0 13px}.own-source-flow span{flex:1;min-width:135px;padding:12px;border-radius:10px;background:var(--soft);font-size:10px;font-weight:900;text-align:center}.own-source-flow i{color:#1d4ed8;font-style:normal;font-weight:900}.own-source-priorities{display:grid;gap:8px}.own-source-priorities article{display:grid;grid-template-columns:30px 1fr;gap:10px;padding:11px;border-bottom:1px solid var(--line)}.own-source-priorities article>b{display:grid;place-items:center;width:27px;height:27px;border-radius:50%;color:#fff;background:#1d4ed8}.own-source-priorities p{margin:4px 0 0;color:var(--muted);font-size:10px;line-height:1.55}
@media(max-width:920px){.own-source-hero,.own-source-grid{grid-template-columns:1fr}.own-source-portfolio,.own-source-kpis{grid-template-columns:repeat(2,1fr)}}@media(max-width:600px){.own-source-hero{padding:22px}.own-source-card{padding:16px}.own-source-portfolio,.own-source-kpis{grid-template-columns:1fr}.hometown-waterfall{align-items:stretch}}

/* 地域商社戦略室 */
.trading-room-hero{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(230px,.6fr);gap:24px;align-items:center;padding:32px;border-radius:24px;color:#fff;background:linear-gradient(135deg,#3b1d2b,#7c2d12 55%,#a16207)}.trading-room-hero>div>span,.trading-room-card header span{font-size:10px;font-weight:900;letter-spacing:.13em}.trading-room-hero h1{margin:8px 0;font-size:clamp(27px,4vw,42px)}.trading-room-hero p{margin:0;color:#fef3c7;line-height:1.75}.trading-room-hero aside{padding:18px;border:1px solid rgba(255,255,255,.25);border-radius:16px;background:rgba(255,255,255,.1)}.trading-room-hero aside small,.trading-room-hero aside strong,.trading-room-hero aside p{display:block}.trading-room-hero aside strong{margin:5px 0;font-size:23px}.trading-room-hero aside p{font-size:10px}
.trading-room-card{margin:14px 0;padding:21px;border:1px solid var(--line);border-radius:17px;background:var(--paper)}.trading-room-card header span{color:#9a3412}.trading-room-card header h2{margin:5px 0 14px}.trading-room-card>p{color:var(--muted);line-height:1.75}.trading-room-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.trading-resource-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.trading-resource-grid article{padding:15px;border-radius:12px;background:var(--soft)}.trading-resource-grid article>div{display:flex;justify-content:space-between;gap:8px}.trading-resource-grid h3{margin:0}.trading-resource-grid article>div>strong{color:#9a3412;font-size:20px}.trading-resource-grid i{display:block;height:7px;margin:8px 0;border-radius:999px;background:var(--paper);overflow:hidden}.trading-resource-grid em{display:block;height:100%;background:#b45309}.trading-resource-grid p{color:var(--muted);font-size:10px}.trading-resource-grid dl{display:grid;gap:5px}.trading-resource-grid dl div{display:grid;grid-template-columns:38px 1fr;gap:5px;font-size:9px}.trading-resource-grid dt{color:#9a3412}.trading-resource-grid dd{margin:0;line-height:1.45}
.trading-value-chain{display:flex;align-items:center;gap:7px;overflow-x:auto}.trading-value-chain span{flex:1;min-width:120px;padding:12px;border-radius:10px;background:var(--soft);font-size:10px;font-weight:900;text-align:center}.trading-value-chain i{color:#b45309;font-style:normal;font-weight:900}.trading-public-support{display:grid;grid-template-columns:repeat(2,1fr);gap:9px}.trading-public-support article{padding:13px;border-radius:10px;background:var(--soft)}.trading-public-support span,.trading-public-support small{display:block;color:var(--muted);font-size:9px}.trading-public-support strong{display:block;margin:5px 0;font-size:18px}.trading-kpi-list{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.trading-kpi-list article{padding:11px;border:1px dashed var(--line);border-radius:10px}.trading-kpi-list article>div{display:flex;justify-content:space-between;gap:8px}.trading-kpi-list span{color:#b45309;font-size:9px;font-weight:900}.trading-kpi-list p{margin:5px 0 0;color:var(--muted);font-size:9px;line-height:1.5}
.trading-scenarios{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.trading-scenarios article{padding:15px;border:1px solid var(--line);border-radius:12px;background:var(--soft)}.trading-scenarios article.recommended{border:2px solid #b45309}.trading-scenarios article>span{color:#9a3412;font-size:9px;font-weight:900}.trading-scenarios h3{margin:6px 0 10px}.trading-scenarios dl{display:grid;gap:6px}.trading-scenarios dl div{display:grid;grid-template-columns:62px 1fr;gap:6px;font-size:10px}.trading-scenarios dt{color:var(--muted)}.trading-scenarios dd{margin:0}.trading-pilot{display:grid;grid-template-columns:repeat(4,1fr);gap:9px}.trading-pilot article{display:grid;grid-template-columns:28px 1fr;gap:8px;padding:13px;border-radius:11px;background:var(--soft)}.trading-pilot article>b{display:grid;place-items:center;width:26px;height:26px;border-radius:50%;color:#fff;background:#9a3412}.trading-pilot p{margin:4px 0 0;color:var(--muted);font-size:9px;line-height:1.5}
@media(max-width:920px){.trading-room-hero,.trading-room-grid{grid-template-columns:1fr}.trading-resource-grid,.trading-pilot{grid-template-columns:repeat(2,1fr)}}@media(max-width:600px){.trading-room-hero{padding:22px}.trading-room-card{padding:16px}.trading-resource-grid,.trading-scenarios,.trading-pilot,.trading-public-support,.trading-kpi-list{grid-template-columns:1fr}}

/* 2040未来予測センター */
.future-center-hero{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(220px,.6fr);gap:24px;align-items:center;padding:32px;border-radius:24px;color:#fff;background:linear-gradient(135deg,#111827,#312e81 55%,#0369a1)}.future-center-hero>div>span,.future-center-card header span{font-size:10px;font-weight:900;letter-spacing:.13em}.future-center-hero h1{margin:8px 0;font-size:clamp(27px,4vw,42px)}.future-center-hero p{margin:0;color:#dbeafe;line-height:1.75}.future-center-hero aside{padding:18px;border:1px solid rgba(255,255,255,.25);border-radius:16px;background:rgba(255,255,255,.1)}.future-center-hero aside small,.future-center-hero aside strong,.future-center-hero aside p{display:block}.future-center-hero aside strong{font-size:30px}.future-center-hero aside p{font-size:10px}
.future-center-card{margin:14px 0;padding:21px;border:1px solid var(--line);border-radius:17px;background:var(--paper)}.future-center-card header span{color:#4338ca}.future-center-card header h2{margin:5px 0 14px}.future-center-card>p{color:var(--muted);line-height:1.75}.future-center-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.future-horizon-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:11px}.future-horizon-grid>article{padding:16px;border-top:5px solid #4338ca;border-radius:13px;background:var(--soft)}.future-horizon-grid>article>div{display:flex;justify-content:space-between;gap:8px}.future-horizon-grid>article>div>span{font-size:24px;font-weight:900}.future-horizon-grid>article>div>b{align-self:center;color:#4338ca;font-size:9px}.future-horizon-grid>article>strong{display:block;margin:8px 0;font-size:24px}.future-horizon-grid dl{display:grid;gap:5px}.future-horizon-grid dl div{display:flex;justify-content:space-between;gap:8px;padding:5px 0;border-bottom:1px solid var(--line);font-size:10px}.future-horizon-grid dd{margin:0;font-weight:900}
.future-center-flow{display:flex;align-items:center;gap:7px;overflow-x:auto}.future-center-flow span{flex:1;min-width:140px;padding:12px;border-radius:10px;background:var(--soft);font-size:10px;font-weight:900;text-align:center}.future-center-flow i{color:#4338ca;font-style:normal;font-weight:900}.future-risk-list{display:grid;gap:8px}.future-risk-list article{display:grid;grid-template-columns:62px 1fr;gap:9px;padding:11px;border-radius:10px;background:var(--soft)}.future-risk-list article>span{align-self:start;color:#9a3412;font-size:9px;font-weight:900}.future-risk-list p{margin:3px 0 0;color:var(--muted);font-size:10px}.future-decision-list{display:grid;gap:9px;padding:0;list-style:none}.future-decision-list li{display:grid;grid-template-columns:75px 1fr;gap:10px;padding:12px;border-bottom:1px solid var(--line)}.future-decision-list b{color:#4338ca}.future-decision-list span{font-size:11px;line-height:1.55}.future-missing-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:9px}.future-missing-grid article{padding:13px;border:1px dashed var(--line);border-radius:10px}.future-missing-grid p{margin:5px 0 0;color:var(--muted);font-size:10px;line-height:1.55}
.future-choice-scenarios > p { color: var(--muted); line-height: 1.75; }
.future-choice-grid { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 10px; margin-top: 14px; }
.future-choice-grid article { display: flex; flex-direction: column; gap: 10px; padding: 15px; border: 1px solid var(--line); border-top: 5px solid #4338ca; border-radius: 13px; background: var(--soft); }
.future-choice-grid article.facility-reform { border-top-color: #0f766e; }
.future-choice-grid article.economic-growth { border-top-color: #b45309; }
.future-choice-grid article.rmo-pfu { border-top-color: #7c3aed; }
.future-choice-grid article > div { display: grid; gap: 5px; }
.future-choice-grid article > div span { color: var(--muted); font-size: 9px; font-weight: 900; }
.future-choice-grid article > div b { font-size: 15px; line-height: 1.4; }
.future-choice-grid p { margin: 0; color: var(--muted); font-size: 10px; line-height: 1.6; }
.future-choice-grid dl { display: grid; gap: 5px; margin: 0; }
.future-choice-grid dl div { display: flex; justify-content: space-between; gap: 8px; padding-top: 5px; border-top: 1px solid var(--line); font-size: 10px; }
.future-choice-grid dd { margin: 0; font-weight: 900; text-align: right; }
.future-choice-grid small { display: block; margin-top: auto; color: var(--muted); font-size: 9px; line-height: 1.55; }
.future-choice-actions { display: flex; flex-wrap: wrap; gap: 8px; margin: 14px 0; }
.future-choice-actions button { padding: 10px 13px; border: 0; border-radius: 10px; color: #fff; background: #4338ca; font-size: 10px; font-weight: 900; cursor: pointer; }
.future-project-portfolio > p { margin: 0 0 14px; color: var(--muted); font-size: 12px; line-height: 1.75; }
.future-project-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 12px; }
.future-project-grid article { display: flex; flex-direction: column; gap: 10px; min-height: 300px; padding: 16px; border: 1px solid var(--line); border-top: 5px solid #2563eb; border-radius: 15px; background: var(--paper); box-shadow: 0 10px 24px rgba(15,23,42,.05); }
.future-project-grid article.growth { border-top-color: #b45309; }
.future-project-grid article.life { border-top-color: #0f766e; }
.future-project-grid article.system { border-top-color: #7c3aed; }
.future-project-head { display: flex; justify-content: space-between; gap: 8px; align-items: center; }
.future-project-head span,.future-project-head b { font-size: 8px; font-weight: 900; }
.future-project-head span { color: var(--muted); letter-spacing: .08em; }
.future-project-head b { padding: 4px 7px; border-radius: 999px; color: #1e3a8a; background: #dbeafe; white-space: nowrap; }
.future-project-grid h3 { margin: 0; font-size: 16px; line-height: 1.45; }
.future-project-grid p { margin: 0; color: var(--muted); font-size: 11px; line-height: 1.65; }
.future-project-grid dl { display: grid; gap: 7px; margin: 0; }
.future-project-grid dl div { padding-top: 7px; border-top: 1px solid var(--line); }
.future-project-grid dt,.future-project-grid dd { margin: 0; font-size: 10px; line-height: 1.55; }
.future-project-grid dt { color: var(--muted); font-weight: 900; }
.future-project-grid dd { font-weight: 800; }
.future-project-grid small { display: block; margin-top: auto; color: var(--muted); font-size: 9px; line-height: 1.55; }
.future-project-grid button,.future-project-actions button { padding: 10px 12px; border: 0; border-radius: 10px; color: #fff; background: #1d4ed8; font-size: 10px; font-weight: 900; cursor: pointer; }
.future-project-grid article.growth button { background: #b45309; }
.future-project-grid article.life button { background: #0f766e; }
.future-project-grid article.system button { background: #7c3aed; }
.future-project-actions { display: flex; flex-wrap: wrap; gap: 8px; margin: 14px 0; }
@media(max-width:920px){.future-center-hero,.future-center-grid{grid-template-columns:1fr}.future-horizon-grid,.future-choice-grid,.future-project-grid{grid-template-columns:repeat(2,1fr)}.future-missing-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:600px){.future-center-hero{padding:22px}.future-center-card{padding:16px}.future-horizon-grid,.future-missing-grid,.future-choice-grid,.future-project-grid{grid-template-columns:1fr}}

/* 自治体健康診断 */
.city-health-hero{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(220px,.6fr);gap:24px;align-items:center;padding:32px;border-radius:24px;color:#fff;background:linear-gradient(135deg,#0f172a,#065f46 55%,#0f766e)}.city-health-hero>div>span,.city-health-card header span{font-size:10px;font-weight:900;letter-spacing:.13em}.city-health-hero h1{margin:8px 0;font-size:clamp(28px,4vw,43px)}.city-health-hero p{margin:0;color:#d1fae5;line-height:1.75}.city-health-hero aside{padding:18px;border:1px solid rgba(255,255,255,.25);border-radius:16px;background:rgba(255,255,255,.1)}.city-health-hero aside small,.city-health-hero aside strong,.city-health-hero aside span{display:block}.city-health-hero aside strong{font-size:38px}.city-health-hero aside strong b{font-size:13px}.city-health-hero aside span{font-size:10px}
.city-health-card{margin:14px 0;padding:21px;border:1px solid var(--line);border-radius:17px;background:var(--paper)}.city-health-card header span{color:#0f766e}.city-health-card header h2{margin:5px 0 14px}.city-health-card>p{color:var(--muted);line-height:1.75}.city-health-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.city-health-domain-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.city-health-domain-grid article{display:flex;flex-direction:column;padding:14px;border-top:5px solid #0f766e;border-radius:12px;background:var(--soft)}.city-health-domain-grid article.watch{border-color:#d97706}.city-health-domain-grid article.danger{border-color:#dc2626}.city-health-domain-grid article.unmeasured{border-color:#64748b}.city-health-domain-grid article>div{display:flex;justify-content:space-between;gap:8px}.city-health-domain-grid article>div>span{font-size:9px;font-weight:900}.city-health-domain-grid article>div>strong{font-size:20px}.city-health-domain-grid h3{margin:6px 0}.city-health-domain-grid i{display:block;height:7px;border-radius:999px;background:var(--paper);overflow:hidden}.city-health-domain-grid em{display:block;height:100%;background:#0f766e}.city-health-domain-grid p{margin:7px 0;color:var(--muted);font-size:10px;line-height:1.5}.city-health-domain-grid small{font-size:9px}.city-health-domain-grid button{margin-top:auto;padding:7px;border:1px solid var(--line);border-radius:999px;color:var(--ink);background:var(--paper);font-size:9px;font-weight:900;cursor:pointer}
.city-health-priority{display:grid;gap:8px}.city-health-priority article{display:grid;grid-template-columns:30px 1fr auto;gap:10px;align-items:center;padding:11px;border-bottom:1px solid var(--line)}.city-health-priority article>b{display:grid;place-items:center;width:27px;height:27px;border-radius:50%;color:#fff;background:#dc2626}.city-health-priority p{margin:4px 0 0;color:var(--muted);font-size:10px}.city-health-priority article>span{font-weight:900}.city-health-gaps{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.city-health-gaps article{padding:12px;border:1px dashed var(--line);border-radius:10px}.city-health-gaps p{margin:4px 0 0;color:var(--muted);font-size:10px;line-height:1.5}.city-health-prescriptions{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.city-health-prescriptions article{padding:14px;border-radius:11px;background:var(--soft)}.city-health-prescriptions b{color:#0f766e}.city-health-prescriptions p{margin:5px 0 0;color:var(--muted);font-size:10px;line-height:1.55}
@media(max-width:1000px){.city-health-domain-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:760px){.city-health-hero,.city-health-grid{grid-template-columns:1fr}.city-health-prescriptions{grid-template-columns:1fr}}@media(max-width:520px){.city-health-hero{padding:22px}.city-health-card{padding:16px}.city-health-domain-grid,.city-health-gaps{grid-template-columns:1fr}.city-health-priority article{grid-template-columns:28px 1fr}.city-health-priority article>span{grid-column:2}}
@media (max-width: 600px) {
  .stat-discovery-hero,.stat-discovery-kpis,.stat-health-grid,.stat-citizen-guide dl { grid-template-columns: 1fr; }
  .stat-discovery-hero { padding: 21px; }
  .stat-discovery-card { padding: 16px; }
  .stat-correlation article { grid-template-columns: 1fr auto; }
  .stat-correlation meter { grid-column: 1 / -1; grid-row: 2; }
}

.focus-hero {
  display: grid;
  grid-template-columns: minmax(320px, 1.2fr) minmax(300px, 0.9fr) minmax(300px, 0.9fr);
  gap: 16px;
}

.focus-card {
  min-width: 0;
  padding: 16px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--paper);
  box-shadow: var(--shadow);
}

.focus-head {
  display: flex;
  align-items: start;
  justify-content: space-between;
  gap: 14px;
  margin-bottom: 12px;
}

.focus-kicker {
  display: block;
  margin-bottom: 3px;
  color: var(--blue);
  font-size: 11px;
  font-weight: 800;
}

.focus-card p {
  color: var(--muted);
  font-size: 13px;
  line-height: 1.7;
}

.health-badge {
  display: grid;
  flex: 0 0 auto;
  place-items: center;
  width: 58px;
  height: 58px;
  border-radius: 50%;
  color: white;
  font-size: 21px;
  font-weight: 850;
}

.health-badge.good {
  background: var(--green);
}

.health-badge.warn {
  background: var(--amber);
}

.health-badge.bad {
  background: var(--red);
}

.score-breakdown {
  display: grid;
  gap: 8px;
  margin-top: 14px;
}

.score-formula,
.score-part {
  display: grid;
  grid-template-columns: minmax(92px, 1fr) auto;
  gap: 4px 10px;
  align-items: center;
  padding: 9px 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfcfd;
}

.score-formula {
  border-left: 4px solid var(--blue);
}

.score-formula span,
.score-part span {
  color: var(--muted);
  font-size: 11px;
  font-weight: 850;
}

.score-formula strong,
.score-part strong {
  font-size: 14px;
  text-align: right;
}

.score-formula small,
.score-part small {
  grid-column: 1 / -1;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.45;
}

.score-part.positive strong {
  color: var(--green);
}

.score-part.negative strong {
  color: var(--red);
}

.score-part.neutral strong {
  color: var(--ink);
}

.focus-story {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
  margin-top: 16px;
}

.focus-story div {
  min-height: 76px;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfcfd;
}

.focus-story span,
.spark-grid span {
  display: block;
  margin-bottom: 6px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
}

.focus-story strong {
  display: block;
  font-size: 20px;
  line-height: 1.25;
}

.spark-grid {
  display: grid;
  gap: 10px;
}

.spark-grid article {
  padding: 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfcfd;
}

.sparkline {
  display: block;
  width: 100%;
  height: 58px;
}

.sparkline { color: #2563a9; }
.sparkline.good { color: var(--green); }
.sparkline.bad { color: var(--red); }

.sparkline .spark-line {
  fill: none;
  stroke: currentColor;
  stroke-width: 2.6;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.sparkline .spark-area {
  fill: currentColor;
  opacity: 0.12;
  stroke: none;
}

.sparkline circle {
  fill: var(--paper);
  stroke: currentColor;
  stroke-width: 2.4;
}

.pressure-row {
  display: grid;
  gap: 7px;
  margin: 12px 0;
}

.pressure-label {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
}

.pressure-label strong {
  color: var(--ink);
}

.pressure-track {
  height: 12px;
  overflow: hidden;
  border-radius: 4px;
  background: #edf1f4;
}

.pressure-track div {
  height: 100%;
  border-radius: 4px;
  background: var(--blue);
}

.pressure-row.red .pressure-track div {
  background: var(--red);
}

.pressure-row.green .pressure-track div {
  background: var(--green);
}

.focus-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
  margin: 16px 0;
}

.focus-insight {
  min-height: 120px;
  padding: 14px;
  border: 1px solid var(--line);
  border-left: 4px solid var(--blue);
  border-radius: 8px;
  background: var(--paper);
}

.focus-insight strong {
  display: block;
  margin-bottom: 8px;
  font-size: 14px;
}

.focus-insight p {
  color: var(--muted);
  font-size: 13px;
  line-height: 1.7;
}

.focus-insight.good {
  border-left-color: var(--green);
  background: var(--soft-green);
}

.focus-insight.warn {
  border-left-color: var(--amber);
  background: var(--soft-amber);
}

.focus-insight.bad {
  border-left-color: var(--red);
  background: var(--soft-red);
}

.focus-lower {
  display: grid;
  grid-template-columns: minmax(0, 1.5fr) minmax(280px, 0.8fr);
  gap: 16px;
}

.kpi,
.panel,
.insight {
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--paper);
  box-shadow: var(--shadow);
}

.kpi {
  padding: 14px;
}

.kpi .label {
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
}

.kpi .value {
  margin-top: 8px;
  font-size: clamp(20px, 2.2vw, 28px);
  font-weight: 800;
}

.kpi .delta {
  margin-top: 6px;
  color: var(--muted);
  font-size: 12px;
}

.delta.up {
  color: var(--green);
}

.delta.down {
  color: var(--red);
}

.dashboard {
  display: grid;
  grid-template-columns: minmax(0, 1.45fr) minmax(320px, 0.75fr);
  gap: 16px;
}

.graph-board {
  display: block;
}

.graph-library-hero {
  display: grid;
  grid-template-columns: minmax(0, 1.2fr) minmax(420px, 0.8fr);
  gap: 24px;
  align-items: end;
  margin-bottom: 16px;
  padding: clamp(22px, 4vw, 38px);
  border: 1px solid var(--line);
  border-radius: 18px;
  background: linear-gradient(140deg, color-mix(in srgb, var(--soft-green) 60%, var(--paper)), var(--paper));
}

.graph-library-hero h1 {
  margin: 4px 0 10px;
  font-size: clamp(28px, 4vw, 44px);
}

.graph-library-hero > div:first-child > p:last-child {
  max-width: 720px;
  color: var(--muted);
  line-height: 1.75;
}

.graph-library-summary {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
}

.graph-library-summary article {
  display: grid;
  gap: 3px;
  padding: 13px;
  border: 1px solid var(--line);
  border-radius: 11px;
  background: var(--paper);
}

.graph-library-summary span,
.graph-library-summary small {
  color: var(--muted);
  font-size: 10px;
}

.graph-library-summary strong {
  font-size: 17px;
}
.gac-hero { display: grid; grid-template-columns: minmax(0, 1.45fr) minmax(260px, .55fr); gap: 18px; margin: 18px 0; padding: clamp(22px, 4vw, 36px); border-radius: 20px; color: #fff; background: linear-gradient(140deg, #172554, #1d4ed8 58%, #0f766e); box-shadow: 0 18px 40px rgba(30,64,175,.18); }
.gac-hero > div > span, .gac-head > span { font-size: 10px; font-weight: 900; letter-spacing: .08em; }
.gac-hero h2 { margin: 8px 0; font-size: clamp(23px, 3vw, 36px); }
.gac-hero p { margin: 0; color: #dbeafe; font-size: 12.5px; line-height: 1.8; }
.gac-hero aside { padding: 18px; border: 1px solid rgba(255,255,255,.24); border-radius: 15px; background: rgba(255,255,255,.1); }
.gac-hero aside small, .gac-hero aside strong { display: block; }
.gac-hero aside small { color: #bfdbfe; font-weight: 800; }
.gac-hero aside strong { margin: 9px 0; font-size: 18px; }
.gac-grid { display: grid; grid-template-columns: 1.25fr .75fr; gap: 16px; margin-bottom: 16px; }
.gac-card { margin-bottom: 16px; padding: 20px; border: 1px solid var(--line); border-radius: 16px; background: var(--paper); }
.gac-grid .gac-card { margin-bottom: 0; }
.gac-head { margin-bottom: 14px; }
.gac-head > span { color: #2563eb; }
.gac-head h3 { margin: 4px 0 0; font-size: 17px; }
.gac-timeline { display: grid; gap: 8px; }
.gac-timeline article { display: grid; grid-template-columns: 48px 1fr; gap: 10px; padding: 10px; border-radius: 10px; background: var(--surface-subtle); }
.gac-timeline b { color: #2563eb; }
.gac-timeline strong { font-size: 12px; }
.gac-timeline p { margin: 3px 0 0; color: var(--muted); font-size: 10.5px; }
.gac-caution { margin: 12px 0 0; color: var(--muted); font-size: 10px; line-height: 1.65; }
.gac-health svg { display: block; width: min(100%, 310px); margin: auto; overflow: visible; }
.gac-health polygon { fill: none; stroke: var(--line); }
.gac-health line { stroke: var(--line); }
.gac-health text { fill: var(--muted); font-size: 8px; }
.gac-health .gac-radar-value { fill: rgba(37,99,235,.22); stroke: #2563eb; stroke-width: 2; }
.gac-chain { display: flex; align-items: stretch; gap: 8px; overflow-x: auto; }
.gac-chain span { display: grid; place-items: center; min-width: 145px; flex: 1; padding: 15px 11px; border-radius: 11px; background: color-mix(in srgb, #2563eb 9%, var(--paper)); color: var(--ink); font-size: 11px; font-weight: 800; text-align: center; }
.gac-chain i { align-self: center; color: var(--muted); font-style: normal; }
.gac-forecast { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
.gac-forecast article { padding: 15px; border: 1px solid var(--line); border-radius: 12px; background: var(--surface-subtle); }
.gac-forecast article > div { display: flex; justify-content: space-between; gap: 8px; }
.gac-forecast article > div strong { font-size: 18px; }
.gac-forecast article > div span { color: #2563eb; font-size: 9px; font-weight: 800; }
.gac-forecast article > b { display: block; margin: 8px 0; font-size: 20px; }
.gac-forecast dl { display: grid; gap: 5px; margin: 0; }
.gac-forecast dl div { display: flex; justify-content: space-between; font-size: 10px; }
.gac-forecast dt { color: var(--muted); }
.gac-forecast dd { margin: 0; font-weight: 800; }
.gac-support { display: grid; grid-template-columns: repeat(2, 1fr); gap: 9px; }
.gac-support article { padding: 13px; border-radius: 11px; background: var(--surface-subtle); }
.gac-support strong { color: #2563eb; font-size: 11px; }
.gac-support p { margin: 5px 0 0; color: var(--muted); font-size: 10.5px; line-height: 1.65; }

.graph-library-controls {
  display: grid;
  grid-template-columns: minmax(260px, 0.7fr) minmax(0, 1.3fr);
  gap: 14px;
  align-items: end;
  margin-bottom: 18px;
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 13px;
  background: var(--paper);
}

.graph-library-controls label {
  display: grid;
  gap: 6px;
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
}

.graph-library-controls input {
  min-height: 42px;
  padding: 9px 12px;
  border: 1px solid var(--line);
  border-radius: 9px;
  background: var(--surface-subtle);
  color: var(--ink);
  font: inherit;
}

.graph-category-filter {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  justify-content: flex-end;
}

.graph-category-filter button {
  min-height: 36px;
  padding: 7px 11px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: var(--paper);
  color: var(--muted);
  cursor: pointer;
  font-size: 11px;
  font-weight: 800;
}

.graph-category-filter button:hover,
.graph-category-filter button.active {
  border-color: var(--uto-accent);
  background: color-mix(in srgb, var(--soft-green) 70%, var(--paper));
  color: var(--uto-accent);
}

.graph-library-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
}

.graph-library-grid .graph-panel {
  position: relative;
  display: grid;
  align-content: start;
  border-radius: 15px;
}

.graph-card-heading {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  align-items: start;
  margin-bottom: 9px;
}

.graph-card-heading > div:first-child > span {
  color: var(--uto-accent);
  font-size: 10px;
  font-weight: 900;
}

.graph-card-heading h2 {
  margin-top: 3px;
  font-size: 18px;
}

.graph-card-heading p {
  margin-top: 4px;
  color: var(--muted);
  font-size: 11px;
}

.graph-card-latest {
  display: grid;
  flex: 0 0 auto;
  gap: 2px;
  text-align: right;
}

.graph-card-latest span {
  color: var(--muted);
  font-size: 9px;
}

.graph-card-latest strong {
  font-size: 18px;
}

.graph-card-stats {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
  margin-bottom: 8px;
}

.graph-card-stats span {
  padding: 4px 7px;
  border-radius: 999px;
  background: var(--surface-subtle);
  color: var(--muted);
  font-size: 9px;
  font-weight: 700;
}

.graph-discovery-strip {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 7px;
  margin: 4px 0 10px;
}

.graph-discovery-strip span {
  display: grid;
  min-width: 0;
  gap: 3px;
  padding: 9px 10px;
  border: 1px solid color-mix(in srgb, var(--line) 78%, transparent);
  border-radius: 12px;
  color: var(--muted);
  background: color-mix(in srgb, var(--paper) 86%, var(--surface-subtle));
  font-size: 11px;
  font-weight: 800;
  line-height: 1.45;
  transition: transform .18s ease, border-color .18s ease, background .18s ease;
}

.graph-discovery-strip span:hover {
  transform: translateY(-1px);
  border-color: color-mix(in srgb, var(--uto-accent) 28%, var(--line));
  background: color-mix(in srgb, var(--soft-green) 42%, var(--paper));
}

.graph-discovery-strip b {
  color: var(--ink);
  font-size: 10px;
  letter-spacing: .06em;
}

.graph-discovery-strip .spark b { color: #7c3aed; }
.graph-discovery-strip .up b { color: #047857; }
.graph-discovery-strip .down b { color: #be123c; }
.graph-discovery-strip .steady b { color: #2563eb; }
.graph-discovery-strip .next b { color: #b45309; }
.graph-discovery-strip .period b { color: #475569; }

.graph-reading {
  margin-top: 8px;
  padding: 11px 12px;
  border-left: 3px solid var(--uto-accent);
  border-radius: 0 8px 8px 0;
  background: var(--surface-subtle);
}

.graph-reading strong {
  display: block;
  margin-bottom: 3px;
  font-size: 11px;
}

.graph-reading p {
  color: var(--muted);
  font-size: 11px;
  line-height: 1.6;
}
.graph-ai-reading { display: grid; gap: 8px; margin-top: 8px; padding: 12px; border: 1px solid color-mix(in srgb, #2563eb 25%, var(--line)); border-radius: 10px; background: color-mix(in srgb, #2563eb 5%, var(--paper)); }
.graph-ai-reading > div { display: grid; grid-template-columns: 88px 1fr; gap: 8px; }
.graph-ai-reading strong { color: #1d4ed8; font-size: 10.5px; }
.graph-ai-reading p { margin: 0; color: var(--muted); font-size: 10.5px; line-height: 1.55; }
.graph-ai-reading small { color: var(--muted); font-size: 9.5px; text-align: right; }

.graph-library-empty {
  grid-column: 1 / -1;
  padding: 48px;
  border: 1px dashed var(--line);
  border-radius: 14px;
  color: var(--muted);
  text-align: center;
}

.panel {
  min-width: 0;
  padding: 16px;
}

.panel-head {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 12px;
}

.panel-head p {
  margin-top: 4px;
  color: var(--muted);
  font-size: 12px;
}

.chart {
  width: 100%;
  min-height: 320px;
}

.chart svg {
  display: block;
  width: 100%;
  height: 320px;
}

.graph-chart {
  min-height: 360px;
}

.graph-chart svg {
  height: 310px;
}

.legend {
  display: flex;
  align-items: center;
  gap: 12px;
  min-height: 28px;
  margin-bottom: 6px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
}

.legend.wrap {
  flex-wrap: wrap;
  align-content: start;
  min-height: 54px;
}

@media (max-width: 980px) {
  .gac-hero, .gac-grid { grid-template-columns: 1fr; }
  .graph-library-hero {
    grid-template-columns: 1fr;
  }

  .graph-library-controls {
    grid-template-columns: 1fr;
  }

  .graph-category-filter {
    justify-content: flex-start;
  }
}

@media (max-width: 760px) {
  .gac-forecast, .gac-support { grid-template-columns: 1fr; }
  .gac-chain { padding-bottom: 5px; }
  .graph-ai-reading > div { grid-template-columns: 1fr; gap: 2px; }
  .graph-library-grid {
    grid-template-columns: 1fr;
  }

  .graph-library-summary {
    grid-template-columns: 1fr;
  }

  .graph-card-heading {
    display: grid;
  }

  .graph-card-latest {
    text-align: left;
  }
}

.legend span {
  display: inline-flex;
  align-items: center;
  gap: 5px;
}

.legend i {
  display: inline-block;
  width: 10px;
  height: 10px;
  border-radius: 2px;
}

.axis,
.tick {
  stroke: #c9d1d9;
  stroke-width: 1;
}

.grid {
  stroke: #eaeef2;
  stroke-width: 1;
}

.line {
  fill: none;
  stroke: var(--blue);
  stroke-width: 3;
}

.point {
  fill: var(--paper);
  stroke: var(--blue);
  stroke-width: 2.5;
}

.svg-hover-node {
  cursor: crosshair;
  outline: none;
}

.svg-hit-area {
  fill: transparent !important;
  stroke: transparent !important;
}

.svg-series-point {
  fill: var(--paper);
  stroke-width: 2.4;
}

.svg-tooltip {
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.12s ease;
}

.svg-tooltip rect {
  fill: #ffffff;
  stroke: #cbd5e1;
  filter: drop-shadow(0 10px 18px rgba(15, 23, 42, 0.16));
}

.svg-tooltip text {
  fill: var(--ink);
  font-size: 11px;
  font-weight: 900;
}

.svg-hover-node:hover .svg-tooltip,
.svg-hover-node:focus-visible .svg-tooltip {
  opacity: 1;
}

.svg-hover-node:hover .point,
.svg-hover-node:focus-visible .point,
.svg-hover-node:hover .svg-series-point,
.svg-hover-node:focus-visible .svg-series-point {
  r: 5.5;
  stroke-width: 3;
}

.bar-row {
  display: grid;
  grid-template-columns: minmax(86px, 132px) minmax(120px, 1fr) 80px;
  align-items: center;
  gap: 10px;
  min-height: 34px;
  margin: 8px 0;
}

.bar-label,
.bar-value {
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
}

.bar-value {
  text-align: right;
}

.bar-track {
  height: 12px;
  overflow: hidden;
  border-radius: 4px;
  background: #edf1f4;
}

.revenue-fill,
.expense-fill {
  height: 100%;
  border-radius: 4px;
}

.revenue-fill {
  background: var(--blue);
}

.expense-fill {
  background: var(--teal);
}

.insights {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
  margin: 16px 0;
}

.insight {
  padding: 14px;
  line-height: 1.6;
}

.insight strong {
  display: block;
  margin-bottom: 4px;
}

.insight span {
  color: var(--muted);
  font-size: 13px;
}

.analysis-panel {
  margin: 16px 0;
  padding: 16px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--paper);
  box-shadow: var(--shadow);
}

.analysis-head {
  margin-bottom: 14px;
}

.analysis-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}

.analysis-card {
  min-height: 126px;
  padding: 14px;
  border: 1px solid var(--line);
  border-left: 4px solid var(--blue);
  border-radius: 7px;
  background: #fbfcfd;
  line-height: 1.7;
}

.analysis-card strong {
  display: block;
  margin-bottom: 6px;
  font-size: 14px;
}

.analysis-card p {
  color: #3d4650;
  font-size: 13px;
}

.table-panel {
  margin-top: 16px;
}

.detail-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
  margin-top: 16px;
}

.detail-card {
  min-width: 0;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--paper);
  box-shadow: var(--shadow);
  overflow: hidden;
}

.detail-card h3 {
  margin: 0;
  padding: 12px 14px;
  border-bottom: 1px solid var(--line);
  background: #f0f3f6;
  font-size: 15px;
}

.fiscal-detail {
  margin-top: 16px;
}

.enterprise-detail {
  margin-top: 16px;
}

.utility-finance-alert {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 18px;
  align-items: center;
  padding: 22px;
  border: 1px solid color-mix(in srgb, var(--status-structural) 35%, var(--line));
  border-radius: 16px;
  background: var(--soft-red);
}

.utility-finance-alert span,
.utility-finance-alert p {
  color: var(--muted);
}

.utility-finance-alert strong {
  display: block;
  margin: 5px 0;
  color: var(--status-structural);
  font-size: 30px;
}

.utility-finance-alert p {
  margin: 0;
  line-height: 1.7;
}

.utility-finance-alert button {
  padding: 11px 14px;
  border: 1px solid var(--status-structural);
  border-radius: 9px;
  background: var(--paper);
  color: var(--status-structural);
  cursor: pointer;
  font-weight: 800;
}

.utility-finance-kpis {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
}

.utility-finance-kpis article {
  display: grid;
  gap: 7px;
  padding: 18px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: var(--paper);
}

.utility-finance-kpis span,
.utility-finance-kpis small,
.utility-finance-kpis p {
  color: var(--muted);
  font-size: 11px;
}

.utility-finance-kpis strong {
  font-size: 27px;
}

.utility-finance-kpis p {
  margin: 0;
  line-height: 1.55;
}

.utility-finance-chart-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
}

.utility-cost-structure {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
}

.utility-cost-structure > article,
.utility-household-impact,
.utility-investment-board article {
  padding: 20px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: var(--paper);
}

.utility-cost-structure > article > div {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
}

.utility-cost-structure > article > div strong {
  flex: 1 1 180px;
  font-size: 18px;
}

.utility-cost-structure dl {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  margin: 18px 0 0;
}

.utility-cost-structure dl div {
  padding: 12px;
  border-radius: 10px;
  background: var(--surface-subtle);
}

.utility-cost-structure dt {
  color: var(--muted);
  font-size: 11px;
}

.utility-cost-structure dd {
  margin: 5px 0 0;
  font-size: 18px;
  font-weight: 800;
}

.utility-household-grid,
.utility-investment-board {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
}

.utility-household-grid article {
  display: grid;
  gap: 7px;
  padding: 15px;
  border-radius: 11px;
  background: var(--surface-subtle);
}

.utility-household-grid strong,
.utility-investment-board strong {
  font-size: 23px;
}

.utility-household-grid span,
.utility-household-grid small,
.utility-investment-board span {
  color: var(--muted);
  font-size: 11px;
}

.utility-household-impact > p,
.utility-investment-board p {
  color: var(--muted);
  font-size: 12px;
  line-height: 1.65;
}

.utility-investment-board p {
  margin-bottom: 0;
}

.enterprise-alert {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 16px;
  padding: 12px 14px;
  border: 1px solid #b8d8cc;
  border-radius: 8px;
  background: #eef8f3;
  color: #285947;
  font-size: 13px;
  line-height: 1.5;
}

.enterprise-alert strong {
  white-space: nowrap;
}

.finance-summary-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
  margin-bottom: 16px;
}

.finance-summary-card {
  min-width: 0;
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfcfd;
}

.finance-summary-card span,
.finance-summary-card small {
  display: block;
  color: var(--muted);
  font-size: 12px;
}

.finance-summary-card strong {
  display: block;
  margin: 6px 0 4px;
  color: var(--ink);
  font-size: 20px;
}

.finance-history-explorer {
  display: grid;
  gap: 16px;
  padding: 22px;
  border: 1px solid var(--line);
  border-radius: 18px;
  background: var(--paper);
}

.finance-history-explorer .uto-section-heading {
  align-items: end;
}

.finance-history-explorer label {
  display: grid;
  gap: 7px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
}

.finance-history-explorer select {
  min-width: min(360px, 100%);
  padding: 11px 38px 11px 12px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--paper);
  color: var(--ink);
  font: inherit;
}

.finance-history-summary {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 10px;
}

.finance-history-summary article {
  display: grid;
  gap: 6px;
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--surface);
}

.finance-history-summary span,
.finance-history-summary small {
  color: var(--muted);
  font-size: 11px;
}

.finance-history-summary strong {
  font-size: 19px;
}

.finance-history-chart {
  min-width: 0;
  padding: 18px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: var(--surface);
}

.finance-history-chart h3,
.finance-history-chart p {
  margin: 0;
}

.finance-history-chart > div > p {
  margin-top: 6px;
  color: var(--muted);
  line-height: 1.7;
}

.finance-history-chart svg {
  width: 100%;
  margin-top: 12px;
}

.finance-history-table {
  width: 100%;
  min-width: 760px;
  border-collapse: collapse;
}

.finance-history-table th,
.finance-history-table td {
  padding: 10px 12px;
  border-bottom: 1px solid var(--line);
  text-align: left;
  white-space: nowrap;
}

.finance-history-table th {
  color: var(--muted);
  font-size: 11px;
}

.finance-audit-analysis {
  display: grid;
  gap: 16px;
}

.finance-audit-analysis .finance-summary-grid {
  margin-bottom: 0;
}

.finance-audit-question-list {
  display: grid;
  gap: 10px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.finance-audit-question-list li {
  padding: 12px 14px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--surface);
}

.finance-audit-question-list li > b,
.finance-audit-question-list li > span {
  display: inline-block;
  margin-right: 8px;
}

.finance-audit-question-list li > span {
  color: var(--muted);
  font-size: 11px;
}

.finance-audit-question-list p {
  margin: 7px 0 0;
  color: var(--ink);
  font-size: 13px;
  line-height: 1.65;
}

.enterprise-summary-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  margin: 12px;
}

.enterprise-metric-card strong {
  font-size: 18px;
}

.enterprise-comments {
  padding: 12px 16px 16px;
  font-size: 13px;
  line-height: 1.7;
}

.enterprise-comments h4 {
  margin: 8px 0 4px;
  font-size: 13px;
}

.enterprise-comments ul {
  margin: 0 0 10px;
  padding-left: 18px;
}

.enterprise-issues {
  display: grid;
  gap: 10px;
  padding: 12px;
}

.enterprise-issue {
  padding: 10px 12px;
  border-left: 4px solid var(--amber);
  border-radius: 6px;
  background: #fbfcfd;
}

.enterprise-issue.high {
  border-left-color: var(--red);
}

.enterprise-issue.medium {
  border-left-color: var(--amber);
}

.enterprise-issue strong,
.enterprise-issue p {
  display: block;
  margin: 0;
  font-size: 13px;
  line-height: 1.55;
}

.enterprise-issue p {
  margin-top: 3px;
  color: var(--muted);
}

.enterprise-source {
  margin-top: 16px;
  font-size: 13px;
}

.committee-analysis-summary {
  margin-top: 10px;
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #f7fafb;
  font-size: 12px;
  line-height: 1.6;
}

.committee-analysis-summary ul {
  margin: 6px 0 0;
  padding-left: 18px;
}

.load-error {
  padding: 16px;
  color: var(--ink);
  font-size: 14px;
  line-height: 1.7;
}

.load-error code {
  display: inline-block;
  max-width: 100%;
  padding: 3px 6px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: #f7fafb;
  white-space: normal;
  overflow-wrap: anywhere;
}

.finance-section-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
  margin-top: 16px;
}

.fiscal-mini-table td:first-child {
  width: 52%;
}

.fiscal-mini-table .number,
.fiscal-compare-table .number {
  text-align: right;
  white-space: nowrap;
}

.fiscal-mini-table .rate {
  width: 74px;
  color: var(--muted);
  text-align: right;
  white-space: nowrap;
}

.mini-table {
  width: 100%;
  min-width: 0;
  font-size: 12px;
}

.mini-table th,
.mini-table td {
  padding: 8px 10px;
}

.mini-table th:first-child,
.mini-table td:first-child {
  position: static;
  width: 46%;
}

.source-panel,
.raw-panel,
#pdfTablePanel {
  margin-top: 16px;
}

#pdfFrame {
  width: 100%;
  height: min(82vh, 900px);
  border: 1px solid var(--line);
  border-radius: 6px;
  background: #fff;
}

.source-files {
  margin-top: 16px;
}

.source-files-head h3 {
  margin: 0 0 10px;
  font-size: 15px;
}

.source-files-table {
  width: 100%;
  font-size: 13px;
}

.source-files-table th,
.source-files-table td {
  padding: 10px 12px;
}

.source-files-table a {
  color: var(--blue);
  font-weight: 600;
  text-decoration: none;
}

.source-files-table a:hover {
  text-decoration: underline;
}

.empty-note {
  margin: 12px 0 0;
  color: var(--muted);
  font-size: 13px;
}

#rawText {
  max-height: 520px;
  margin: 0;
  overflow: auto;
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: #fbfcfd;
  color: #24292f;
  font-family: "SFMono-Regular", Consolas, "Liberation Mono", monospace;
  font-size: 12px;
  line-height: 1.7;
  white-space: pre-wrap;
}

mark {
  padding: 0 2px;
  border-radius: 3px;
  background: #ffe08a;
  color: #1f2328;
}

.pdf-table-block {
  margin-top: 14px;
}

.pdf-table-title {
  margin-bottom: 6px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.pdf-table {
  min-width: 1180px;
  font-size: 11px;
}

.pdf-table td,
.pdf-table th {
  max-width: 180px;
  white-space: pre-wrap;
  vertical-align: top;
}

.hidden {
  display: none !important;
}

.table-wrap {
  overflow: auto;
  border: 1px solid var(--line);
  border-radius: 6px;
}

table {
  width: 100%;
  min-width: 940px;
  border-collapse: collapse;
  font-size: 13px;
}

th,
td {
  padding: 10px 12px;
  border-bottom: 1px solid var(--line);
  text-align: right;
  white-space: nowrap;
}

th:first-child,
td:first-child {
  position: sticky;
  left: 0;
  z-index: 1;
  background: var(--paper);
  text-align: left;
  font-weight: 800;
}

th {
  background: #f0f3f6;
  color: #3d4650;
}

th:first-child {
  background: #f0f3f6;
}

tr:last-child td {
  border-bottom: 0;
}

.negative {
  color: var(--red);
  font-weight: 700;
}

@media (max-width: 980px) {
  .topbar {
    align-items: start;
    flex-direction: column;
  }

  .source-note {
    text-align: left;
  }

  .kpis,
  .dashboard,
  .toolbar,
  .focus-hero,
  .focus-grid,
  .focus-lower,
  .graph-board,
  .insights,
  .analysis-grid,
  .detail-grid {
    grid-template-columns: 1fr;
  }

  .toolbar {
    position: static;
    margin: -20px calc(clamp(16px, 4vw, 42px) * -1) 18px;
    align-items: stretch;
  }

  .data-sources {
    justify-self: start;
  }

  .focus-story {
    grid-template-columns: 1fr;
  }

  .chart,
  .chart svg {
    min-height: 280px;
    height: 280px;
  }
}

/* New view panels */
.comparison-panel,
.detailed-analysis-panel,
.statistics-panel,
.export-panel {
  margin: 16px 0;
  padding: 16px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--paper);
  box-shadow: var(--shadow);
}

.comparison-table {
  min-width: 800px;
}

.comparison-table td.label {
  font-weight: 600;
}

.comparison-table td.value {
  text-align: right;
  font-family: "Menlo", monospace;
  font-size: 12px;
}

.comparison-table td.delta,
.comparison-table td.pct {
  font-weight: 600;
}

.comparison-table .positive {
  color: var(--green);
}

.comparison-table .negative {
  color: var(--red);
}

.export-actions {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 16px;
}

.export-section {
  padding: 16px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfcfd;
}

.export-section h3 {
  margin: 0 0 8px;
  font-size: 14px;
}

.export-section p {
  margin: 0 0 12px;
  color: var(--muted);
  font-size: 13px;
}

.export-section ul {
  margin: 0;
  padding-left: 18px;
  font-size: 13px;
}

.export-button {
  display: inline-block;
  padding: 10px 16px;
  background: var(--blue);
  color: white;
  text-decoration: none;
  border-radius: 6px;
  font-weight: 600;
  font-size: 13px;
  transition: background 200ms;
}

.export-button:hover {
  background: #1d4d8e;
}

.metric-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 16px;
  margin: 16px 0;
}

.metric-box {
  padding: 16px;
  background: #f8f9fa;
  border: 1px solid var(--line);
  border-radius: 8px;
  text-align: center;
}

.metric-label {
  font-size: 13px;
  color: var(--muted);
  font-weight: 600;
  margin-bottom: 8px;
}

.metric-value {
  font-size: 24px;
  font-weight: 700;
  color: var(--ink);
  margin-bottom: 4px;
}

.metric-value.positive {
  color: #c2413b;
}

.metric-value.negative {
  color: #1f8a70;
}

.metric-detail {
  font-size: 12px;
  color: var(--muted);
}

.comparison-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
}

.comparison-table thead {
  background: #f0f4f8;
  border-bottom: 2px solid var(--line);
}

.comparison-table th {
  padding: 12px 8px;
  text-align: left;
  font-weight: 600;
  color: var(--ink);
}

.comparison-table td {
  padding: 12px 8px;
  border-bottom: 1px solid var(--line);
}

.comparison-table .amount {
  text-align: right;
  font-family: "Courier New", monospace;
}

.comparison-table .rate {
  text-align: right;
  color: var(--muted);
}

.comparison-table .positive {
  color: #c2413b;
  font-weight: 600;
}

.comparison-table .negative {
  color: #1f8a70;
  font-weight: 600;
}

@media (max-width: 980px) {
  .finance-summary-grid,
  .finance-section-grid {
    grid-template-columns: 1fr;
  }

  .export-actions {
    grid-template-columns: 1fr;
  }

  .metric-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (max-width: 640px) {
  .metric-grid {
    grid-template-columns: 1fr;
  }
}

/* Data reliability center */
.data-trust-center {
  display: grid;
  gap: 18px;
  margin-bottom: 24px;
  padding: clamp(22px, 3vw, 34px);
  border: 1px solid var(--line);
  border-radius: 14px;
  background: var(--paper);
  box-shadow: var(--shadow);
}

.data-trust-hero {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
}

.data-trust-hero > div:first-child > span {
  color: var(--blue);
  font-size: 10px;
  font-weight: 900;
  letter-spacing: .12em;
}

.data-trust-hero h2 {
  margin-top: 7px;
  font-size: clamp(24px, 3vw, 34px);
}

.data-trust-hero p {
  margin-top: 8px;
  color: var(--muted);
  font-size: 13px;
}

.trust-score-ring {
  display: grid;
  width: 126px;
  height: 126px;
  flex: 0 0 auto;
  place-content: center;
  border-radius: 50%;
  background: radial-gradient(circle at center, var(--paper) 57%, transparent 58%), conic-gradient(var(--green) calc(var(--trust-score) * 1%), var(--line) 0);
  text-align: center;
}

.trust-score-ring strong,
.trust-score-ring span {
  display: block;
}

.trust-score-ring strong {
  font-size: 28px;
}

.trust-score-ring span {
  color: var(--green);
  font-size: 11px;
  font-weight: 900;
}

.trust-kpi-grid,
.trust-status-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
}

.trust-kpi-grid article,
.trust-status-grid article {
  padding: 15px;
  border: 1px solid var(--line);
  border-radius: 9px;
  background: var(--surface-subtle);
}

.trust-kpi-grid span,
.trust-kpi-grid small,
.trust-status-grid span {
  color: var(--muted);
  font-size: 11px;
}

.trust-kpi-grid strong,
.trust-status-grid strong {
  display: block;
  margin: 5px 0;
  font-size: 22px;
}

.trust-status-grid article {
  border-top-width: 4px;
}

.trust-status-grid article.official { border-top-color: var(--green); }
.trust-status-grid article.partial { border-top-color: var(--amber); }
.trust-status-grid article.estimate { border-top-color: var(--blue); }
.trust-status-grid article.missing { border-top-color: var(--red); }

.trust-status-grid p {
  color: var(--muted);
  font-size: 11px;
  line-height: 1.55;
}

.trust-usage-note {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 14px;
  align-items: center;
  padding-top: 14px;
  border-top: 1px solid var(--line);
}

.trust-usage-note strong {
  width: 100%;
  font-size: 12px;
}

.trust-usage-note span {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: var(--muted);
  font-size: 11px;
}

.trust-usage-note i {
  width: 9px;
  height: 9px;
  border-radius: 50%;
}

.trust-usage-note i.official { background: var(--green); }
.trust-usage-note i.partial { background: var(--amber); }
.trust-usage-note i.estimate { background: var(--blue); }
.trust-usage-note i.missing { background: var(--red); }

@media (max-width: 980px) {
  .trust-kpi-grid,
  .trust-status-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 640px) {
  .data-trust-hero {
    align-items: flex-start;
    flex-direction: column;
  }

  .trust-kpi-grid,
  .trust-status-grid {
    grid-template-columns: 1fr;
  }
}

/* Data Sources Panel */
.data-sources-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
  margin-bottom: 32px;
}

.data-sources-table thead {
  background: #f0f4f8;
  border-bottom: 2px solid var(--line);
}

.data-sources-table th {
  padding: 12px 8px;
  text-align: left;
  font-weight: 600;
  color: var(--ink);
  white-space: nowrap;
}

.data-sources-table td {
  padding: 12px 8px;
  border-bottom: 1px solid var(--line);
}

.data-sources-table .source-name {
  font-weight: 600;
  min-width: 120px;
}

.data-sources-table .source-desc {
  font-size: 12px;
  color: var(--muted);
}

.coverage-cell {
  text-align: center;
  font-weight: 600;
  font-size: 14px;
}

.coverage-cell.available {
  color: var(--green);
}

.coverage-cell.unavailable {
  color: var(--muted);
}

.data-sources-details {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 20px;
  margin-top: 32px;
}

.data-source-card {
  padding: 20px;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 8px;
  box-shadow: 0 1px 3px rgba(31, 35, 40, 0.04);
  transition: box-shadow 0.2s ease;
}

.data-source-card:hover {
  box-shadow: var(--shadow);
}

.data-source-card.unavailable {
  opacity: 0.7;
  background: #fafbfc;
}

.refresh-status-panel {
  margin: 16px 0;
}

.refresh-status-grid {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 10px;
}

.refresh-status-grid article {
  min-width: 0;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfcfd;
}

.refresh-status-grid span,
.refresh-status-grid small {
  display: block;
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
  line-height: 1.45;
}

.refresh-status-grid strong {
  display: block;
  margin: 6px 0;
  font-size: 22px;
}

.data-gap-category-list {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
  gap: 10px;
  margin-top: 14px;
}

.data-gap-category-list article {
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
  padding: 12px;
}

.data-gap-category-list div {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}

.data-gap-category-list strong {
  color: var(--ink);
  font-size: 14px;
}

.data-gap-category-list span {
  flex: 0 0 auto;
  color: var(--brand);
  font-size: 11px;
  font-weight: 800;
}

.data-gap-category-list small {
  display: block;
  margin-top: 7px;
  color: var(--muted);
  font-size: 11px;
}

.data-gap-action-strip {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
  margin: 12px 0;
}

.data-gap-action-strip article {
  min-width: 0;
  padding: 10px;
  border: 1px solid rgba(188, 118, 26, 0.2);
  border-radius: 8px;
  background: #fffaf0;
}

.data-gap-action-strip strong,
.data-gap-action-strip span,
.data-gap-action-strip small {
  display: block;
  overflow-wrap: anywhere;
}

.data-gap-action-strip strong {
  color: var(--ink);
  font-size: 12px;
}

.data-gap-action-strip span {
  margin-top: 4px;
  color: var(--amber);
  font-size: 11px;
  font-weight: 900;
}

.data-gap-action-strip small {
  margin-top: 6px;
  color: var(--muted);
  font-size: 10px;
  font-weight: 800;
  line-height: 1.45;
}

.pipeline-step-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  margin-top: 14px;
}

.pipeline-step-list article {
  min-width: 0;
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 5px 10px;
  align-items: center;
  border: 1px solid var(--line);
  border-left: 4px solid var(--green);
  border-radius: 8px;
  background: #ffffff;
  padding: 12px;
}

.pipeline-step-list article.error {
  border-left-color: var(--red);
}

.pipeline-step-list strong {
  min-width: 0;
  color: var(--ink);
  font-size: 13px;
}

.pipeline-step-list span {
  color: var(--green);
  font-size: 11px;
  font-weight: 900;
}

.pipeline-step-list article.error span {
  color: var(--red);
}

.pipeline-step-list small {
  grid-column: 1 / -1;
  color: var(--muted);
  font-size: 11px;
}

.source-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 12px;
}

.data-source-card h3 {
  margin: 0;
  font-size: 15px;
  color: var(--ink);
}

.source-status {
  display: inline-block;
  padding: 4px 8px;
  background: var(--green);
  color: white;
  font-size: 11px;
  font-weight: 600;
  border-radius: 4px;
  white-space: nowrap;
}

.data-source-card.unavailable .source-status {
  background: var(--muted);
}

.source-description {
  margin: 0 0 16px;
  font-size: 13px;
  color: var(--muted);
  line-height: 1.5;
}

.source-details {
  display: flex;
  flex-direction: column;
  gap: 12px;
  font-size: 12px;
}

.detail-item {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.detail-item strong {
  color: var(--ink);
  font-weight: 600;
}

.detail-item span,
.detail-item li {
  color: var(--muted);
}

.detail-item ul {
  margin: 0;
  padding-left: 16px;
}

.detail-item li {
  margin: 2px 0;
}

/* Council Analysis */
.council-brief {
  margin-bottom: 18px;
}

.council-metrics {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 12px;
}

.council-metrics article {
  min-height: 92px;
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfcfd;
}

.council-metrics span {
  display: block;
  margin-bottom: 8px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
}

.council-metrics strong {
  display: block;
  font-size: 21px;
  line-height: 1.2;
}

.council-grid {
  display: grid;
  grid-template-columns: minmax(0, 2fr) minmax(280px, 0.85fr);
  gap: 18px;
  margin-bottom: 18px;
}

.council-priorities {
  display: grid;
  gap: 12px;
}

.council-priority {
  padding: 14px;
  border: 1px solid var(--line);
  border-left: 4px solid var(--amber);
  border-radius: 8px;
  background: var(--paper);
}

.council-priority.high {
  border-left-color: var(--red);
}

.council-priority-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 8px;
}

.council-priority-head strong {
  font-size: 15px;
}

.council-priority-head span {
  padding: 3px 8px;
  border-radius: 4px;
  background: #f0f4f8;
  color: var(--muted);
  font-size: 11px;
  font-weight: 700;
}

.council-priority.high .council-priority-head span {
  background: #fff1f0;
  color: var(--red);
}

.council-priority p {
  color: var(--ink);
  font-size: 13px;
  line-height: 1.6;
}

.council-priority ul,
.council-checklist,
.council-note-list {
  margin: 10px 0 0;
  padding-left: 18px;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.7;
}

.council-checklist {
  margin-top: 0;
}

.council-watch-grid {
  margin-bottom: 18px;
}

.council-watch-card .mini-table {
  width: 100%;
}

.keyword-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
  gap: 8px;
}

.keyword-grid span {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  min-height: 36px;
  padding: 8px 10px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: #fbfcfd;
  color: var(--muted);
  font-size: 12px;
}

.keyword-grid strong {
  color: var(--ink);
}

.calc-value {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  border-bottom: 1px dotted currentColor;
  cursor: default;
}

.calc-value::after {
  content: "i";
  display: inline-grid;
  place-items: center;
  width: 15px;
  height: 15px;
  border-radius: 50%;
  border: 1px solid currentColor;
  font-size: 10px;
  font-weight: 700;
  line-height: 1;
  opacity: 0.72;
}

.calc-ok {
  color: inherit;
}

.calc-warn {
  color: var(--red);
}

.calc-mark {
  position: relative;
  display: inline-flex;
  width: fit-content;
  margin: 0 0 8px;
  padding: 3px 8px;
  border-radius: 4px;
  font-size: 11px;
  font-weight: 700;
  cursor: default;
}

.calc-mark.ok {
  background: #eef7f3;
  color: var(--green);
}

.calc-mark.warn {
  background: #fff1f0;
  color: var(--red);
}

.calc-value[data-tooltip]:hover::before,
.calc-value[data-tooltip]:focus-visible::before,
.calc-mark[data-tooltip]:hover::before,
.calc-mark[data-tooltip]:focus-visible::before,
.local-source-note[data-tooltip]:hover::before,
.local-source-note[data-tooltip]:focus-visible::before,
.term-tip[data-tooltip]:hover::before,
.term-tip[data-tooltip]:focus-visible::before {
  position: absolute;
  left: 50%;
  bottom: calc(100% + 8px);
  z-index: 80;
  width: min(320px, 72vw);
  padding: 8px 10px;
  transform: translateX(-50%);
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--ink);
  color: white;
  font-size: 12px;
  font-weight: 700;
  line-height: 1.55;
  white-space: normal;
  box-shadow: var(--shadow);
  content: attr(data-tooltip);
}

.calc-mark[data-tooltip]:hover::after,
.calc-mark[data-tooltip]:focus-visible::after,
.local-source-note[data-tooltip]:hover::after,
.local-source-note[data-tooltip]:focus-visible::after,
.term-tip[data-tooltip]:hover::after,
.term-tip[data-tooltip]:focus-visible::after {
  position: absolute;
  left: 50%;
  bottom: calc(100% + 3px);
  z-index: 81;
  transform: translateX(-50%) rotate(45deg);
  width: 10px;
  height: 10px;
  background: var(--ink);
  content: "";
}

.validation-card {
  align-self: start;
}

.validation-card p {
  margin-bottom: 10px;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.6;
}

.validation-table {
  width: 100%;
}

/* Finance Staff Analysis */
.staff-brief {
  margin-bottom: 18px;
}

.staff-metrics {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
  gap: 12px;
}

.staff-metrics article {
  min-height: 92px;
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfcfd;
}

.staff-metrics span {
  display: block;
  margin-bottom: 8px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
}

.staff-metrics strong {
  display: block;
  font-size: 21px;
  line-height: 1.2;
}

.staff-grid {
  display: grid;
  grid-template-columns: minmax(0, 2fr) minmax(280px, 0.9fr);
  gap: 18px;
  margin-bottom: 18px;
}

.staff-tasks {
  display: grid;
  gap: 12px;
}

.staff-task {
  padding: 14px;
  border: 1px solid var(--line);
  border-left: 4px solid var(--teal);
  border-radius: 8px;
  background: var(--paper);
}

.staff-task-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 8px;
}

.staff-task-head strong {
  font-size: 15px;
}

.staff-task-head span {
  padding: 3px 8px;
  border-radius: 4px;
  background: #eef7f6;
  color: var(--teal);
  font-size: 11px;
  font-weight: 700;
}

.staff-task p,
.staff-narrative p {
  color: var(--ink);
  font-size: 13px;
  line-height: 1.7;
}

.staff-task ul {
  margin: 10px 0 0;
  padding-left: 18px;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.7;
}

.staff-source-table {
  width: 100%;
  font-size: 13px;
}

.staff-narrative {
  margin-top: 18px;
}

/* Strategic Analysis */
.strategic-analysis-panel {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 18px;
}

.strategic-analysis-panel > * {
  min-width: 0;
}

.strategy-hero {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  padding: 20px;
  border: 1px solid var(--line);
  border-left: 6px solid var(--amber);
  border-radius: 8px;
  background: var(--paper);
  box-shadow: var(--shadow);
}

.strategy-hero.good {
  border-left-color: var(--green);
}

.strategy-hero.warn {
  border-left-color: var(--amber);
}

.strategy-hero.bad {
  border-left-color: var(--red);
}

.strategy-kicker {
  display: block;
  margin-bottom: 6px;
  color: var(--blue);
  font-size: 12px;
  font-weight: 800;
}

.strategy-hero h2 {
  font-size: 22px;
}

.strategy-hero p {
  max-width: 820px;
  margin-top: 8px;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.7;
}

.strategy-status {
  display: grid;
  place-items: center;
  min-width: 132px;
  min-height: 92px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfcfd;
}

.strategy-status strong {
  font-size: 26px;
  line-height: 1;
}

.strategy-status span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
}

.strategy-metrics {
  display: grid;
  grid-template-columns: repeat(5, minmax(150px, 1fr));
  gap: 12px;
}

.strategy-metrics article,
.strategy-card {
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--paper);
  box-shadow: var(--shadow);
}

.strategy-metrics article {
  min-height: 112px;
  padding: 14px;
}

.strategy-metrics span {
  display: block;
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
}

.strategy-metrics strong {
  display: block;
  margin: 8px 0 6px;
  font-size: 22px;
  line-height: 1.15;
}

.strategy-metrics small {
  color: var(--muted);
  font-size: 11px;
  line-height: 1.4;
}

.strategy-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px;
}

.strategy-card {
  padding: 16px;
}

.uto-os-hero {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  padding: 20px;
  border: 1px solid var(--line);
  border-left: 6px solid var(--teal);
  border-radius: 8px;
  background: var(--paper);
  box-shadow: var(--shadow);
}

.uto-os-hero span {
  color: var(--teal);
  font-size: 12px;
  font-weight: 900;
}

.uto-os-hero h2 {
  margin-top: 4px;
  font-size: 24px;
}

.uto-os-hero p {
  max-width: 840px;
  margin-top: 8px;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.7;
}

.uto-os-status {
  display: grid;
  place-items: center;
  min-width: 120px;
  min-height: 86px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfcfd;
}

.uto-os-status strong {
  font-size: 26px;
}

.uto-os-status span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.uto-os-grid {
  display: grid;
  gap: 12px;
}

.uto-os-grid.four {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

.uto-os-grid.three {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.uto-os-grid.two {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.uto-os-grid > article:not(.strategy-card),
.uto-os-chart-grid article {
  min-width: 0;
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--paper);
  box-shadow: var(--shadow);
}

.uto-os-grid span,
.uto-os-grid small {
  display: block;
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
}

.uto-os-grid strong {
  display: block;
  margin: 8px 0 6px;
  font-size: 22px;
  line-height: 1.15;
}

.uto-os-quality {
  background: #f8fafc;
}

.uto-os-quality-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
}

.uto-os-quality-grid article {
  min-width: 0;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--paper);
}

.uto-os-quality-grid span,
.uto-os-quality-grid small {
  display: block;
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
}

.uto-os-quality-grid strong {
  display: block;
  margin: 7px 0 5px;
  font-size: 20px;
}

.uto-os-next-data {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 12px;
}

.uto-os-next-data span {
  padding: 6px 9px;
  border: 1px solid #c7d2e0;
  border-radius: 999px;
  background: #ffffff;
  color: var(--ink);
  font-size: 12px;
  font-weight: 800;
}

.uto-os-chart-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}

.uto-os-chart-grid h4 {
  margin: 0 0 8px;
  font-size: 13px;
}

.uto-os-line {
  width: 100%;
  min-height: 160px;
}

.uto-os-line polyline {
  fill: none;
  stroke: var(--blue);
  stroke-width: 3;
}

.uto-os-line circle {
  fill: var(--blue);
}

.uto-os-line text,
.uto-os-radar text {
  fill: var(--muted);
  font-size: 10px;
  font-weight: 800;
}

.uto-os-list {
  display: grid;
  gap: 8px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.uto-os-list li {
  display: grid;
  gap: 3px;
  padding: 9px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: #fbfcfd;
}

.uto-os-list span {
  color: var(--blue);
}

.facility-portfolio-metrics {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
}

.facility-portfolio-metrics article {
  padding: 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfcfd;
}

.facility-portfolio-metrics span,
.facility-portfolio-metrics small,
.housing-stock-summary span,
.housing-stock-summary small {
  display: block;
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
}

.facility-portfolio-metrics strong,
.housing-stock-summary strong {
  display: block;
  margin: 5px 0;
  font-size: 20px;
}

.facility-category-bars,
.major-renewal-bars {
  display: grid;
  gap: 9px;
  margin-top: 12px;
}

.facility-category-bars div,
.major-renewal-bars div {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 8px;
  align-items: center;
}

.facility-category-bars span,
.major-renewal-bars span {
  min-width: 0;
  color: var(--ink);
  font-size: 12px;
  font-weight: 800;
}

.facility-category-bars strong,
.major-renewal-bars strong {
  color: var(--muted);
  font-size: 12px;
}

.facility-category-bars i,
.major-renewal-bars i {
  grid-column: 1 / -1;
  display: block;
  height: 7px;
  border-radius: 999px;
  background: var(--blue);
}

.housing-stock-summary {
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfcfd;
}

.housing-stock-list {
  margin-top: 10px;
}

.facility-note {
  margin: 10px 0 0;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.6;
}

.asset-decision-board {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
}

.asset-decision-board article {
  min-width: 0;
  padding: 12px;
  border: 1px solid var(--line);
  border-left: 4px solid var(--blue);
  border-radius: 8px;
  background: #fbfcfd;
}

.asset-decision-board article.high {
  border-left-color: var(--red);
}

.asset-decision-board article.medium {
  border-left-color: var(--amber);
}

.asset-decision-board div {
  display: flex;
  gap: 8px;
  align-items: center;
  margin-bottom: 8px;
}

.asset-decision-board span {
  flex: 0 0 auto;
  padding: 3px 7px;
  border-radius: 999px;
  background: #eef2f7;
  color: var(--ink);
  font-size: 11px;
  font-weight: 900;
}

.asset-decision-board article.high span {
  background: var(--soft-red);
  color: var(--red);
}

.asset-decision-board article.medium span {
  background: #fff4db;
  color: #8a5a00;
}

.asset-decision-board strong {
  min-width: 0;
  font-size: 14px;
}

.asset-decision-board p {
  margin: 0 0 8px;
  color: var(--ink);
  font-size: 13px;
  font-weight: 900;
}

.asset-decision-board small {
  display: block;
  margin-bottom: 10px;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.6;
}

.asset-decision-board details {
  border-top: 1px solid var(--line);
  padding-top: 8px;
}

.asset-decision-board summary {
  color: var(--blue);
  cursor: pointer;
  font-size: 12px;
  font-weight: 900;
}

.asset-decision-board dl {
  display: grid;
  grid-template-columns: 70px minmax(0, 1fr);
  gap: 6px 8px;
  margin: 8px 0 0;
}

.asset-decision-board dt {
  color: var(--muted);
  font-size: 11px;
  font-weight: 900;
}

.asset-decision-board dd {
  min-width: 0;
  margin: 0;
  color: var(--ink);
  font-size: 11px;
  line-height: 1.55;
}

.future-cost-control {
  display: flex;
  align-items: center;
  gap: 14px;
  margin-bottom: 12px;
}

.future-cost-control label {
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
}

.future-cost-control input {
  width: 160px;
  margin-left: 8px;
}

.future-cost-control span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.future-category-costs {
  margin-top: 14px;
}

.future-category-costs h4,
.major-renewal-costs h4 {
  margin: 0 0 8px;
  font-size: 13px;
}

.major-renewal-costs {
  margin-top: 14px;
}

.uto-os-radar {
  width: 100%;
  max-width: 320px;
  min-height: 260px;
}

.uto-os-radar .radar-value {
  fill: rgba(33, 111, 181, 0.22);
  stroke: var(--blue);
  stroke-width: 3;
}

.uto-os-radar .radar-ring {
  fill: none;
  stroke: var(--line);
  stroke-width: 1;
}

.uto-os-radar line {
  stroke: #d7dee8;
}

.municipality-radar-layout {
  display: grid;
  grid-template-columns: minmax(280px, .8fr) minmax(0, 1.2fr);
  gap: 24px;
  align-items: center;
}

.municipality-radar-layout .uto-os-radar {
  justify-self: center;
}

.radar-notes {
  display: grid;
  gap: 10px;
}

.radar-notes article {
  padding: 14px;
  border-left: 4px solid var(--blue);
  border-radius: 8px;
  background: var(--surface-subtle);
}

.radar-notes article:nth-child(2) { border-left-color: var(--amber); }
.radar-notes article:nth-child(3) { border-left-color: var(--muted); }

.radar-notes p {
  margin-top: 5px;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.65;
}

.uto-question-list,
.staff-comment-list {
  display: grid;
  gap: 10px;
}

.uto-question-list article,
.staff-comment-list article {
  padding: 11px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfcfd;
}

.uto-question-list span,
.staff-comment-list strong {
  display: block;
  margin-bottom: 6px;
  font-size: 13px;
}

.uto-question-list p,
.staff-comment-list p {
  margin: 0;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.65;
}

.uto-question-list small {
  display: block;
  margin-top: 6px;
  color: var(--blue);
  font-size: 11px;
  font-weight: 800;
}

.staff-comment-list article.good {
  border-left: 4px solid var(--green);
}

.staff-comment-list article.warn,
.staff-comment-list article.neutral {
  border-left: 4px solid var(--amber);
}

.staff-comment-list article.bad {
  border-left: 4px solid var(--red);
}

.strategy-card h3 {
  margin: 0 0 12px;
  font-size: 16px;
}

.strategy-card ul {
  margin: 0;
  padding-left: 18px;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.75;
}

.strategy-roadmap {
  display: grid;
  gap: 10px;
}

.strategy-roadmap div {
  display: grid;
  grid-template-columns: 56px minmax(0, 1fr);
  gap: 10px;
  padding: 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfcfd;
}

.strategy-roadmap strong {
  color: var(--blue);
}

.strategy-roadmap span {
  color: var(--muted);
  font-size: 13px;
  line-height: 1.5;
}

.strategy-section-head {
  display: flex;
  align-items: start;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 12px;
}

.strategy-section-head p {
  margin-top: 4px;
  color: var(--muted);
  font-size: 12px;
}

.strategy-section-head > span {
  flex: 0 0 auto;
  padding: 4px 8px;
  border-radius: 4px;
  background: var(--soft-amber);
  color: var(--amber);
  font-size: 12px;
  font-weight: 800;
}

.indicator-catalog {
  background: #fbfcfd;
}

.indicator-summary-grid {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 10px;
  margin-bottom: 12px;
}

.indicator-summary-grid article {
  min-width: 0;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--paper);
}

.indicator-summary-grid span,
.indicator-summary-grid small {
  display: block;
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
  line-height: 1.45;
}

.indicator-summary-grid strong {
  display: block;
  margin: 6px 0;
  font-size: 22px;
}

.platform-flow {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 0 0 14px;
}

.platform-flow span {
  padding: 6px 9px;
  border: 1px solid #c7d2e0;
  border-radius: 6px;
  background: #ffffff;
  color: var(--ink);
  font-size: 12px;
  font-weight: 800;
}

.indicator-progress-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
  margin-bottom: 14px;
}

.indicator-progress-grid article {
  min-width: 0;
  padding: 11px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--paper);
}

.indicator-progress-grid div {
  display: flex;
  justify-content: space-between;
  gap: 8px;
  margin-bottom: 8px;
}

.indicator-progress-grid strong {
  min-width: 0;
  font-size: 12px;
}

.indicator-progress-grid span,
.indicator-progress-grid small {
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
  line-height: 1.45;
}

.indicator-progress-grid span {
  flex: 0 0 auto;
}

.indicator-progress-grid i {
  display: flex;
  overflow: hidden;
  height: 8px;
  margin-bottom: 8px;
  border-radius: 999px;
  background: #eef2f7;
}

.indicator-progress-grid b {
  display: block;
  min-width: 0;
}

.indicator-progress-grid b.available {
  background: var(--green);
}

.indicator-progress-grid b.partial {
  background: var(--amber);
}

.indicator-progress-grid b.needed {
  background: #d7dee8;
}

.indicator-ops-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.35fr) minmax(260px, 0.65fr);
  gap: 12px;
  margin-bottom: 14px;
}

.strategy-section-head.compact {
  margin-bottom: 8px;
}

.strategy-section-head.compact h4,
.indicator-ai-outputs h4 {
  margin: 0 0 4px;
  font-size: 14px;
}

.indicator-next-actions,
.indicator-ai-outputs {
  min-width: 0;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--paper);
}

.indicator-next-actions ol {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.indicator-next-actions li {
  min-width: 0;
  padding: 10px;
  border: 1px solid #e4e9ef;
  border-left: 4px solid var(--red);
  border-radius: 8px;
  background: #fbfcfd;
}

.indicator-next-actions li.partial {
  border-left-color: var(--amber);
}

.indicator-next-actions div {
  display: flex;
  justify-content: space-between;
  gap: 8px;
  margin-bottom: 5px;
}

.indicator-next-actions strong {
  min-width: 0;
  font-size: 12px;
}

.indicator-next-actions span,
.indicator-next-actions p {
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
  line-height: 1.45;
}

.indicator-next-actions span {
  flex: 0 0 auto;
}

.indicator-next-actions p {
  margin: 0;
}

.indicator-ai-outputs div {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin: 10px 0;
}

.indicator-ai-outputs span {
  padding: 5px 8px;
  border-radius: 999px;
  background: var(--soft-blue);
  color: var(--blue);
  font-size: 11px;
  font-weight: 900;
}

.indicator-ai-outputs p {
  color: var(--muted);
  font-size: 12px;
  line-height: 1.65;
}

.indicator-acquisition-plan {
  margin-bottom: 14px;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--paper);
}

.indicator-acquisition-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
}

.indicator-gap-summary {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
  margin-bottom: 12px;
}

.indicator-gap-summary article {
  min-width: 0;
  padding: 11px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfcfd;
}

.indicator-gap-summary span,
.indicator-gap-summary small {
  display: block;
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
  line-height: 1.45;
}

.indicator-gap-summary strong {
  display: block;
  margin: 6px 0;
  font-size: 22px;
}

/* 分野別データ収録カバレッジ（積み上げバー） */
.gap-coverage-chart { margin: 14px 0; padding: 14px 16px; border: 1px solid var(--line); border-radius: 12px; background: var(--soft); }
.gap-cov-head { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; flex-wrap: wrap; }
.gap-cov-head h4 { margin: 0; font-size: 14px; }
.gap-cov-legend { display: flex; gap: 12px; font-size: 11px; color: var(--muted); font-weight: 700; }
.gap-cov-legend span { display: inline-flex; align-items: center; gap: 5px; }
.gap-cov-legend i { width: 12px; height: 12px; border-radius: 3px; }
.gap-cov-note { margin: 6px 0 12px; font-size: 11px; color: var(--muted); }
.gap-cov-rows { display: grid; gap: 7px; }
.gap-cov-row { display: grid; grid-template-columns: 132px 1fr 66px; align-items: center; gap: 10px; }
.gap-cov-label { font-size: 12px; font-weight: 700; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gap-cov-bar { display: flex; height: 16px; border-radius: 5px; overflow: hidden; background: color-mix(in srgb, var(--muted) 18%, transparent); }
.gap-cov-bar i { height: 100%; }
.seg-avail { background: #0d9488; }
.seg-partial { background: #f59e0b; }
.seg-needed { background: #e11d48; }
.gap-cov-pct { font-size: 12px; font-weight: 800; text-align: right; }
.gap-cov-pct small { display: block; font-size: 10px; font-weight: 600; color: var(--muted); }
.gap-cov-row.is-full .gap-cov-pct { color: #0d9488; }
.gap-cov-row.has-needed .gap-cov-pct { color: #e11d48; }
@media (max-width: 560px) { .gap-cov-row { grid-template-columns: 96px 1fr 54px; } }

.indicator-acquisition-grid article {
  min-width: 0;
  padding: 11px;
  border: 1px solid #e4e9ef;
  border-left: 4px solid var(--muted);
  border-radius: 8px;
  background: #fbfcfd;
}

.indicator-acquisition-grid article.ready {
  border-left-color: var(--green);
}

.indicator-acquisition-grid article.semi {
  border-left-color: var(--amber);
}

.indicator-acquisition-grid article.manual {
  border-left-color: var(--red);
}

.indicator-acquisition-grid div {
  display: flex;
  justify-content: space-between;
  gap: 8px;
  margin-bottom: 7px;
}

.indicator-acquisition-grid strong {
  min-width: 0;
  font-size: 12px;
}

.indicator-acquisition-grid span {
  flex: 0 0 auto;
  padding: 3px 6px;
  border-radius: 999px;
  background: #eef2f7;
  color: var(--ink);
  font-size: 10px;
  font-weight: 900;
}

.indicator-acquisition-grid p,
.indicator-acquisition-grid small,
.indicator-acquisition-grid em {
  display: block;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.5;
}

.indicator-acquisition-grid p {
  margin: 0 0 7px;
}

.indicator-acquisition-grid em {
  margin-top: 6px;
  color: var(--teal);
  font-style: normal;
  font-weight: 900;
}

.acquisition-roadmap-panel {
  margin-bottom: 14px;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--paper);
}

.acquisition-roadmap-summary {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
  margin-bottom: 12px;
}

.acquisition-roadmap-summary article {
  min-width: 0;
  padding: 11px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfcfd;
}

.acquisition-roadmap-summary span,
.acquisition-roadmap-summary small {
  display: block;
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
  line-height: 1.45;
}

.acquisition-roadmap-summary strong {
  display: block;
  margin: 6px 0;
  font-size: 22px;
}

.acquisition-roadmap-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.roadmap-priority-guide {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 3px 12px;
  margin: 0 0 12px;
  padding: 10px 12px;
  border-left: 4px solid #1d4ed8;
  background: var(--soft-blue);
}

.roadmap-priority-guide strong { grid-row: 1 / 3; align-self: center; font-size: 11px; }
.roadmap-priority-guide span { font-size: 10px; font-weight: 800; }
.roadmap-priority-guide small { color: var(--muted); font-size: 9px; line-height: 1.45; }

.acquisition-roadmap-list li {
  display: grid;
  grid-template-columns: 34px minmax(0, 1fr);
  gap: 10px;
  min-width: 0;
  padding: 11px;
  border: 1px solid #e4e9ef;
  border-left: 4px solid var(--muted);
  border-radius: 8px;
  background: #fbfcfd;
}

.acquisition-roadmap-list li.ready {
  border-left-color: var(--green);
}

.acquisition-roadmap-list li.semi {
  border-left-color: var(--amber);
}

.acquisition-roadmap-list li.manual {
  border-left-color: var(--red);
}

.roadmap-rank {
  display: grid;
  width: 34px;
  height: 34px;
  place-items: center;
  border-radius: 50%;
  background: var(--soft-blue);
  color: var(--blue);
  font-size: 13px;
  font-weight: 900;
}

.roadmap-rank small,
.roadmap-rank em {
  display: block;
  font-size: 8px;
  font-style: normal;
  line-height: 1.25;
}

.roadmap-rank em { margin-top: 2px; opacity: .75; }

.roadmap-body {
  min-width: 0;
}

.roadmap-head {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 7px;
}

.roadmap-head strong,
.roadmap-head span,
.roadmap-body p,
.roadmap-body small {
  display: block;
}

.roadmap-head strong {
  font-size: 13px;
}

.roadmap-head span,
.roadmap-body p,
.roadmap-body small {
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
  line-height: 1.5;
}

.roadmap-head em {
  flex: 0 0 auto;
  color: var(--teal);
  font-size: 12px;
  font-style: normal;
  font-weight: 900;
}

.roadmap-body p {
  margin: 0 0 6px;
}

.roadmap-body .roadmap-decision-reason {
  margin-bottom: 4px;
  color: #1d4ed8;
  font-weight: 900;
}

.roadmap-scoring-note {
  margin: 12px 0 0;
  padding: 9px 11px;
  border-left: 3px solid #64748b;
  color: var(--muted);
  background: var(--soft);
  font-size: 9.5px;
  line-height: 1.55;
}

.roadmap-indicator-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
  margin-top: 8px;
}

.roadmap-indicator-tags span {
  padding: 4px 6px;
  border-radius: 999px;
  background: #eef2f7;
  color: var(--ink);
  font-size: 10px;
  font-weight: 900;
}

.roadmap-needed-actions {
  display: grid;
  gap: 6px;
  margin-top: 8px;
}

.roadmap-needed-actions article {
  border: 1px solid rgba(192, 80, 77, 0.18);
  border-radius: 8px;
  background: rgba(192, 80, 77, 0.06);
  padding: 7px;
}

.roadmap-needed-actions strong,
.roadmap-needed-actions span,
.roadmap-needed-actions small {
  display: block;
}

.roadmap-needed-actions strong {
  color: var(--danger);
  font-size: 11px;
}

.roadmap-needed-actions span,
.roadmap-needed-actions small {
  color: var(--muted);
  font-size: 10px;
  font-weight: 800;
  line-height: 1.45;
}

.indicator-category-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}

.demographics-panel {
  margin-bottom: 16px;
}

.population-history-explorer {
  display: grid;
  gap: 16px;
  padding: 22px;
  border: 1px solid var(--line);
  border-radius: 18px;
  background: var(--paper);
}

.population-history-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.35fr) minmax(300px, .65fr);
  gap: 14px;
}

.population-history-chart,
.population-age-card,
.population-related-stats,
.population-district-section,
.population-year-details {
  min-width: 0;
  padding: 18px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: var(--surface);
}

.population-history-chart h3,
.population-history-chart p,
.population-age-card h3,
.population-age-card p,
.population-related-stats h3 {
  margin: 0;
}

.population-history-chart > div > p,
.population-age-card > div > p {
  margin-top: 6px;
  color: var(--muted);
  line-height: 1.65;
}

.population-history-chart svg {
  width: 100%;
  margin-top: 12px;
}

.population-age-bars {
  display: grid;
  gap: 16px;
  margin-top: 22px;
}

.population-age-bars > div {
  display: grid;
  grid-template-columns: 76px 1fr auto;
  gap: 8px;
  align-items: center;
}

.population-age-bars strong {
  text-align: right;
}

.population-age-bars i {
  grid-column: 1 / -1;
  height: 9px;
  overflow: hidden;
  border-radius: 999px;
  background: var(--line);
}

.population-age-bars b {
  display: block;
  height: 100%;
}

.population-age-bars b.young { background: #b7791f; }
.population-age-bars b.working { background: #2563a9; }
.population-age-bars b.senior { background: #c2413b; }

.population-related-stats {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}

.population-related-stats h3,
.population-related-stats .chart-source {
  grid-column: 1 / -1;
}

.population-related-stats > div {
  display: grid;
  gap: 5px;
  padding: 13px;
  border: 1px solid var(--line);
  border-radius: 10px;
}

.population-related-stats span,
.population-related-stats small {
  color: var(--muted);
  font-size: 11px;
}

.population-related-stats strong {
  font-size: 19px;
}

.population-district-filters {
  display: flex;
  gap: 10px;
  align-items: end;
}

.population-district-filters label {
  display: grid;
  gap: 5px;
  color: var(--muted);
  font-size: 11px;
  font-weight: 700;
}

.population-district-filters input,
.population-district-filters select {
  min-width: 180px;
  padding: 9px 11px;
  border: 1px solid var(--line);
  border-radius: 9px;
  background: var(--paper);
  color: var(--ink);
}

.population-district-table,
.population-year-details table {
  width: 100%;
  min-width: 760px;
  border-collapse: collapse;
}

.population-district-table th,
.population-district-table td,
.population-year-details th,
.population-year-details td {
  padding: 10px 12px;
  border-bottom: 1px solid var(--line);
  text-align: left;
  white-space: nowrap;
}

.population-year-details summary {
  cursor: pointer;
  font-weight: 800;
}

.population-year-details[open] summary {
  margin-bottom: 14px;
}

.demographics-summary-grid,
.demographics-body-grid {
  display: grid;
  gap: 12px;
}

.demographics-summary-grid {
  grid-template-columns: repeat(7, minmax(0, 1fr));
  margin-bottom: 12px;
}

.demographics-body-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.demographics-summary-grid article,
.demographics-body-grid article {
  min-width: 0;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfcfd;
  padding: 12px;
}

.demographics-summary-grid span,
.demographics-summary-grid small {
  display: block;
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
}

.demographics-summary-grid strong {
  display: block;
  margin: 5px 0;
  color: var(--ink);
  font-size: 20px;
}

.demographics-summary-grid strong.negative {
  color: var(--red);
}

.demographics-body-grid h4 {
  margin: 0 0 10px;
  font-size: 13px;
}

.demographics-trend-list,
.demographics-comparison-list,
.demographics-insight-list {
  display: grid;
  gap: 7px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.demographics-trend-list li,
.demographics-comparison-list li,
.demographics-insight-list p,
.demographics-indicator-list div {
  display: grid;
  grid-template-columns: 72px 1fr auto;
  gap: 8px;
  align-items: center;
  border-bottom: 1px solid #e7edf3;
  padding-bottom: 7px;
}

.demographics-comparison-list li {
  grid-template-columns: 1fr auto;
}

.demographics-insight-list p {
  grid-template-columns: 1fr;
  margin: 0;
}

.demographics-comparison-list small,
.demographics-insight-list span {
  grid-column: 1 / -1;
}

.demographics-trend-list strong,
.demographics-comparison-list strong,
.demographics-insight-list strong,
.demographics-indicator-list strong {
  min-width: 0;
  color: var(--ink);
  font-size: 12px;
}

.demographics-trend-list span,
.demographics-comparison-list span,
.demographics-indicator-list span {
  color: var(--brand);
  font-size: 12px;
  font-weight: 900;
}

.demographics-trend-list small,
.demographics-comparison-list small,
.demographics-insight-list span,
.demographics-note {
  color: var(--muted);
  font-size: 11px;
  line-height: 1.55;
}

.demographics-note {
  margin: 10px 0 0;
}

.demographics-trend-list small.negative {
  color: var(--red);
}

.demographics-trend-list small.positive {
  color: var(--green);
}

.demographics-indicator-list {
  display: grid;
  gap: 7px;
}

.demographics-indicator-list div {
  grid-template-columns: 1fr auto;
}

.demographics-indicator-list div.needed span {
  color: var(--amber);
}

.tax-capacity-panel {
  margin-bottom: 16px;
}

.tax-capacity-summary-grid,
.tax-capacity-body-grid {
  display: grid;
  gap: 12px;
}

.tax-capacity-summary-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  margin-bottom: 12px;
}

.tax-capacity-body-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.tax-capacity-summary-grid article,
.tax-capacity-body-grid article {
  min-width: 0;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfcfd;
  padding: 12px;
}

.tax-capacity-summary-grid span,
.tax-capacity-summary-grid small {
  display: block;
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
}

.tax-capacity-summary-grid strong {
  display: block;
  margin: 5px 0;
  color: var(--ink);
  font-size: 20px;
}

.tax-capacity-body-grid h4 {
  margin: 0 0 10px;
  font-size: 13px;
}

.tax-trend-list,
.tax-indicator-list {
  display: grid;
  gap: 7px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.tax-trend-list li,
.tax-indicator-list div {
  display: grid;
  grid-template-columns: 72px 1fr auto;
  gap: 8px;
  align-items: center;
  border-bottom: 1px solid #e7edf3;
  padding-bottom: 7px;
}

.tax-indicator-list div {
  grid-template-columns: 1fr auto;
}

.tax-trend-list strong,
.tax-indicator-list strong {
  color: var(--ink);
  font-size: 12px;
}

.tax-trend-list span,
.tax-indicator-list span {
  color: var(--brand);
  font-size: 12px;
  font-weight: 900;
}

.tax-trend-list small {
  color: var(--muted);
  font-size: 11px;
}

.tax-indicator-list div.needed span {
  color: var(--amber);
}

.tax-share-bars {
  display: grid;
  gap: 10px;
}

.tax-share-bars div {
  display: grid;
  grid-template-columns: 90px 1fr 56px;
  gap: 8px;
  align-items: center;
}

.tax-share-bars span,
.tax-share-bars strong {
  color: var(--ink);
  font-size: 12px;
}

.tax-share-bars i {
  height: 9px;
  overflow: hidden;
  border-radius: 999px;
  background: #e6edf4;
}

.tax-share-bars b {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: var(--teal);
}

.tax-insight-list {
  display: grid;
  gap: 8px;
}

.tax-insight-list p {
  display: grid;
  gap: 3px;
  margin: 0;
  border-bottom: 1px solid #e7edf3;
  padding-bottom: 8px;
}

.tax-insight-list strong {
  color: var(--ink);
  font-size: 12px;
}

.tax-insight-list span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
  line-height: 1.55;
}

.administrative-efficiency-panel {
  margin-bottom: 16px;
}

.administrative-efficiency-summary-grid,
.administrative-efficiency-body-grid {
  display: grid;
  gap: 12px;
}

.administrative-efficiency-summary-grid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  margin-bottom: 12px;
}

.administrative-efficiency-body-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.administrative-efficiency-summary-grid article,
.administrative-efficiency-body-grid article {
  min-width: 0;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfcfd;
  padding: 12px;
}

.administrative-efficiency-summary-grid span,
.administrative-efficiency-summary-grid small {
  display: block;
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
}

.administrative-efficiency-summary-grid strong {
  display: block;
  margin: 5px 0;
  color: var(--ink);
  font-size: 20px;
}

.administrative-efficiency-body-grid h4 {
  margin: 0 0 10px;
  font-size: 13px;
}

.administrative-efficiency-trend-list,
.administrative-efficiency-indicator-list,
.administrative-efficiency-share-bars {
  display: grid;
  gap: 7px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.administrative-efficiency-trend-list li,
.administrative-efficiency-indicator-list div {
  display: grid;
  grid-template-columns: 72px 1fr auto;
  gap: 8px;
  align-items: center;
  border-bottom: 1px solid #e7edf3;
  padding-bottom: 7px;
}

.administrative-efficiency-indicator-list div {
  grid-template-columns: 1fr auto;
}

.administrative-efficiency-trend-list strong,
.administrative-efficiency-indicator-list strong {
  color: var(--ink);
  font-size: 12px;
}

.administrative-efficiency-trend-list span,
.administrative-efficiency-indicator-list span {
  color: var(--brand);
  font-size: 12px;
  font-weight: 900;
}

.administrative-efficiency-trend-list small {
  color: var(--muted);
  font-size: 11px;
}

.administrative-efficiency-indicator-list div.needed span {
  color: var(--amber);
}

.administrative-efficiency-share-bars div {
  display: grid;
  grid-template-columns: 100px 1fr 72px;
  gap: 8px;
  align-items: center;
}

.administrative-efficiency-share-bars span,
.administrative-efficiency-share-bars strong {
  color: var(--ink);
  font-size: 12px;
}

.administrative-efficiency-share-bars i {
  height: 9px;
  overflow: hidden;
  border-radius: 999px;
  background: #e6edf4;
}

.administrative-efficiency-share-bars b {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: var(--brand);
}

.welfare-medical-panel {
  margin-bottom: 16px;
}

.welfare-summary-grid,
.welfare-body-grid {
  display: grid;
  gap: 12px;
}

.welfare-summary-grid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  margin-bottom: 12px;
}

.welfare-body-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.welfare-summary-grid article,
.welfare-body-grid article {
  min-width: 0;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfcfd;
  padding: 12px;
}

.welfare-summary-grid span,
.welfare-summary-grid small {
  display: block;
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
}

.welfare-summary-grid strong {
  display: block;
  margin: 5px 0;
  color: var(--ink);
  font-size: 20px;
}

.welfare-summary-grid strong.negative {
  color: var(--red);
}

.welfare-summary-grid strong.positive {
  color: var(--green);
}

.welfare-body-grid h4 {
  margin: 0 0 10px;
  font-size: 13px;
}

.welfare-trend-list,
.welfare-indicator-list {
  display: grid;
  gap: 7px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.welfare-trend-list li,
.welfare-indicator-list div {
  display: grid;
  grid-template-columns: 72px 1fr auto;
  gap: 8px;
  align-items: center;
  border-bottom: 1px solid #e7edf3;
  padding-bottom: 7px;
}

.welfare-indicator-list div {
  grid-template-columns: 1fr auto;
}

.welfare-trend-list strong,
.welfare-indicator-list strong {
  color: var(--ink);
  font-size: 12px;
}

.welfare-trend-list span,
.welfare-indicator-list span {
  color: var(--brand);
  font-size: 12px;
  font-weight: 900;
}

.welfare-trend-list small {
  color: var(--muted);
  font-size: 11px;
}

.welfare-indicator-list div.needed span {
  color: var(--amber);
}

.welfare-forecast-list,
.welfare-insight-list {
  display: grid;
  gap: 8px;
}

.welfare-forecast-list div {
  display: grid;
  grid-template-columns: 56px 1fr auto;
  gap: 8px;
  align-items: center;
  border-bottom: 1px solid #e7edf3;
  padding-bottom: 8px;
}

.welfare-forecast-list strong,
.welfare-forecast-list b,
.welfare-insight-list strong {
  color: var(--ink);
  font-size: 12px;
}

.welfare-forecast-list span {
  color: var(--brand);
  font-size: 12px;
  font-weight: 900;
}

.welfare-insight-list p {
  display: grid;
  gap: 3px;
  margin: 0;
  border-bottom: 1px solid #e7edf3;
  padding-bottom: 8px;
}

.welfare-insight-list span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
  line-height: 1.55;
}

.welfare-share-bars {
  display: grid;
  gap: 10px;
}

.welfare-share-bars div {
  display: grid;
  grid-template-columns: 90px 1fr 56px;
  gap: 8px;
  align-items: center;
}

.welfare-share-bars span,
.welfare-share-bars strong {
  color: var(--ink);
  font-size: 12px;
}

.welfare-share-bars i {
  height: 9px;
  overflow: hidden;
  border-radius: 999px;
  background: #e6edf4;
}

.welfare-share-bars b {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: var(--green);
}

.childcare-education-panel {
  margin-bottom: 16px;
}

.childcare-summary-grid,
.childcare-body-grid {
  display: grid;
  gap: 12px;
}

.childcare-summary-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  margin-bottom: 12px;
}

.childcare-body-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.childcare-summary-grid article,
.childcare-body-grid article {
  min-width: 0;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfcfd;
  padding: 12px;
}

.childcare-summary-grid span,
.childcare-summary-grid small {
  display: block;
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
}

.childcare-summary-grid strong {
  display: block;
  margin: 5px 0;
  color: var(--ink);
  font-size: 20px;
}

.childcare-summary-grid strong.negative {
  color: var(--red);
}

.childcare-summary-grid strong.positive {
  color: var(--green);
}

.childcare-body-grid h4 {
  margin: 0 0 10px;
  font-size: 13px;
}

.childcare-trend-list,
.childcare-indicator-list {
  display: grid;
  gap: 7px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.childcare-trend-list li,
.childcare-indicator-list div {
  display: grid;
  grid-template-columns: 72px 1fr auto;
  gap: 8px;
  align-items: center;
  border-bottom: 1px solid #e7edf3;
  padding-bottom: 7px;
}

.childcare-indicator-list div {
  grid-template-columns: 1fr auto;
}

.childcare-trend-list strong,
.childcare-indicator-list strong {
  color: var(--ink);
  font-size: 12px;
}

.childcare-trend-list span,
.childcare-indicator-list span {
  color: var(--brand);
  font-size: 12px;
  font-weight: 900;
}

.childcare-trend-list small {
  color: var(--muted);
  font-size: 11px;
}

.childcare-indicator-list div.needed span {
  color: var(--amber);
}

.childcare-insight-list {
  display: grid;
  gap: 8px;
}

.childcare-insight-list p {
  display: grid;
  gap: 3px;
  margin: 0;
  border-bottom: 1px solid #e7edf3;
  padding-bottom: 8px;
}

.childcare-insight-list strong {
  color: var(--ink);
  font-size: 12px;
}

.childcare-insight-list span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
  line-height: 1.55;
}

.childcare-district-list {
  display: grid;
  gap: 7px;
}

.childcare-district-list div {
  display: grid;
  grid-template-columns: 1fr auto auto;
  gap: 8px;
  align-items: center;
  border: 1px solid #e1e8ef;
  border-radius: 8px;
  background: #fff;
  padding: 8px 10px;
}

.childcare-district-list strong {
  color: var(--ink);
  font-size: 12px;
}

.childcare-district-list span {
  color: var(--muted);
  font-size: 11px;
  font-weight: 900;
}

.childcare-district-list b {
  border-radius: 999px;
  padding: 4px 8px;
  font-size: 11px;
}

.childcare-district-list .shortage b {
  background: #fee2e2;
  color: var(--red);
}

.childcare-district-list .enough b {
  background: #dcfce7;
  color: var(--green);
}

.childcare-share-bars {
  display: grid;
  gap: 10px;
}

.childcare-share-bars div {
  display: grid;
  grid-template-columns: 90px 1fr 56px;
  gap: 8px;
  align-items: center;
}

.childcare-share-bars span,
.childcare-share-bars strong {
  color: var(--ink);
  font-size: 12px;
}

.childcare-share-bars i {
  height: 9px;
  overflow: hidden;
  border-radius: 999px;
  background: #e6edf4;
}

.childcare-share-bars b {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: var(--amber);
}

.infrastructure-utilities-panel {
  margin-bottom: 16px;
}

.infrastructure-summary-grid,
.infrastructure-body-grid {
  display: grid;
  gap: 12px;
}

.infrastructure-summary-grid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  margin-bottom: 12px;
}

.infrastructure-body-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.infrastructure-summary-grid article,
.infrastructure-body-grid article {
  min-width: 0;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfcfd;
  padding: 12px;
}

.infrastructure-summary-grid span,
.infrastructure-summary-grid small {
  display: block;
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
}

.infrastructure-summary-grid strong {
  display: block;
  margin: 5px 0;
  color: var(--ink);
  font-size: 20px;
}

.infrastructure-summary-grid strong.negative,
.infrastructure-share-bars strong.negative {
  color: var(--red);
}

.infrastructure-summary-grid strong.positive {
  color: var(--green);
}

.infrastructure-body-grid h4 {
  margin: 0 0 10px;
  font-size: 13px;
}

.infrastructure-trend-list,
.infrastructure-indicator-list {
  display: grid;
  gap: 7px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.infrastructure-trend-list li,
.infrastructure-indicator-list div {
  display: grid;
  grid-template-columns: 72px 1fr auto;
  gap: 8px;
  align-items: center;
  border-bottom: 1px solid #e7edf3;
  padding-bottom: 7px;
}

.infrastructure-indicator-list div {
  grid-template-columns: 1fr auto;
}

.infrastructure-trend-list strong,
.infrastructure-indicator-list strong {
  color: var(--ink);
  font-size: 12px;
}

.infrastructure-trend-list span,
.infrastructure-indicator-list span {
  color: var(--brand);
  font-size: 12px;
  font-weight: 900;
}

.infrastructure-trend-list small {
  color: var(--muted);
  font-size: 11px;
}

.infrastructure-indicator-list div.needed span {
  color: var(--amber);
}

.infrastructure-share-bars {
  display: grid;
  gap: 10px;
}

.infrastructure-share-bars div {
  display: grid;
  grid-template-columns: 112px 1fr 56px;
  gap: 8px;
  align-items: center;
}

.infrastructure-share-bars span,
.infrastructure-share-bars strong {
  color: var(--ink);
  font-size: 12px;
}

.infrastructure-share-bars i {
  height: 9px;
  overflow: hidden;
  border-radius: 999px;
  background: #e6edf4;
}

.infrastructure-share-bars b {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: var(--teal);
}

.infrastructure-share-bars b.negative {
  background: var(--red);
}

.infrastructure-source-list {
  display: grid;
  gap: 8px;
}

.infrastructure-source-list div {
  display: grid;
  grid-template-columns: minmax(110px, 0.7fr) 1fr;
  gap: 8px;
  align-items: center;
  border-bottom: 1px solid #e7edf3;
  padding-bottom: 8px;
}

.infrastructure-source-list strong {
  color: var(--ink);
  font-size: 12px;
}

.infrastructure-source-list a {
  color: var(--brand);
  font-size: 12px;
  font-weight: 900;
  text-decoration: none;
}

.infrastructure-source-list a:hover {
  text-decoration: underline;
}

.utility-risk-card {
  border-color: rgba(192, 80, 77, 0.22);
  background: #fffafa;
}

.utility-risk-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  margin-bottom: 12px;
}

.utility-risk-grid div {
  min-width: 0;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
}

.utility-risk-grid div.danger {
  border-color: rgba(192, 80, 77, 0.28);
  background: rgba(192, 80, 77, 0.07);
}

.utility-risk-grid div.warning {
  border-color: rgba(188, 118, 26, 0.28);
  background: rgba(188, 118, 26, 0.07);
}

.utility-risk-grid div.safe {
  border-color: rgba(12, 128, 88, 0.24);
  background: rgba(12, 128, 88, 0.07);
}

.utility-risk-grid span,
.utility-risk-grid strong,
.utility-risk-grid small {
  display: block;
}

.utility-risk-grid span {
  color: var(--muted);
  font-size: 11px;
  font-weight: 900;
}

.utility-risk-grid strong {
  margin-top: 4px;
  color: var(--ink);
  font-size: 18px;
}

.utility-risk-grid small {
  margin-top: 5px;
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
  line-height: 1.45;
}

.utility-risk-reasons {
  display: grid;
  gap: 8px;
}

.utility-risk-reasons p {
  display: grid;
  grid-template-columns: 70px minmax(0, 1fr);
  gap: 8px;
  margin: 0;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
  line-height: 1.55;
}

.utility-risk-reasons strong {
  color: var(--danger);
  font-size: 11px;
}

.utility-risk-reasons span {
  overflow-wrap: anywhere;
}

.utility-briefing-card {
  border-color: rgba(14, 42, 71, 0.18);
  background: #fbfcfd;
}

.utility-briefing-card p {
  margin: 0 0 10px;
  color: var(--ink);
  font-size: 13px;
  font-weight: 900;
  line-height: 1.6;
}

.utility-briefing-findings {
  display: grid;
  gap: 7px;
}

.utility-briefing-findings span {
  display: block;
  padding: 8px;
  border: 1px solid #e4e9ef;
  border-radius: 8px;
  background: #ffffff;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
  line-height: 1.55;
  overflow-wrap: anywhere;
}

.utility-decision-card {
  grid-column: 1 / -1;
}

.utility-decision-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}

.utility-decision-list section {
  display: grid;
  gap: 10px;
  padding: 14px;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: #ffffff;
}

.utility-decision-list section > div {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 10px;
}

.utility-decision-list strong {
  color: var(--ink);
  font-size: 14px;
  font-weight: 950;
}

.utility-decision-list span {
  flex: 0 0 auto;
  padding: 4px 8px;
  border-radius: 999px;
  background: rgba(180, 83, 9, 0.12);
  color: #92400e;
  font-size: 11px;
  font-weight: 950;
  white-space: nowrap;
}

.utility-decision-list span.danger {
  background: rgba(185, 28, 28, 0.12);
  color: #991b1b;
}

.utility-decision-list p {
  margin: 0;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
  line-height: 1.65;
}

.utility-decision-list ul {
  display: grid;
  gap: 6px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.utility-decision-list li {
  position: relative;
  padding-left: 14px;
  color: var(--ink);
  font-size: 12px;
  font-weight: 850;
  line-height: 1.55;
}

.utility-decision-list li::before {
  position: absolute;
  top: 0.72em;
  left: 0;
  width: 5px;
  height: 5px;
  border-radius: 999px;
  background: var(--deep-navy);
  content: "";
}

.utility-decision-list small,
.utility-decision-list em {
  display: block;
  color: var(--muted);
  font-size: 12px;
  font-style: normal;
  font-weight: 800;
  line-height: 1.55;
}

.utility-decision-list em {
  padding-top: 8px;
  border-top: 1px solid var(--border);
  color: var(--ink);
}

.utility-operating-trend-card {
  grid-column: 1 / -1;
}

.utility-operating-summary {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
  margin-bottom: 14px;
}

.utility-operating-summary div {
  display: grid;
  gap: 6px;
  padding: 12px;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: #ffffff;
}

.utility-operating-summary span,
.utility-operating-summary small,
.utility-operating-summary strong {
  display: block;
  overflow-wrap: anywhere;
}

.utility-operating-summary span {
  color: var(--muted);
  font-size: 11px;
  font-weight: 900;
}

.utility-operating-summary strong {
  color: var(--green);
  font-size: 22px;
  font-weight: 950;
}

.utility-operating-summary strong.negative {
  color: var(--danger);
}

.utility-operating-summary small {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
  line-height: 1.55;
}

.utility-operating-bars {
  display: grid;
  gap: 8px;
}

.utility-operating-bars div {
  display: grid;
  grid-template-columns: 44px minmax(100px, 1fr) 92px minmax(120px, 0.8fr);
  align-items: center;
  gap: 10px;
}

.utility-operating-bars span,
.utility-operating-bars strong,
.utility-operating-bars small {
  display: block;
  overflow-wrap: anywhere;
}

.utility-operating-bars span {
  color: var(--ink);
  font-size: 12px;
  font-weight: 950;
}

.utility-operating-bars i {
  display: block;
  height: 10px;
  overflow: hidden;
  border-radius: 999px;
  background: #eef2f7;
}

.utility-operating-bars b {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: var(--green);
}

.utility-operating-bars b.negative {
  background: var(--danger);
}

.utility-operating-bars strong {
  color: var(--green);
  font-size: 12px;
  font-weight: 950;
  text-align: right;
}

.utility-operating-bars strong.negative {
  color: var(--danger);
}

.utility-operating-bars small {
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
}

.utility-operating-bars small a {
  color: var(--deep-navy);
  font-weight: 950;
  text-decoration: none;
}

.utility-operating-bars small a:hover {
  text-decoration: underline;
}

.utility-operating-note {
  margin: 12px 0 0;
  padding: 10px 12px;
  border: 1px solid rgba(14, 42, 71, 0.12);
  border-radius: 8px;
  background: #f8fafc;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
  line-height: 1.65;
}

.utility-rate-scenario-list {
  display: grid;
  gap: 9px;
}

.utility-rate-scenario-list div {
  display: grid;
  grid-template-columns: 84px minmax(100px, 1fr) 70px minmax(150px, 1fr);
  align-items: center;
  gap: 10px;
}

.utility-rate-scenario-list span,
.utility-rate-scenario-list strong,
.utility-rate-scenario-list small {
  display: block;
  overflow-wrap: anywhere;
}

.utility-rate-scenario-list span {
  color: var(--ink);
  font-size: 12px;
  font-weight: 950;
}

.utility-rate-scenario-list i {
  display: block;
  height: 10px;
  overflow: hidden;
  border-radius: 999px;
  background: #eef2f7;
}

.utility-rate-scenario-list b {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: var(--danger);
}

.utility-rate-scenario-list strong {
  color: var(--danger);
  font-size: 12px;
  font-weight: 950;
  text-align: right;
}

.utility-rate-scenario-list small {
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
}

.utility-question-list {
  display: grid;
  gap: 8px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.utility-question-list li {
  padding: 10px;
  border: 1px solid rgba(192, 80, 77, 0.18);
  border-radius: 8px;
  background: #ffffff;
}

.utility-question-list strong,
.utility-question-list span {
  display: block;
  overflow-wrap: anywhere;
}

.utility-question-list strong {
  color: var(--danger);
  font-size: 12px;
}

.utility-question-list span {
  margin-top: 5px;
  color: var(--ink);
  font-size: 12px;
  font-weight: 800;
  line-height: 1.6;
}

.utility-timeline-card {
  border-color: rgba(192, 80, 77, 0.2);
}

.utility-timeline-list,
.utility-investment-list {
  display: grid;
  gap: 8px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.utility-timeline-list li {
  display: grid;
  grid-template-columns: 58px minmax(0, 1fr);
  gap: 10px;
  padding: 10px;
  border: 1px solid #e4e9ef;
  border-radius: 8px;
  background: #ffffff;
}

.utility-timeline-list li.danger,
.utility-investment-list li.danger {
  border-color: rgba(192, 80, 77, 0.26);
  background: rgba(192, 80, 77, 0.07);
}

.utility-timeline-list li.warning,
.utility-investment-list li.warning {
  border-color: rgba(188, 118, 26, 0.26);
  background: rgba(188, 118, 26, 0.07);
}

.utility-timeline-list b {
  display: grid;
  width: 48px;
  height: 48px;
  place-items: center;
  border-radius: 50%;
  background: var(--soft-blue);
  color: var(--blue);
  font-size: 12px;
}

.utility-timeline-list strong,
.utility-timeline-list span {
  display: block;
  overflow-wrap: anywhere;
}

.utility-timeline-list strong {
  color: var(--ink);
  font-size: 13px;
}

.utility-timeline-list span {
  margin-top: 4px;
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
  line-height: 1.5;
}

.utility-investment-list li {
  display: grid;
  grid-template-columns: 42px minmax(0, 1fr) minmax(110px, auto);
  gap: 8px;
  align-items: center;
  padding: 9px;
  border: 1px solid #e4e9ef;
  border-radius: 8px;
  background: #ffffff;
}

.utility-investment-list strong,
.utility-investment-list span,
.utility-investment-list small {
  min-width: 0;
  overflow-wrap: anywhere;
}

.utility-investment-list strong {
  color: var(--ink);
  font-size: 12px;
}

.utility-investment-list span {
  color: var(--danger);
  font-size: 12px;
  font-weight: 900;
}

.utility-investment-list small {
  color: var(--muted);
  font-size: 10px;
  font-weight: 800;
  text-align: right;
}

.official-source-panel {
  margin-bottom: 18px;
}

.source-traceability-panel {
  margin-bottom: 18px;
}

.source-trace-summary {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
  gap: 12px;
  margin-bottom: 12px;
}

.source-trace-summary article {
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfcfd;
  padding: 12px;
}

.source-trace-summary span {
  display: block;
  color: var(--muted);
  font-size: 11px;
  font-weight: 900;
}

.source-trace-summary strong {
  display: block;
  margin-top: 5px;
  color: var(--ink);
  font-size: 20px;
}

.source-trace-summary article.ok {
  border-color: rgba(12, 128, 88, 0.22);
  background: rgba(12, 128, 88, 0.06);
}

.source-trace-summary article.warning {
  border-color: rgba(192, 80, 77, 0.24);
  background: rgba(192, 80, 77, 0.06);
}

.source-trace-breakdown {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 12px;
  margin-bottom: 12px;
}

.source-trace-breakdown article {
  min-width: 0;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfcfd;
  padding: 12px;
}

.source-trace-breakdown h3 {
  margin: 0 0 9px;
  color: var(--ink);
  font-size: 13px;
}

.source-trace-chip-list {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
}

.source-trace-chip-list span {
  display: inline-flex;
  gap: 6px;
  align-items: center;
  border: 1px solid #dce5ed;
  border-radius: 999px;
  background: var(--paper);
  color: var(--ink);
  padding: 6px 9px;
  font-size: 11px;
  font-weight: 900;
}

.source-trace-chip-list strong,
.source-trace-chip-list small {
  color: var(--muted);
  font-size: 10px;
}

.source-trace-chip-list a {
  color: var(--brand);
  text-decoration: none;
}

.source-trace-actions {
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfcfd;
  margin-bottom: 12px;
  padding: 12px;
}

.source-trace-actions h3 {
  margin: 0 0 10px;
  color: var(--ink);
  font-size: 13px;
}

.source-trace-action-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}

.source-trace-action-grid article {
  border: 1px solid #e2e9f0;
  border-radius: 8px;
  background: var(--paper);
  padding: 10px;
}

.source-trace-action-grid span {
  color: var(--muted);
  font-size: 11px;
  font-weight: 900;
}

.source-trace-action-grid strong {
  display: block;
  margin: 4px 0 8px;
  color: var(--danger);
  font-size: 13px;
}

.source-trace-action-grid dl {
  display: grid;
  gap: 6px;
  margin: 0;
}

.source-trace-action-grid dl div {
  display: grid;
  grid-template-columns: 72px 1fr;
  gap: 8px;
}

.source-trace-action-grid dt,
.source-trace-action-grid dd {
  margin: 0;
  font-size: 11px;
}

.source-trace-action-grid dt {
  color: var(--muted);
  font-weight: 900;
}

.source-trace-action-grid dd {
  color: var(--ink);
  line-height: 1.5;
}

.source-trace-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 12px;
}

.source-trace-table th,
.source-trace-table td {
  border-bottom: 1px solid var(--line);
  padding: 10px 8px;
  text-align: left;
  vertical-align: top;
}

.source-trace-table th {
  background: #f0f4f8;
  color: var(--ink);
  font-weight: 900;
  white-space: nowrap;
}

.source-trace-table strong,
.source-trace-table small {
  display: block;
}

.source-trace-table small {
  margin-top: 3px;
  color: var(--muted);
  font-size: 11px;
}

.source-trace-table .source-file-warning {
  color: var(--danger);
  font-weight: 900;
}

.source-trace-table a {
  color: var(--brand);
  font-weight: 900;
  text-decoration: none;
}

.source-trace-table code {
  color: var(--ink);
  font-size: 11px;
  overflow-wrap: anywhere;
}

/* 全データセット出典トレーサビリティ（自動集約） */
.dataset-provenance-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 12px;
}
.dataset-provenance-table th,
.dataset-provenance-table td {
  border-bottom: 1px solid var(--line);
  padding: 9px 8px;
  text-align: left;
  vertical-align: top;
}
.dataset-provenance-table th {
  background: #f0f4f8;
  color: var(--ink);
  font-weight: 900;
  white-space: nowrap;
}
.dataset-provenance-table code {
  color: var(--ink);
  font-size: 11px;
  overflow-wrap: anywhere;
}
.dataset-provenance-table .prov-verified {
  display: inline-block;
  margin-top: 3px;
  color: #1f9d57;
  font-size: 10.5px;
  font-weight: 900;
}
.dataset-provenance-table .prov-links a {
  color: var(--brand);
  font-weight: 800;
  text-decoration: none;
  margin-right: 6px;
}
.dataset-provenance-table .prov-file {
  color: var(--muted);
}

.trace-status {
  display: inline-block;
  margin-right: 6px;
  border-radius: 999px;
  padding: 2px 6px;
  font-size: 10px;
  font-weight: 900;
}

.trace-status.integrated {
  background: rgba(12, 128, 88, 0.1);
  color: var(--good);
}

.trace-status.partial {
  background: rgba(188, 118, 26, 0.12);
  color: var(--amber);
}

.trace-status.needed {
  background: rgba(192, 80, 77, 0.12);
  color: var(--danger);
}

.official-source-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
}

.official-source-card {
  min-width: 0;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfcfd;
  padding: 14px;
}

.official-source-head {
  display: flex;
  gap: 12px;
  align-items: flex-start;
  justify-content: space-between;
  margin-bottom: 8px;
}

.official-source-head span,
.official-source-card dt {
  color: var(--muted);
  font-size: 11px;
  font-weight: 900;
}

.official-source-head h3 {
  margin: 4px 0 0;
  color: var(--ink);
  font-size: 15px;
}

.official-source-head strong {
  white-space: nowrap;
  border-radius: 999px;
  background: #e8f6ef;
  color: var(--green);
  padding: 4px 8px;
  font-size: 11px;
}

.official-source-card.partially_integrated .official-source-head strong,
.official-source-card.needs_download_retry .official-source-head strong {
  background: #fff6df;
  color: var(--amber);
}

.official-source-card p {
  margin: 0 0 10px;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.7;
}

.official-source-card dl {
  display: grid;
  gap: 7px;
  margin: 0;
}

.official-source-card dl div {
  display: grid;
  grid-template-columns: 78px 1fr;
  gap: 8px;
}

.official-source-card dd {
  min-width: 0;
  margin: 0;
  color: var(--ink);
  font-size: 12px;
  overflow-wrap: anywhere;
}

.official-source-card a,
.official-file-list a {
  color: var(--brand);
  font-weight: 900;
  text-decoration: none;
}

.official-source-card a:hover,
.official-file-list a:hover {
  text-decoration: underline;
}

.official-file-list {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 10px;
}

.official-file-list a {
  border: 1px solid var(--line);
  border-radius: 999px;
  background: #fff;
  padding: 4px 8px;
  font-size: 11px;
}

.facility-ledger-panel {
  margin-bottom: 16px;
}

.facility-asset-explorer {
  display: grid;
  gap: 16px;
  padding: 22px;
  border: 1px solid var(--line);
  border-radius: 18px;
  background: var(--paper);
}

.infrastructure-asset-grid,
.utility-signal-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
}

.utility-signal-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.infrastructure-asset-grid article,
.utility-signal-grid article {
  display: grid;
  gap: 6px;
  padding: 15px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--surface);
}

.infrastructure-asset-grid span,
.infrastructure-asset-grid small,
.utility-signal-grid span,
.utility-signal-grid small {
  color: var(--muted);
  font-size: 11px;
  line-height: 1.5;
}

.infrastructure-asset-grid strong,
.utility-signal-grid strong {
  font-size: 22px;
}

.facility-search-section {
  padding: 18px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: var(--surface);
}

.facility-asset-filters {
  display: grid;
  grid-template-columns: minmax(220px, 1fr) repeat(2, minmax(180px, .55fr));
  gap: 10px;
  margin-bottom: 14px;
}

.facility-asset-filters label {
  display: grid;
  gap: 5px;
  color: var(--muted);
  font-size: 11px;
  font-weight: 700;
}

.facility-asset-filters input,
.facility-asset-filters select {
  width: 100%;
  padding: 10px 11px;
  border: 1px solid var(--line);
  border-radius: 9px;
  background: var(--paper);
  color: var(--ink);
}

.facility-asset-table {
  width: 100%;
  min-width: 900px;
  border-collapse: collapse;
}

.facility-asset-table th,
.facility-asset-table td {
  padding: 10px 12px;
  border-bottom: 1px solid var(--line);
  text-align: left;
  white-space: nowrap;
}

.facility-source-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: center;
}

.inline-nav-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: #fff;
  color: var(--brand);
  padding: 7px 10px;
  font-size: 12px;
  font-weight: 900;
  text-decoration: none;
}

.facility-ledger-compact .facility-ledger-summary-grid.compact {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.facility-ledger-priority-list.compact {
  margin-top: 10px;
}

.facility-ledger-summary-grid,
.facility-ledger-body-grid {
  display: grid;
  gap: 12px;
}

.facility-ledger-summary-grid {
  grid-template-columns: repeat(5, minmax(0, 1fr));
  margin-bottom: 12px;
}

.facility-ledger-body-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.facility-ledger-wide {
  grid-column: 1 / -1;
}

.facility-ledger-summary-grid article,
.facility-ledger-body-grid article {
  min-width: 0;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfcfd;
  padding: 12px;
}

.facility-ledger-summary-grid span,
.facility-ledger-summary-grid small {
  display: block;
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
}

.facility-ledger-summary-grid strong {
  display: block;
  margin: 5px 0;
  color: var(--ink);
  font-size: 20px;
}

.facility-ledger-summary-grid strong.negative {
  color: var(--red);
}

.facility-ledger-body-grid h4 {
  margin: 0 0 10px;
  font-size: 13px;
}

.facility-ledger-indicator-list,
.facility-ledger-category-list,
.facility-ledger-priority-list,
.facility-ledger-insight-list {
  display: grid;
  gap: 7px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.facility-ledger-indicator-list div,
.facility-ledger-category-list li,
.facility-ledger-priority-list li,
.facility-ledger-insight-list p {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 7px 10px;
  align-items: center;
  border-bottom: 1px solid #e7edf3;
  padding-bottom: 7px;
}

.facility-ledger-category-list small,
.facility-ledger-priority-list small,
.facility-ledger-insight-list span,
.facility-ledger-priority-list em {
  grid-column: 1 / -1;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.45;
}

.facility-ledger-priority-list em {
  color: var(--brand);
  font-style: normal;
  font-weight: 800;
}

.facility-ledger-indicator-list strong,
.facility-ledger-category-list strong,
.facility-ledger-priority-list strong,
.facility-ledger-insight-list strong {
  min-width: 0;
  color: var(--ink);
  font-size: 12px;
}

.facility-ledger-indicator-list span,
.facility-ledger-category-list span,
.facility-ledger-priority-list span {
  color: var(--brand);
  font-size: 12px;
  font-weight: 900;
}

/* 施設サマリー: カルテを持つ施設名はカルテへ直接遷移できるリンクにする */
.facility-ledger-card-link {
  min-width: 0;
  display: inline-flex;
  align-items: baseline;
  gap: 6px;
  font-size: 12px;
  font-weight: 800;
}
.facility-ledger-priority-list .facility-ledger-card-link span {
  color: var(--muted);
  font-size: 10px;
  font-weight: 800;
}
.facility-ledger-card-link:hover span,
.facility-ledger-card-link:focus span { color: var(--brand); }

.facility-ledger-indicator-list div.needed span {
  color: var(--amber);
}

.facility-ledger-rubric {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
}

.facility-ledger-rubric div {
  min-width: 0;
  border: 1px solid #e1e8ef;
  border-radius: 8px;
  background: #fff;
  padding: 10px;
}

.facility-ledger-rubric strong,
.facility-ledger-rubric span,
.facility-ledger-rubric small {
  display: block;
}

.facility-ledger-rubric strong {
  color: var(--ink);
  font-size: 12px;
}

.facility-ledger-rubric span {
  margin: 4px 0;
  color: var(--brand);
  font-size: 16px;
  font-weight: 900;
}

.facility-ledger-rubric small,
.facility-ledger-note {
  color: var(--muted);
  font-size: 11px;
  line-height: 1.5;
}

.facility-ledger-note {
  margin: 10px 0 0;
}

.facility-ledger-list-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 10px;
}

.facility-ledger-list-meta span {
  border: 1px solid var(--line);
  border-radius: 999px;
  background: #fff;
  color: var(--muted);
  padding: 5px 9px;
  font-size: 11px;
  font-weight: 900;
}

.facility-ledger-full-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
  max-height: 620px;
  overflow: auto;
  padding-right: 4px;
}

.facility-ledger-full-list div {
  min-width: 0;
  border: 1px solid #e1e8ef;
  border-radius: 8px;
  background: #fff;
  padding: 9px;
}

.facility-ledger-full-list div.unconnected {
  background: #f7f9fb;
}

.facility-ledger-full-list strong {
  display: flex;
  min-width: 0;
  gap: 8px;
  align-items: center;
  color: var(--ink);
  font-size: 12px;
}

.facility-ledger-full-list strong b {
  flex: 0 0 auto;
  min-width: 28px;
  border-radius: 999px;
  background: #eef3f7;
  color: var(--muted);
  padding: 2px 6px;
  text-align: center;
  font-size: 10px;
}

.facility-ledger-full-list span,
.facility-ledger-full-list small,
.facility-ledger-full-list em {
  display: block;
  margin-top: 5px;
  font-size: 11px;
  line-height: 1.45;
}

.facility-ledger-full-list span {
  color: var(--brand);
  font-weight: 900;
}

.facility-ledger-full-list small,
.facility-ledger-full-list em {
  color: var(--muted);
}

.facility-ledger-full-list em {
  font-style: normal;
}

.debt-breakdown-panel {
  margin-bottom: 16px;
}

.debt-breakdown-summary-grid,
.debt-breakdown-body-grid {
  display: grid;
  gap: 12px;
}

.debt-breakdown-summary-grid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  margin-bottom: 12px;
}

.debt-breakdown-body-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.debt-breakdown-summary-grid article,
.debt-breakdown-body-grid article {
  min-width: 0;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfcfd;
  padding: 12px;
}

.debt-breakdown-summary-grid span,
.debt-breakdown-summary-grid small {
  display: block;
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
}

.debt-breakdown-summary-grid strong {
  display: block;
  margin: 5px 0;
  color: var(--ink);
  font-size: 20px;
}

.debt-breakdown-body-grid h4 {
  margin: 0 0 10px;
  font-size: 13px;
}

.debt-breakdown-trend-list,
.debt-breakdown-indicator-list {
  display: grid;
  gap: 7px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.debt-breakdown-trend-list li,
.debt-breakdown-indicator-list div {
  display: grid;
  grid-template-columns: 72px 1fr auto;
  gap: 8px;
  align-items: center;
  border-bottom: 1px solid #e7edf3;
  padding-bottom: 7px;
}

.debt-breakdown-indicator-list div {
  grid-template-columns: 1fr auto;
}

.debt-breakdown-trend-list strong,
.debt-breakdown-indicator-list strong {
  color: var(--ink);
  font-size: 12px;
}

.debt-breakdown-trend-list span,
.debt-breakdown-indicator-list span {
  color: var(--brand);
  font-size: 12px;
  font-weight: 900;
}

.debt-breakdown-trend-list small {
  color: var(--muted);
  font-size: 11px;
}

.debt-breakdown-indicator-list div.needed span {
  color: var(--amber);
}

.regional-economy-panel {
  margin-bottom: 16px;
}

.regional-economy-ordinance {
  display: flex;
  gap: 20px;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 12px;
  border: 1px solid #b9d9ce;
  border-left: 4px solid var(--green);
  border-radius: 8px;
  background: #f3faf7;
  padding: 16px 18px;
}

.regional-economy-ordinance h4 {
  margin: 3px 0 7px;
  color: var(--ink);
  font-size: 16px;
}

.regional-economy-ordinance p {
  margin: 0;
  color: var(--muted);
  font-size: 0.86rem;
  line-height: 1.7;
}

.regional-economy-ordinance-label {
  color: var(--green);
  font-size: 11px;
  font-weight: 900;
  letter-spacing: 0.06em;
}

.regional-economy-ordinance > a {
  flex: 0 0 auto;
  border-radius: 999px;
  background: var(--green);
  padding: 9px 14px;
  color: #fff;
  font-size: 12px;
  font-weight: 900;
  text-decoration: none;
}

.regional-economy-ordinance > a:hover {
  filter: brightness(0.92);
}

.regional-economy-next-movement {
  margin-bottom: 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fff;
  padding: 16px 18px;
}

.regional-economy-next-movement-head {
  display: flex;
  gap: 20px;
  align-items: center;
  justify-content: space-between;
}

.regional-economy-next-movement-head span {
  color: var(--brand);
  font-size: 11px;
  font-weight: 900;
  letter-spacing: 0.06em;
}

.regional-economy-next-movement h4 {
  margin: 3px 0 7px;
  color: var(--ink);
  font-size: 16px;
}

.regional-economy-next-movement-head p {
  margin: 0;
  color: var(--muted);
  font-size: 0.86rem;
  line-height: 1.65;
}

.regional-economy-next-movement-head a {
  flex: 0 0 auto;
  color: var(--brand);
  font-size: 12px;
  font-weight: 900;
}

.regional-economy-next-movement ol {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
  margin: 14px 0 0;
  padding: 0;
  list-style: none;
}

.regional-economy-next-movement li {
  display: flex;
  gap: 9px;
  align-items: flex-start;
  border-radius: 7px;
  background: #f5f8fb;
  padding: 11px;
}

.regional-economy-next-movement li > b {
  display: grid;
  flex: 0 0 24px;
  width: 24px;
  height: 24px;
  place-items: center;
  border-radius: 50%;
  background: var(--brand);
  color: #fff;
  font-size: 12px;
}

.regional-economy-next-movement li strong,
.regional-economy-next-movement li small {
  display: block;
}

.regional-economy-next-movement li strong {
  color: var(--ink);
  font-size: 12px;
}

.regional-economy-next-movement li small {
  margin-top: 4px;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.55;
}

.regional-economy-next-movement-note {
  margin: 10px 0 0;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.55;
}

.regional-economy-policy-research {
  display: flex;
  gap: 20px;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 12px;
  border: 1px solid #b8d5e7;
  border-left: 4px solid var(--brand);
  border-radius: 8px;
  background: #f3f8fc;
  padding: 16px 18px;
}

.regional-economy-policy-research span {
  color: var(--brand);
  font-size: 11px;
  font-weight: 900;
  letter-spacing: 0.06em;
}

.regional-economy-policy-research h4 {
  margin: 3px 0 7px;
  color: var(--ink);
  font-size: 16px;
}

.regional-economy-policy-research p {
  margin: 0;
  color: var(--muted);
  font-size: 0.86rem;
  line-height: 1.65;
}

.regional-economy-policy-research > a {
  flex: 0 0 auto;
  border-radius: 999px;
  background: var(--brand);
  padding: 9px 14px;
  color: #fff;
  font-size: 12px;
  font-weight: 900;
  text-decoration: none;
}

.regional-economy-implementation {
  margin-bottom: 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fff;
  padding: 16px 18px;
}

.regional-economy-implementation > header span {
  color: var(--green);
  font-size: 11px;
  font-weight: 900;
  letter-spacing: 0.06em;
}

.regional-economy-implementation h4 {
  margin: 3px 0 7px;
  color: var(--ink);
  font-size: 16px;
}

.regional-economy-implementation > header p {
  margin: 0;
  color: var(--muted);
  font-size: 0.86rem;
  line-height: 1.65;
}

.regional-economy-implementation > div {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
  margin-top: 13px;
}

.regional-economy-implementation article {
  border-radius: 7px;
  background: #f4f8f6;
  padding: 11px;
}

.regional-economy-implementation article b {
  color: var(--ink);
  font-size: 12px;
}

.regional-economy-implementation article p {
  margin: 5px 0 0;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.55;
}

.regional-economy-implementation > footer {
  margin-top: 11px;
  border-radius: 6px;
  background: #eaf4f0;
  padding: 9px 11px;
  color: #36594f;
  font-size: 11px;
  line-height: 1.6;
}

.regional-economy-amendment {
  margin-bottom: 12px;
  border: 1px solid #d9c99b;
  border-radius: 8px;
  background: #fffcf4;
  padding: 18px;
}

.regional-economy-amendment > header {
  display: flex;
  gap: 20px;
  align-items: flex-start;
  justify-content: space-between;
}

.regional-economy-amendment > header span {
  color: var(--amber);
  font-size: 11px;
  font-weight: 900;
  letter-spacing: 0.06em;
}

.regional-economy-amendment h4 {
  margin: 3px 0 7px;
  color: var(--ink);
  font-size: 17px;
}

.regional-economy-amendment > header p {
  margin: 0;
  color: var(--muted);
  font-size: 0.86rem;
  line-height: 1.65;
}

.regional-economy-amendment > header > strong {
  flex: 0 0 auto;
  border-radius: 999px;
  background: #fff0c2;
  padding: 6px 10px;
  color: #795700;
  font-size: 11px;
}

.regional-economy-full-draft-link {
  display: inline-flex;
  margin-top: 13px;
  border-radius: 999px;
  background: var(--brand);
  padding: 9px 14px;
  color: #fff;
  font-size: 12px;
  font-weight: 900;
  text-decoration: none;
}

.regional-economy-full-draft-link:hover {
  filter: brightness(0.92);
}

.regional-economy-amendment-grid {
  display: grid;
  grid-template-columns: 1.25fr 0.75fr;
  gap: 12px;
  margin-top: 14px;
}

.regional-economy-amendment-grid > article,
.regional-economy-draft-clauses article {
  border: 1px solid #eadfbd;
  border-radius: 7px;
  background: #fff;
  padding: 13px;
}

.regional-economy-amendment h5 {
  margin: 0 0 10px;
  color: var(--ink);
  font-size: 13px;
}

.regional-economy-amendment ol,
.regional-economy-amendment dl {
  display: grid;
  gap: 7px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.regional-economy-amendment li,
.regional-economy-amendment dl div {
  display: grid;
  grid-template-columns: 78px 1fr;
  gap: 8px;
  border-bottom: 1px solid #eee8d8;
  padding-bottom: 7px;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.55;
}

.regional-economy-amendment li b,
.regional-economy-amendment dt {
  color: var(--ink);
  font-weight: 900;
}

.regional-economy-amendment dd {
  margin: 0;
}

.regional-economy-governance-draft {
  margin-top: 12px;
  border: 1px solid #eadfbd;
  border-radius: 7px;
  background: #fff;
  padding: 13px;
}

.regional-economy-governance-draft > p {
  margin: -4px 0 11px;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.6;
}

.regional-economy-governance-draft > div {
  display: grid;
  grid-template-columns: 1fr auto 1fr auto 1fr;
  gap: 9px;
  align-items: center;
}

.regional-economy-governance-draft section {
  min-height: 112px;
  border-radius: 7px;
  background: #f8f5eb;
  padding: 11px;
}

.regional-economy-governance-draft section b,
.regional-economy-governance-draft section strong,
.regional-economy-governance-draft section span {
  display: block;
}

.regional-economy-governance-draft section b {
  color: var(--ink);
  font-size: 13px;
}

.regional-economy-governance-draft section strong {
  margin: 2px 0 6px;
  color: var(--brand);
  font-size: 11px;
}

.regional-economy-governance-draft section span,
.regional-economy-governance-draft > small {
  color: var(--muted);
  font-size: 11px;
  line-height: 1.55;
}

.regional-economy-governance-draft > div > i {
  color: var(--amber);
  font-style: normal;
  font-weight: 900;
}

.regional-economy-governance-draft > small {
  display: block;
  margin-top: 9px;
}

.regional-economy-amendment details {
  margin-top: 12px;
  border-top: 1px solid #e4d7af;
  padding-top: 12px;
}

.regional-economy-amendment summary {
  cursor: pointer;
  color: var(--brand);
  font-size: 12px;
  font-weight: 900;
}

.regional-economy-draft-clauses {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  margin-top: 10px;
}

.regional-economy-draft-clauses b {
  color: var(--ink);
  font-size: 12px;
}

.regional-economy-draft-clauses p {
  margin: 6px 0 0;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.7;
}

.regional-economy-amendment > footer {
  margin-top: 12px;
  border-radius: 6px;
  background: #f4ecd5;
  padding: 9px 11px;
  color: #5e512e;
  font-size: 11px;
  font-weight: 800;
  line-height: 1.6;
}

.regional-economy-summary-grid,
.regional-economy-body-grid {
  display: grid;
  gap: 12px;
}

.regional-economy-summary-grid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  margin-bottom: 12px;
}

.regional-economy-body-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.regional-economy-summary-grid article,
.regional-economy-body-grid article {
  min-width: 0;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfcfd;
  padding: 12px;
}

.regional-economy-summary-grid span,
.regional-economy-summary-grid small {
  display: block;
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
}

.regional-economy-summary-grid strong {
  display: block;
  margin: 5px 0;
  color: var(--ink);
  font-size: 20px;
}

.regional-economy-body-grid h4 {
  margin: 0 0 10px;
  font-size: 13px;
}

.regional-economy-share-bars,
.regional-economy-indicator-list,
.regional-economy-trend-list {
  display: grid;
  gap: 7px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.regional-economy-share-bars div {
  display: grid;
  grid-template-columns: 88px 1fr 56px;
  gap: 8px;
  align-items: center;
}

.regional-economy-share-bars i {
  height: 9px;
  overflow: hidden;
  border-radius: 999px;
  background: #e6edf4;
}

.regional-economy-share-bars b {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: var(--green);
}

.regional-economy-indicator-list div,
.regional-economy-trend-list li {
  display: grid;
  grid-template-columns: 72px 1fr auto;
  gap: 8px;
  align-items: center;
  border-bottom: 1px solid #e7edf3;
  padding-bottom: 7px;
}

.regional-economy-indicator-list div {
  grid-template-columns: 1fr auto;
}

.regional-economy-share-bars span,
.regional-economy-share-bars strong,
.regional-economy-indicator-list strong,
.regional-economy-trend-list strong {
  color: var(--ink);
  font-size: 12px;
}

.regional-economy-indicator-list span,
.regional-economy-trend-list span {
  color: var(--brand);
  font-size: 12px;
  font-weight: 900;
}

.regional-economy-trend-list small {
  color: var(--muted);
  font-size: 11px;
}

.regional-economy-indicator-list div.needed span {
  color: var(--amber);
}

.regional-economy-indicator-list div.partial span {
  color: var(--amber);
}

.regional-economy-note {
  margin-top: 12px;
  color: var(--muted);
  font-size: 0.86rem;
  line-height: 1.65;
}

.dx-admin-panel {
  margin-bottom: 16px;
}

.dx-admin-summary-grid,
.dx-admin-body-grid {
  display: grid;
  gap: 12px;
}

.dx-admin-summary-grid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  margin-bottom: 12px;
}

.dx-admin-body-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.dx-admin-summary-grid article,
.dx-admin-body-grid article {
  min-width: 0;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfcfd;
  padding: 12px;
}

.dx-admin-summary-grid span,
.dx-admin-summary-grid small {
  display: block;
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
}

.dx-admin-summary-grid strong {
  display: block;
  margin: 5px 0;
  color: var(--ink);
  font-size: 20px;
}

.dx-admin-body-grid h4 {
  margin: 0 0 10px;
  font-size: 13px;
}

.dx-admin-indicator-list,
.dx-admin-summary-list {
  display: grid;
  gap: 7px;
}

.dx-admin-indicator-list div,
.dx-admin-summary-list div {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 7px 10px;
  align-items: center;
  border-bottom: 1px solid #e7edf3;
  padding-bottom: 7px;
}

.dx-admin-indicator-list small {
  grid-column: 1 / -1;
  color: var(--muted);
  font-size: 11px;
}

.dx-admin-indicator-list em {
  grid-column: 1 / -1;
  color: var(--navy);
  font-size: 1.05rem;
  font-style: normal;
  font-weight: 900;
}

.dx-admin-indicator-list a {
  grid-column: 1 / -1;
  color: var(--accent);
  font-size: 0.78rem;
  font-weight: 900;
  text-decoration: none;
}

.dx-admin-indicator-list strong,
.dx-admin-summary-list strong {
  color: var(--ink);
  font-size: 12px;
}

.dx-admin-indicator-list span,
.dx-admin-summary-list span {
  color: var(--amber);
  font-size: 12px;
  font-weight: 900;
}

.dx-admin-indicator-list div.partial span {
  color: var(--warning);
}

.dx-admin-source-list {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
}

.dx-admin-source-list span {
  border: 1px solid #dce5ed;
  border-radius: 999px;
  background: var(--paper);
  color: var(--ink);
  padding: 6px 9px;
  font-size: 11px;
  font-weight: 800;
}

.dx-admin-source-list span.available {
  border-color: rgba(12, 128, 88, 0.22);
  background: rgba(12, 128, 88, 0.08);
  color: var(--good);
}

.dx-admin-source-list span.needed {
  border-color: rgba(192, 80, 77, 0.24);
  background: rgba(192, 80, 77, 0.08);
  color: var(--danger);
}

.ai-question-panel {
  margin-bottom: 16px;
}

.ai-question-summary-grid,
.ai-question-body-grid {
  display: grid;
  gap: 12px;
}

.ai-question-summary-grid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  margin-bottom: 12px;
}

.ai-question-body-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.ai-question-summary-grid article,
.ai-question-body-grid article {
  min-width: 0;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfcfd;
  padding: 12px;
}

.ai-question-summary-grid span,
.ai-question-summary-grid small {
  display: block;
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
}

.ai-question-summary-grid strong {
  display: block;
  margin: 5px 0;
  color: var(--ink);
  font-size: 20px;
}

.ai-question-body-grid h4 {
  margin: 0 0 10px;
  font-size: 13px;
}

.ai-question-priority-list,
.ai-question-list,
.ai-question-point-list {
  display: grid;
  gap: 8px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.ai-question-priority-list li,
.ai-question-list li,
.ai-question-point-list div {
  border-bottom: 1px solid #e7edf3;
  padding-bottom: 8px;
}

.ai-question-priority-list li {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 6px 10px;
}

.ai-question-priority-list small {
  grid-column: 1 / -1;
}

.ai-question-priority-list strong,
.ai-question-list strong,
.ai-question-point-list strong {
  color: var(--ink);
  font-size: 12px;
}

.ai-question-priority-list span {
  color: var(--amber);
  font-size: 12px;
  font-weight: 900;
}

.ai-question-priority-list small,
.ai-question-list p,
.ai-question-point-list span {
  display: block;
  margin: 5px 0 0;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.55;
}

.genai-free-assistant {
  position: fixed;
  right: 18px;
  bottom: 18px;
  z-index: 900;
  font-family: inherit;
}

.genai-free-toggle {
  display: grid;
  gap: 2px;
  min-width: 92px;
  min-height: 58px;
  border: 1px solid color-mix(in srgb, #0f766e 34%, var(--line));
  border-radius: 8px;
  box-shadow: 0 16px 36px rgba(15, 31, 46, 0.18);
  background: #0f766e;
  color: #fff;
  cursor: pointer;
}

.genai-free-toggle span {
  font-size: 13px;
  font-weight: 900;
  letter-spacing: 0;
}

.genai-free-toggle strong {
  font-size: 10px;
}

.genai-free-panel {
  position: absolute;
  right: 0;
  bottom: 72px;
  display: none;
  width: min(420px, calc(100vw - 28px));
  max-height: min(680px, calc(100vh - 110px));
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 8px;
  box-shadow: 0 22px 60px rgba(15, 31, 46, 0.24);
  background: var(--paper);
  color: var(--ink);
}

.genai-free-assistant.is-open .genai-free-panel {
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
}

.genai-free-panel header {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  padding: 14px 14px 12px;
  border-bottom: 1px solid var(--line);
  background: color-mix(in srgb, #0f766e 8%, var(--paper));
}

.genai-free-panel header span {
  display: block;
  color: #0f766e;
  font-size: 10px;
  font-weight: 900;
}

.genai-free-panel header h2 {
  margin: 4px 0 0;
  font-size: 16px;
  line-height: 1.35;
}

.genai-free-close {
  width: 32px;
  height: 32px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--paper);
  color: var(--ink);
  font-size: 18px;
  cursor: pointer;
}

.genai-free-body {
  display: grid;
  gap: 10px;
  overflow: auto;
  padding: 12px;
}

.genai-free-body section {
  padding: 11px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: color-mix(in srgb, #f8fafc 82%, var(--paper));
}

.genai-free-body h3 {
  margin: 0 0 7px;
  font-size: 12px;
}

.genai-free-body p,
.genai-free-body li {
  margin: 0;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.65;
}

.genai-free-body ul {
  display: grid;
  gap: 7px;
  margin: 0;
  padding-left: 18px;
}

.genai-free-integration {
  display: grid;
  gap: 3px;
  margin-top: 9px;
  padding: 9px;
  border: 1px solid rgba(15, 118, 110, 0.18);
  border-radius: 8px;
  background: rgba(15, 118, 110, 0.06);
}

.genai-free-integration strong {
  color: #0f766e;
  font-size: 11px;
  font-weight: 900;
}

.genai-free-integration span,
.genai-free-integration small {
  color: var(--muted);
  font-size: 10px;
  font-weight: 800;
  line-height: 1.45;
}

.genai-free-readiness {
  display: grid;
  gap: 8px;
}

.genai-free-readiness div {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}

.genai-free-readiness strong {
  color: #0f766e;
  font-size: 12px;
  font-weight: 900;
}

.genai-free-readiness span {
  color: var(--ink);
  font-size: 12px;
  font-weight: 900;
}

.genai-free-readiness meter {
  width: 100%;
  height: 10px;
}

.genai-free-readiness.good strong {
  color: #0f766e;
}

.genai-free-readiness.check strong {
  color: #1d4ed8;
}

.genai-free-readiness.watch strong {
  color: #92400e;
}

.genai-free-improvements {
  display: grid;
  gap: 5px;
  margin: 0;
  padding-left: 18px;
}

.genai-free-improvements li {
  color: var(--ink);
  font-size: 10px;
  font-weight: 800;
  line-height: 1.45;
}

.genai-free-search {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 7px;
  margin-bottom: 8px;
}

.genai-free-search input {
  min-width: 0;
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 9px 10px;
  background: var(--paper);
  color: var(--ink);
  font: inherit;
  font-size: 12px;
}

.genai-free-search button {
  border: 1px solid rgba(15, 118, 110, 0.3);
  border-radius: 8px;
  padding: 9px 11px;
  background: #0f766e;
  color: #fff;
  font-size: 11px;
  font-weight: 900;
  cursor: pointer;
}

.genai-free-presets {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin: 0 0 8px;
}

.genai-free-presets button {
  border: 1px solid var(--line);
  border-radius: 999px;
  padding: 6px 8px;
  background: var(--paper);
  color: var(--muted);
  font-size: 10px;
  font-weight: 900;
  cursor: pointer;
}

.genai-free-presets button.active,
.genai-free-presets button:hover {
  border-color: rgba(15, 118, 110, 0.35);
  background: rgba(15, 118, 110, 0.09);
  color: #0f766e;
}

.genai-free-preset-note {
  display: block;
  margin: -2px 0 8px;
  color: var(--muted);
  font-size: 10px;
  font-weight: 800;
}

.genai-free-examples {
  display: grid;
  gap: 6px;
  margin: 0 0 8px;
}

.genai-free-examples button {
  border: 1px solid rgba(59, 130, 246, 0.18);
  border-radius: 8px;
  padding: 7px 9px;
  background: rgba(59, 130, 246, 0.07);
  color: var(--ink);
  font-size: 10px;
  font-weight: 850;
  line-height: 1.35;
  text-align: left;
  cursor: pointer;
}

.genai-free-examples button:hover {
  border-color: rgba(59, 130, 246, 0.35);
  color: #1d4ed8;
}

.genai-free-search-results {
  display: grid;
  gap: 7px;
  margin-top: 9px;
}

.genai-free-search-results article {
  display: grid;
  gap: 3px;
  padding: 9px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--paper);
}

.genai-free-search-results strong {
  font-size: 11px;
}

.genai-free-search-results span,
.genai-free-search-results small {
  color: var(--muted);
  font-size: 10px;
  line-height: 1.45;
}

.genai-free-steps {
  display: grid;
  gap: 7px;
  margin: 0;
  padding: 0;
  counter-reset: genai-step;
  list-style: none;
}

.genai-free-steps li {
  position: relative;
  min-height: 28px;
  padding: 8px 9px 8px 34px;
  border: 1px solid rgba(15, 118, 110, 0.18);
  border-radius: 8px;
  background: rgba(15, 118, 110, 0.06);
  color: var(--ink);
  font-size: 11px;
  font-weight: 850;
  line-height: 1.45;
  counter-increment: genai-step;
}

.genai-free-steps li::before {
  content: counter(genai-step);
  position: absolute;
  left: 9px;
  top: 8px;
  display: grid;
  width: 18px;
  height: 18px;
  place-items: center;
  border-radius: 50%;
  background: #0f766e;
  color: #fff;
  font-size: 10px;
  font-weight: 900;
}

.genai-free-modes,
.genai-free-links {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
}

.genai-free-modes button,
.genai-free-links button,
.genai-free-draft button,
.genai-free-saved button {
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--paper);
  color: var(--ink);
  font-size: 11px;
  font-weight: 900;
  cursor: pointer;
}

.genai-free-modes button {
  flex: 1 1 86px;
  padding: 8px 9px;
}

.genai-free-modes button.active {
  border-color: rgba(15, 118, 110, 0.36);
  background: rgba(15, 118, 110, 0.1);
  color: #0f766e;
}

.genai-free-draft {
  display: grid;
  gap: 8px;
  margin-top: 8px;
  padding: 10px;
  border-radius: 8px;
  background: rgba(15, 118, 110, 0.06);
}

.genai-free-draft button {
  justify-self: start;
  padding: 8px 10px;
  background: #0f766e;
  color: #fff;
}

.genai-free-draft small {
  color: var(--muted);
  font-size: 10px;
  font-weight: 800;
}

.genai-free-pack {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  gap: 8px;
  align-items: center;
  padding: 10px;
  border: 1px solid rgba(15, 118, 110, 0.18);
  border-radius: 8px;
  background: rgba(15, 118, 110, 0.07);
}

.genai-free-pack div {
  display: grid;
  gap: 3px;
  min-width: 0;
}

.genai-free-pack span,
.genai-free-pack small {
  color: var(--muted);
  font-size: 10px;
  font-weight: 800;
}

.genai-free-pack strong {
  font-size: 12px;
}

.genai-free-pack button {
  border: 1px solid rgba(15, 118, 110, 0.3);
  border-radius: 8px;
  padding: 8px 10px;
  background: #0f766e;
  color: #fff;
  font-size: 11px;
  font-weight: 900;
  cursor: pointer;
}

.genai-free-pack small {
  grid-column: 1 / -1;
}

.genai-free-saved {
  display: grid;
  gap: 7px;
}

.genai-free-saved-actions {
  display: grid;
  grid-template-columns: auto auto auto minmax(0, 1fr);
  gap: 7px;
  align-items: center;
}

.genai-free-saved-actions small {
  color: var(--muted);
  font-size: 10px;
  font-weight: 800;
  text-align: right;
}

.genai-free-priority {
  display: grid;
  gap: 7px;
  padding: 9px;
  border: 1px solid rgba(15, 118, 110, 0.18);
  border-radius: 8px;
  background: rgba(15, 118, 110, 0.06);
}

.genai-free-priority > strong {
  font-size: 11px;
}

.genai-free-priority button {
  display: grid;
  grid-template-columns: 22px 52px minmax(0, 1fr);
  gap: 6px;
  align-items: center;
  padding: 7px;
  text-align: left;
}

.genai-free-priority button span {
  display: grid;
  place-items: center;
  width: 20px;
  height: 20px;
  border-radius: 999px;
  background: #0f766e;
  color: #fff;
  font-size: 10px;
  font-weight: 900;
}

.genai-free-priority button b {
  color: #0f766e;
  font-size: 10px;
}

.genai-free-priority button em {
  overflow: hidden;
  color: var(--ink);
  font-size: 11px;
  font-style: normal;
  font-weight: 900;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.genai-free-priority button small {
  grid-column: 3;
  color: var(--muted);
  font-size: 10px;
}

.genai-free-saved article {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  gap: 7px;
  align-items: center;
  padding: 9px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--paper);
}

.genai-free-saved div {
  display: grid;
  gap: 3px;
  min-width: 0;
}

.genai-free-saved strong {
  font-size: 11px;
}

.genai-free-saved span {
  color: var(--muted);
  font-size: 10px;
}

.genai-free-saved button {
  padding: 7px 8px;
  font-size: 10px;
}

.genai-free-saved button:disabled {
  opacity: 0.48;
  cursor: not-allowed;
}

.genai-free-links button {
  padding: 8px 10px;
}

.genai-free-links button:hover,
.genai-free-modes button:hover {
  border-color: rgba(15, 118, 110, 0.42);
  color: #0f766e;
}

.genai-free-evidence-summary {
  display: grid;
  gap: 3px;
  margin-bottom: 9px;
  padding: 9px;
  border: 1px solid rgba(15, 118, 110, 0.18);
  border-radius: 8px;
  background: rgba(15, 118, 110, 0.06);
}

.genai-free-evidence-summary strong {
  color: #0f766e;
  font-size: 11px;
  font-weight: 900;
}

.genai-free-evidence-summary span {
  color: var(--muted);
  font-size: 10px;
  font-weight: 750;
  line-height: 1.45;
}

.genai-free-evidence-summary.watch {
  border-color: rgba(180, 83, 9, 0.25);
  background: rgba(245, 158, 11, 0.1);
}

.genai-free-evidence-summary.watch strong {
  color: #92400e;
}

.genai-free-evidence-summary.check {
  border-color: rgba(59, 130, 246, 0.22);
  background: rgba(59, 130, 246, 0.08);
}

.genai-free-evidence-summary.check strong {
  color: #1d4ed8;
}

.genai-free-evidence {
  display: grid;
  gap: 7px;
}

.genai-free-evidence article {
  display: grid;
  gap: 3px;
  padding-bottom: 7px;
  border-bottom: 1px solid var(--line);
}

.genai-free-evidence article:last-child {
  padding-bottom: 0;
  border-bottom: 0;
}

.genai-free-evidence strong {
  font-size: 11px;
}

.genai-free-evidence span,
.genai-free-evidence small {
  color: var(--muted);
  font-size: 10px;
  line-height: 1.45;
}

.genai-free-body footer {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
}

.genai-free-body footer span {
  padding: 6px 8px;
  border-radius: 999px;
  background: rgba(15, 118, 110, 0.09);
  color: #0f766e;
  font-size: 10px;
  font-weight: 900;
}

@media (max-width: 620px) {
  .genai-free-assistant {
    right: 10px;
    bottom: 10px;
  }

  .genai-free-panel {
    right: -2px;
    bottom: 68px;
    width: calc(100vw - 20px);
    max-height: calc(100vh - 96px);
  }
}

.policy-planning-panel {
  margin-bottom: 16px;
}

.policy-planning-summary-grid,
.policy-planning-body-grid {
  display: grid;
  gap: 12px;
}

.policy-planning-summary-grid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  margin-bottom: 12px;
}

.policy-planning-body-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.policy-planning-summary-grid article,
.policy-planning-body-grid article {
  min-width: 0;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfcfd;
  padding: 12px;
}

.policy-planning-summary-grid span,
.policy-planning-summary-grid small {
  display: block;
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
}

.policy-planning-summary-grid strong {
  display: block;
  margin: 5px 0;
  color: var(--ink);
  font-size: 20px;
}

.policy-planning-body-grid h4 {
  margin: 0 0 10px;
  font-size: 13px;
}

.policy-package-list {
  display: grid;
  gap: 8px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.policy-package-list li {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 6px 10px;
  border-bottom: 1px solid #e7edf3;
  padding-bottom: 8px;
}

.policy-package-list strong {
  color: var(--ink);
  font-size: 12px;
}

.policy-package-list span {
  color: var(--brand);
  font-size: 12px;
  font-weight: 900;
}

.policy-package-list small {
  grid-column: 1 / -1;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.55;
}

.policy-workflow-list,
.policy-action-list {
  display: grid;
  gap: 8px;
}

.policy-workflow-list span,
.policy-action-list span {
  display: flex;
  align-items: center;
  gap: 8px;
  border: 1px solid #e3ebf2;
  border-radius: 8px;
  background: var(--paper);
  color: var(--ink);
  padding: 8px 10px;
  font-size: 12px;
  font-weight: 800;
}

.policy-workflow-list b {
  display: grid;
  place-items: center;
  width: 22px;
  height: 22px;
  border-radius: 999px;
  background: var(--brand);
  color: white;
  font-size: 11px;
}

.ranking-analysis-panel {
  margin-bottom: 16px;
}

.ranking-analysis-summary-grid,
.ranking-analysis-body-grid {
  display: grid;
  gap: 12px;
}

.ranking-analysis-summary-grid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  margin-bottom: 12px;
}

.ranking-analysis-body-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.ranking-analysis-summary-grid article,
.ranking-analysis-body-grid article {
  min-width: 0;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfcfd;
  padding: 12px;
}

.ranking-analysis-summary-grid span,
.ranking-analysis-summary-grid small {
  display: block;
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
}

.ranking-analysis-summary-grid strong {
  display: block;
  margin: 5px 0;
  color: var(--ink);
  font-size: 20px;
}

.ranking-analysis-body-grid h4 {
  margin: 0 0 10px;
  font-size: 13px;
}

.ranking-indicator-list,
.ranking-scope-list {
  display: grid;
  gap: 8px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.ranking-indicator-list li,
.ranking-scope-list div {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 6px 10px;
  border-bottom: 1px solid #e7edf3;
  padding-bottom: 8px;
}

.ranking-indicator-list strong,
.ranking-scope-list strong {
  color: var(--ink);
  font-size: 12px;
}

.ranking-indicator-list span,
.ranking-scope-list span {
  color: var(--brand);
  font-size: 12px;
  font-weight: 900;
}

.ranking-indicator-list.needed span,
.ranking-scope-list div.needed span {
  color: var(--amber);
}

.ranking-indicator-list small,
.ranking-scope-list small {
  grid-column: 1 / -1;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.55;
}

.comparison-matrix-panel {
  margin-bottom: 16px;
}

.comparison-matrix-summary-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
  margin-bottom: 12px;
}

.comparison-matrix-summary-grid article {
  min-width: 0;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfcfd;
  padding: 12px;
}

.comparison-matrix-summary-grid span,
.comparison-matrix-summary-grid small {
  display: block;
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
}

.comparison-matrix-summary-grid strong {
  display: block;
  margin: 5px 0;
  color: var(--ink);
  font-size: 20px;
}

.comparison-matrix-table-wrap {
  overflow-x: auto;
}

.comparison-matrix-table {
  width: 100%;
  min-width: 820px;
  border-collapse: collapse;
  font-size: 12px;
}

.comparison-matrix-table th,
.comparison-matrix-table td {
  border-bottom: 1px solid #e7edf3;
  padding: 9px 8px;
  text-align: right;
  white-space: nowrap;
}

.comparison-matrix-table th:first-child,
.comparison-matrix-table td:first-child {
  text-align: left;
}

.comparison-matrix-table td strong,
.comparison-matrix-table td small {
  display: block;
}

.comparison-matrix-table td small {
  margin-top: 3px;
  color: var(--muted);
  font-size: 10px;
}

.sustainability-summary-panel {
  margin-bottom: 16px;
}

.sustainability-summary-grid,
.sustainability-body-grid {
  display: grid;
  gap: 12px;
}

.sustainability-summary-grid {
  grid-template-columns: repeat(6, minmax(0, 1fr));
  margin-bottom: 12px;
}

.sustainability-body-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.sustainability-summary-grid article,
.sustainability-body-grid article {
  min-width: 0;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfcfd;
  padding: 12px;
}

.sustainability-summary-grid span,
.sustainability-summary-grid small {
  display: block;
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
}

.sustainability-summary-grid strong {
  display: block;
  margin: 5px 0;
  color: var(--ink);
  font-size: 20px;
}

.sustainability-body-grid h4 {
  margin: 0 0 10px;
  font-size: 13px;
}

.sustainability-score-list,
.sustainability-priority-list,
.sustainability-finding-list {
  display: grid;
  gap: 8px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.sustainability-stress-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
}

.sustainability-stress-grid div {
  min-width: 0;
  border: 1px solid #e4ebf2;
  border-radius: 8px;
  background: #fff;
  padding: 10px;
}

.sustainability-stress-grid span,
.sustainability-stress-grid small {
  display: block;
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
  line-height: 1.45;
}

.sustainability-stress-grid strong {
  display: block;
  margin: 4px 0;
  color: var(--ink);
  font-size: 17px;
}

.sustainability-score-list div {
  display: grid;
  grid-template-columns: 112px 1fr 44px;
  gap: 8px;
  align-items: center;
  border-bottom: 1px solid #e7edf3;
  padding-bottom: 8px;
}

.sustainability-score-list strong,
.sustainability-priority-list strong {
  color: var(--ink);
  font-size: 12px;
}

.sustainability-score-list i {
  height: 9px;
  overflow: hidden;
  border-radius: 999px;
  background: #e6edf4;
}

.sustainability-score-list b {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: var(--green);
}

.sustainability-score-list .warn b {
  background: var(--amber);
}

.sustainability-score-list .bad b {
  background: var(--red);
}

.sustainability-score-list span,
.sustainability-priority-list span {
  color: var(--brand);
  font-size: 12px;
  font-weight: 900;
  text-align: right;
}

.sustainability-score-list small {
  grid-column: 1 / -1;
  color: var(--muted);
  font-size: 11px;
}

.sustainability-finding-list p,
.sustainability-priority-list li {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 6px 10px;
  border-bottom: 1px solid #e7edf3;
  padding-bottom: 8px;
}

.sustainability-finding-list p {
  margin: 0;
}

.sustainability-finding-list strong,
.sustainability-finding-list span {
  font-size: 12px;
}

.sustainability-finding-list span {
  color: var(--amber);
  font-weight: 900;
}

.sustainability-finding-list .bad span {
  color: var(--red);
}

.sustainability-priority-list small,
.sustainability-finding-list small {
  grid-column: 1 / -1;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.55;
}

.action-board-panel {
  border-color: #d8e6f1;
}

.action-board-summary-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
  margin-bottom: 12px;
}

.action-board-summary-grid article {
  min-width: 0;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfcfd;
}

.action-board-summary-grid span,
.action-board-summary-grid small {
  display: block;
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
  line-height: 1.45;
}

.action-board-summary-grid strong {
  display: block;
  margin: 6px 0;
  font-size: 22px;
}

.action-board-lanes {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
}

.action-board-lanes > article {
  min-width: 0;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--paper);
}

.action-lane-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  margin-bottom: 10px;
}

.action-lane-head h4 {
  margin: 0;
  font-size: 14px;
}

.action-lane-head span {
  flex: 0 0 auto;
  padding: 4px 7px;
  border-radius: 999px;
  background: var(--soft-blue);
  color: var(--blue);
  font-size: 11px;
  font-weight: 900;
}

.action-card-list {
  display: grid;
  gap: 8px;
}

.action-card {
  min-width: 0;
  padding: 10px;
  border: 1px solid #e4e9ef;
  border-left: 4px solid var(--teal);
  border-radius: 8px;
  background: #fbfcfd;
}

.action-card.high {
  border-left-color: var(--red);
}

.action-center-panel {
  min-width: 0;
  margin: 16px 0 var(--section-gap);
  overflow: hidden;
}

.action-center-hero {
  display: grid;
  grid-template-columns: minmax(0, 1.5fr) minmax(230px, .5fr);
  gap: 24px;
  padding: clamp(24px, 4vw, 48px);
  border-radius: 22px;
  color: #f8fafc;
  background:
    radial-gradient(circle at 90% 10%, rgba(45, 212, 191, .24), transparent 34%),
    linear-gradient(135deg, #10253f, #173f55);
  box-shadow: var(--shadow);
}

.action-center-hero > *,
.action-center-summary > *,
.action-center-controls > *,
.action-center-card > *,
.action-center-detail > * {
  min-width: 0;
}

.action-center-hero span {
  color: #99f6e4;
  font-size: 12px;
  font-weight: 900;
  letter-spacing: .14em;
}

.action-center-hero h2 {
  margin: 10px 0 12px;
  max-width: 760px;
  font-size: clamp(28px, 4vw, 46px);
  line-height: 1.15;
  overflow-wrap: anywhere;
}

.action-center-hero p {
  max-width: 780px;
  margin: 0;
  color: #d7e5ef;
  line-height: 1.8;
  overflow-wrap: anywhere;
}

.action-center-hero aside {
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 22px;
  border: 1px solid rgba(255, 255, 255, .2);
  border-radius: 16px;
  background: rgba(255, 255, 255, .08);
}

.action-center-hero aside strong {
  font-size: clamp(34px, 5vw, 54px);
}

.action-center-hero aside small {
  margin-top: 10px;
  color: #cbdbe7;
  line-height: 1.6;
}

.action-center-summary {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 14px;
  margin: 18px 0;
}

.action-center-summary article {
  padding: 18px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: var(--paper);
  box-shadow: var(--shadow);
}

.action-center-summary span,
.action-center-summary small {
  display: block;
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
}

.action-center-summary strong {
  display: block;
  margin: 8px 0;
  font-size: 28px;
}

.action-center-focus-banner {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  align-items: center;
  margin: 14px 0;
  padding: 16px;
  border: 1px solid color-mix(in srgb, var(--teal) 45%, var(--line));
  border-left: 5px solid var(--teal);
  border-radius: 14px;
  background: color-mix(in srgb, var(--teal) 8%, var(--paper));
}

.action-center-focus-banner span,
.action-center-focus-banner strong,
.action-center-focus-banner small {
  display: block;
}

.action-center-focus-banner span {
  color: var(--teal);
  font-size: 10px;
  font-weight: 900;
  letter-spacing: .08em;
}

.action-center-focus-banner strong {
  margin-top: 4px;
  font-size: 16px;
}

.action-center-focus-banner small {
  margin-top: 4px;
  color: var(--muted);
  line-height: 1.5;
}

.action-center-focus-banner button {
  flex: 0 0 auto;
  padding: 10px 13px;
  border: 0;
  border-radius: 9px;
  color: #fff;
  background: var(--teal);
  font-weight: 900;
  cursor: pointer;
}

.action-center-controls {
  display: grid;
  grid-template-columns: minmax(280px, 1.8fr) repeat(3, minmax(150px, .65fr)) auto;
  gap: 12px;
  align-items: end;
  padding: 18px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: var(--paper);
}

.action-center-controls label {
  display: grid;
  gap: 7px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.action-center-controls input,
.action-center-controls select,
.action-center-controls button {
  min-height: 44px;
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-radius: 9px;
  color: var(--ink);
  background: var(--paper);
  font: inherit;
}

.action-center-controls button,
.action-center-card footer button {
  cursor: pointer;
  font-weight: 800;
}

.action-center-list {
  display: grid;
  gap: 16px;
  margin-top: 18px;
}

.action-center-card {
  padding: clamp(18px, 3vw, 28px);
  border: 1px solid var(--line);
  border-left: 6px solid var(--teal);
  border-radius: 16px;
  background: var(--paper);
  box-shadow: var(--shadow);
}

.action-center-card.is-high {
  border-left-color: var(--red);
}

.action-center-card.is-focused {
  border-color: var(--teal);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--teal) 16%, transparent), var(--shadow);
}

.action-center-card.is-focused header {
  padding: 12px;
  border-radius: 12px;
  background: color-mix(in srgb, var(--teal) 8%, var(--paper));
}

.action-center-card header,
.action-center-card footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
}

.action-center-card header span {
  color: var(--teal);
  font-size: 12px;
  font-weight: 900;
}

.action-center-card h3 {
  margin: 5px 0 0;
  font-size: clamp(19px, 2vw, 25px);
}

.action-center-card header b {
  padding: 6px 10px;
  border-radius: 999px;
  color: #fff;
  background: var(--red);
  font-size: 12px;
}

.action-center-card > p {
  margin: 14px 0 18px;
  color: var(--muted);
  line-height: 1.7;
}

.action-center-card dl {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 1px;
  overflow: hidden;
  margin: 0;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--line);
}

.action-center-card dl div {
  min-width: 0;
  padding: 14px;
  background: var(--paper);
}

.action-center-card dt {
  color: var(--muted);
  font-size: 11px;
  font-weight: 900;
}

.action-center-card dd {
  margin: 7px 0 0;
  font-size: 13px;
  font-weight: 800;
  line-height: 1.55;
}

.action-center-card dd small {
  display: block;
  margin-top: 4px;
  color: var(--muted);
  font-size: 10px;
  font-weight: 600;
}

.action-center-card dd.is-missing {
  color: var(--red);
}

.action-center-detail {
  display: grid;
  grid-template-columns: 1.2fr 1fr 1fr;
  gap: 14px;
  margin: 16px 0;
}

.action-center-detail > div {
  padding: 15px;
  border-radius: 12px;
  background: var(--soft-blue);
}

.action-center-detail strong {
  display: block;
  margin-bottom: 8px;
  font-size: 12px;
}

.action-center-detail p,
.action-center-detail ul {
  margin: 0;
  font-size: 12px;
  line-height: 1.65;
}

.action-center-detail ul {
  padding-left: 18px;
}

.action-center-detail p span {
  display: inline-block;
  margin: 0 5px 5px 0;
  padding: 4px 7px;
  border-radius: 999px;
  background: var(--paper);
}

.action-center-projects {
  margin: 0 0 16px;
  padding: 15px;
  border: 1px solid var(--line);
  border-left: 4px solid var(--amber);
  border-radius: 12px;
  background: var(--paper);
}

.action-center-projects.is-missing {
  border-left-color: #b91c1c;
}

.action-center-projects > div {
  display: flex;
  justify-content: space-between;
  gap: 10px;
}

.action-center-projects > div span {
  color: var(--amber);
  font-size: 10px;
  font-weight: 900;
}

.action-center-projects.is-missing > div span {
  color: #b91c1c;
}

.action-center-projects p {
  margin: 8px 0;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.6;
}

.action-center-projects ul {
  display: grid;
  gap: 5px;
  margin: 10px 0;
  padding: 0;
  list-style: none;
}

.action-center-projects li {
  display: grid;
  grid-template-columns: minmax(110px, auto) 1fr auto;
  gap: 8px;
  align-items: start;
  padding: 7px;
  border-radius: 8px;
  background: var(--soft-blue);
  font-size: 11px;
}

.action-center-projects li.reference {
  opacity: .78;
}

.action-center-projects li > button {
  padding: 0;
  border: 0;
  color: var(--teal);
  background: transparent;
  font-size: 11px;
  font-weight: 800;
  text-align: left;
  overflow-wrap: anywhere;
  cursor: pointer;
}

.action-center-projects li span small {
  display: block;
  margin-top: 3px;
  color: var(--muted);
  font-size: 9px;
}

.action-center-projects li em {
  color: var(--muted);
  font-size: 10px;
  font-style: normal;
  font-weight: 800;
  white-space: nowrap;
}

.action-center-projects button {
  padding: 8px 11px;
  border: 1px solid var(--line);
  border-radius: 8px;
  color: var(--ink);
  background: var(--soft-blue);
  font-size: 10px;
  font-weight: 800;
}

.action-center-projects li > button:hover {
  text-decoration: underline;
}

.action-center-support-link {
  margin: 0 0 16px;
  padding: 15px;
  border: 1px solid color-mix(in srgb, #7c3aed 28%, var(--line));
  border-left: 4px solid #7c3aed;
  border-radius: 12px;
  background: color-mix(in srgb, #7c3aed 5%, var(--paper));
}

.action-center-support-link > div {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  align-items: center;
}

.action-center-support-link strong,
.action-center-support-link span {
  display: block;
}

.action-center-support-link span {
  color: #6d28d9;
  font-size: 10px;
  font-weight: 900;
}

.action-center-support-link p {
  margin: 8px 0;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.6;
}

.action-center-support-link button {
  padding: 8px 11px;
  border: 1px solid var(--line);
  border-radius: 8px;
  color: #5b21b6;
  background: #ede9fe;
  font-size: 10px;
  font-weight: 900;
  cursor: pointer;
}

.action-center-support-link button:hover {
  text-decoration: underline;
}

.action-center-national-link {
  margin: 0 0 16px;
  padding: 15px;
  border: 1px solid color-mix(in srgb, #0f766e 30%, var(--line));
  border-left: 4px solid #0f766e;
  border-radius: 12px;
  background: color-mix(in srgb, #0f766e 6%, var(--paper));
}

.action-center-national-link > div {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  align-items: center;
}

.action-center-national-link strong,
.action-center-national-link span {
  display: block;
}

.action-center-national-link span {
  color: #0f766e;
  font-size: 10px;
  font-weight: 900;
}

.action-center-national-link p {
  margin: 8px 0 10px;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.6;
}

.action-center-national-link ul {
  display: grid;
  gap: 7px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.action-center-national-link li {
  padding: 8px 10px;
  border: 1px solid color-mix(in srgb, #0f766e 18%, var(--line));
  border-radius: 10px;
  background: color-mix(in srgb, #fff 78%, transparent);
}

.action-center-national-link b,
.action-center-national-link small {
  display: block;
}

.action-center-national-link b {
  color: var(--ink);
  font-size: 11px;
}

.action-center-national-link small {
  color: var(--muted);
  font-size: 10px;
  line-height: 1.5;
}

.policy-ledger-card.is-focused {
  border-color: var(--teal);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--teal) 16%, transparent);
}

.policy-ledger-card.is-focused summary {
  background: color-mix(in srgb, var(--teal) 8%, var(--paper));
}

.policy-ledger-copy-status {
  position: fixed;
  right: 20px;
  bottom: 20px;
  z-index: 1000;
  max-width: min(420px, calc(100vw - 40px));
  padding: 12px 16px;
  border-radius: 10px;
  color: #fff;
  background: #0f766e;
  box-shadow: var(--shadow);
  font-size: 12px;
  font-weight: 800;
  opacity: 0;
  transform: translateY(12px);
  pointer-events: none;
  transition: opacity .16s, transform .16s;
}

.policy-ledger-copy-status.is-visible {
  opacity: 1;
  transform: translateY(0);
}

.policy-ledger-copy-status.is-error {
  background: #b91c1c;
}

.action-center-card footer {
  padding-top: 14px;
  border-top: 1px solid var(--line);
}

.action-center-card footer small {
  color: var(--muted);
}

.action-center-card footer button {
  padding: 10px 14px;
  border: 0;
  border-radius: 9px;
  color: #fff;
  background: var(--blue);
}

.action-center-empty,
.action-center-governance {
  padding: 24px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: var(--paper);
}

.action-center-governance {
  margin-top: 18px;
}

.action-center-governance > div {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
}

.action-center-governance article {
  padding: 14px;
  border-radius: 11px;
  background: var(--soft-blue);
}

.action-center-governance p {
  margin-bottom: 0;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.65;
}

@media (max-width: 1000px) {
  .action-center-summary,
  .action-center-card dl,
  .action-center-governance > div {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .action-center-controls {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .action-center-search {
    grid-column: 1 / -1;
  }
}

@media (max-width: 700px) {
  .action-center-hero,
  .action-center-summary,
  .action-center-controls,
  .action-center-card dl,
  .action-center-detail,
  .action-center-governance > div {
    grid-template-columns: 1fr;
  }

  .action-center-hero {
    padding: 24px;
  }

  .action-center-hero h2 {
    font-size: 28px;
  }

  .action-center-search {
    grid-column: auto;
  }

  .action-center-card header,
  .action-center-card footer,
  .action-center-focus-banner {
    align-items: flex-start;
    flex-direction: column;
  }
}

.data-refresh-center-panel {
  min-width: 0;
  margin: 16px 0 var(--section-gap);
  overflow: hidden;
}

.data-refresh-hero {
  display: grid;
  grid-template-columns: minmax(0, 1.5fr) minmax(230px, .5fr);
  gap: 24px;
  padding: clamp(26px, 4vw, 48px);
  border-radius: 22px;
  color: #f8fafc;
  background: linear-gradient(135deg, #162d3f, #2b5b56);
  box-shadow: var(--shadow);
}

.data-refresh-hero > *,
.data-refresh-summary > *,
.data-refresh-controls > *,
.data-refresh-meta > *,
.data-refresh-card footer > * {
  min-width: 0;
}

.data-refresh-hero span {
  color: #a7f3d0;
  font-size: 12px;
  font-weight: 900;
  letter-spacing: .12em;
}

.data-refresh-hero h2 {
  margin: 10px 0 12px;
  font-size: clamp(28px, 4vw, 46px);
  line-height: 1.15;
  overflow-wrap: anywhere;
}

.data-refresh-hero p {
  margin: 0;
  color: #d9e9e5;
  line-height: 1.8;
}

.data-refresh-hero aside {
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 22px;
  border: 1px solid rgba(255, 255, 255, .2);
  border-radius: 16px;
  background: rgba(255, 255, 255, .08);
}

.data-refresh-hero aside strong {
  margin: 6px 0;
  font-size: clamp(34px, 5vw, 52px);
}

.data-refresh-summary {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 12px;
  margin: 18px 0;
}

.data-refresh-summary article {
  padding: 16px;
  border: 1px solid var(--line);
  border-radius: 13px;
  background: var(--paper);
  box-shadow: var(--shadow);
}

.data-refresh-summary article.is-alert {
  border-color: rgba(185, 28, 28, .35);
}

.data-refresh-summary article.is-warn {
  border-color: rgba(180, 83, 9, .35);
}

.data-refresh-summary span,
.data-refresh-summary small {
  display: block;
  color: var(--muted);
  font-size: 11px;
  font-weight: 700;
}

.data-refresh-summary strong {
  display: block;
  margin: 8px 0;
  font-size: 21px;
}

.continuous-update-command {
  display: grid;
  gap: 18px;
  margin: 18px 0;
  padding: clamp(22px, 3vw, 34px);
  border: 1px solid rgba(15, 118, 110, .18);
  border-radius: 22px;
  background:
    radial-gradient(circle at top left, rgba(20, 184, 166, .18), transparent 34%),
    linear-gradient(135deg, rgba(248, 250, 252, .96), rgba(236, 253, 245, .8)),
    var(--paper);
  box-shadow: var(--shadow);
}

.continuous-update-command.tone-danger {
  border-color: rgba(185, 28, 28, .28);
  background:
    radial-gradient(circle at top left, rgba(248, 113, 113, .18), transparent 34%),
    linear-gradient(135deg, rgba(255, 247, 237, .96), rgba(240, 253, 250, .82)),
    var(--paper);
}

.continuous-update-command.tone-watch {
  border-color: rgba(180, 83, 9, .28);
}

.continuous-update-hero {
  display: grid;
  grid-template-columns: minmax(0, 1.25fr) minmax(240px, .55fr);
  gap: 18px;
  align-items: stretch;
}

.continuous-update-hero span:first-child {
  color: #0f766e;
  font-size: 12px;
  font-weight: 900;
  letter-spacing: .12em;
}

.continuous-update-hero h3 {
  margin: 8px 0 10px;
  font-size: clamp(24px, 3vw, 38px);
  line-height: 1.18;
}

.continuous-update-hero p {
  max-width: 980px;
  margin: 0;
  color: var(--muted);
  font-size: clamp(14px, 1.7vw, 16px);
  line-height: 1.85;
}

.continuous-update-hero aside {
  display: grid;
  align-content: center;
  gap: 7px;
  padding: clamp(18px, 2.5vw, 26px);
  border: 1px solid rgba(15, 118, 110, .2);
  border-radius: 18px;
  background: rgba(255, 255, 255, .78);
}

.continuous-update-hero aside small,
.continuous-update-hero aside span {
  color: var(--muted);
  font-weight: 800;
}

.continuous-update-hero aside strong {
  color: #0f172a;
  font-size: clamp(26px, 4vw, 44px);
  line-height: 1.05;
}

.continuous-update-kpis {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
}

.continuous-update-kpis article,
.continuous-update-grid article {
  min-width: 0;
  padding: clamp(16px, 2.2vw, 22px);
  border: 1px solid rgba(15, 23, 42, .08);
  border-radius: 16px;
  background: rgba(255, 255, 255, .84);
}

.continuous-update-kpis span,
.continuous-update-kpis small {
  display: block;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.continuous-update-kpis strong {
  display: block;
  margin: 7px 0;
  font-size: clamp(22px, 3vw, 32px);
}

.continuous-update-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}

.continuous-update-grid h4 {
  margin: 0 0 12px;
  font-size: clamp(17px, 2vw, 22px);
}

.continuous-update-grid :is(ol, ul) {
  display: grid;
  gap: 9px;
  margin: 0;
  padding-left: 1.25em;
}

.continuous-update-grid li,
.continuous-update-grid p,
.continuous-update-cadence span {
  color: var(--muted);
  font-size: 14px;
  line-height: 1.75;
}

.continuous-update-grid li b {
  display: inline-block;
  min-width: 3.2em;
  color: var(--ink);
}

.continuous-update-flow {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 10px;
}

.continuous-update-flow span {
  position: relative;
  padding: 9px 13px;
  border-radius: 999px;
  color: #0f766e;
  background: rgba(20, 184, 166, .12);
  font-size: 13px;
  font-weight: 900;
}

.continuous-update-flow span:not(:last-child)::after {
  content: "→";
  margin-left: 8px;
  color: #64748b;
}

.continuous-update-cadence {
  display: grid;
  grid-template-columns: 4.5em minmax(0, 1fr);
  gap: 10px;
  padding: 10px 0;
  border-top: 1px solid var(--line);
}

.continuous-update-cadence:first-of-type {
  border-top: 0;
  padding-top: 0;
}

.continuous-update-cadence strong {
  color: #0f766e;
}

.daily-update-queue {
  margin: 18px 0;
  padding: clamp(22px, 3vw, 32px);
  border: 1px solid rgba(37, 99, 235, .18);
  border-radius: 22px;
  background:
    linear-gradient(135deg, rgba(239, 246, 255, .92), rgba(255, 255, 255, .9)),
    var(--paper);
  box-shadow: var(--shadow);
}

.daily-update-queue-head {
  display: grid;
  gap: 8px;
  max-width: 980px;
  margin-bottom: 18px;
}

.daily-update-queue-head span {
  color: #2563eb;
  font-size: 12px;
  font-weight: 900;
  letter-spacing: .12em;
}

.daily-update-queue-head h3 {
  margin: 0;
  font-size: clamp(24px, 3vw, 36px);
}

.daily-update-queue-head p {
  margin: 0;
  color: var(--muted);
  line-height: 1.8;
}

.daily-update-queue-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
}

.daily-update-queue-card {
  display: grid;
  gap: 12px;
  min-width: 0;
  padding: clamp(17px, 2.4vw, 24px);
  border: 1px solid var(--line);
  border-left: 6px solid #64748b;
  border-radius: 18px;
  background: rgba(255, 255, 255, .9);
}

.daily-update-queue-card.tone-good { border-left-color: #15803d; }
.daily-update-queue-card.tone-watch { border-left-color: #b45309; }
.daily-update-queue-card.tone-danger { border-left-color: #b91c1c; }
.daily-update-queue-card.tone-unknown { border-left-color: #64748b; }

.daily-update-queue-card header {
  display: grid;
  gap: 6px;
}

.daily-update-queue-card header span,
.daily-update-queue-card header em,
.daily-update-queue-card footer small,
.daily-update-queue-meta span {
  color: var(--muted);
  font-size: 12px;
  font-style: normal;
  font-weight: 800;
}

.daily-update-queue-card header strong {
  font-size: clamp(17px, 2vw, 22px);
  line-height: 1.35;
}

.daily-update-queue-meta {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1px;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 13px;
  background: var(--line);
}

.daily-update-queue-meta div {
  min-width: 0;
  padding: 12px;
  background: rgba(248, 250, 252, .96);
}

.daily-update-queue-meta span,
.daily-update-queue-meta b {
  display: block;
}

.daily-update-queue-meta b {
  margin-top: 5px;
  font-size: 13px;
  line-height: 1.45;
  overflow-wrap: anywhere;
}

.daily-update-queue-card p {
  margin: 0;
  color: var(--muted);
  font-size: 14px;
  line-height: 1.75;
}

.daily-update-queue-card p b {
  display: block;
  margin-bottom: 3px;
  color: var(--ink);
}

.daily-update-queue-card footer {
  display: flex;
  gap: 12px;
  align-items: center;
  justify-content: space-between;
  padding-top: 12px;
  border-top: 1px solid var(--line);
}

.daily-update-queue-card footer a {
  flex: 0 0 auto;
  padding: 9px 12px;
  border-radius: 999px;
  color: #fff;
  background: var(--blue);
  font-size: 12px;
  font-weight: 900;
  text-decoration: none;
}

.update-impact-map {
  margin: 18px 0;
  padding: clamp(22px, 3vw, 32px);
  border: 1px solid rgba(88, 28, 135, .16);
  border-radius: 22px;
  background:
    radial-gradient(circle at top right, rgba(168, 85, 247, .14), transparent 34%),
    linear-gradient(135deg, rgba(250, 245, 255, .92), rgba(255, 255, 255, .92)),
    var(--paper);
  box-shadow: var(--shadow);
}

.update-impact-head {
  display: grid;
  gap: 8px;
  max-width: 1000px;
  margin-bottom: 18px;
}

.update-impact-head span {
  color: #7e22ce;
  font-size: 12px;
  font-weight: 900;
  letter-spacing: .12em;
}

.update-impact-head h3 {
  margin: 0;
  font-size: clamp(24px, 3vw, 36px);
}

.update-impact-head p {
  margin: 0;
  color: var(--muted);
  line-height: 1.8;
}

.update-impact-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
}

.update-impact-card {
  display: grid;
  gap: 14px;
  min-width: 0;
  padding: clamp(17px, 2.4vw, 24px);
  border: 1px solid var(--line);
  border-radius: 18px;
  background: rgba(255, 255, 255, .9);
}

.update-impact-card header {
  display: grid;
  gap: 5px;
}

.update-impact-card header span,
.update-impact-card header small {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.update-impact-card header strong {
  font-size: clamp(17px, 2vw, 22px);
  line-height: 1.35;
}

.update-impact-routes {
  display: grid;
  gap: 8px;
}

.update-impact-routes button {
  display: grid;
  grid-template-columns: minmax(120px, .45fr) minmax(90px, .3fr) minmax(0, 1fr);
  gap: 10px;
  align-items: center;
  width: 100%;
  padding: 13px 14px;
  border: 1px solid rgba(126, 34, 206, .16);
  border-radius: 14px;
  color: var(--ink);
  background: rgba(250, 245, 255, .75);
  cursor: pointer;
  font: inherit;
  text-align: left;
}

.update-impact-routes button:hover,
.update-impact-routes button:focus-visible {
  border-color: rgba(126, 34, 206, .45);
  background: rgba(243, 232, 255, .95);
  transform: translateY(-1px);
}

.update-impact-routes b,
.update-impact-routes span,
.update-impact-routes small {
  display: block;
  min-width: 0;
}

.update-impact-routes b {
  color: #581c87;
  font-size: 14px;
}

.update-impact-routes span {
  color: var(--teal);
  font-size: 12px;
  font-weight: 900;
}

.update-impact-routes small {
  color: var(--muted);
  font-size: 12px;
  line-height: 1.55;
}

.data-gap-alert-center {
  margin: 18px 0;
  padding: clamp(20px, 3vw, 30px);
  border: 1px solid rgba(185, 28, 28, .18);
  border-radius: 18px;
  background:
    linear-gradient(135deg, rgba(254, 242, 242, .88), rgba(240, 253, 250, .78)),
    var(--paper);
  box-shadow: var(--shadow);
}

.data-gap-alert-head {
  display: grid;
  gap: 8px;
  max-width: 980px;
}

.data-gap-alert-head span {
  color: #b91c1c;
  font-size: 12px;
  font-weight: 900;
  letter-spacing: .12em;
}

.data-gap-alert-head h3 {
  margin: 0;
  font-size: clamp(22px, 3vw, 34px);
}

.data-gap-alert-head p {
  margin: 0;
  color: var(--muted);
  line-height: 1.8;
}

.data-gap-alert-summary,
.data-gap-alert-grid {
  display: grid;
  gap: 12px;
}

.data-gap-alert-summary {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  margin: 18px 0;
}

.data-gap-alert-summary article {
  padding: 14px 16px;
  border-radius: 13px;
  background: rgba(255, 255, 255, .82);
}

.data-gap-alert-summary article.critical { border-left: 5px solid #b91c1c; }
.data-gap-alert-summary article.watch { border-left: 5px solid #b45309; }
.data-gap-alert-summary article.monitor { border-left: 5px solid #0f766e; }

.data-gap-alert-summary span,
.data-gap-alert-summary strong {
  display: block;
}

.data-gap-alert-summary span {
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
}

.data-gap-alert-summary strong {
  margin-top: 6px;
  font-size: 24px;
}

.data-gap-alert-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.data-gap-alert-card {
  display: grid;
  gap: 12px;
  padding: clamp(16px, 2.5vw, 22px);
  border: 1px solid var(--line);
  border-top: 6px solid #64748b;
  border-radius: 15px;
  background: var(--paper);
}

.data-gap-alert-card.tone-critical { border-top-color: #b91c1c; }
.data-gap-alert-card.tone-watch { border-top-color: #b45309; }
.data-gap-alert-card.tone-monitor { border-top-color: #0f766e; }

.data-gap-alert-card header {
  display: grid;
  gap: 6px;
}

.data-gap-alert-card header span,
.data-gap-alert-card header em {
  color: var(--muted);
  font-size: 11px;
  font-style: normal;
  font-weight: 800;
}

.data-gap-alert-card header strong {
  font-size: clamp(17px, 2vw, 22px);
}

.data-gap-alert-card p {
  margin: 0;
  color: var(--ink);
  font-size: 13px;
  line-height: 1.75;
}

.data-gap-alert-card p b {
  display: block;
  margin-bottom: 3px;
  color: var(--muted);
  font-size: 11px;
}

.data-gap-alert-card footer {
  display: flex;
  gap: 12px;
  align-items: flex-end;
  justify-content: space-between;
  padding-top: 12px;
  border-top: 1px solid var(--line);
}

.data-gap-alert-card footer span,
.data-gap-alert-card footer small,
.data-gap-alert-card footer strong {
  display: block;
}

.data-gap-alert-card footer span,
.data-gap-alert-card footer small {
  color: var(--muted);
  font-size: 11px;
}

.data-gap-alert-card footer strong {
  margin: 4px 0;
  font-size: 12px;
  line-height: 1.55;
}

.data-gap-alert-card button {
  flex: 0 0 auto;
  min-height: 40px;
  padding: 9px 12px;
  border: 0;
  border-radius: 999px;
  color: #fff;
  background: var(--blue);
  cursor: pointer;
  font-size: 12px;
  font-weight: 900;
}

.data-refresh-rules,
.data-refresh-operation {
  padding: 22px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: var(--paper);
}

.data-refresh-rules > div,
.data-refresh-operation > div {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
}

.data-refresh-rules article,
.data-refresh-operation article {
  padding: 13px;
  border-radius: 10px;
  background: var(--soft-blue);
}

.data-refresh-rules article.good { border-top: 4px solid #15803d; }
.data-refresh-rules article.watch { border-top: 4px solid #b45309; }
.data-refresh-rules article.danger { border-top: 4px solid #b91c1c; }
.data-refresh-rules article.unknown { border-top: 4px solid #64748b; }

.data-refresh-rules p,
.data-refresh-operation p {
  margin-bottom: 0;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.65;
}

.data-refresh-controls {
  display: grid;
  grid-template-columns: minmax(280px, 1.7fr) repeat(3, minmax(150px, .7fr)) auto;
  gap: 12px;
  align-items: end;
  margin-top: 18px;
  padding: 18px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: var(--paper);
}

.data-refresh-controls label {
  display: grid;
  gap: 7px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.data-refresh-controls input,
.data-refresh-controls select,
.data-refresh-controls button {
  min-height: 44px;
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-radius: 9px;
  color: var(--ink);
  background: var(--paper);
  font: inherit;
}

.data-refresh-controls button {
  cursor: pointer;
  font-weight: 800;
}

.data-refresh-list {
  display: grid;
  gap: 14px;
  margin-top: 18px;
}

.data-refresh-card {
  padding: clamp(18px, 3vw, 26px);
  border: 1px solid var(--line);
  border-left: 6px solid #64748b;
  border-radius: 15px;
  background: var(--paper);
  box-shadow: var(--shadow);
}

.data-refresh-card.tone-good { border-left-color: #15803d; }
.data-refresh-card.tone-watch { border-left-color: #b45309; }
.data-refresh-card.tone-danger { border-left-color: #b91c1c; }

.data-refresh-card header,
.data-refresh-card footer {
  display: flex;
  justify-content: space-between;
  gap: 16px;
}

.data-refresh-card header span {
  color: var(--teal);
  font-size: 11px;
  font-weight: 900;
}

.data-refresh-card h3 {
  margin: 5px 0 0;
  font-size: clamp(17px, 2vw, 22px);
}

.data-refresh-card header > div:last-child {
  display: flex;
  align-items: flex-start;
  gap: 7px;
}

.data-refresh-card header b,
.data-refresh-card header em {
  padding: 5px 8px;
  border-radius: 999px;
  font-size: 10px;
  font-style: normal;
  white-space: nowrap;
}

.data-refresh-card header b {
  color: var(--ink);
  background: var(--soft-blue);
}

.data-refresh-card header em {
  color: #fff;
  background: var(--teal);
}

.data-refresh-meta {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 1px;
  overflow: hidden;
  margin: 16px 0;
  border: 1px solid var(--line);
  border-radius: 11px;
  background: var(--line);
}

.data-refresh-meta div {
  padding: 13px;
  background: var(--paper);
}

.data-refresh-meta span,
.data-refresh-meta strong,
.data-refresh-meta small {
  display: block;
}

.data-refresh-meta span,
.data-refresh-meta small {
  color: var(--muted);
  font-size: 10px;
  font-weight: 700;
}

.data-refresh-meta strong {
  margin: 6px 0;
  font-size: 12px;
  line-height: 1.55;
  overflow-wrap: anywhere;
}

.data-refresh-card > p {
  color: var(--muted);
  font-size: 12px;
  line-height: 1.75;
}

.data-refresh-card footer {
  align-items: center;
  padding-top: 14px;
  border-top: 1px solid var(--line);
}

.data-refresh-card footer div strong,
.data-refresh-card footer div span {
  display: block;
}

.data-refresh-card footer div span {
  margin-top: 4px;
  color: var(--muted);
  font-size: 12px;
}

.data-refresh-card footer nav {
  display: flex;
  gap: 8px;
  flex: 0 0 auto;
}

.data-refresh-card footer a {
  padding: 8px 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  color: var(--blue);
  font-size: 11px;
  font-weight: 800;
  text-decoration: none;
}

.data-refresh-operation {
  margin-top: 18px;
}

.data-refresh-operation > div {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.data-refresh-empty {
  padding: 24px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: var(--paper);
}

@media (max-width: 1100px) {
  .data-refresh-summary {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .continuous-update-hero,
  .daily-update-queue-grid,
  .update-impact-grid,
  .continuous-update-grid {
    grid-template-columns: 1fr;
  }

  .continuous-update-kpis {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .data-gap-alert-grid {
    grid-template-columns: 1fr;
  }

  .data-refresh-controls {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .data-refresh-search {
    grid-column: 1 / -1;
  }

  .data-refresh-meta,
  .data-refresh-rules > div,
  .data-refresh-operation > div {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 700px) {
  .data-refresh-hero,
  .data-refresh-summary,
  .continuous-update-kpis,
  .daily-update-queue-meta,
  .data-gap-alert-summary,
  .data-refresh-controls,
  .data-refresh-meta,
  .data-refresh-rules > div,
  .data-refresh-operation > div {
    grid-template-columns: 1fr;
  }

  .data-refresh-hero {
    padding: 24px;
  }

  .data-refresh-hero h2 {
    font-size: 28px;
  }

  .continuous-update-command {
    padding: 18px;
  }

  .continuous-update-cadence {
    grid-template-columns: 1fr;
  }

  .daily-update-queue {
    padding: 18px;
  }

  .daily-update-queue-card footer {
    align-items: flex-start;
    flex-direction: column;
  }

  .update-impact-map {
    padding: 18px;
  }

  .update-impact-routes button {
    grid-template-columns: 1fr;
  }

  .data-refresh-search {
    grid-column: auto;
  }

  .data-refresh-card header,
  .data-refresh-card footer,
  .data-gap-alert-card footer {
    align-items: flex-start;
    flex-direction: column;
  }

  .data-refresh-card footer nav {
    flex-wrap: wrap;
  }
}

.policy-ledger-panel {
  min-width: 0;
  margin: 16px 0 var(--section-gap);
  overflow: hidden;
}

.policy-ledger-hero {
  display: grid;
  grid-template-columns: minmax(0, 1.5fr) minmax(240px, .5fr);
  gap: 24px;
  padding: clamp(26px, 4vw, 48px);
  border-radius: 22px;
  color: #f8fafc;
  background: linear-gradient(135deg, #20314d, #315b65);
  box-shadow: var(--shadow);
}

.policy-ledger-hero > *,
.policy-ledger-summary > *,
.policy-ledger-controls > *,
.policy-ledger-card summary > *,
.policy-ledger-body > * {
  min-width: 0;
}

.policy-ledger-hero span {
  color: #bfdbfe;
  font-size: 12px;
  font-weight: 900;
  letter-spacing: .12em;
}

.policy-ledger-hero h2 {
  margin: 10px 0 12px;
  font-size: clamp(28px, 4vw, 46px);
  line-height: 1.15;
  overflow-wrap: anywhere;
}

.policy-ledger-hero p {
  margin: 0;
  color: #dbe7ee;
  line-height: 1.8;
  overflow-wrap: anywhere;
}

.policy-ledger-hero aside {
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 22px;
  border: 1px solid rgba(255, 255, 255, .2);
  border-radius: 16px;
  background: rgba(255, 255, 255, .08);
}

.policy-ledger-hero aside strong {
  margin: 6px 0;
  font-size: clamp(34px, 5vw, 52px);
}

.policy-ledger-summary {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 14px;
  margin: 18px 0;
}

.policy-ledger-summary article {
  padding: 18px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: var(--paper);
  box-shadow: var(--shadow);
}

.policy-ledger-summary article.is-alert {
  border-color: rgba(194, 65, 12, .35);
  background: color-mix(in srgb, var(--paper) 92%, #fed7aa);
}

.policy-ledger-summary span,
.policy-ledger-summary small {
  display: block;
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
}

.policy-ledger-summary strong {
  display: block;
  margin: 8px 0;
  font-size: 27px;
}

.policy-ledger-focus-banner {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  align-items: center;
  margin: 14px 0;
  padding: 16px;
  border: 1px solid color-mix(in srgb, var(--teal) 45%, var(--line));
  border-left: 5px solid var(--teal);
  border-radius: 14px;
  background: color-mix(in srgb, var(--teal) 8%, var(--paper));
}

.policy-ledger-focus-banner span,
.policy-ledger-focus-banner strong,
.policy-ledger-focus-banner small {
  display: block;
}

.policy-ledger-focus-banner span {
  color: var(--teal);
  font-size: 10px;
  font-weight: 900;
  letter-spacing: .08em;
}

.policy-ledger-focus-banner strong {
  margin-top: 4px;
  font-size: 16px;
}

.policy-ledger-focus-banner small {
  margin-top: 4px;
  color: var(--muted);
  line-height: 1.5;
}

.policy-ledger-focus-banner button {
  flex: 0 0 auto;
  padding: 10px 13px;
  border: 0;
  border-radius: 9px;
  color: #fff;
  background: var(--teal);
  font-weight: 900;
  cursor: pointer;
}

.policy-ledger-controls {
  display: grid;
  grid-template-columns: minmax(280px, 1.7fr) repeat(3, minmax(150px, .7fr)) auto;
  gap: 12px;
  align-items: end;
  padding: 18px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: var(--paper);
}

.policy-ledger-controls label {
  display: grid;
  gap: 7px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.policy-ledger-controls input,
.policy-ledger-controls select,
.policy-ledger-controls button {
  min-height: 44px;
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-radius: 9px;
  color: var(--ink);
  background: var(--paper);
  font: inherit;
}

.policy-ledger-controls button {
  cursor: pointer;
  font-weight: 800;
}

.policy-ledger-list {
  display: grid;
  gap: 12px;
  margin-top: 18px;
}

.policy-ledger-card {
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: var(--paper);
  box-shadow: var(--shadow);
}

.policy-ledger-card summary {
  display: grid;
  grid-template-columns: minmax(280px, 1.6fr) minmax(110px, .45fr) minmax(90px, .35fr) auto;
  gap: 16px;
  align-items: center;
  padding: 18px 22px;
  cursor: pointer;
  list-style: none;
}

.policy-ledger-card summary::-webkit-details-marker {
  display: none;
}

.policy-ledger-card summary::after {
  content: "+";
  grid-column: 5;
  grid-row: 1;
  color: var(--blue);
  font-size: 24px;
  font-weight: 800;
}

.policy-ledger-card[open] summary::after {
  content: "−";
}

.policy-ledger-title span,
.policy-ledger-amount small,
.policy-ledger-rate small {
  display: block;
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
}

.policy-ledger-title h3 {
  margin: 5px 0 0;
  font-size: 18px;
}

.policy-ledger-amount strong,
.policy-ledger-rate strong {
  display: block;
  font-size: 18px;
}

.policy-ledger-card summary > b {
  padding: 6px 10px;
  border-radius: 999px;
  color: var(--teal);
  background: var(--soft-blue);
  font-size: 11px;
  white-space: nowrap;
}

.policy-ledger-body {
  display: grid;
  grid-template-columns: 1fr 1.35fr 1fr;
  gap: 1px;
  border-top: 1px solid var(--line);
  background: var(--line);
}

.policy-ledger-body > section {
  padding: 20px;
  background: var(--paper);
}

.policy-ledger-body h4 {
  margin: 0 0 14px;
  font-size: 15px;
}

.policy-ledger-identity {
  grid-column: 1 / -1;
}

.policy-ledger-identity-head {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: center;
  margin-bottom: 14px;
}

.policy-ledger-identity-head h4 {
  margin: 0;
}

.policy-ledger-identity-head button {
  padding: 8px 11px;
  border: 1px solid var(--line);
  border-radius: 8px;
  color: var(--teal);
  background: var(--soft-blue);
  font-size: 10px;
  font-weight: 900;
  cursor: pointer;
}

.policy-ledger-identity dl {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
  margin: 0;
}

.policy-ledger-identity dl div {
  min-width: 0;
  padding: 10px;
  border-radius: 9px;
  background: var(--soft-blue);
}

.policy-ledger-identity dt,
.policy-ledger-identity dd {
  margin: 0;
}

.policy-ledger-identity dt {
  color: var(--muted);
  font-size: 10px;
  font-weight: 800;
}

.policy-ledger-identity dd {
  margin-top: 5px;
  overflow-wrap: anywhere;
  font-size: 12px;
  font-weight: 800;
}

.policy-ledger-identity p {
  margin: 12px 0 0;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.65;
}

.policy-ledger-next-actions {
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
}

.policy-ledger-next-actions h4 {
  grid-column: 1 / -1;
}

.policy-ledger-next-actions button {
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 11px;
  color: var(--ink);
  background: var(--soft-blue);
  text-align: left;
  cursor: pointer;
}

.policy-ledger-next-actions strong,
.policy-ledger-next-actions small {
  display: block;
}

.policy-ledger-next-actions small {
  margin-top: 4px;
  color: var(--muted);
  font-size: 10px;
}

.decision-case-bottom > div span {
  display: grid;
  gap: 2px;
}

.decision-case-bottom > div span b {
  color: var(--teal);
  font-size: 9px;
  overflow-wrap: anywhere;
}

.decision-case-bottom > div span small {
  color: var(--muted);
  font-size: 9px;
}

.decision-link-legend {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
  margin-top: 14px;
}

.decision-link-legend span {
  padding: 11px;
  border: 1px solid var(--line);
  border-radius: 10px;
  color: var(--muted);
  background: var(--paper);
  font-size: 10px;
  line-height: 1.5;
}

.decision-link-legend b {
  display: block;
  margin-bottom: 3px;
  color: var(--ink);
  font-size: 11px;
}

.decision-link-legend .verified { border-left: 4px solid var(--teal); }
.decision-link-legend .candidate { border-left: 4px solid var(--amber); }
.decision-link-legend .missing { border-left: 4px solid #b91c1c; }

.policy-ledger-finance > div {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
}

.policy-ledger-finance article {
  padding: 10px;
  border-radius: 9px;
  background: var(--soft-blue);
}

.policy-ledger-finance span,
.policy-ledger-finance strong {
  display: block;
}

.policy-ledger-finance span {
  color: var(--muted);
  font-size: 10px;
  font-weight: 800;
}

.policy-ledger-finance strong {
  margin-top: 5px;
  font-size: 15px;
}

.policy-ledger-finance > p,
.policy-ledger-outcome > p,
.policy-ledger-kpi > p {
  color: var(--muted);
  font-size: 12px;
  line-height: 1.75;
}

.policy-ledger-national {
  border-color: color-mix(in srgb, #0f766e 24%, var(--line));
  background: color-mix(in srgb, #0f766e 5%, var(--paper));
}

.policy-ledger-national > p {
  margin: 0 0 12px;
  color: var(--ink);
  font-size: 12px;
  font-weight: 800;
  line-height: 1.7;
}

.policy-ledger-national > div {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
  gap: 10px;
  margin-bottom: 10px;
}

.policy-ledger-national article {
  padding: 10px;
  border: 1px solid color-mix(in srgb, #0f766e 18%, var(--line));
  border-radius: 12px;
  background: color-mix(in srgb, #fff 78%, transparent);
}

.policy-ledger-national span,
.policy-ledger-national strong,
.policy-ledger-national small {
  display: block;
}

.policy-ledger-national span,
.policy-ledger-national small {
  color: var(--muted);
  font-size: 10px;
  line-height: 1.5;
}

.policy-ledger-national strong {
  margin: 4px 0;
  color: var(--ink);
  font-size: 12px;
}

.policy-ledger-outcome > p {
  max-height: 210px;
  overflow: auto;
  padding-right: 8px;
}

.policy-ledger-measurement {
  padding: 12px;
  border-left: 4px solid var(--amber);
  border-radius: 8px;
  background: color-mix(in srgb, var(--paper) 90%, #fde68a);
}

.policy-ledger-measurement span,
.policy-ledger-measurement strong,
.policy-ledger-measurement small {
  display: block;
}

.policy-ledger-measurement strong {
  margin: 5px 0;
}

.policy-ledger-measurement small {
  color: var(--muted);
  line-height: 1.5;
}

.policy-ledger-kpi article {
  margin-bottom: 9px;
  padding: 11px;
  border-radius: 9px;
  background: var(--soft-blue);
}

.policy-ledger-kpi article span,
.policy-ledger-kpi article strong,
.policy-ledger-kpi article small {
  display: block;
}

.policy-ledger-kpi article span,
.policy-ledger-kpi article small,
.policy-ledger-caution {
  color: var(--muted);
  font-size: 10px;
}

.policy-ledger-kpi article strong {
  margin: 5px 0;
  font-size: 12px;
}

.policy-ledger-caution {
  display: block;
  line-height: 1.55;
}

.policy-ledger-empty,
.policy-ledger-next {
  padding: 24px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: var(--paper);
}

.policy-ledger-next {
  margin-top: 18px;
}

.policy-ledger-next > div {
  display: flex;
  align-items: center;
  gap: 8px;
  overflow-x: auto;
  padding: 14px 0;
}

.policy-ledger-next span {
  flex: 0 0 auto;
  padding: 9px 12px;
  border-radius: 999px;
  background: var(--soft-blue);
  font-size: 12px;
  font-weight: 800;
}

.policy-ledger-next p {
  color: var(--muted);
  line-height: 1.7;
}

@media (max-width: 1000px) {
  .policy-ledger-summary {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .policy-ledger-controls {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .policy-ledger-search {
    grid-column: 1 / -1;
  }

  .policy-ledger-body {
    grid-template-columns: 1fr;
  }

  .policy-ledger-next-actions {
    grid-template-columns: 1fr;
  }

  .policy-ledger-identity dl {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .decision-link-legend {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 700px) {
  .policy-ledger-hero,
  .policy-ledger-summary,
  .policy-ledger-controls {
    grid-template-columns: 1fr;
  }

  .policy-ledger-hero {
    padding: 24px;
    overflow: hidden;
  }

  .policy-ledger-identity dl {
    grid-template-columns: 1fr;
  }

  .policy-ledger-focus-banner {
    display: grid;
  }

  .policy-ledger-hero h2 {
    font-size: 28px;
    max-width: 100%;
  }

  .policy-ledger-search {
    grid-column: auto;
  }

  .policy-ledger-card summary {
    grid-template-columns: 1fr 1fr;
    padding: 16px;
  }

  .policy-ledger-title {
    grid-column: 1 / -1;
  }

  .policy-ledger-card summary > b {
    justify-self: start;
  }

  .policy-ledger-card summary::after {
    grid-column: 2;
    grid-row: 3;
    justify-self: end;
  }
}

.action-card.office {
  border-left-color: var(--amber);
}

.action-card div {
  display: flex;
  justify-content: space-between;
  gap: 8px;
  margin-bottom: 5px;
}

.action-card strong {
  min-width: 0;
  font-size: 13px;
}

.action-card span {
  flex: 0 0 auto;
  color: var(--blue);
  font-size: 11px;
  font-weight: 900;
}

.action-card p,
.action-card small,
.action-card li {
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
  line-height: 1.5;
}

.action-card p {
  margin: 0 0 6px;
}

.action-card small {
  display: block;
}

.action-card ul {
  display: grid;
  gap: 3px;
  margin: 7px 0 0;
  padding-left: 16px;
}

.council-briefing-panel {
  border-color: #eadfd1;
}

.council-briefing-summary-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
  margin-bottom: 12px;
}

.council-briefing-summary-grid article {
  min-width: 0;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfcfd;
}

.council-briefing-summary-grid span,
.council-briefing-summary-grid small {
  display: block;
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
  line-height: 1.45;
}

.council-briefing-summary-grid strong {
  display: block;
  margin: 6px 0;
  font-size: 22px;
}

.council-briefing-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}

.council-briefing-list article {
  min-width: 0;
  padding: 12px;
  border: 1px solid #e4e9ef;
  border-left: 4px solid var(--muted);
  border-radius: 8px;
  background: #fbfcfd;
}

.council-briefing-list article.ready {
  border-left-color: var(--green);
}

.council-briefing-list article.check {
  border-left-color: var(--amber);
}

.council-briefing-list article.data {
  border-left-color: var(--red);
}

.brief-head,
.brief-columns {
  display: grid;
  gap: 10px;
}

.brief-head {
  grid-template-columns: minmax(0, 1fr) auto;
  margin-bottom: 8px;
}

.brief-head strong,
.brief-head span,
.brief-columns b,
.brief-columns small {
  display: block;
}

.brief-head strong {
  font-size: 13px;
}

.brief-head span {
  color: var(--muted);
  font-size: 11px;
  font-weight: 900;
}

.brief-head em {
  color: var(--teal);
  font-size: 13px;
  font-style: normal;
  font-weight: 900;
}

.council-briefing-list p,
.brief-columns small {
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
  line-height: 1.55;
}

.council-briefing-list p {
  margin: 0 0 9px;
}

.brief-columns {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  margin-bottom: 9px;
}

.brief-columns div {
  min-width: 0;
  padding: 9px;
  border-radius: 8px;
  background: white;
}

.brief-columns b {
  margin-bottom: 4px;
  font-size: 11px;
}

.brief-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
}

.brief-tags span {
  padding: 4px 6px;
  border-radius: 999px;
  background: #eef2f7;
  color: var(--ink);
  font-size: 10px;
  font-weight: 900;
}

.meeting-agenda-panel {
  border-color: #d9e0ec;
}

.meeting-agenda-summary-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
  margin-bottom: 12px;
}

.meeting-agenda-summary-grid article {
  min-width: 0;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfcfd;
}

.meeting-agenda-summary-grid span,
.meeting-agenda-summary-grid small {
  display: block;
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
  line-height: 1.45;
}

.meeting-agenda-summary-grid strong {
  display: block;
  margin: 6px 0;
  font-size: 22px;
}

.meeting-agenda-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}

.meeting-agenda-list article {
  min-width: 0;
  padding: 12px;
  border: 1px solid #e4e9ef;
  border-left: 4px solid var(--teal);
  border-radius: 8px;
  background: #fbfcfd;
}

.meeting-agenda-list article.data {
  border-left-color: var(--amber);
}

.meeting-agenda-head {
  display: grid;
  grid-template-columns: 34px minmax(0, 1fr) auto;
  gap: 9px;
  align-items: start;
  margin-bottom: 8px;
}

.meeting-agenda-head b {
  display: grid;
  width: 34px;
  height: 34px;
  place-items: center;
  border-radius: 50%;
  background: var(--soft-blue);
  color: var(--blue);
  font-size: 12px;
}

.meeting-agenda-head strong,
.meeting-agenda-head span {
  display: block;
}

.meeting-agenda-head strong {
  font-size: 13px;
}

.meeting-agenda-head span,
.meeting-agenda-list p,
.meeting-agenda-list small {
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
  line-height: 1.5;
}

.meeting-agenda-head em {
  color: var(--teal);
  font-size: 12px;
  font-style: normal;
  font-weight: 900;
}

.meeting-agenda-list p {
  margin: 0 0 5px;
}

.meeting-agenda-list small {
  display: block;
}

.meeting-agenda-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
  margin-top: 8px;
}

.meeting-agenda-tags span {
  padding: 4px 6px;
  border-radius: 999px;
  background: #eef2f7;
  color: var(--ink);
  font-size: 10px;
  font-weight: 900;
}

.meeting-needed-actions {
  margin-top: 12px;
  padding: 12px;
  border: 1px solid #d8e0ea;
  border-radius: 8px;
  background: #ffffff;
}

.meeting-needed-actions-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 10px;
}

.meeting-needed-actions-head strong {
  font-size: 13px;
}

.meeting-needed-actions-head span {
  padding: 4px 8px;
  border-radius: 999px;
  background: #fff7e5;
  color: var(--amber);
  font-size: 11px;
  font-weight: 900;
}

.meeting-needed-actions-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}

.meeting-needed-actions-grid article {
  min-width: 0;
  padding: 12px;
  border: 1px solid #e4e9ef;
  border-radius: 8px;
  background: #fbfcfd;
}

.meeting-needed-actions-grid b,
.meeting-needed-actions-grid p,
.meeting-needed-actions-grid dt,
.meeting-needed-actions-grid dd {
  overflow-wrap: anywhere;
}

.meeting-needed-actions-grid b {
  display: block;
  margin-bottom: 6px;
  color: var(--ink);
  font-size: 13px;
}

.meeting-needed-actions-grid p {
  margin: 0 0 10px;
  color: var(--ink);
  font-size: 12px;
  font-weight: 800;
  line-height: 1.55;
}

.meeting-needed-actions-grid dl {
  display: grid;
  gap: 6px;
  margin: 0;
}

.meeting-needed-actions-grid div {
  display: grid;
  grid-template-columns: 70px minmax(0, 1fr);
  gap: 8px;
}

.meeting-needed-actions-grid dt,
.meeting-needed-actions-grid dd {
  margin: 0;
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
  line-height: 1.45;
}

.meeting-needed-actions-grid dt {
  color: var(--amber);
}

.policy-kpi-panel {
  border-color: #d4dde8;
}

.policy-kpi-summary-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
  margin-bottom: 12px;
}

.policy-kpi-summary-grid article {
  min-width: 0;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfcfd;
}

.policy-kpi-summary-grid span,
.policy-kpi-summary-grid small {
  display: block;
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
  line-height: 1.45;
}

.policy-kpi-summary-grid strong {
  display: block;
  margin: 6px 0;
  font-size: 22px;
}

.policy-kpi-workflow {
  display: grid;
  gap: 14px;
}

.policy-kpi-group {
  padding: 14px;
  border: 1px solid var(--line);
  border-top: 4px solid #b45309;
  border-radius: 12px;
  background: var(--paper);
}

.policy-kpi-group.check { border-top-color: #1d4ed8; }
.policy-kpi-group.data { border-top-color: #7c3aed; }

.policy-kpi-group-head {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 10px;
}

.policy-kpi-group-head span { color: var(--muted); font-size: 9px; font-weight: 900; letter-spacing: .08em; }
.policy-kpi-group-head h4 { margin: 2px 0 4px; font-size: 16px; }
.policy-kpi-group-head p { max-width: 760px; margin: 0; color: var(--muted); font-size: 10px; line-height: 1.55; }
.policy-kpi-group-head > strong { align-self: start; padding: 5px 9px; border-radius: 999px; background: var(--soft); font-size: 11px; }

.policy-kpi-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}

.policy-kpi-list article {
  min-width: 0;
  padding: 12px;
  border: 1px solid #e4e9ef;
  border-left: 4px solid var(--blue);
  border-radius: 8px;
  background: #fbfcfd;
}

.policy-kpi-list article.check {
  border-left-color: var(--amber);
}

.policy-kpi-list article.data {
  border-left-color: var(--red);
}

.policy-kpi-head {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  align-items: flex-start;
  margin-bottom: 8px;
}

.policy-kpi-head strong,
.policy-kpi-head span {
  display: block;
}

.policy-kpi-head strong {
  font-size: 13px;
}

.policy-kpi-head span,
.policy-kpi-list p,
.policy-kpi-list small {
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
  line-height: 1.5;
}

.policy-kpi-head em {
  padding: 4px 7px;
  border-radius: 999px;
  background: var(--soft-blue);
  color: var(--blue);
  font-size: 10px;
  font-style: normal;
  font-weight: 900;
  white-space: nowrap;
}

.policy-kpi-metric {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  align-items: center;
  padding: 8px;
  border-radius: 8px;
  background: #eef2f7;
}

.policy-kpi-metric b,
.policy-kpi-metric small {
  min-width: 0;
}

.policy-kpi-indicator {
  display: inline-block;
  max-width: 100%;
  margin-top: 8px;
  padding: 4px 7px;
  border-radius: 999px;
  background: #fff7e5;
  color: var(--amber);
  font-size: 10px;
  font-weight: 900;
  overflow-wrap: anywhere;
}

.policy-kpi-list p {
  margin: 8px 0 5px;
}

.policy-kpi-details {
  display: grid;
  gap: 5px;
  margin: 9px 0 0;
  padding-top: 8px;
  border-top: 1px solid var(--line);
}

.policy-kpi-details div { display: grid; grid-template-columns: 66px 1fr; gap: 7px; font-size: 9px; line-height: 1.45; }
.policy-kpi-details dt { color: var(--muted); font-weight: 800; }
.policy-kpi-details dd { margin: 0; }
.policy-kpi-actions { margin: 9px 0 0; padding-left: 20px; color: var(--muted); font-size: 9px; line-height: 1.55; }
.policy-kpi-empty { margin: 0; color: var(--muted); font-size: 10px; }
.policy-kpi-caution { margin: 12px 0 0; padding: 9px 11px; border-left: 3px solid #64748b; color: var(--muted); background: var(--soft); font-size: 9.5px; line-height: 1.55; }

.indicator-category-card {
  min-width: 0;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--paper);
}

.indicator-category-head {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 10px;
}

.indicator-category-head h4 {
  margin: 0 0 4px;
  font-size: 14px;
}

.indicator-category-head p {
  color: var(--muted);
  font-size: 12px;
  line-height: 1.55;
}

.indicator-category-head strong {
  flex: 0 0 auto;
  color: var(--blue);
  font-size: 13px;
}

.indicator-list {
  display: grid;
  gap: 8px;
}

.indicator-row {
  display: grid;
  grid-template-columns: minmax(160px, 1fr) minmax(180px, 0.9fr);
  gap: 10px;
  align-items: start;
  padding: 9px;
  border: 1px solid #e4e9ef;
  border-radius: 6px;
  background: #fbfcfd;
}

.indicator-row strong,
.indicator-row small,
.indicator-row em {
  display: block;
}

.indicator-row strong {
  font-size: 13px;
}

.indicator-row small {
  margin-top: 3px;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.45;
}

.indicator-row em {
  margin-top: 4px;
  color: var(--teal);
  font-size: 10px;
  font-style: normal;
  font-weight: 800;
  line-height: 1.4;
}

.indicator-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
  justify-content: flex-end;
}

.indicator-tags span {
  padding: 3px 6px;
  border-radius: 999px;
  background: #eef2f7;
  color: var(--muted);
  font-size: 10px;
  font-weight: 900;
  white-space: nowrap;
}

.indicator-tags .available {
  background: var(--soft-green);
  color: var(--green);
}

.indicator-tags .partial {
  background: var(--soft-amber);
  color: var(--amber);
}

.indicator-tags .needed {
  background: var(--soft-red);
  color: var(--red);
}

.benchmark-gap-list {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 12px;
}

.benchmark-gap-list article {
  padding: 12px;
  border: 1px solid var(--line);
  border-left: 4px solid var(--teal);
  border-radius: 8px;
  background: #fbfcfd;
}

.benchmark-gap-list article.high {
  border-left-color: var(--red);
}

.benchmark-gap-list div {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 6px;
}

.benchmark-gap-list strong {
  font-size: 13px;
}

.benchmark-gap-list span {
  flex: 0 0 auto;
  color: var(--red);
  font-size: 11px;
  font-weight: 800;
}

.benchmark-gap-list p,
.recommendation-grid p {
  color: var(--muted);
  font-size: 12px;
  line-height: 1.6;
}

.benchmark-summary-grid {
  display: grid;
  grid-template-columns: repeat(5, minmax(140px, 1fr));
  gap: 10px;
  margin-bottom: 14px;
}

.benchmark-summary-grid article {
  min-height: 112px;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfcfd;
}

.benchmark-summary-grid span {
  display: block;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.benchmark-summary-grid strong {
  display: block;
  margin: 8px 0 6px;
  color: var(--ink);
  font-size: 21px;
  line-height: 1.15;
}

.benchmark-summary-grid small {
  color: var(--muted);
  font-size: 11px;
  line-height: 1.4;
}

.benchmark-seed-body {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 280px;
  gap: 14px;
  align-items: start;
}

.benchmark-delta-grid {
  display: grid;
  grid-template-columns: repeat(5, minmax(160px, 1fr));
  gap: 10px;
  margin: 0 0 14px;
}

.benchmark-delta-grid article {
  min-height: 106px;
  padding: 12px;
  border: 1px solid var(--line);
  border-left: 4px solid var(--line);
  border-radius: 8px;
  background: #fbfcfd;
}

.benchmark-delta-grid article.negative {
  border-left-color: var(--red);
  background: #fff8f7;
}

.benchmark-delta-grid article.positive {
  border-left-color: var(--green);
  background: #f7fbf9;
}

.benchmark-delta-grid span {
  display: block;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.benchmark-delta-grid strong {
  display: block;
  margin: 8px 0 6px;
  font-size: 21px;
  line-height: 1.15;
}

.benchmark-delta-grid article.negative strong,
.benchmark-comparison-table .negative {
  color: var(--red);
}

.benchmark-delta-grid article.positive strong,
.benchmark-comparison-table .positive {
  color: var(--green);
}

.benchmark-delta-grid small {
  color: var(--muted);
  font-size: 11px;
  line-height: 1.4;
}

.benchmark-seed-body .compact {
  margin: 0;
}

.benchmark-seed-body aside {
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #f8fafc;
}

.benchmark-seed-body aside strong {
  display: block;
  margin-bottom: 8px;
  font-size: 13px;
}

.benchmark-seed-body aside ul {
  margin-bottom: 10px;
}

.benchmark-seed-body aside p {
  margin: 0;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.5;
}

.benchmark-insight {
  margin-top: 12px;
  padding: 12px 14px;
  border: 1px solid var(--line);
  border-left: 4px solid var(--blue);
  border-radius: 8px;
  background: #f7fafc;
}

.benchmark-insight strong {
  display: block;
  margin-bottom: 6px;
  font-size: 13px;
}

.benchmark-insight p {
  margin: 0;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.7;
}

.staffing-kpi-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(120px, 1fr));
  gap: 10px;
  margin-bottom: 12px;
}

.staffing-kpi-grid div {
  padding: 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfcfd;
}

.staffing-kpi-grid span,
.staffing-kpi-grid small {
  display: block;
  color: var(--muted);
  font-size: 11px;
  font-weight: 700;
}

.staffing-kpi-grid strong {
  display: block;
  margin-top: 6px;
  font-size: 18px;
  line-height: 1.2;
}

.municipality-comparison-panel {
  display: grid;
  gap: 16px;
}

.municipality-hero {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  padding: 18px;
  border: 1px solid var(--line);
  border-left: 6px solid var(--blue);
  border-radius: 8px;
  background: var(--paper);
  box-shadow: var(--shadow);
}

.municipality-hero span {
  color: var(--blue);
  font-size: 12px;
  font-weight: 800;
}

.municipality-hero h2 {
  margin-top: 4px;
  font-size: 22px;
}

.municipality-hero p {
  max-width: 780px;
  margin-top: 8px;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.7;
}

.municipality-hero a {
  flex: 0 0 auto;
  padding: 8px 12px;
  border: 1px solid var(--line);
  border-radius: 6px;
  color: var(--blue);
  font-size: 12px;
  font-weight: 800;
  text-decoration: none;
}

.municipality-source-links {
  display: flex;
  flex: 0 0 auto;
  flex-wrap: wrap;
  justify-content: flex-end;
  max-width: 320px;
  gap: 6px;
}

.municipality-source-links a {
  padding: 6px 9px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: #fbfcfd;
  color: var(--blue);
  font-size: 11px;
  font-weight: 800;
  text-decoration: none;
}

.municipality-control-panel {
  display: grid;
  gap: 12px;
}

.municipality-controls {
  display: grid;
  grid-template-columns: repeat(4, minmax(160px, 1fr));
  gap: 10px;
}

.municipality-controls label {
  display: grid;
  gap: 6px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.municipality-controls select,
.municipality-controls input {
  width: 100%;
  min-height: 38px;
  padding: 8px 10px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: white;
  color: var(--ink);
  font: inherit;
  font-weight: 700;
}

.municipality-summary-strip {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
}

.municipality-summary-strip article {
  min-height: 96px;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfcfd;
}

.municipality-summary-strip span,
.municipality-summary-strip small {
  display: block;
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
}

.municipality-summary-strip strong {
  display: block;
  margin: 8px 0 6px;
  font-size: 18px;
  line-height: 1.25;
}

.municipality-card-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
}

.municipality-card-grid article {
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--paper);
  box-shadow: var(--shadow);
}

.municipality-card-grid article.home {
  border-left: 5px solid var(--blue);
}

.municipality-card-grid span {
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
}

.municipality-card-grid h3 {
  margin: 4px 0 12px;
  font-size: 18px;
}

.municipality-card-grid dl {
  display: grid;
  gap: 8px;
  margin: 0;
}

.municipality-card-grid div {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  padding-bottom: 6px;
  border-bottom: 1px solid #edf1f5;
}

.municipality-card-grid dt {
  color: var(--muted);
  font-size: 12px;
}

.municipality-card-grid dd {
  margin: 0;
  font-size: 13px;
  font-weight: 800;
}

.municipality-scatter {
  position: relative;
  min-height: 340px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background:
    linear-gradient(135deg, rgba(22, 128, 93, 0.06) 0 50%, transparent 50%),
    linear-gradient(#edf1f5 1px, transparent 1px),
    linear-gradient(90deg, #edf1f5 1px, transparent 1px),
    #fbfcfd;
  background-size: 25% 25%;
}

.municipality-scatter .axis {
  position: absolute;
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
}

.municipality-scatter .axis.x {
  right: 12px;
  bottom: 10px;
}

.municipality-scatter .axis.y {
  left: 12px;
  top: 10px;
}

.municipality-scatter button {
  position: absolute;
  transform: translate(-50%, -50%);
  display: grid;
  place-items: center;
  width: 13px;
  height: 13px;
  min-width: 0;
  padding: 0;
  border: 2px solid white;
  border-radius: 50%;
  background: white;
  background-color: #738196;
  color: transparent;
  box-shadow: 0 4px 14px rgba(15, 39, 66, 0.18);
  cursor: pointer;
}

.municipality-scatter button span {
  position: absolute;
  left: 50%;
  top: calc(100% + 5px);
  display: none;
  transform: translateX(-50%);
  min-width: max-content;
  padding: 4px 7px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: white;
  color: var(--ink);
  font-size: 11px;
  font-weight: 850;
  white-space: nowrap;
  box-shadow: var(--shadow);
}

.municipality-scatter button:hover,
.municipality-scatter button:focus-visible {
  z-index: 6;
  background-color: var(--blue);
}

.municipality-scatter button:hover span,
.municipality-scatter button:focus-visible span {
  display: block;
}

.municipality-scatter button.home {
  z-index: 7;
  display: block;
  width: auto;
  height: auto;
  min-width: 86px;
  padding: 8px 12px;
  border-color: var(--blue);
  border-radius: 999px;
  background: var(--blue);
  color: white;
  font-size: 13px;
  font-weight: 900;
}

.municipality-scatter button.home span {
  position: static;
  display: inline;
  transform: none;
  min-width: 0;
  padding: 0;
  border: 0;
  background: transparent;
  color: inherit;
  box-shadow: none;
}

.avg-line {
  position: absolute;
  z-index: 2;
  color: var(--blue);
  pointer-events: none;
}

.avg-line.vertical {
  top: 0;
  bottom: 0;
  width: 0;
  border-left: 2px dashed rgba(15, 39, 66, 0.35);
}

.avg-line.horizontal {
  left: 0;
  right: 0;
  height: 0;
  border-top: 2px dashed rgba(15, 39, 66, 0.35);
}

.avg-line b {
  position: absolute;
  padding: 3px 7px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.92);
  color: var(--blue);
  font-size: 11px;
  white-space: nowrap;
}

.avg-line.vertical b {
  left: 6px;
  top: 10px;
}

.avg-line.horizontal b {
  right: 10px;
  top: 6px;
}

.scatter-position-summary {
  display: grid;
  grid-template-columns: minmax(0, 1.35fr) minmax(280px, 0.65fr);
  gap: 10px;
  margin-bottom: 12px;
}

.scatter-position-summary article {
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfcfd;
}

.scatter-position-summary span,
.scatter-position-summary small {
  display: block;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.scatter-position-summary strong {
  display: block;
  margin: 5px 0;
  color: var(--blue);
  font-size: 17px;
  line-height: 1.45;
}

.municipality-rank-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
}

.municipality-rank-grid article {
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--paper);
  box-shadow: var(--shadow);
}

.municipality-rank-grid h3 {
  margin: 0 0 10px;
  font-size: 15px;
}

.rank-uto-position {
  display: grid;
  gap: 4px;
  margin-bottom: 10px;
  padding: 10px;
  border: 1px solid rgba(15, 39, 66, 0.16);
  border-left: 4px solid var(--blue);
  border-radius: 8px;
  background: #f8fafc;
}

.rank-uto-position span,
.rank-uto-position small {
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
  line-height: 1.55;
}

.rank-uto-position strong {
  color: var(--blue);
  font-size: 18px;
  line-height: 1.25;
}

.rank-meaning {
  display: grid;
  gap: 6px;
  margin-bottom: 10px;
}

.rank-meaning p {
  display: grid;
  grid-template-columns: 52px 1fr;
  gap: 8px;
  margin: 0;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.55;
}

.rank-meaning b {
  display: inline-grid;
  place-items: center;
  height: fit-content;
  padding: 2px 6px;
  border-radius: 999px;
  background: #eef1f4;
  color: var(--blue);
  font-size: 11px;
}

.municipality-rank-grid ol {
  display: grid;
  gap: 8px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.municipality-rank-grid li {
  display: grid;
  grid-template-columns: minmax(80px, 1fr) 64px minmax(86px, auto);
  align-items: center;
  gap: 8px;
  padding: 8px;
  border-radius: 6px;
  background: #fbfcfd;
}

.municipality-rank-grid span {
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
}

.municipality-rank-grid em {
  color: var(--red);
  font-style: normal;
  font-weight: 900;
  text-align: right;
}

.municipality-comparison-table .negative {
  color: var(--red);
  font-weight: 800;
}

.municipality-comparison-table .positive {
  color: var(--green);
  font-weight: 800;
}

.municipality-comparison-table {
  min-width: 1780px;
}

.municipality-comparison-table thead tr:first-child th {
  text-align: center;
}

.municipality-comparison-table thead tr:nth-child(2) th {
  font-size: 12px;
  color: var(--muted);
}

.recommendation-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
}

.recommendation-grid article {
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfcfd;
}

.recommendation-grid span {
  display: inline-block;
  margin-bottom: 8px;
  padding: 3px 8px;
  border-radius: 4px;
  background: var(--soft-red);
  color: var(--red);
  font-size: 11px;
  font-weight: 800;
}

.recommendation-grid strong {
  display: block;
  margin-bottom: 6px;
  font-size: 13px;
}

@media (max-width: 980px) {
  .regional-economy-ordinance,
  .regional-economy-next-movement-head,
  .regional-economy-policy-research,
  .regional-economy-amendment > header {
    align-items: flex-start;
    flex-direction: column;
    gap: 12px;
  }

  .regional-economy-next-movement ol {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .regional-economy-implementation > div {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .regional-economy-amendment-grid,
  .regional-economy-draft-clauses {
    grid-template-columns: 1fr;
  }

  .regional-economy-governance-draft > div {
    grid-template-columns: 1fr;
  }

  .regional-economy-governance-draft > div > i {
    transform: rotate(90deg);
    text-align: center;
  }

  .council-grid {
    grid-template-columns: 1fr;
  }

  .staff-grid {
    grid-template-columns: 1fr;
  }

  .strategy-hero {
    align-items: stretch;
    flex-direction: column;
  }

  .strategy-metrics,
  .strategy-grid,
  .uto-os-hero,
  .uto-os-grid.four,
  .uto-os-grid.three,
  .uto-os-grid.two,
  .uto-os-quality-grid,
  .uto-os-chart-grid,
  .asset-decision-board,
  .indicator-summary-grid,
  .indicator-progress-grid,
  .indicator-ops-grid,
  .indicator-next-actions ol,
  .indicator-gap-summary,
  .indicator-acquisition-grid,
  .acquisition-roadmap-summary,
  .acquisition-roadmap-list,
  .indicator-category-grid,
  .demographics-summary-grid,
  .demographics-body-grid,
  .tax-capacity-summary-grid,
  .tax-capacity-body-grid,
  .administrative-efficiency-summary-grid,
  .administrative-efficiency-body-grid,
  .welfare-summary-grid,
  .welfare-body-grid,
  .childcare-summary-grid,
  .childcare-body-grid,
  .infrastructure-summary-grid,
  .infrastructure-body-grid,
  .utility-risk-grid,
  .utility-decision-list,
  .utility-operating-summary,
  .facility-ledger-summary-grid,
  .facility-ledger-body-grid,
  .facility-ledger-rubric,
  .facility-ledger-full-list,
  .debt-breakdown-summary-grid,
  .debt-breakdown-body-grid,
  .regional-economy-summary-grid,
  .regional-economy-body-grid,
  .dx-admin-summary-grid,
  .dx-admin-body-grid,
  .ai-question-summary-grid,
  .ai-question-body-grid,
  .policy-planning-summary-grid,
  .policy-planning-body-grid,
  .ranking-analysis-summary-grid,
  .ranking-analysis-body-grid,
  .comparison-matrix-summary-grid,
  .sustainability-summary-grid,
  .sustainability-body-grid,
  .action-board-summary-grid,
  .action-board-lanes,
  .council-briefing-summary-grid,
  .council-briefing-list,
  .brief-columns,
  .meeting-agenda-summary-grid,
  .meeting-agenda-list,
  .meeting-needed-actions-grid,
  .policy-kpi-summary-grid,
  .policy-kpi-list,
  .benchmark-summary-grid,
  .benchmark-delta-grid,
  .benchmark-seed-body,
  .staffing-kpi-grid,
  .municipality-controls,
  .municipality-summary-strip,
  .municipality-card-grid,
  .municipality-rank-grid,
  .scatter-position-summary,
  .refresh-status-grid,
  .data-gap-action-strip,
  .pipeline-step-list,
  .official-source-grid,
  .recommendation-grid {
    grid-template-columns: 1fr;
  }

  .utility-investment-list li {
    grid-template-columns: 1fr;
  }

  .utility-investment-list small {
    text-align: left;
  }

  .utility-operating-bars div {
    grid-template-columns: 42px minmax(90px, 1fr) 82px;
  }

  .utility-operating-bars small {
    grid-column: 2 / -1;
  }

  .utility-rate-scenario-list div {
    grid-template-columns: 72px minmax(90px, 1fr) 58px;
  }

  .utility-rate-scenario-list small {
    grid-column: 2 / -1;
  }

  .municipality-hero {
    align-items: stretch;
    flex-direction: column;
  }

  .uto-os-hero {
    align-items: stretch;
    flex-direction: column;
  }

  .data-sources-details {
    grid-template-columns: repeat(2, 1fr);
  }

  .data-sources-table {
    font-size: 12px;
  }

  .data-sources-table th,
  .data-sources-table td {
    padding: 8px 4px;
  }
}

@media (max-width: 640px) {
  .primary-nav > button,
  .more-views summary {
    min-width: calc(50% - 4px);
  }

  .data-sources-details {
    grid-template-columns: 1fr;
  }

  .data-sources-table .source-desc {
    display: none;
  }

  .source-header {
    flex-direction: column;
    align-items: flex-start;
  }

  .official-source-head,
  .official-source-card dl div,
  .infrastructure-source-list div {
    grid-template-columns: 1fr;
  }

  .official-source-head {
    display: grid;
  }

  .source-status {
    align-self: flex-start;
  }

  .indicator-row {
    grid-template-columns: 1fr;
  }

  .indicator-tags {
    justify-content: flex-start;
  }
}

.os-dashboard {
  display: grid;
  gap: 16px;
  margin-bottom: 18px;
}

.policy-os-welcome,
.daily-policy-board {
  padding: clamp(20px, 3vw, 32px);
  border: 1px solid var(--line);
  border-radius: 14px;
  background: var(--paper);
  box-shadow: var(--shadow);
}

@keyframes skeleton {
  0% { background-position: 0 0; }
  100% { background-position: -200% 0; }
}

.os-hero-grid,
.risk-command-grid,
.os-chart-grid,
.future-grid,
.facility-command-grid,
.council-command-grid,
.comparison-command-grid {
  display: grid;
  gap: 12px;
}

.os-card,
.os-panel-card,
.os-chart-card {
  min-width: 0;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--paper);
  box-shadow: var(--shadow);
}

.os-card {
  padding: 18px;
}

.os-panel-card,
.os-chart-card {
  padding: 16px;
}

.os-card-head,
.os-chart-head,
.os-section-head {
  display: flex;
  justify-content: space-between;
  gap: 14px;
  align-items: flex-start;
  margin-bottom: 14px;
}

.os-card-head span,
.os-chart-head span,
.os-section-head span,
.os-mini-label {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.os-card h2,
.os-card h3,
.os-chart-head h3,
.os-section-head h2 {
  margin: 0;
  font-size: 17px;
}

.status-good,
.risk-safe {
  background: var(--soft-green);
  color: var(--green);
}

.status-warn,
.risk-watch {
  background: var(--soft-amber);
  color: var(--amber);
}

.status-bad,
.risk-danger {
  background: var(--soft-red);
  color: var(--red);
}

.status-neutral,
.risk-reference {
  background: #eef1f4;
  color: var(--muted);
}

.score-context article,
.score-context button,
.risk-pill,
.future-event,
.facility-chip,
.question-chain article {
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfcfd;
}

.score-context article,
.score-context button {
  padding: 10px;
}

.score-context strong,
.score-context button strong,
.facility-command-grid strong,
.future-grid strong {
  display: block;
  margin-top: 4px;
  font-size: 18px;
}

.risk-list {
  display: grid;
  gap: 9px;
}

.risk-pill {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  gap: 6px 12px;
  align-items: start;
  padding: 12px;
}

.risk-dot {
  width: 9px;
  height: 9px;
  margin-top: 7px;
  border-radius: 50%;
  background: currentColor;
}

.risk-pill strong,
.risk-pill small {
  overflow-wrap: anywhere;
}

.risk-pill strong {
  grid-column: 2;
  justify-self: start;
  margin: 0;
  color: inherit;
  font-size: 15px;
  line-height: 1.45;
  text-align: left;
}

.risk-pill > span {
  grid-column: 3;
  justify-self: end;
  min-width: 48px;
  color: inherit;
  font-weight: 900;
  line-height: 1.45;
  text-align: right;
}

.risk-pill small {
  grid-column: 2 / 4;
  color: var(--muted);
  line-height: 1.45;
}

.risk-command-grid {
  grid-template-columns: repeat(5, minmax(0, 1fr));
}

.money-flow-story span,
.money-flow-story strong {
  display: block;
}

.money-flow-story p,
.household-panel p {
  margin-top: 12px;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.65;
}

.household-grid {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 9px;
}

.household-grid article {
  padding: 14px;
  border-radius: 9px;
  background: var(--surface-subtle);
}

.household-grid span,
.household-grid strong,
.household-grid small {
  display: block;
}

.household-grid span,
.household-grid small {
  color: var(--muted);
  font-size: 11px;
}

.household-grid strong {
  margin: 7px 0;
  font-size: 19px;
}

.policy-alerts {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
  margin-bottom: 18px;
}

.policy-alert {
  display: grid;
  gap: 7px;
  min-height: 150px;
  padding: 16px;
  border-width: 1px 1px 1px 5px;
  text-align: left;
  cursor: pointer;
}

.policy-alert.danger { border-left-color: var(--red); }
.policy-alert.watch { border-left-color: var(--amber); }

.policy-alert span,
.policy-alert small {
  color: var(--muted);
  font-size: 11px;
}

.policy-alert strong {
  font-size: 16px;
}

.policy-alert small {
  line-height: 1.55;
}

.council-theme-tabs {
  display: flex;
  gap: 8px;
  margin-bottom: 14px;
  padding-bottom: 5px;
  overflow-x: auto;
}

.council-theme-tabs button {
  flex: 0 0 auto;
  padding: 0 14px;
  cursor: pointer;
  font-size: 12px;
  font-weight: 800;
}

.council-theme-tabs button.active {
  border-color: var(--blue);
  background: var(--blue);
  color: var(--paper);
}

.council-focus-banner {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  align-items: center;
  margin: 14px 0;
  padding: 16px;
  border: 1px solid color-mix(in srgb, var(--blue) 42%, var(--line));
  border-left: 5px solid var(--blue);
  border-radius: 14px;
  background: color-mix(in srgb, var(--blue) 7%, var(--paper));
}

.council-focus-banner span,
.council-focus-banner strong,
.council-focus-banner small {
  display: block;
}

.council-focus-banner span {
  color: var(--blue);
  font-size: 10px;
  font-weight: 900;
  letter-spacing: .08em;
}

.council-focus-banner strong {
  margin-top: 4px;
  font-size: 16px;
}

.council-focus-banner small {
  margin-top: 4px;
  color: var(--muted);
  line-height: 1.5;
}

.council-focus-banner nav {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 8px;
  flex: 0 0 auto;
}

.council-focus-banner button {
  flex: 0 0 auto;
  padding: 10px 13px;
  border: 0;
  border-radius: 9px;
  color: #fff;
  background: var(--blue);
  font-weight: 900;
  cursor: pointer;
}

.council-focus-banner button:last-child {
  color: var(--blue);
  background: var(--soft-blue);
}

.question-workbench {
  display: grid;
  gap: 14px;
  margin-bottom: 18px;
  padding: clamp(18px, 2vw, 24px);
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--paper);
  box-shadow: var(--shadow);
}

.question-workbench-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 18px;
}

.question-workbench-head span,
.question-workbench-grid span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.question-workbench-head h3 {
  margin: 4px 0 0;
  font-size: 22px;
}

.question-workbench-head > strong {
  color: var(--green);
  font-size: 13px;
}

.question-workbench-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
}

.question-workbench-grid article {
  padding: 16px;
  border-radius: 9px;
  background: var(--surface-subtle);
}

.question-workbench-grid p {
  margin-top: 8px;
  font-size: 13px;
  line-height: 1.75;
}

.question-evidence {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}

.question-evidence > div {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
}

.question-evidence strong {
  width: 100%;
  font-size: 12px;
}

.question-evidence span {
  padding: 5px 8px;
  border-radius: 999px;
  background: var(--soft-blue);
  color: var(--blue);
  font-size: 11px;
  font-weight: 800;
}

.council-archive {
  display: grid;
  gap: 14px;
  margin-top: 18px;
  padding: clamp(18px, 2vw, 24px);
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--paper);
  box-shadow: var(--shadow);
}

.council-archive-search input {
  width: 100%;
  min-width: 0;
}

.council-archive-results {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
}

.council-archive-results article {
  display: grid;
  align-content: start;
  min-height: 190px;
  padding: 15px;
  border: 1px solid var(--line);
  border-radius: 9px;
  background: var(--surface-subtle);
}

.council-archive-results article > div {
  display: flex;
  justify-content: space-between;
  gap: 8px;
  color: var(--muted);
  font-size: 10px;
  font-weight: 800;
}

.archive-type {
  padding: 3px 6px;
  border-radius: 999px;
  background: var(--soft-blue);
  color: var(--blue);
}

.council-archive-results h3 {
  margin: 10px 0 7px;
  font-size: 14px;
}

.council-archive-results p {
  display: -webkit-box;
  overflow: hidden;
  margin: 0;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.6;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 5;
}

.council-archive-results small {
  align-self: end;
  margin-top: 10px;
  color: var(--muted);
  font-size: 10px;
}

.future-event p,
.os-chart-meta,
.chart-source,
.question-chain p,
.facility-chip small {
  color: var(--muted);
  font-size: 12px;
  line-height: 1.55;
}

.os-chart-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.os-chart-grid.three {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.trend-metric-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
  margin-bottom: 22px;
}

.trend-metric-card {
  display: grid;
  min-width: 0;
  padding: 16px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--paper);
  box-shadow: var(--shadow);
}

.trend-metric-head {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: flex-start;
}

.trend-metric-head span {
  color: var(--muted);
  font-size: 10px;
  font-weight: 800;
}

.trend-metric-head h3 {
  margin: 3px 0 0;
  font-size: 14px;
}

.trend-metric-head > strong {
  font-size: 20px;
  white-space: nowrap;
}

.trend-metric-deltas {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
  margin-top: 10px;
}

.trend-metric-deltas span {
  padding: 3px 6px;
  border-radius: 999px;
  background: var(--surface-subtle);
  color: var(--muted);
  font-size: 9px;
  font-weight: 800;
}

.trend-metric-deltas .good { background: var(--soft-green); color: var(--green); }
.trend-metric-deltas .bad { background: var(--soft-red); color: var(--red); }

.trend-mini-chart {
  height: 115px;
  margin: 8px -5px 0;
  overflow: hidden;
}

.trend-mini-chart svg {
  width: 100%;
  height: 115px;
}

.trend-mini-chart .chart-label,
.trend-mini-chart .chart-value {
  font-size: 8px;
}

.trend-metric-card > p {
  margin-top: 8px;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.55;
}

.expense-change-list {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
  margin-top: 8px;
}

.expense-change-list span {
  padding: 5px 8px;
  border-radius: 999px;
  background: var(--surface-subtle);
  color: var(--muted);
  font-size: 10px;
}

.expense-change-list b {
  margin-right: 5px;
  color: var(--ink);
}

.os-chart {
  width: 100%;
  height: 230px;
}

.os-chart svg {
  display: block;
  width: 100%;
  height: 100%;
}

.axis-line {
  stroke: #ccd4dd;
  stroke-width: 1;
}

.grid-line {
  stroke: #e8edf2;
  stroke-width: 1;
}

.series-uto {
  fill: none;
  stroke: var(--blue);
  stroke-width: 3;
}

.series-peer {
  fill: none;
  stroke: #94a3b8;
  stroke-width: 2;
  stroke-dasharray: 5 5;
}

.series-projection {
  fill: none;
  stroke: var(--blue);
  stroke-width: 2.4;
  stroke-dasharray: 6 6;
}

.series-pref {
  fill: none;
  stroke: var(--teal);
  stroke-width: 2;
}

.chart-label {
  fill: var(--muted);
  font-size: 11px;
}

.chart-value {
  fill: var(--ink);
  font-size: 12px;
  font-weight: 800;
}

.chart-source {
  margin-top: 10px;
}

.fund-breakdown-list {
  display: grid;
  gap: 10px;
  min-height: 230px;
}

.fund-breakdown-row {
  display: grid;
  gap: 6px;
}

.fund-breakdown-row div {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  color: var(--ink);
  font-size: 12px;
  font-weight: 900;
}

.fund-breakdown-row span {
  color: var(--muted);
  white-space: nowrap;
}

.fund-breakdown-row i {
  display: block;
  height: 8px;
  min-width: 12px;
  border-radius: 999px;
  background: linear-gradient(90deg, var(--blue), var(--teal));
}

.legend-row {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 8px;
}

.legend-row span {
  display: inline-flex;
  gap: 6px;
  align-items: center;
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
}

.legend-row i {
  width: 16px;
  height: 3px;
  border-radius: 999px;
  background: #2563a9;
}

.legend-row .pref i { background: #0d9488; }
.legend-row .peer i { background: #94a3b8; }
.legend-row .projection i {
  background: repeating-linear-gradient(90deg, #2563a9 0 6px, transparent 6px 10px);
}

.simulation-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
  margin-bottom: 20px;
}

.simulation-card {
  padding: 18px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--paper);
  box-shadow: var(--shadow);
}

.simulation-year {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  padding-bottom: 12px;
  border-bottom: 1px solid var(--line);
}

.simulation-year span {
  color: var(--blue);
  font-size: 26px;
  font-weight: 900;
}

.simulation-year strong {
  font-size: 18px;
}

.simulation-card dl {
  display: grid;
  gap: 8px;
  margin: 14px 0 0;
}

.simulation-card dl div {
  display: flex;
  justify-content: space-between;
  gap: 12px;
}

.simulation-card dt {
  color: var(--muted);
  font-size: 12px;
}

.simulation-card dd {
  margin: 0;
  font-size: 13px;
  font-weight: 900;
}

.waterfall-item rect { fill: var(--blue); }
.waterfall-item.positive rect { fill: var(--green); }
.waterfall-item.negative rect { fill: var(--red); }
.waterfall-connector {
  stroke: var(--muted);
  stroke-width: 1;
  stroke-dasharray: 3 3;
}

.sunburst-layout {
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) minmax(150px, .65fr);
  align-items: center;
  min-height: 300px;
}

.sunburst-layout svg {
  width: 100%;
  height: 300px;
}

.sunburst-segment {
  cursor: help;
  transition: opacity .16s ease, filter .16s ease;
}

.sunburst-layout:has(.sunburst-segment:hover) .sunburst-segment:not(:hover) {
  opacity: .35;
}

.sunburst-segment:hover {
  filter: brightness(1.12);
}

.sunburst-core {
  fill: var(--paper);
  stroke: var(--line);
  stroke-width: 1;
}

.sunburst-total {
  fill: var(--ink);
  font-size: 20px;
  font-weight: 900;
}

.sunburst-legend {
  display: grid;
  gap: 8px;
}

.sunburst-legend div {
  display: grid;
  grid-template-columns: 9px minmax(0, 1fr) auto;
  gap: 7px;
  align-items: center;
  font-size: 11px;
}

.sunburst-legend i {
  width: 9px;
  height: 9px;
  border-radius: 3px;
}

.sunburst-legend span {
  overflow: hidden;
  color: var(--muted);
  text-overflow: ellipsis;
  white-space: nowrap;
}

.population-area-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 8px;
}

.population-area-legend span {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.population-area-legend i {
  width: 16px;
  height: 8px;
  border-radius: 3px;
}

.population-area-legend .young i { background: #b7791f; }
.population-area-legend .working i { background: #2563a9; }
.population-area-legend .senior i { background: #c2413b; }

.municipality-bubble {
  min-height: 390px;
}

.municipality-bubble svg {
  display: block;
  width: 100%;
  height: 390px;
}

.bubble-node circle {
  fill: rgba(148, 163, 184, .28);
  stroke: #64748b;
  stroke-width: 1.5;
}

.bubble-node text {
  fill: var(--ink);
  font-size: 9px;
  font-weight: 800;
  pointer-events: none;
}

.bubble-node.home circle {
  fill: rgba(37, 99, 235, .45);
  stroke: #2563eb;
  stroke-width: 4;
}

.bubble-node.home text {
  fill: var(--ink);
  font-size: 11px;
  font-weight: 950;
}

.facility-heatmap-card {
  margin-top: 18px;
}

.facility-rank-main span,
.facility-rank-main small,
.facility-rank-meta small {
  color: var(--muted);
  font-size: 11px;
}

.renewal-heatmap {
  display: grid;
  grid-template-columns: minmax(100px, 1.1fr) repeat(5, minmax(105px, 1fr));
  gap: 7px;
  overflow-x: auto;
}

.heatmap-corner,
.heatmap-year,
.heatmap-label,
.heatmap-cell {
  min-width: 100px;
  padding: 12px;
  border-radius: 7px;
}

.heatmap-corner,
.heatmap-year {
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
}

.heatmap-year {
  text-align: center;
}

.heatmap-label {
  display: grid;
  align-items: center;
  background: var(--surface-subtle);
  color: var(--ink);
  font-size: 13px;
  font-weight: 900;
}

.heatmap-cell {
  display: grid;
  place-items: center;
  min-height: 76px;
  background: color-mix(in srgb, var(--red) calc(var(--heat) * 82%), var(--soft-green));
  color: var(--ink);
  text-align: center;
}

.heatmap-cell strong,
.heatmap-cell span {
  display: block;
}

.heatmap-cell strong {
  font-size: 14px;
}

.heatmap-cell span {
  margin-top: 4px;
  font-size: 11px;
  font-weight: 800;
}

.facility-map {
  height: 360px;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #eef1f4;
}

.facility-map-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 14px;
  margin-top: 10px;
  color: var(--muted);
  font-size: 11px;
}

.facility-map-legend span {
  display: inline-flex;
  gap: 6px;
  align-items: center;
}

.facility-map-legend i,
.facility-map-legend b {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: var(--green);
}

.facility-map-legend i.high { background: #c4362e; }
.facility-map-legend i.middle { background: #b7791f; }
.facility-map-legend i.low { background: #16805d; }
.facility-map-legend b {
  width: 15px;
  height: 15px;
  border: 2px solid var(--brand);
  background: transparent;
}

.facility-location-audit strong,
.facility-location-audit span,
.facility-address-list strong,
.facility-address-list span,
.facility-address-list small {
  display: block;
}

.facility-command-grid {
  grid-template-columns: repeat(6, minmax(0, 1fr));
}

.facility-chip {
  padding: 12px;
}

.question-chain {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
}

.question-chain article {
  padding: 12px;
  border-top: 4px solid var(--blue);
}

.question-chain article:nth-child(2) { border-top-color: var(--amber); }
.question-chain article:nth-child(3) { border-top-color: var(--red); }
.question-chain article:nth-child(4) { border-top-color: var(--green); }

.os-empty,
.os-error,
.os-success {
  padding: 16px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--paper);
}

.os-success {
  border-color: rgba(22, 128, 93, 0.35);
  background: var(--soft-green);
}

button:focus-visible,
select:focus-visible,
input:focus-visible,
summary:focus-visible {
  outline: 3px solid rgba(15, 39, 66, 0.25);
  outline-offset: 2px;
}

@media (max-width: 980px) {
  .os-hero-grid,
  .os-chart-grid,
  .os-chart-grid.three,
  .risk-command-grid,
  .facility-command-grid,
  .question-chain,
    .skeleton-shell {
    grid-template-columns: 1fr;
  }

  .simulation-grid {
    grid-template-columns: 1fr;
  }

  .money-flow-story,
  .policy-alerts,
  .question-workbench-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .household-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .council-archive-results {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .municipality-radar-layout {
    grid-template-columns: 1fr;
  }

  .trend-metric-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .role-entry-grid,
  .daily-policy-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .os-chart {
    height: 260px;
  }
}

@media (max-width: 640px) {
  .loading-card {
    grid-template-columns: 1fr;
  }

  .loading-spinner {
    width: 36px;
    height: 36px;
  }

  .toolbar {
    position: static;
    grid-template-columns: 1fr;
  }

  select,
  input {
    width: 100%;
    min-width: 0;
  }

  .data-sources {
    justify-self: start;
  }

  .risk-pill {
    grid-template-columns: auto 1fr;
  }

  .risk-pill > span {
    grid-column: 2;
    justify-self: start;
    text-align: left;
  }

  .risk-pill small {
    grid-column: 2;
  }

  .facility-map {
    height: 300px;
  }

  .municipality-bubble,
  .municipality-bubble svg {
    min-height: 300px;
    height: 300px;
  }

  .money-flow-story,
  .policy-alerts,
  .question-workbench-grid,
  .question-evidence,
  .household-grid {
    grid-template-columns: 1fr;
  }

  .question-workbench-head {
    flex-direction: column;
  }

  .council-focus-banner {
    align-items: flex-start;
    flex-direction: column;
  }

  .council-focus-banner nav {
    justify-content: flex-start;
  }

  .sunburst-layout {
    grid-template-columns: 1fr;
  }

  .sunburst-layout svg {
    height: 250px;
  }

  .sunburst-legend {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .council-archive-results {
    grid-template-columns: 1fr;
  }

  .trend-metric-grid {
    grid-template-columns: 1fr;
  }

  .role-entry-grid,
  .daily-policy-grid {
    grid-template-columns: 1fr;
  }

  .role-entry-grid button,
  .daily-policy-grid button {
    min-height: 0;
  }
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    scroll-behavior: auto !important;
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
  }
}

/* Readability refresh: give dense municipal data room to breathe. */
:root {
  --page-gutter: clamp(22px, 4vw, 64px);
  --section-gap: 24px;
  --card-pad: clamp(20px, 2vw, 28px);
}

body {
  font-size: 15px;
  line-height: 1.65;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

.topbar {
  align-items: center;
  gap: 32px;
  padding: 30px var(--page-gutter) 22px;
}

.eyebrow {
  margin-bottom: 6px;
  font-size: 14px;
  letter-spacing: 0;
}

h1 {
  font-size: clamp(28px, 3vw, 42px);
  line-height: 1.18;
}

h2 {
  font-size: clamp(20px, 1.7vw, 24px);
  line-height: 1.35;
}

h3 {
  line-height: 1.4;
}

main {
  padding: 28px var(--page-gutter) 64px;
}

.source-note {
  max-width: 680px;
  font-size: 13px;
  line-height: 1.75;
}

.toolbar {
  grid-template-columns: minmax(180px, auto) minmax(210px, auto) minmax(320px, 1fr);
  gap: 16px 18px;
  margin: -28px calc(var(--page-gutter) * -1) 26px;
  padding: 16px var(--page-gutter) 18px;
}

label {
  gap: 7px;
  font-size: 13px;
}

select,
input,
button {
  min-height: 44px;
  font-size: 15px;
}

select {
  min-width: 190px;
  padding-inline: 14px 38px;
}

input {
  min-width: min(460px, 72vw);
  padding-inline: 14px;
}

.segmented {
  gap: 4px;
  min-height: 44px;
  padding: 4px;
}

.segmented button,
.more-views summary {
  min-height: 36px;
  padding-inline: 14px;
  font-size: 14px;
}

.primary-nav > button,
.more-views summary {
  min-width: 92px;
}

.data-sources {
  gap: 18px;
}

.data-sources label {
  font-size: 14px;
}

.app-loading,
.os-dashboard,
.focus-panel,
.smart-search-panel,
.kpis,
.dashboard,
.graph-board,
.insights,
.analysis-panel,
.detail-grid,
.source-panel,
.raw-panel,
#pdfTablePanel,
.comparison-panel,
.detailed-analysis-panel,
.statistics-panel,
.export-panel {
  margin-bottom: var(--section-gap);
}

.kpis,
.dashboard,
.graph-board,
.focus-hero,
.focus-grid,
.focus-lower,
.analysis-grid,
.detail-grid,
.finance-section-grid,
.os-hero-grid,
.risk-command-grid,
.os-chart-grid,
.future-grid,
.facility-command-grid,
.council-command-grid,
.comparison-command-grid,
.data-sources-details {
  gap: 20px;
}

.kpis {
  grid-template-columns: repeat(4, minmax(210px, 1fr));
}

.focus-hero {
  grid-template-columns: minmax(380px, 1.25fr) minmax(340px, 0.9fr) minmax(340px, 0.9fr);
}

.dashboard {
  grid-template-columns: minmax(0, 1.35fr) minmax(380px, 0.8fr);
}

.panel,
.analysis-panel,
.comparison-panel,
.detailed-analysis-panel,
.statistics-panel,
.export-panel,
.focus-card,
.kpi,
.smart-search-results,
.smart-search-empty,
.os-card,
.os-panel-card,
.os-chart-card,
.stat-card,
.metric-box,
.export-section,
.data-source-card,
.council-metrics article,
.staff-metrics article,
.strategy-card {
  padding: var(--card-pad);
}

.detail-card h3 {
  padding: 16px 20px;
  font-size: 17px;
}

.panel-head,
.analysis-head,
.focus-head,
.os-card-head,
.os-chart-head,
.os-section-head {
  gap: 18px;
  margin-bottom: 18px;
}

.panel-head p,
.smart-search-head p,
.smart-search-empty span,
.focus-card p,
.focus-insight p,
.analysis-card p,
.insight span,
.source-description,
.load-error,
.chart-source,
.os-chart-meta,
.question-chain p,
.facility-chip small,
.council-priority p,
.staff-task p,
.staff-narrative p {
  font-size: 14px;
  line-height: 1.75;
}

.os-card-head span,
.os-chart-head span,
.os-section-head span,
.os-mini-label,
.focus-kicker,
.kpi .label,
.council-metrics span,
.staff-metrics span,
.strategy-metrics span,
.uto-os-grid span,
.uto-os-grid small {
  font-size: 13px;
}

.os-card h2,
.os-card h3,
.os-chart-head h3,
.os-section-head h2,
.analysis-card strong,
.focus-insight strong,
.council-priority-head strong,
.staff-task-head strong {
  font-size: 18px;
}

.kpi .value {
  margin-top: 10px;
  font-size: clamp(25px, 2.2vw, 34px);
  line-height: 1.16;
}

.kpi .delta {
  margin-top: 8px;
  font-size: 13px;
  line-height: 1.5;
}

.health-badge {
  width: 68px;
  height: 68px;
  font-size: 24px;
}

.score-context article,
.focus-story div,
.spark-grid article,
.score-formula,
.score-part,
.smart-result-card,
.analysis-card,
.focus-insight,
.finance-summary-card,
.metric-box,
.risk-pill,
.future-event,
.facility-chip,
.question-chain article,
.refresh-status-grid article,
.data-gap-category-list article,
.pipeline-step-list article {
  padding: 16px;
}

.smart-result-card p,
.smart-result-top,
.smart-result-meta {
  font-size: 13px;
}

.focus-story,
.spark-grid,
.risk-list,
.council-priorities,
.staff-tasks,
.pipeline-step-list,
.data-gap-category-list {
  gap: 14px;
}

.focus-story strong,
.finance-summary-card strong,
.metric-value,
.council-metrics strong,
.staff-metrics strong,
.strategy-metrics strong,
.uto-os-grid strong,
.refresh-status-grid strong {
  font-size: 26px;
  line-height: 1.18;
}

.chart {
  min-height: 380px;
}

.chart svg {
  height: 380px;
}

.graph-chart {
  min-height: 420px;
}

.graph-chart svg {
  height: 360px;
}

.os-chart {
  height: 300px;
}

.facility-map {
  height: 430px;
}

.legend,
.bar-label,
.bar-value,
.pressure-label,
.focus-story span,
.spark-grid span,
.pdf-table-title,
.empty-note {
  font-size: 13px;
}

.bar-row {
  grid-template-columns: minmax(110px, 180px) minmax(160px, 1fr) 104px;
  gap: 14px;
  min-height: 42px;
  margin: 10px 0;
}

.bar-track,
.pressure-track {
  height: 14px;
}

.table-wrap {
  border-radius: 8px;
}

table {
  min-width: 1040px;
  font-size: 14px;
}

th,
td {
  padding: 14px 16px;
  line-height: 1.55;
}

.mini-table {
  font-size: 14px;
}

.mini-table th,
.mini-table td {
  padding: 12px 14px;
}

.pdf-table {
  min-width: 1280px;
  font-size: 12px;
}

#rawText {
  max-height: 640px;
  padding: 18px;
  font-size: 13px;
  line-height: 1.8;
}

@media (min-width: 1440px) {
  .kpis {
    grid-template-columns: repeat(4, minmax(240px, 1fr));
  }

  .graph-board,
  .os-chart-grid {
    grid-template-columns: repeat(2, minmax(520px, 1fr));
  }
}

@media (max-width: 1180px) {
  .kpis,
  .risk-command-grid,
  .facility-command-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .focus-hero,
  .dashboard,
  .os-hero-grid {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 980px) {
  :root {
    --page-gutter: clamp(16px, 5vw, 32px);
    --card-pad: 18px;
  }

  .toolbar {
    margin: -28px calc(var(--page-gutter) * -1) 24px;
  }

  .chart,
  .chart svg {
    min-height: 330px;
    height: 330px;
  }

  .os-chart {
    height: 300px;
  }
}

@media (max-width: 640px) {
  body {
    font-size: 14px;
  }

  .topbar {
    padding-top: 22px;
    align-items: flex-start;
  }

  .topbar-actions {
    align-items: flex-end;
    flex-direction: column-reverse;
  }

  .source-note {
    max-width: 190px;
  }

  .kpis,
  .risk-command-grid,
  .facility-command-grid,
  .metric-grid,
  .stat-grid {
    grid-template-columns: 1fr;
  }

  .panel,
  .analysis-panel,
  .comparison-panel,
  .detailed-analysis-panel,
  .statistics-panel,
  .export-panel,
  .focus-card,
  .kpi,
  .os-card,
  .os-panel-card,
  .os-chart-card {
    padding: 16px;
  }

  .panel-head,
  .os-card-head,
  .os-chart-head,
  .os-section-head,
  .strategy-hero,
  .uto-os-hero {
    flex-direction: column;
  }

  .chart,
  .chart svg,
  .graph-chart,
  .graph-chart svg {
    min-height: 300px;
    height: 300px;
  }

  .os-chart {
    height: 280px;
  }

  th,
  td {
    padding: 12px 14px;
  }
}

/* Step 2 final cascade: keep the new navigation above legacy layout rules. */
.uto-global-nav .uto-nav-shell > .primary-nav {
  grid-column: auto;
  justify-self: stretch;
  min-width: 0;
}

.uto-global-nav .uto-nav-shell > .site-map-menu {
  grid-column: auto;
  width: 64px;
  min-width: 64px;
}

.uto-global-nav .uto-nav-list {
  width: 100%;
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
}

main > .toolbar {
  position: relative;
  top: auto;
  width: min(100%, var(--content-max));
  margin: 0 auto 24px;
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: var(--radius-card);
  background: var(--paper);
}

@media (max-width: 980px) {
  .uto-global-nav .uto-nav-list {
    width: 100%;
    margin: 0;
    padding: 0 0 6px;
  }

  main > .toolbar {
    margin: 0 auto 20px;
  }
}

@media (max-width: 640px) {
  .uto-global-nav .uto-nav-shell > .site-map-menu {
    width: 56px;
    min-width: 56px;
  }

  main > .toolbar {
    margin: 0 auto 16px;
    padding: 12px;
  }
}

/* Step 3: current-position home */
.os-dashboard {
  display: grid;
  gap: 28px;
  width: min(100%, var(--content-max));
  margin: 0 auto;
}

.uto-home-hero {
  display: grid;
  grid-template-columns: minmax(0, 1.55fr) minmax(280px, .7fr);
  gap: 24px;
  padding: clamp(30px, 6vw, 72px);
  overflow: hidden;
  border-radius: 24px;
  background: var(--uto-navy);
  color: #fff;
}

.uto-home-kicker,
.uto-home-hero aside > span,
.uto-section-heading span,
.uto-gap-copy > span {
  color: #8fd7c3;
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .12em;
}

.uto-home-hero h2 {
  max-width: 800px;
  margin: 12px 0 20px;
  color: #fff;
  font-size: clamp(36px, 6vw, 76px);
  line-height: 1.08;
  letter-spacing: -.055em;
}

.uto-home-hero > div > p {
  max-width: 760px;
  color: #d6e0ea;
  font-size: clamp(15px, 1.6vw, 19px);
  line-height: 1.9;
}

.uto-home-hero aside {
  align-self: end;
  padding: 24px;
  border: 1px solid rgba(255, 255, 255, .16);
  border-radius: 16px;
  background: rgba(255, 255, 255, .07);
}

.uto-home-hero aside strong {
  display: block;
  margin: 10px 0;
  font-size: 22px;
  line-height: 1.45;
}

.uto-home-hero aside p {
  color: #c7d3df;
  font-size: 13px;
  line-height: 1.8;
}

.uto-home-section,
.uto-structure-story {
  padding: clamp(22px, 4vw, 42px);
  border: 1px solid var(--line);
  border-radius: 20px;
  background: var(--paper);
}

.uto-section-heading {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 24px;
  margin-bottom: 24px;
}

.uto-section-heading span {
  color: var(--uto-accent);
}

.uto-section-heading h2 {
  margin-top: 6px;
  font-size: clamp(24px, 3vw, 38px);
  letter-spacing: -.035em;
}

.uto-section-heading > p {
  max-width: 520px;
  color: var(--muted);
  line-height: 1.75;
}

.uto-alert-grid,
.uto-kpi-grid,
.uto-theme-grid {
  display: grid;
  gap: 14px;
}

.uto-compare-actions {
  margin-top: 18px;
}

.uto-compare-actions button {
  padding: 12px 22px;
  border: 1px solid var(--uto-accent);
  border-radius: 10px;
  background: var(--uto-accent);
  color: #fff;
  font-weight: 700;
  cursor: pointer;
}

.uto-alert-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.uto-alert-grid button,
.uto-theme-grid button {
  padding: 20px;
  border-radius: 14px;
  text-align: left;
  cursor: pointer;
}

.uto-alert-grid button {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 10px 14px;
}

.uto-alert-grid button strong {
  align-self: center;
  font-size: 17px;
}

.uto-alert-grid button p,
.uto-alert-grid button b {
  grid-column: 1 / -1;
}

.uto-alert-grid button p,
.uto-theme-grid button p {
  color: var(--muted);
  line-height: 1.75;
}

.uto-alert-grid button b,
.uto-theme-grid button b {
  color: var(--uto-accent);
  font-size: 12px;
}

.uto-renewal-gap {
  display: grid;
  grid-template-columns: minmax(280px, .8fr) minmax(0, 1.2fr);
  gap: 30px;
  padding: clamp(26px, 5vw, 54px);
  border-radius: 20px;
  background: var(--soft-red);
}

.uto-gap-copy > span {
  color: var(--status-structural);
}

.uto-gap-copy h2 {
  margin: 10px 0 18px;
  font-size: clamp(25px, 3.6vw, 46px);
  line-height: 1.25;
}

.uto-gap-copy h2 strong {
  color: var(--status-structural);
  font-size: 1.3em;
}

.uto-gap-copy p {
  color: var(--muted);
  line-height: 1.85;
}

.uto-gap-math {
  display: grid;
  grid-template-columns: 1fr auto 1fr auto 1fr;
  gap: 12px;
  align-items: center;
}

.uto-gap-math article {
  display: grid;
  gap: 8px;
  min-height: 170px;
  align-content: center;
  padding: 20px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: var(--paper);
}

.uto-gap-math article > span,
.uto-kpi-head span,
.uto-kpi-card small {
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
}

.uto-gap-math article strong {
  font-size: clamp(25px, 3vw, 40px);
}

.uto-gap-math article small {
  color: var(--muted);
  line-height: 1.5;
}

.uto-gap-math > i {
  color: var(--muted);
  font-size: 26px;
  font-style: normal;
  font-weight: 800;
}

.uto-gap-math .gap-result {
  border-color: color-mix(in srgb, var(--status-structural) 45%, var(--line));
}

.uto-gap-math .gap-result strong {
  color: var(--status-structural);
}

.uto-kpi-grid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

.uto-kpi-card {
  display: grid;
  gap: 14px;
  width: 100%;
  min-height: 250px;
  padding: 20px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: var(--surface-subtle);
  color: inherit;
  font: inherit;
  text-align: left;
  cursor: pointer;
  transition: transform .18s ease, border-color .18s ease;
}

.uto-kpi-card:hover,
.uto-kpi-card:focus-visible {
  border-color: var(--brand);
  transform: translateY(-2px);
}

.uto-kpi-card > b {
  color: var(--brand);
  font-size: 12px;
}

.uto-kpi-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 10px;
}

.uto-kpi-head h3 {
  margin: 4px 0 0;
  font-size: 17px;
}

.uto-kpi-value {
  align-self: end;
  font-size: clamp(30px, 3vw, 44px);
  line-height: 1;
  letter-spacing: -.04em;
}

.uto-kpi-card p {
  color: var(--muted);
  font-size: 13px;
  line-height: 1.75;
}

.uto-kpi-card small {
  padding-top: 10px;
  border-top: 1px solid var(--line);
  line-height: 1.55;
}

.uto-gap-actions {
  display: flex;
  grid-column: 1 / -1;
  flex-wrap: wrap;
  gap: 10px;
}

.uto-gap-actions button {
  padding: 10px 14px;
  border: 1px solid color-mix(in srgb, var(--status-structural) 30%, var(--line));
  border-radius: 9px;
  background: var(--paper);
  color: var(--status-structural);
  cursor: pointer;
  font-weight: 800;
}

.uto-story-flow {
  display: grid;
  grid-template-columns: 1fr auto 1fr auto 1fr;
  gap: 14px;
  align-items: center;
}

.uto-story-flow article {
  min-height: 180px;
  padding: 22px;
  border-radius: 14px;
  background: var(--surface-subtle);
}

.uto-story-flow article span {
  color: var(--uto-accent);
  font-size: 12px;
  font-weight: 800;
}

.uto-story-flow article strong {
  display: block;
  margin: 12px 0;
  font-size: 21px;
}

.uto-story-flow article p {
  color: var(--muted);
  line-height: 1.7;
}

.uto-story-flow > i {
  color: var(--uto-accent);
  font-size: 28px;
  font-style: normal;
}

.uto-reading-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 12px;
  margin-top: 18px;
}

.uto-reading-grid article {
  padding: 18px;
  border-top: 3px solid var(--uto-accent);
  background: var(--soft-green);
}

.uto-reading-grid span {
  font-size: 13px;
  font-weight: 800;
}

.uto-reading-grid p {
  margin-top: 10px;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.75;
}

.uto-theme-grid {
  grid-template-columns: repeat(4, 1fr);
}

.uto-theme-grid button span {
  font-size: 16px;
  font-weight: 800;
}

.uto-theme-grid button p {
  min-height: 92px;
  margin: 12px 0;
}

.uto-source-line {
  padding: 0 6px 16px;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.7;
}

@media (max-width: 1180px) {
  .uto-kpi-grid,
  .uto-reading-grid,
  .uto-theme-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .uto-renewal-gap {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 800px) {
  .uto-home-hero,
  .uto-alert-grid {
    grid-template-columns: 1fr;
  }

  .uto-story-flow {
    grid-template-columns: 1fr;
  }

  .uto-story-flow > i {
    transform: rotate(90deg);
    justify-self: center;
  }

  .uto-gap-math {
    grid-template-columns: 1fr;
  }

  .uto-gap-math > i {
    justify-self: center;
  }
}

@media (max-width: 640px) {
  .os-dashboard {
    gap: 18px;
  }

  .uto-home-hero {
    padding: 26px 20px;
    border-radius: 18px;
  }

  .uto-home-section,
  .uto-structure-story,
  .uto-renewal-gap {
    padding: 20px;
    border-radius: 16px;
  }

  .uto-section-heading {
    align-items: flex-start;
    flex-direction: column;
  }

  .uto-kpi-grid,
  .uto-reading-grid,
  .uto-theme-grid {
    grid-template-columns: 1fr;
  }

  .uto-kpi-card {
    min-height: 0;
  }

  .uto-theme-grid button p {
    min-height: 0;
  }
}

/* Step 4: shared question-led topic pages */
.population-os-panel,
.fiscal-detail-panel,
.facility-os-panel,
.enterprise-panel,
.policy-os-panel,
.council-panel,
.city-now-panel {
  display: grid;
  gap: 22px;
  width: min(100%, var(--content-max));
  margin: 0 auto;
}

.uto-decision-note {
  padding: 14px 16px;
  border-left: 4px solid var(--status-decision);
  background: color-mix(in srgb, var(--status-decision) 8%, var(--paper));
  color: var(--muted);
  font-size: 13px;
  line-height: 1.7;
}

.policy-decision-board {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
}

.policy-decision-lane {
  padding: 16px;
  border: 1px solid var(--line);
  border-radius: 16px;
  background: var(--paper);
}

.policy-decision-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding-bottom: 14px;
  border-bottom: 1px solid var(--line);
}

.policy-decision-list {
  display: grid;
  gap: 12px;
  padding-top: 12px;
}

.policy-decision-list > div {
  padding: 16px;
  border-radius: 12px;
  background: var(--surface-subtle);
}

.policy-decision-list > div > div {
  display: flex;
  align-items: start;
  justify-content: space-between;
  gap: 10px;
}

.policy-decision-list h3 {
  margin: 0;
  font-size: 16px;
}

.policy-decision-list > div > div > span {
  flex: 0 0 auto;
  color: var(--muted);
  font-size: 11px;
  font-weight: 700;
}

.policy-decision-list p {
  margin: 10px 0;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.65;
}

.policy-decision-list > div > small {
  display: block;
  color: var(--ink);
  font-size: 12px;
  line-height: 1.6;
}

.policy-decision-list dl {
  display: grid;
  gap: 7px;
  margin: 14px 0 0;
  padding-top: 12px;
  border-top: 1px solid var(--line);
}

.policy-decision-list dl div {
  display: grid;
  grid-template-columns: 52px 1fr;
  gap: 8px;
}

.policy-decision-list dt {
  color: var(--uto-accent);
  font-size: 11px;
  font-weight: 800;
}

.policy-decision-list dd {
  margin: 0;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.55;
}

.policy-search-panel,
.council-archive-filters {
  padding: 16px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: var(--paper);
}

.policy-search-filters,
.council-archive-filters {
  display: grid;
  grid-template-columns: minmax(240px, 1fr) repeat(2, minmax(180px, .55fr));
  gap: 10px;
}

.policy-search-panel label,
.council-archive-filters label {
  display: grid;
  gap: 5px;
  color: var(--muted);
  font-size: 11px;
  font-weight: 700;
}

.policy-search-panel input,
.policy-search-panel select,
.council-archive-filters input,
.council-archive-filters select {
  width: 100%;
  padding: 10px 11px;
  border: 1px solid var(--line);
  border-radius: 9px;
  background: var(--surface);
  color: var(--ink);
}

.policy-search-panel > p {
  margin: 10px 0 0;
  color: var(--muted);
  font-size: 12px;
}

.policy-related-actions,
.council-related-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 12px;
}

.policy-related-actions button,
.council-related-actions button {
  padding: 8px 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface);
  color: var(--brand);
  cursor: pointer;
  font-weight: 700;
}

.filter-reset-button {
  align-self: end;
  min-height: 40px;
  padding: 9px 12px;
  border: 1px solid var(--line);
  border-radius: 9px;
  background: var(--paper);
  color: var(--brand);
  cursor: pointer;
  font-weight: 800;
}

.filter-reset-button:hover,
.filter-reset-button:focus-visible {
  border-color: var(--brand);
}

.data-sources-info-panel {
  display: grid;
  gap: 22px;
  width: min(100%, var(--content-max));
  margin: 0 auto;
}

.library-category-section,
.library-tool-section {
  padding: clamp(22px, 4vw, 42px);
  border: 1px solid var(--line);
  border-radius: 20px;
  background: var(--paper);
}

.library-category-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
}

.library-category-grid a,
.library-category-grid button,
.library-tool-grid button {
  display: grid;
  gap: 10px;
  min-height: 190px;
  align-content: start;
  padding: 20px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: var(--surface-subtle);
  color: var(--ink);
  text-align: left;
  text-decoration: none;
  cursor: pointer;
}

.library-category-grid a:hover,
.library-category-grid button:hover,
.library-tool-grid button:hover {
  border-color: var(--uto-accent);
  transform: translateY(-1px);
}

.library-category-grid span {
  color: var(--uto-accent);
  font-size: 11px;
  font-weight: 800;
}

.library-category-grid strong,
.library-tool-grid strong {
  font-size: 18px;
}

.library-category-grid p,
.library-tool-grid p {
  color: var(--muted);
  font-size: 13px;
  line-height: 1.7;
}

.library-category-grid small {
  align-self: end;
  color: var(--uto-accent);
  font-weight: 700;
}

.library-tool-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
}

.library-tool-grid button {
  min-height: 150px;
}

.library-tool-grid button span {
  align-self: end;
  color: var(--uto-accent);
  font-size: 12px;
  font-weight: 800;
}

.library-catalog-section {
  padding: clamp(22px, 4vw, 42px);
  border: 1px solid var(--line);
  border-radius: 20px;
  background: var(--paper);
}

.library-search-first {
  position: relative;
  border-color: color-mix(in srgb, var(--uto-accent) 32%, var(--line));
}

.library-search-lead {
  max-width: 760px;
  margin: -8px 0 16px;
  color: var(--muted);
  line-height: 1.7;
}

.library-quick-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 14px;
}

.library-quick-grid button,
.library-more-button {
  padding: 9px 13px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: var(--surface-subtle);
  color: var(--brand);
  cursor: pointer;
  font-weight: 800;
}

.library-quick-grid button:hover,
.library-quick-grid button:focus-visible,
.library-more-button:hover,
.library-more-button:focus-visible {
  border-color: var(--brand);
  background: var(--paper);
}

.library-more-button {
  display: block;
  margin: 18px auto 0;
  border-radius: 10px;
}

.library-secondary-section,
.library-management-section,
.library-source-details {
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 18px;
  background: var(--paper);
}

.library-secondary-section > summary,
.library-management-section > summary,
.library-source-details > summary {
  display: grid;
  gap: 5px;
  padding: 20px 24px;
  cursor: pointer;
  list-style: none;
}

.library-secondary-section > summary::-webkit-details-marker,
.library-management-section > summary::-webkit-details-marker,
.library-source-details > summary::-webkit-details-marker {
  display: none;
}

.library-secondary-section > summary span,
.library-management-section > summary span {
  font-size: 18px;
  font-weight: 800;
}

.library-secondary-section > summary small,
.library-management-section > summary small {
  color: var(--muted);
}

.library-secondary-section[open] > summary,
.library-management-section[open] > summary,
.library-source-details[open] > summary {
  border-bottom: 1px solid var(--line);
}

.library-secondary-section .library-category-section,
.library-secondary-section .library-tool-section {
  border: 0;
  border-radius: 0;
}

.library-management-body {
  display: grid;
  gap: 18px;
  padding: 18px;
}

.library-source-details > summary {
  font-weight: 800;
}

.library-source-details .data-sources-details {
  padding: 18px;
}

.library-filter-grid {
  display: grid;
  grid-template-columns: minmax(240px, 2fr) repeat(5, minmax(130px, 1fr));
  gap: 10px;
  padding: 14px;
  border-radius: 14px;
  background: var(--surface-subtle);
}

.library-filter-grid input,
.library-filter-grid select {
  width: 100%;
  min-width: 0;
}

.library-catalog-results {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
  margin-top: 16px;
}

.library-record-card {
  display: grid;
  gap: 12px;
  min-width: 0;
  padding: 18px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: var(--surface-subtle);
}

.library-record-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 10px;
}

.library-record-head span,
.library-record-head > strong {
  color: var(--uto-accent);
  font-size: 11px;
  font-weight: 800;
}

.library-record-head h3 {
  margin: 5px 0 0;
  overflow-wrap: anywhere;
  font-size: 16px;
}

.library-record-head > strong {
  flex: 0 0 auto;
  padding: 4px 7px;
  border: 1px solid currentColor;
  border-radius: 999px;
}

.library-record-card > p {
  color: var(--muted);
  font-size: 12px;
  line-height: 1.65;
}

.library-record-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.library-record-meta span {
  padding: 4px 7px;
  border-radius: 999px;
  background: var(--paper);
  color: var(--muted);
  font-size: 10px;
  font-weight: 700;
}

.library-record-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-self: end;
}

.library-record-actions a {
  padding: 7px 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  color: var(--uto-accent);
  font-size: 11px;
  font-weight: 800;
  text-decoration: none;
}

.uto-question-hero {
  display: grid;
  grid-template-columns: minmax(0, 1.45fr) minmax(280px, .55fr);
  gap: 24px;
  padding: clamp(28px, 5vw, 56px);
  border-radius: 20px;
  background: var(--uto-navy);
  color: #fff;
}

.uto-question-hero > div > span,
.uto-question-hero aside > span {
  color: #8fd7c3;
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .1em;
}

.uto-question-hero h2 {
  max-width: 880px;
  margin: 10px 0 18px;
  color: #fff;
  font-size: clamp(30px, 4.6vw, 58px);
  line-height: 1.16;
  letter-spacing: -.045em;
}

.uto-question-hero > div > p {
  max-width: 780px;
  color: #d4dfe9;
  font-size: 16px;
  line-height: 1.85;
}

.uto-question-hero aside {
  align-self: end;
  padding: 22px;
  border: 1px solid rgba(255, 255, 255, .18);
  border-radius: 14px;
  background: rgba(255, 255, 255, .07);
}

.uto-question-hero aside strong {
  display: block;
  margin: 8px 0;
  font-size: 22px;
}

.uto-question-hero aside p {
  color: #c9d5df;
  font-size: 13px;
  line-height: 1.75;
}

.uto-topic-summary {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 12px;
}

.uto-topic-summary article {
  display: grid;
  gap: 8px;
  min-height: 150px;
  align-content: center;
  padding: 18px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: var(--paper);
}

.uto-topic-summary article > span,
.uto-topic-summary article small {
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
}

.uto-topic-summary article strong {
  font-size: clamp(24px, 2.5vw, 36px);
  letter-spacing: -.04em;
}

.uto-topic-reading {
  padding: 4px 0;
}

.uto-topic-reading .uto-reading-grid {
  margin-top: 0;
}

.population-os-panel .strategy-card,
.fiscal-detail-panel > .panel,
.facility-os-panel > .os-chart-card,
.facility-os-panel > .os-section-head,
.facility-os-panel > .facility-command-grid,
.facility-os-panel > .os-chart-grid {
  width: 100%;
}

@media (max-width: 1180px) {
  .uto-topic-summary {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .finance-history-summary {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .population-history-grid {
    grid-template-columns: 1fr;
  }

  .infrastructure-asset-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 800px) {
  .policy-search-filters,
  .council-archive-filters {
    grid-template-columns: 1fr;
  }

  .library-filter-grid {
    grid-template-columns: 1fr;
  }

  .utility-finance-alert,
  .utility-finance-chart-grid,
  .utility-cost-structure,
  .utility-finance-kpis,
  .utility-household-grid,
  .utility-investment-board {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 800px) {
  .uto-question-hero {
    grid-template-columns: 1fr;
  }

  .uto-topic-summary {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .finance-history-explorer .uto-section-heading,
  .finance-history-summary {
    grid-template-columns: 1fr;
  }

  .finance-history-explorer select {
    width: 100%;
  }

  .population-district-section .uto-section-heading,
  .population-district-filters {
    display: grid;
    grid-template-columns: 1fr;
  }

  .population-district-filters input,
  .population-district-filters select {
    width: 100%;
  }

  .facility-asset-filters,
  .utility-signal-grid {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 640px) {
  .population-os-panel,
  .fiscal-detail-panel,
  .facility-os-panel,
  .enterprise-panel,
  .policy-os-panel,
  .council-panel,
  .city-now-panel {
    gap: 16px;
  }

  .uto-question-hero {
    padding: 24px 20px;
    border-radius: 16px;
  }

  .uto-question-hero h2 {
    font-size: 32px;
  }

  .uto-topic-summary {
    grid-template-columns: 1fr;
  }

  .uto-topic-summary article {
    min-height: 0;
  }

  .finance-history-explorer {
    padding: 16px;
    border-radius: 14px;
  }

  .population-history-explorer {
    padding: 16px;
    border-radius: 14px;
  }

  .population-related-stats {
    grid-template-columns: 1fr;
  }

  .population-related-stats h3,
  .population-related-stats .chart-source {
    grid-column: auto;
  }

  .facility-asset-explorer {
    padding: 16px;
    border-radius: 14px;
  }

  .infrastructure-asset-grid {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 1180px) {
  .policy-decision-board {
    grid-template-columns: 1fr;
  }

  .library-category-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .library-filter-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .library-catalog-results {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 800px) {
  .library-tool-grid {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 640px) {
  .data-sources-info-panel {
    gap: 16px;
  }

  .library-category-section,
  .library-tool-section,
  .library-catalog-section {
    padding: 20px;
    border-radius: 16px;
  }

  .library-category-grid {
    grid-template-columns: 1fr;
  }

  .library-filter-grid,
  .library-catalog-results {
    grid-template-columns: 1fr;
  }

  .library-category-grid a,
  .library-category-grid button,
  .library-tool-grid button {
    min-height: 0;
  }
}

/* ===== 公共施設 更新優先度スコア(6軸) ===== */
.fac-scorecard-section {
  margin-top: 24px;
  display: grid;
  gap: 18px;
}

.fac-score-summary {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 12px;
}

.fac-score-summary article {
  padding: 14px 16px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--surface-subtle);
  text-align: center;
}

.fac-score-summary article span {
  display: block;
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
}

.fac-score-summary article strong {
  display: block;
  margin-top: 4px;
  font-size: clamp(22px, 2.6vw, 30px);
  letter-spacing: -.03em;
}

.fac-score-summary article small {
  color: var(--muted);
  font-size: 11px;
}

.fac-method {
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--paper);
  padding: 4px 18px;
}

.fac-method > summary {
  padding: 12px 0;
  font-weight: 700;
  cursor: pointer;
  color: var(--blue);
}

.fac-method-body {
  padding-bottom: 14px;
  display: grid;
  gap: 10px;
}

.fac-method-body ul {
  margin: 0;
  padding-left: 18px;
  display: grid;
  gap: 4px;
  color: var(--muted);
  font-size: 13px;
}

.fac-method-body ul b,
.fac-method-body p b {
  color: var(--ink);
}

.fac-axis-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 14px;
}

.fac-axis-legend span {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  font-weight: 700;
  color: var(--muted);
}

.fac-axis-legend span i {
  width: 12px;
  height: 12px;
  border-radius: 3px;
}

.fac-axis-legend span b {
  color: var(--ink);
  font-size: 11px;
}

.fac-axis-legend .axis-risk i { background: var(--red); }
.fac-axis-legend .axis-impact i { background: var(--blue); }

.fac-caveat {
  color: var(--muted);
  font-size: 12px;
  line-height: 1.7;
}

.fac-cat-summary {
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--paper);
  padding: 16px 18px;
}

.fac-cat-summary h4 {
  margin: 0 0 10px;
  font-size: 14px;
}

.fac-cat-summary table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
}

.fac-cat-summary th,
.fac-cat-summary td {
  padding: 6px 8px;
  border-bottom: 1px solid var(--line);
  text-align: left;
}

.fac-cat-summary td.number,
.fac-cat-summary th.number {
  text-align: right;
  font-variant-numeric: tabular-nums;
}

.fac-score-controls {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.fac-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.fac-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 7px 14px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: var(--paper);
  color: var(--muted);
  font-weight: 700;
  font-size: 13px;
  cursor: pointer;
}

.fac-chip span {
  padding: 1px 7px;
  border-radius: 999px;
  background: var(--bg);
  font-size: 11px;
}

.fac-chip.active {
  border-color: var(--blue);
  background: var(--blue);
  color: #fff;
}

.fac-chip.active span {
  background: rgba(255, 255, 255, 0.2);
  color: #fff;
}

.fac-cat-select {
  font-size: 13px;
  font-weight: 700;
  color: var(--muted);
}

.fac-cat-select select {
  margin-left: 6px;
  padding: 7px 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--paper);
  font-weight: 700;
}

.fac-scorecard-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(330px, 1fr));
  gap: 14px;
}

.fac-score-reading-guide {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
}

.fac-score-reading-guide article {
  padding: 12px 14px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--surface-subtle);
}

.fac-score-reading-guide strong {
  display: block;
  margin-bottom: 4px;
  font-size: 13px;
}

.fac-score-reading-guide p {
  color: var(--muted);
  font-size: 11.5px;
  line-height: 1.6;
}

.fac-scorecard {
  border: 1px solid var(--line);
  border-left-width: 5px;
  border-radius: 12px;
  background: var(--paper);
  padding: 16px;
  display: grid;
  gap: 12px;
}

.fac-scorecard.tone-high { border-left-color: var(--red); }
.fac-scorecard.tone-warn { border-left-color: var(--amber); }
.fac-scorecard.tone-medium { border-left-color: var(--blue); }
.fac-scorecard.tone-low { border-left-color: var(--green); }

.fac-score-head {
  display: grid;
  grid-template-columns: auto 1fr auto;
  gap: 12px;
  align-items: start;
}

.fac-score-num {
  display: flex;
  align-items: baseline;
  gap: 2px;
}

.fac-score-num strong {
  font-size: 30px;
  letter-spacing: -.04em;
  line-height: 1;
}

.fac-score-num span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
}

.fac-score-meta h4 {
  margin: 4px 0 2px;
  font-size: 15px;
}

.fac-score-meta p {
  color: var(--muted);
  font-size: 12px;
  line-height: 1.5;
}

.priority-badge {
  display: inline-block;
  padding: 2px 10px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 800;
  color: #fff;
}

.priority-badge.high { background: var(--red); }
.priority-badge.warn { background: var(--amber); }
.priority-badge.medium { background: var(--blue); }
.priority-badge.low { background: var(--green); }

.fac-confidence {
  text-align: right;
  white-space: nowrap;
}

.fac-confidence span {
  display: block;
  color: var(--muted);
  font-size: 10px;
  font-weight: 700;
}

.fac-confidence strong {
  font-size: 16px;
}

.fac-citizen-summary {
  padding: 10px 12px;
  border-radius: 9px;
  background: color-mix(in srgb, var(--blue) 7%, var(--paper));
}

.fac-citizen-summary span,
.fac-reason-box > span,
.fac-citizen-impact span {
  display: block;
  margin-bottom: 4px;
  color: var(--muted);
  font-size: 10.5px;
  font-weight: 800;
}

.fac-citizen-summary strong {
  display: block;
  font-size: 12.5px;
  line-height: 1.55;
}

.fac-axis-bars {
  display: grid;
  gap: 5px;
}

.fac-axis {
  display: grid;
  grid-template-columns: 76px 1fr 46px;
  align-items: center;
  gap: 8px;
  font-size: 11px;
}

.fac-axis-label {
  color: var(--muted);
  font-weight: 700;
}

.fac-axis-track {
  height: 8px;
  border-radius: 999px;
  background: var(--bg);
  overflow: hidden;
}

.fac-axis-track i {
  display: block;
  height: 100%;
  border-radius: 999px;
}

.fac-axis.axis-risk .fac-axis-track i { background: var(--red); }
.fac-axis.axis-impact .fac-axis-track i { background: var(--blue); }

.fac-axis-pts {
  text-align: right;
  font-variant-numeric: tabular-nums;
  color: var(--ink);
  font-weight: 700;
}

.fac-reason-box {
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-radius: 9px;
}

.fac-reason-box ol {
  margin: 0;
  padding-left: 19px;
  display: grid;
  gap: 4px;
}

.fac-reason-box li {
  font-size: 11.5px;
  line-height: 1.55;
}

.fac-risk-impact {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px 12px;
  padding-top: 10px;
  border-top: 1px solid var(--line);
  font-size: 12px;
  color: var(--muted);
}

.fac-risk-impact b { color: var(--ink); }
.fac-risk-impact > i { color: var(--muted); font-style: normal; }

.fac-disaster {
  padding: 2px 8px;
  border-radius: 6px;
  background: var(--surface-subtle);
}

.fac-missing {
  color: var(--amber);
  font-weight: 700;
}

.fac-citizen-impact {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
}

.fac-citizen-impact > div {
  padding: 10px 11px;
  border-radius: 9px;
  background: var(--surface-subtle);
}

.fac-citizen-impact p {
  font-size: 11.5px;
  line-height: 1.55;
}

.fac-citizen-impact > div:last-child p {
  color: var(--blue);
  font-weight: 700;
}

.fac-certainty {
  padding-top: 8px;
  border-top: 1px dashed var(--line);
  color: var(--muted);
  font-size: 10.5px;
  line-height: 1.55;
}

.fac-info-needed {
  padding: 9px 11px;
  border: 1px solid color-mix(in srgb, var(--amber) 45%, var(--line));
  border-radius: 9px;
  background: color-mix(in srgb, var(--amber) 7%, var(--paper));
}

.fac-info-needed summary {
  cursor: pointer;
  color: var(--ink);
  font-size: 11.5px;
  font-weight: 800;
}

.fac-info-needed ul {
  margin: 8px 0 0;
  padding-left: 18px;
}

.fac-info-needed li {
  margin-top: 3px;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.5;
}

.fac-more-note {
  color: var(--muted);
  font-size: 12px;
  text-align: center;
}

@media (max-width: 720px) {
  .fac-score-summary { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .fac-score-reading-guide { grid-template-columns: 1fr; }
  .fac-scorecard-grid { grid-template-columns: 1fr; }
  .fac-citizen-impact { grid-template-columns: 1fr; }
}

/* ===== 公共施設マップ(大型) ===== */
.facility-map-section {
  margin: 8px 0 24px;
  display: grid;
  gap: 14px;
}

.facility-map-controls {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.facility-map-controls-right {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 16px;
}

.fac-approx-toggle {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 13px;
  font-weight: 700;
  color: var(--muted);
  cursor: pointer;
}

.facility-map-large {
  height: clamp(440px, 64vh, 680px);
  width: 100%;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: #eef1f4;
  box-shadow: 0 2px 10px rgba(31, 35, 40, 0.06);
}

.facility-map-large .leaflet-container {
  height: 100%;
  width: 100%;
  border-radius: 14px;
  font: inherit;
}

.facility-map-section .facility-map-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 10px 18px;
  align-items: center;
  margin: 0;
}

.facility-map-section .facility-map-legend span {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 13px;
  font-weight: 700;
  color: var(--muted);
}

.facility-map-section .facility-map-legend i {
  width: 14px;
  height: 14px;
  border-radius: 50%;
  display: inline-block;
}

.facility-map-section .facility-map-legend .legend-approx i {
  background: transparent;
  border: 2px dashed var(--muted);
}

.facility-map-section .facility-map-legend .legend-note {
  color: var(--muted);
  font-weight: 400;
}

/* ポップアップ */
.map-popup strong {
  display: block;
  font-size: 14px;
  margin-bottom: 4px;
}

.map-popup p {
  margin: 2px 0;
  font-size: 12px;
  color: var(--ink);
  line-height: 1.5;
}

.map-popup .map-pop-score {
  display: inline-block;
  padding: 1px 9px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 800;
  color: #fff;
  background: var(--muted);
}

.map-popup .map-pop-score.tone-high { background: #c4362e; }
.map-popup .map-pop-score.tone-warn { background: #b7791f; }
.map-popup .map-pop-score.tone-medium { background: #2563a9; }
.map-popup .map-pop-score.tone-low { background: #16805d; }

.map-popup .map-pop-action {
  color: var(--blue);
  font-weight: 700;
  margin-top: 5px;
}

.map-popup small {
  display: block;
  margin-top: 5px;
  color: var(--muted);
  font-size: 11px;
}

@media (max-width: 720px) {
  .facility-map-large { height: clamp(360px, 70vh, 520px); }
  .facility-map-controls { flex-direction: column; align-items: stretch; }
}

.project-cost-search {
  display: grid;
  gap: 18px;
  margin: 22px 0;
  padding: clamp(18px, 3vw, 28px);
  border: 1px solid color-mix(in srgb, var(--uto-accent) 28%, var(--line));
  border-radius: 18px;
  background: linear-gradient(145deg, color-mix(in srgb, var(--soft-green) 58%, var(--paper)), var(--paper));
}

.project-cost-search-head {
  display: flex;
  align-items: start;
  justify-content: space-between;
  gap: 24px;
}

.project-cost-search-head h2 {
  margin: 4px 0 8px;
  font-size: clamp(24px, 3vw, 34px);
}

.project-cost-search-head > div > p:last-child {
  max-width: 720px;
  color: var(--muted);
  line-height: 1.7;
}

.project-cost-search-head > span {
  flex: 0 0 auto;
  padding: 7px 11px;
  border-radius: 999px;
  background: var(--paper);
  color: var(--uto-accent);
  font-size: 12px;
  font-weight: 800;
}

.project-cost-controls {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 190px;
  gap: 12px;
}

.project-cost-controls label {
  display: grid;
  gap: 7px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.project-cost-controls input,
.project-cost-controls select {
  width: 100%;
  min-height: 48px;
  padding: 10px 13px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--paper);
  color: var(--ink);
  font: inherit;
}

.project-cost-query input {
  font-size: 16px;
}

.project-cost-summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  color: var(--muted);
  font-size: 13px;
}

.project-cost-summary > div {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.project-cost-summary button {
  padding: 6px 10px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: var(--paper);
  color: var(--ink);
  cursor: pointer;
  font-size: 12px;
  font-weight: 700;
}

.project-cost-results {
  display: grid;
  gap: 10px;
}

.project-cost-result {
  padding: 16px;
  border: 1px solid var(--line);
  border-radius: 13px;
  background: var(--paper);
}

.project-cost-result-head {
  display: flex;
  align-items: start;
  justify-content: space-between;
  gap: 16px;
}

.project-cost-result-head span,
.project-cost-result-head small {
  color: var(--muted);
  font-size: 11px;
}

.project-cost-result-head h3 {
  margin: 4px 0;
  font-size: 16px;
}

.project-cost-result-head em {
  flex: 0 0 auto;
  padding: 5px 8px;
  border-radius: 999px;
  background: var(--surface-subtle);
  color: var(--muted);
  font-size: 10px;
  font-style: normal;
  font-weight: 800;
}

.project-cost-result-head em.matched {
  background: color-mix(in srgb, var(--status-good) 14%, var(--paper));
  color: var(--status-good);
}

.project-cost-result-head em.candidate {
  background: color-mix(in srgb, var(--status-watch) 16%, var(--paper));
  color: var(--status-watch);
}

.project-cost-values {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
  margin-top: 13px;
}

.project-cost-values > div {
  display: grid;
  gap: 2px;
  padding: 11px;
  border-radius: 9px;
  background: var(--surface-subtle);
}

.project-cost-values span,
.project-cost-values small {
  color: var(--muted);
  font-size: 10px;
}

.project-cost-values strong {
  font-size: 17px;
}

.project-cost-result details {
  margin-top: 10px;
  color: var(--muted);
  font-size: 11px;
}

.project-cost-result details summary {
  cursor: pointer;
  font-weight: 800;
}

.project-cost-result details p {
  margin-top: 5px;
}

.project-cost-empty {
  padding: 30px;
  border: 1px dashed var(--line);
  border-radius: 12px;
  color: var(--muted);
  text-align: center;
}

@media (max-width: 720px) {
  .project-cost-search-head,
  .project-cost-summary {
    display: grid;
  }

  .project-cost-controls,
  .project-cost-values {
    grid-template-columns: 1fr;
  }
}

/* ===== 自治体比較 拡充UI ===== */
.municipality-axis-controls {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
}
.municipality-axis-controls label,
.muni-pin-add {
  font-size: 12px;
  font-weight: 700;
  color: var(--muted);
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.municipality-axis-controls select,
.muni-pin-add select {
  padding: 6px 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--paper);
  font-weight: 700;
  color: var(--ink);
}

/* 比較表: カテゴリ見出し行・宇土列 */
.muni-cat-row td {
  background: var(--surface-subtle);
  font-weight: 800;
  font-size: 12px;
  color: var(--muted);
  letter-spacing: .04em;
}
.municipality-comparison-table .muni-home-cell {
  background: rgba(37, 99, 169, 0.08);
  font-weight: 700;
}

/* 強み・弱みチップ */
.muni-sw-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
  margin-bottom: 16px;
}
.muni-sw-col h3 {
  margin: 0 0 8px;
  font-size: 13px;
}
.muni-sw-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.muni-sw-chip {
  border: 1px solid var(--line);
  border-left-width: 4px;
  border-radius: 10px;
  padding: 8px 12px;
  background: var(--paper);
  min-width: 120px;
}
.muni-sw-chip.good { border-left-color: var(--green); }
.muni-sw-chip.warn { border-left-color: var(--red); }
.muni-sw-chip span { display: block; font-size: 11px; color: var(--muted); font-weight: 700; }
.muni-sw-chip strong { display: block; font-size: 16px; letter-spacing: -.02em; }
.muni-sw-chip small { color: var(--muted); font-size: 11px; }

/* 分布バー */
.muni-dist-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 12px;
}
.muni-dist-row {
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 12px 14px;
  background: var(--paper);
}
.muni-dist-head {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 8px;
}
.muni-dist-head strong { font-size: 13px; }
.muni-dist-head span { font-variant-numeric: tabular-nums; font-weight: 700; }
.muni-dist-bar {
  position: relative;
  height: 10px;
  margin: 10px 0 6px;
  border-radius: 999px;
  background: linear-gradient(90deg, var(--bg), var(--surface-subtle));
  border: 1px solid var(--line);
}
.muni-dist-bar i {
  position: absolute;
  top: 50%;
  transform: translate(-50%, -50%);
}
.muni-dist-bar i.mean {
  width: 2px;
  height: 14px;
  background: var(--muted);
  border-radius: 1px;
}
.muni-dist-bar i.uto {
  width: 13px;
  height: 13px;
  border-radius: 50%;
  background: var(--blue);
  border: 2px solid var(--paper);
  box-shadow: 0 0 0 1px var(--blue);
}
.muni-dist-row.good .muni-dist-bar i.uto { background: var(--green); box-shadow: 0 0 0 1px var(--green); }
.muni-dist-row.warn .muni-dist-bar i.uto { background: var(--red); box-shadow: 0 0 0 1px var(--red); }
.muni-dist-meta { font-size: 11px; color: var(--muted); font-weight: 700; }

/* ピン留め比較 */
.muni-pin-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 12px;
}
.muni-pin-chip {
  border: 1px solid var(--line);
  border-radius: 999px;
  padding: 5px 12px;
  background: var(--paper);
  font-weight: 700;
  font-size: 12px;
  cursor: pointer;
}
.muni-pin-chip i { color: var(--red); font-style: normal; margin-left: 4px; }
.muni-pin-table th.muni-home-cell { background: rgba(37, 99, 169, 0.12); }

/* 散布図: ピン留め点 */
.municipality-scatter button.pinned {
  outline: 2px solid var(--amber);
  outline-offset: 1px;
  z-index: 3;
}

@media (max-width: 720px) {
  .muni-sw-grid { grid-template-columns: 1fr; }
  .muni-dist-grid { grid-template-columns: 1fr; }
}

/* ===== 自治体比較: 類似団体・総合スコア ===== */
.muni-bulk-pin,
.muni-sim-pin {
  border: 1px solid var(--blue);
  background: var(--blue);
  color: #fff;
  border-radius: 8px;
  padding: 7px 14px;
  font-weight: 700;
  font-size: 12px;
  cursor: pointer;
}
.muni-bulk-pin { white-space: nowrap; }
.muni-sim-pin { width: 100%; margin-top: 10px; }
.muni-sim-pin.added {
  background: var(--surface-subtle);
  color: var(--green);
  border-color: var(--green);
}

.muni-similar-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 12px;
}
.muni-similar-grid article {
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 14px;
  background: var(--paper);
}
.muni-sim-head {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 8px;
}
.muni-sim-head h4 { margin: 0; font-size: 15px; }
.muni-sim-pct {
  font-size: 11px;
  font-weight: 800;
  color: #fff;
  background: var(--blue);
  border-radius: 999px;
  padding: 2px 9px;
  white-space: nowrap;
}
.muni-similar-grid p {
  color: var(--muted);
  font-size: 12px;
  margin: 4px 0 8px;
}
.muni-similar-grid dl {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 6px 10px;
  margin: 0;
}
.muni-similar-grid dl div { display: flex; flex-direction: column; }
.muni-similar-grid dt { font-size: 10px; color: var(--muted); font-weight: 700; }
.muni-similar-grid dd { margin: 0; font-size: 13px; font-weight: 700; font-variant-numeric: tabular-nums; }

/* 総合健全性スコア */
.muni-health-uto {
  text-align: right;
  white-space: nowrap;
}
.muni-health-uto span { display: block; font-size: 11px; color: var(--muted); font-weight: 700; }
.muni-health-uto strong { font-size: 22px; letter-spacing: -.03em; }
.muni-health-uto small { color: var(--muted); font-size: 11px; }

.muni-health-list {
  display: grid;
  gap: 4px;
  max-height: 520px;
  overflow-y: auto;
}
.muni-health-row {
  display: grid;
  grid-template-columns: 30px 1fr 2.4fr auto;
  align-items: center;
  gap: 10px;
  padding: 5px 8px;
  border-radius: 8px;
}
.muni-health-row.pinned { background: rgba(183, 121, 31, 0.08); }
.muni-health-row.home {
  background: rgba(37, 99, 169, 0.12);
  outline: 1px solid var(--blue);
}
.muni-health-rank {
  font-variant-numeric: tabular-nums;
  color: var(--muted);
  font-weight: 700;
  font-size: 12px;
  text-align: right;
}
.muni-health-name { font-size: 13px; font-weight: 700; }
.muni-health-row.home .muni-health-name { color: var(--blue); }
.muni-health-bar {
  height: 10px;
  border-radius: 999px;
  background: var(--bg);
  overflow: hidden;
}
.muni-health-bar i {
  display: block;
  height: 100%;
  border-radius: 999px;
  background: linear-gradient(90deg, var(--amber), var(--green));
}
.muni-health-row.home .muni-health-bar i { background: var(--blue); }
.muni-health-row strong { font-variant-numeric: tabular-nums; font-size: 13px; min-width: 38px; text-align: right; }

@media (max-width: 720px) {
  .muni-similar-grid { grid-template-columns: 1fr; }
  .muni-health-row { grid-template-columns: 26px 1fr 1.6fr auto; }
}

/* ===== 宇土市の立ち位置(九州80市) ===== */
.uto-standing {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: 11px;
  font-weight: 700;
  line-height: 1.4;
  padding: 2px 0;
  color: var(--muted);
}
.uto-standing i {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  flex: none;
  background: var(--muted);
}
.uto-standing.tone-good { color: var(--green); }
.uto-standing.tone-good i { background: var(--green); }
.uto-standing.tone-warn { color: var(--red); }
.uto-standing.tone-warn i { background: var(--red); }
.uto-standing.tone-neutral { color: var(--muted); }

.uto-kpi-card .uto-standing {
  margin: 4px 0 2px;
  padding: 4px 8px;
  border-radius: 7px;
  background: var(--surface-subtle);
  width: fit-content;
}

/* 立ち位置サマリー */
.uto-standing-hero {
  display: grid;
  grid-template-columns: 1.3fr 1fr 1fr;
  gap: 14px;
  margin-bottom: 14px;
}
.uto-standing-hero article {
  border: 1px solid var(--line);
  border-radius: 14px;
  padding: 16px 18px;
  background: var(--paper);
}
.uto-standing-total {
  border-left: 5px solid var(--muted) !important;
}
.uto-standing-total.tone-good { border-left-color: var(--green) !important; }
.uto-standing-total.tone-neutral { border-left-color: var(--amber) !important; }
.uto-standing-total.tone-warn { border-left-color: var(--red) !important; }
.uto-standing-total span,
.uto-sw span {
  display: block;
  font-size: 11px;
  font-weight: 800;
  color: var(--muted);
  letter-spacing: .04em;
}
.uto-standing-total strong {
  display: block;
  font-size: clamp(30px, 5vw, 44px);
  letter-spacing: -.04em;
  line-height: 1.05;
  margin: 2px 0;
}
.uto-standing-total strong i { font-size: 16px; font-style: normal; color: var(--muted); margin-left: 2px; }
.uto-standing-total small,
.uto-sw small { color: var(--muted); font-size: 11px; }

.uto-sw { border-left: 5px solid var(--line); }
.uto-sw.good { border-left-color: var(--green); }
.uto-sw.warn { border-left-color: var(--red); }
.uto-sw strong { display: block; font-size: 17px; margin: 4px 0 2px; letter-spacing: -.01em; }

.uto-standing-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
}
.uto-standing-grid article {
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 13px 15px;
  background: var(--paper);
}
.uto-standing-grid span {
  display: block;
  font-size: 11px;
  font-weight: 700;
  color: var(--muted);
}
.uto-standing-grid strong {
  display: block;
  font-size: 19px;
  letter-spacing: -.02em;
  margin: 3px 0 5px;
  font-variant-numeric: tabular-nums;
}
.uto-standing-grid .uto-standing {
  padding: 3px 7px;
  border-radius: 6px;
  background: var(--surface-subtle);
}

@media (max-width: 860px) {
  .uto-standing-hero { grid-template-columns: 1fr; }
  .uto-standing-grid { grid-template-columns: 1fr 1fr; }
}

.uto-topic-summary .uto-standing {
  margin-top: 6px;
  padding: 3px 8px;
  border-radius: 7px;
  background: var(--surface-subtle);
  width: fit-content;
}

/* 立ち位置ストリップ */
.uto-standing-strip {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 12px;
  padding: 10px 14px;
  margin-bottom: 14px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--surface-subtle);
}
.uto-standing-strip-label {
  font-size: 12px;
  font-weight: 800;
  color: var(--ink);
  letter-spacing: .03em;
}
.uto-standing-strip-items {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 8px;
}
.uto-standing-strip .uto-standing {
  padding: 3px 9px;
  border-radius: 999px;
  background: var(--paper);
  border: 1px solid var(--line);
}
.uto-standing-strip .uto-standing b { font-weight: 800; }

/* ===== 歳入・歳出 構造分析 ===== */
.re-analysis { display: grid; gap: 20px; }
.re-summary-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
}
.re-summary-grid article {
  border: 1px solid var(--line);
  border-left-width: 4px;
  border-radius: 12px;
  padding: 14px 16px;
  background: var(--paper);
}
.re-summary-grid article.tone-good { border-left-color: var(--green); }
.re-summary-grid article.tone-warn { border-left-color: var(--red); }
.re-summary-grid article.tone-neutral { border-left-color: var(--blue); }
.re-summary-grid span { display: block; font-size: 11px; font-weight: 700; color: var(--muted); }
.re-summary-grid strong { display: block; font-size: clamp(20px, 2.6vw, 27px); letter-spacing: -.03em; margin: 3px 0; font-variant-numeric: tabular-nums; }
.re-summary-grid small { color: var(--muted); font-size: 11px; }

.re-structure {
  border: 1px solid var(--line);
  border-radius: 14px;
  padding: 16px 18px;
  background: var(--paper);
}
.re-structure-head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 10px; margin-bottom: 12px; }
.re-structure-head h3 { margin: 0; font-size: 14px; }
.re-legend { display: flex; flex-wrap: wrap; gap: 12px; font-size: 12px; font-weight: 700; color: var(--muted); }
.re-legend span { display: inline-flex; align-items: center; gap: 5px; }
.re-legend i { width: 12px; height: 12px; border-radius: 3px; display: inline-block; }

.seg-a { background: #0f2742; }
.seg-b { background: var(--amber); }
.seg-c { background: var(--green); }
.seg-d { background: #c2c9d2; }

.re-stack-list { display: grid; gap: 6px; }
.re-stack-row { display: grid; grid-template-columns: 44px 1fr 80px; align-items: center; gap: 10px; }
.re-stack-era { font-size: 12px; font-weight: 700; color: var(--muted); }
.re-stack-total { font-size: 12px; font-weight: 700; text-align: right; font-variant-numeric: tabular-nums; }
.re-stack-bar { display: flex; height: 18px; border-radius: 5px; overflow: hidden; background: var(--bg); }
.re-stack-bar i { display: block; height: 100%; }

.re-tables { display: grid; gap: 16px; grid-template-columns: 1fr; }
.re-table-block h4 { margin: 0 0 8px; font-size: 13px; }
.re-detail-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.re-detail-table th, .re-detail-table td { padding: 6px 8px; border-bottom: 1px solid var(--line); text-align: left; }
.re-detail-table th.num, .re-detail-table td.num { text-align: right; font-variant-numeric: tabular-nums; }
.re-detail-table thead th { font-size: 11px; color: var(--muted); }
.re-detail-table td.neg { color: var(--red); }
.re-detail-table td.pos { color: var(--green); }

.re-comments { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.re-comments article { border: 1px solid var(--line); border-radius: 12px; padding: 14px 16px; background: var(--surface-subtle); }
.re-comments strong { display: block; font-size: 13px; margin-bottom: 6px; }
.re-comments p { font-size: 12.5px; line-height: 1.65; color: var(--ink); }

@media (max-width: 860px) {
  .re-summary-grid { grid-template-columns: 1fr 1fr; }
  .re-comments { grid-template-columns: 1fr; }
}
@media (min-width: 900px) {
  .re-tables { grid-template-columns: 1fr 1fr; }
  .re-tables .re-table-block:only-child { grid-column: 1 / -1; }
}

.re-summary-grid .uto-standing {
  margin-top: 6px;
  padding: 3px 8px;
  border-radius: 7px;
  background: var(--surface-subtle);
  width: fit-content;
}

/* ===== 特別会計の決算 ===== */
.special-accounts-section { margin-top: 8px; }
.sa-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 12px;
  margin-bottom: 14px;
}
.sa-grid article {
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 14px 16px;
  background: var(--paper);
}
.sa-card-head { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.sa-card-head h4 { margin: 0; font-size: 14px; }
.sa-type { font-size: 10px; font-weight: 800; color: #fff; border-radius: 999px; padding: 2px 8px; white-space: nowrap; }
.sa-medical { background: var(--red); }
.sa-care { background: var(--blue); }
.sa-infrastructure { background: var(--green); }
.sa-other { background: var(--muted); }
.sa-figures { display: flex; gap: 16px; margin: 10px 0 6px; }
.sa-figures dt { font-size: 10px; color: var(--muted); font-weight: 700; }
.sa-figures dd { margin: 0; font-size: 17px; font-weight: 700; letter-spacing: -.02em; font-variant-numeric: tabular-nums; }
.sa-figures dd.neg { color: var(--red); }
.sa-figures dd.pos { color: var(--green); }
.sa-execution {
  display: grid;
  grid-template-columns: auto minmax(70px, 1fr);
  align-items: center;
  gap: 8px;
  color: var(--muted);
  font-size: 10px;
  font-weight: 800;
}
.sa-execution b { color: var(--ink); font-size: 12px; }
.sa-execution i {
  display: block;
  overflow: hidden;
  height: 7px;
  border-radius: 999px;
  background: var(--soft);
}
.sa-execution em {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--blue), var(--teal));
}
.sa-top { font-size: 11.5px; color: var(--ink); margin: 4px 0 8px; }
.sa-balance { margin: 6px 0 8px; color: var(--muted); font-size: 10.5px; }
.sa-balance strong { color: var(--green); }
.sa-balance strong.neg { color: var(--red); }
.sa-spark { display: flex; align-items: flex-end; gap: 4px; height: 30px; }
.sa-spark i { flex: 1; background: var(--blue); border-radius: 2px 2px 0 0; min-height: 3px; opacity: .85; }
.sa-grid small { color: var(--muted); font-size: 10px; }
.sa-context {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
  gap: 12px;
  margin-bottom: 10px;
}
.sa-context article { border: 1px solid var(--line); border-radius: 10px; padding: 12px 14px; background: var(--surface-subtle); }
.sa-context span { display: block; font-size: 11px; color: var(--muted); font-weight: 700; }
.sa-context strong { display: block; font-size: 18px; letter-spacing: -.02em; margin: 3px 0; font-variant-numeric: tabular-nums; }
.sa-context small { color: var(--muted); font-size: 11px; }
@media (max-width: 720px) {
  .sa-context { grid-template-columns: 1fr; }
}

/* ===== 会計間の繰入・繰出照合 ===== */
.inter-account-transfer-section { margin-top: 24px; }
.iat-kpis {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
  margin-bottom: 16px;
}
.iat-kpis article {
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 13px 15px;
  background: var(--surface-subtle);
}
.iat-kpis span { display: block; color: var(--muted); font-size: 11px; font-weight: 700; }
.iat-kpis strong { display: block; margin: 4px 0; font-size: 19px; letter-spacing: -.02em; font-variant-numeric: tabular-nums; }
.iat-kpis small { color: var(--muted); font-size: 10.5px; }
.iat-table-wrap { overflow-x: auto; margin-bottom: 16px; }
.iat-table { width: 100%; min-width: 760px; border-collapse: collapse; font-size: 12.5px; }
.iat-table th, .iat-table td { padding: 8px 9px; border-bottom: 1px solid var(--line); text-align: left; vertical-align: middle; }
.iat-table thead th { color: var(--muted); font-size: 10.5px; white-space: nowrap; }
.iat-table th.num, .iat-table td.num { text-align: right; font-variant-numeric: tabular-nums; }
.iat-mini, .iat-status {
  display: inline-flex;
  align-items: center;
  width: fit-content;
  border-radius: 999px;
  font-size: 9.5px;
  font-weight: 800;
  line-height: 1.25;
}
.iat-mini { margin: 2px 4px 2px 0; padding: 2px 6px; }
.iat-status { padding: 3px 8px; }
.iat-mini.exact, .iat-status.exact { color: #0c6b4a; background: #dff7ed; }
.iat-mini.partial, .iat-status.partial { color: #8a5700; background: #fff2cf; }
.iat-mini.unmatched, .iat-status.unmatched { color: #5f6670; background: #edf0f3; }
.iat-subhead { margin: 2px 0 10px; font-size: 13px; }
.iat-account-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 12px;
  margin-bottom: 14px;
}
.iat-account-grid article { border: 1px solid var(--line); border-radius: 12px; padding: 13px 15px; background: var(--paper); }
.iat-account-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; }
.iat-account-head h4 { margin: 0; font-size: 13px; }
.iat-account-grid article > strong { display: block; margin: 9px 0 3px; font-size: 18px; font-variant-numeric: tabular-nums; }
.iat-account-grid p { margin: 0 0 5px; color: var(--muted); font-size: 10.5px; }
.iat-account-grid small { display: block; color: var(--ink); font-size: 10.5px; }
.iat-account-grid em { display: block; margin-top: 6px; color: var(--muted); font-size: 10px; font-style: normal; }
.iat-caution {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 10px;
  align-items: start;
  margin: 8px 0 12px;
  border-left: 4px solid var(--amber);
  padding: 10px 12px;
  background: var(--surface-subtle);
}
.iat-caution strong { font-size: 11px; white-space: nowrap; }
.iat-caution p { margin: 0; color: var(--muted); font-size: 11px; line-height: 1.65; }
@media (max-width: 900px) {
  .iat-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 620px) {
  .iat-kpis { grid-template-columns: 1fr; }
  .iat-caution { grid-template-columns: 1fr; gap: 4px; }
}

/* ===== 統一的な基準による財務4表 ===== */
.public-accounting-section { margin-top: 24px; }
.pa-kpis {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
  margin-bottom: 16px;
}
.pa-kpis article {
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 13px 15px;
  background: var(--surface-subtle);
}
.pa-kpis span { display: block; color: var(--muted); font-size: 11px; font-weight: 700; }
.pa-kpis strong { display: block; margin: 4px 0; font-size: 19px; letter-spacing: -.02em; font-variant-numeric: tabular-nums; }
.pa-kpis small { color: var(--muted); font-size: 10.5px; }
.pa-balance-layout {
  display: grid;
  grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr);
  gap: 14px;
  margin-bottom: 18px;
}
.pa-balance-card,
.pa-findings {
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 15px 16px;
  background: var(--paper);
}
.pa-balance-card h3,
.pa-findings h3 { margin: 0 0 12px; font-size: 13px; }
.pa-balance-total { display: flex; justify-content: space-between; gap: 10px; margin-bottom: 7px; color: var(--muted); font-size: 10.5px; }
.pa-balance-bar {
  display: flex;
  overflow: hidden;
  min-height: 58px;
  border-radius: 9px;
  background: var(--surface-subtle);
}
.pa-balance-bar i {
  display: flex;
  align-items: center;
  justify-content: center;
  min-width: 0;
  font-style: normal;
}
.pa-balance-bar i.liability { color: #fff; background: #64748b; }
.pa-balance-bar i.net-assets { color: #fff; background: #0f8b6d; }
.pa-balance-bar i span { padding: 4px; font-size: 10.5px; font-weight: 900; text-align: center; }
.pa-balance-card p { margin: 10px 0 0; color: var(--muted); font-size: 10.5px; line-height: 1.6; }
.pa-findings ul { margin: 0; padding-left: 18px; }
.pa-findings li { margin: 0 0 7px; color: var(--muted); font-size: 11px; line-height: 1.6; }
.pa-findings li:last-child { margin-bottom: 0; }
.pa-subhead { margin: 4px 0 8px; font-size: 13px; }
.pa-table-wrap { overflow-x: auto; margin-bottom: 18px; }
.pa-table { width: 100%; min-width: 850px; border-collapse: collapse; font-size: 12px; }
.pa-table th,
.pa-table td { padding: 8px 9px; border-bottom: 1px solid var(--line); text-align: left; vertical-align: middle; }
.pa-table thead th { color: var(--muted); font-size: 10.5px; white-space: nowrap; }
.pa-table th.num,
.pa-table td.num { text-align: right; font-variant-numeric: tabular-nums; }
.pa-table tbody th { white-space: nowrap; }
.pa-table tbody th small { display: block; color: var(--amber); font-size: 8.5px; font-weight: 800; }
.pa-table .positive { color: var(--green); }
.pa-table .negative { color: var(--red); }
.pa-scope-intro { margin: 0 0 10px; color: var(--muted); font-size: 11px; line-height: 1.6; }
.pa-scope-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
  margin-bottom: 14px;
}
.pa-scope-card { border: 1px solid var(--line); border-radius: 12px; padding: 14px 15px; background: var(--paper); }
.pa-scope-card > span { display: block; color: var(--muted); font-size: 11px; font-weight: 800; }
.pa-scope-card > strong { display: block; margin: 4px 0 9px; font-size: 19px; font-variant-numeric: tabular-nums; }
.pa-scope-card dl { margin: 0; }
.pa-scope-card dl div { display: flex; justify-content: space-between; gap: 10px; padding: 4px 0; border-top: 1px solid var(--line); font-size: 10.5px; }
.pa-scope-card dt { color: var(--muted); }
.pa-scope-card dd { margin: 0; font-weight: 800; font-variant-numeric: tabular-nums; }
.pa-disclosure-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 14px;
  margin: 22px 0 11px;
}
.pa-disclosure-head h3 { margin: 0 0 3px; font-size: 15px; }
.pa-disclosure-head p { margin: 0; color: var(--muted); font-size: 11px; }
.pa-disclosure-head > span {
  display: inline-flex;
  border-radius: 999px;
  padding: 5px 9px;
  font-size: 9.5px;
  font-weight: 900;
  white-space: nowrap;
}
.pa-disclosure-head > span.verified { color: #0c6b4a; background: #dff7ed; }
.pa-disclosure-head > span.has-issue { color: #8a5700; background: #fff2cf; }
.pa-disclosure-kpis {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
  margin-bottom: 14px;
}
.pa-disclosure-kpis article {
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 13px 15px;
  background: var(--surface-subtle);
}
.pa-disclosure-kpis span { display: block; color: var(--muted); font-size: 10.5px; font-weight: 800; }
.pa-disclosure-kpis strong { display: block; margin: 4px 0; font-size: 18px; font-variant-numeric: tabular-nums; }
.pa-disclosure-kpis small { color: var(--muted); font-size: 10px; line-height: 1.45; }
.pa-disclosure-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(280px, .85fr);
  gap: 14px;
  margin-bottom: 16px;
}
.pa-disclosure-grid > article {
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 15px 16px;
  background: var(--paper);
}
.pa-disclosure-grid h4 { margin: 0 0 3px; font-size: 13px; }
.pa-purpose-assets > p,
.pa-debt-window > p { margin: 0 0 12px; color: var(--muted); font-size: 10px; line-height: 1.55; }
.pa-purpose-row {
  display: grid;
  grid-template-columns: minmax(105px, .9fr) minmax(90px, 1.5fr) minmax(115px, auto);
  gap: 9px;
  align-items: center;
  margin: 7px 0;
}
.pa-purpose-row > span { color: var(--muted); font-size: 10.5px; }
.pa-purpose-row > i,
.pa-debt-window > div > i {
  overflow: hidden;
  height: 8px;
  border-radius: 999px;
  background: var(--surface-subtle);
}
.pa-purpose-row > i em,
.pa-debt-window > div > i em {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--brand), var(--teal));
}
.pa-purpose-row > strong { font-size: 10.5px; text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.pa-purpose-row > strong small { margin-left: 5px; color: var(--muted); font-size: 9px; }
.pa-debt-window > div {
  display: grid;
  grid-template-columns: 62px 1fr 45px;
  gap: 9px;
  align-items: center;
  margin: 11px 0;
  font-size: 10.5px;
}
.pa-debt-window > div > strong { text-align: right; font-variant-numeric: tabular-nums; }
.pa-debt-window dl { margin: 14px 0 10px; }
.pa-debt-window dl div { display: flex; justify-content: space-between; gap: 12px; padding: 6px 0; border-top: 1px solid var(--line); font-size: 10.5px; }
.pa-debt-window dt { color: var(--muted); }
.pa-debt-window dd { margin: 0; font-weight: 800; font-variant-numeric: tabular-nums; }
.pa-boundary-title { margin: 2px 0 9px; font-size: 13px; }
.pa-boundary-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
  margin-bottom: 14px;
}
.pa-boundary-grid article { border: 1px solid var(--line); border-radius: 12px; padding: 13px 14px; background: var(--paper); }
.pa-boundary-grid article > span { display: block; color: var(--muted); font-size: 10.5px; font-weight: 800; }
.pa-boundary-grid article > strong { display: block; margin: 3px 0; font-size: 17px; }
.pa-boundary-grid article > small { color: var(--muted); font-size: 9.5px; }
.pa-boundary-grid ul { margin: 9px 0 0; padding-left: 16px; }
.pa-boundary-grid li { margin: 4px 0; color: var(--muted); font-size: 9.5px; line-height: 1.45; }
.pa-boundary-grid li em { color: var(--ink); font-size: 8.5px; font-style: normal; font-weight: 800; }
.pa-disclosure-notes {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
  margin-bottom: 12px;
}
.pa-disclosure-notes article { border: 1px solid var(--line); border-radius: 10px; padding: 11px 13px; background: var(--surface-subtle); }
.pa-disclosure-notes strong { font-size: 10.5px; }
.pa-disclosure-notes p { margin: 4px 0 0; color: var(--muted); font-size: 10px; line-height: 1.55; }
.pa-source-discrepancy {
  margin: 0 0 12px;
  border-left: 4px solid var(--amber);
  padding: 10px 12px;
  background: var(--soft-amber);
}
.pa-source-discrepancy strong { font-size: 10.5px; }
.pa-source-discrepancy p { margin: 3px 0 0; color: var(--muted); font-size: 10px; line-height: 1.55; }
.pa-disclosure-sources {
  margin: 0 0 12px;
  border: 1px solid var(--line);
  border-radius: 9px;
  padding: 9px 11px;
}
.pa-disclosure-sources summary { cursor: pointer; font-size: 10.5px; font-weight: 800; }
.pa-disclosure-sources p { margin: 7px 0 0; font-size: 9.5px; line-height: 1.5; }
.pa-caution {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 10px;
  align-items: start;
  margin: 8px 0 12px;
  border-left: 4px solid var(--amber);
  padding: 10px 12px;
  background: var(--surface-subtle);
}
.pa-caution strong { font-size: 11px; white-space: nowrap; }
.pa-caution p { margin: 0; color: var(--muted); font-size: 11px; line-height: 1.65; }
@media (max-width: 900px) {
  .pa-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .pa-balance-layout { grid-template-columns: 1fr; }
  .pa-scope-grid { grid-template-columns: 1fr; }
  .pa-disclosure-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .pa-disclosure-grid { grid-template-columns: 1fr; }
  .pa-boundary-grid { grid-template-columns: 1fr; }
}
@media (max-width: 620px) {
  .pa-kpis { grid-template-columns: 1fr; }
  .pa-disclosure-head { display: block; }
  .pa-disclosure-head > span { margin-top: 8px; }
  .pa-disclosure-kpis { grid-template-columns: 1fr; }
  .pa-purpose-row { grid-template-columns: minmax(92px, .9fr) minmax(60px, 1fr) minmax(105px, auto); gap: 6px; }
  .pa-disclosure-notes { grid-template-columns: 1fr; }
  .pa-caution { grid-template-columns: 1fr; gap: 4px; }
}

/* ===== 指定管理施設の運営状況 ===== */
.designated-mgmt-section { margin-top: 24px; }
.dm-summary {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
  margin-bottom: 14px;
}
.dm-summary article { border: 1px solid var(--line); border-radius: 12px; padding: 13px 16px; background: var(--surface-subtle); }
.dm-summary span { display: block; font-size: 11px; color: var(--muted); font-weight: 700; }
.dm-summary strong { display: block; font-size: 19px; letter-spacing: -.02em; margin: 3px 0; }
.dm-summary small { color: var(--muted); font-size: 11px; }
.dm-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.dm-table th, .dm-table td { padding: 7px 9px; border-bottom: 1px solid var(--line); text-align: left; vertical-align: top; }
.dm-table th.num, .dm-table td.num { text-align: right; font-variant-numeric: tabular-nums; }
.dm-table thead th { font-size: 11px; color: var(--muted); }
.dm-table td.pos { color: var(--green); font-weight: 700; }
.dm-table td.neg { color: var(--red); font-weight: 700; }
.dm-table small { color: var(--muted); font-size: 11px; }
@media (max-width: 720px) { .dm-summary { grid-template-columns: 1fr; } }

/* ===== 公営住宅 団地別明細 ===== */
.housing-units-section { margin-top: 24px; }
.hu-list { display: grid; gap: 8px; }
.hu-row {
  display: grid;
  grid-template-columns: 100px 1.6fr auto;
  grid-template-areas: "name bar units" "meta meta meta";
  align-items: center;
  gap: 4px 10px;
  padding: 8px 12px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--paper);
}
.hu-name { grid-area: name; font-weight: 700; font-size: 13px; }
.hu-bar { grid-area: bar; height: 12px; background: var(--bg); border-radius: 999px; overflow: hidden; }
.hu-bar i { display: block; height: 100%; background: var(--blue); border-radius: 999px; }
.hu-units { grid-area: units; font-weight: 700; font-variant-numeric: tabular-nums; font-size: 13px; }
.hu-meta { grid-area: meta; color: var(--muted); font-size: 11px; }

/* 歳入歳出分析 → 事業費検索 導線 */
.re-drilldown {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 10px 16px;
  padding: 14px 16px;
  border: 1px dashed var(--line);
  border-radius: 12px;
  background: var(--surface-subtle);
}
.re-drilldown p { font-size: 12.5px; color: var(--muted); margin: 0; flex: 1 1 320px; }
.re-drill-btn {
  border: 1px solid var(--blue);
  background: var(--blue);
  color: #fff;
  border-radius: 8px;
  padding: 9px 16px;
  font-weight: 700;
  font-size: 13px;
  cursor: pointer;
  white-space: nowrap;
}

/* ===== 上下水道 収支構造(決算書) ===== */
.utility-finance-section { margin-top: 8px; }
.uf-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.uf-account { border: 1px solid var(--line); border-radius: 12px; padding: 14px 16px; background: var(--paper); }
.uf-account-head { display: flex; justify-content: space-between; align-items: baseline; }
.uf-account-head h4 { margin: 0; font-size: 14px; }
.uf-account-head span { color: var(--muted); font-size: 11px; font-weight: 700; }
.uf-figs { display: grid; grid-template-columns: 1fr 1fr; gap: 8px 12px; margin: 10px 0; }
.uf-figs dt { font-size: 10px; color: var(--muted); font-weight: 700; }
.uf-figs dd { margin: 0; font-size: 16px; font-weight: 700; font-variant-numeric: tabular-nums; letter-spacing: -.02em; }
.uf-figs dd.neg { color: var(--red); }
.uf-figs dd.pos { color: var(--green); }
.uf-spark-row { display: grid; grid-template-columns: 56px 1fr; align-items: end; gap: 8px; margin-top: 6px; }
.uf-spark-row span { font-size: 10px; color: var(--muted); font-weight: 700; }
.uf-spark { display: flex; align-items: flex-end; gap: 4px; height: 28px; }
.uf-spark i { flex: 1; min-height: 2px; border-radius: 2px 2px 0 0; }
.uf-spark i.pos { background: var(--green); }
.uf-spark i.neg { background: var(--red); }
.uf-account small { display: block; margin-top: 8px; color: var(--muted); font-size: 11px; }
.uf-insight { margin-top: 12px; padding: 12px 14px; border-radius: 10px; background: var(--surface-subtle); font-size: 12.5px; line-height: 1.7; color: var(--ink); }
@media (max-width: 720px) { .uf-grid { grid-template-columns: 1fr; } .uf-figs { grid-template-columns: 1fr 1fr; } }

/* ===== 水道施設 耐震性(簡易診断) ===== */
.seismic-diag-section { margin-top: 8px; }
.sd-summary { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 12px; margin-bottom: 14px; }
.sd-summary article { border: 1px solid var(--line); border-left-width: 4px; border-radius: 12px; padding: 13px 15px; background: var(--paper); }
.sd-summary article.tone-neg { border-left-color: var(--red); }
.sd-summary article.tone-warn { border-left-color: var(--amber); }
.sd-summary article.tone-pos { border-left-color: var(--green); }
.sd-summary span { display: block; font-size: 11px; color: var(--muted); font-weight: 700; }
.sd-summary strong { display: block; font-size: clamp(20px,2.4vw,26px); letter-spacing: -.03em; margin: 3px 0; }
.sd-summary small { color: var(--muted); font-size: 11px; }
.sd-cols { display: grid; grid-template-columns: 1.2fr 1fr; gap: 16px; }
.sd-priority h4, .sd-cats h4 { margin: 0 0 8px; font-size: 13px; }
.sd-priority ol { margin: 0; padding: 0; list-style: none; display: grid; gap: 6px; }
.sd-priority li { display: grid; grid-template-columns: auto 1fr auto; grid-template-areas: "rank name rate" "rank meta meta"; gap: 1px 8px; align-items: center; border: 1px solid var(--line); border-radius: 8px; padding: 7px 10px; }
.sd-rank { grid-area: rank; font-weight: 800; color: var(--red); font-size: 12px; }
.sd-priority strong { grid-area: name; font-size: 13px; }
.sd-rate { grid-area: rate; font-weight: 800; font-size: 12px; padding: 1px 8px; border-radius: 999px; background: var(--surface-subtle); }
.sd-rate.neg { color: #fff; background: var(--red); }
.sd-rate.warn { color: #fff; background: var(--amber); }
.sd-rate.pos { color: #fff; background: var(--green); }
.sd-priority small { grid-area: meta; color: var(--muted); font-size: 11px; }
.sd-cat-row { display: grid; grid-template-columns: 84px 1fr 44px; align-items: center; gap: 8px; margin-bottom: 6px; font-size: 12px; }
.sd-cat-bar { height: 10px; background: var(--bg); border-radius: 999px; overflow: hidden; }
.sd-cat-bar i { display: block; height: 100%; background: var(--red); border-radius: 999px; }
.sd-cat-num { text-align: right; font-weight: 700; font-variant-numeric: tabular-nums; }
@media (max-width: 720px) { .sd-summary { grid-template-columns: 1fr 1fr; } .sd-cols { grid-template-columns: 1fr; } }

/* ===== 下水道 広域化・共同化 ===== */
.sewer-region-note { margin-top: 8px; }
.srn-body { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.srn-body article { border: 1px solid var(--line); border-left: 4px solid var(--blue); border-radius: 12px; padding: 14px 16px; background: var(--surface-subtle); }
.srn-body span { display: block; font-size: 11px; color: var(--muted); font-weight: 800; letter-spacing: .04em; }
.srn-body strong { display: block; font-size: 14px; margin: 5px 0 7px; line-height: 1.5; }
.srn-body p { font-size: 12.5px; line-height: 1.7; color: var(--ink); }
@media (max-width: 720px) { .srn-body { grid-template-columns: 1fr; } }

.uf-rate { font-weight: 700; }
.uf-rate.neg { color: var(--red); }
.uf-rate.pos { color: var(--green); }

/* ===== 水道料金改定・資金残高 ===== */
.water-rate-section { margin-top: 8px; }
.wr-official-link { align-self: flex-start; padding: 7px 11px; border: 1px solid var(--line); border-radius: 8px; color: var(--accent, #2563eb); font-size: 11px; font-weight: 800; text-decoration: none; white-space: nowrap; }
.wr-revision-summary { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; margin-bottom: 16px; }
.wr-revision-summary article { padding: 13px; border: 1px solid var(--border); border-radius: 11px; background: var(--surface-subtle); }
.wr-revision-summary span, .wr-revision-summary small { display: block; color: var(--muted); font-size: 10.5px; line-height: 1.5; }
.wr-revision-summary strong { display: block; margin: 4px 0; color: var(--text); font-size: 16px; line-height: 1.4; }
.wr-rate-analysis { display: grid; grid-template-columns: minmax(0, 1.45fr) minmax(280px, .75fr); gap: 14px; margin-bottom: 18px; }
.wr-rate-analysis > div { min-width: 0; padding: 15px; border: 1px solid var(--border); border-radius: 12px; background: var(--surface); }
.wr-rate-analysis h4 { margin: 0 0 10px; color: var(--text); font-size: 13px; }
.wr-rate-table { width: 100%; font-size: 10.5px; white-space: nowrap; }
.wr-rate-table th, .wr-rate-table td { padding: 7px 8px; }
.wr-rate-up { color: var(--red); font-weight: 800; }
.wr-scenario-list { display: grid; gap: 7px; }
.wr-scenario-list article { display: grid; grid-template-columns: 1fr auto; gap: 2px 8px; padding: 9px 10px; border: 1px solid var(--border); border-radius: 9px; }
.wr-scenario-list article.current { border-color: color-mix(in srgb, var(--green) 45%, var(--border)); background: var(--soft-green); }
.wr-scenario-list span { color: var(--muted); font-size: 11px; font-weight: 700; }
.wr-scenario-list strong { color: var(--text); font-size: 14px; }
.wr-scenario-list small { grid-column: 1 / -1; color: var(--muted); font-size: 10px; line-height: 1.45; }
.wr-analysis-insight { margin: 14px 0 0; padding: 13px 15px; border-left: 4px solid var(--uto-accent); background: var(--surface-subtle); color: var(--text); font-size: 12px; line-height: 1.75; }
@media (max-width: 900px) { .wr-revision-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); } .wr-rate-analysis { grid-template-columns: 1fr; } }
@media (max-width: 560px) { .wr-revision-summary { grid-template-columns: 1fr; } }
.wr-grid { display: grid; grid-template-columns: 1.3fr 1fr; gap: 16px; }
.wr-cash h4, .wr-compare h4 { margin: 0 0 10px; font-size: 13px; }
.wr-bars { display: flex; align-items: flex-end; gap: 4px; height: 90px; border-bottom: 1px solid var(--line); }
.wr-bar-col { flex: 1; display: flex; flex-direction: column; align-items: center; height: 100%; justify-content: flex-end; }
.wr-bar-col i { width: 70%; min-height: 3px; border-radius: 2px 2px 0 0; background: var(--green); }
.wr-bar-col i.neg { background: var(--amber); }
.wr-bar-col i.mark { outline: 2px solid var(--blue); outline-offset: 1px; }
.wr-bar-col span { font-size: 9px; color: var(--muted); margin-top: 3px; }
.wr-cash-meta { display: flex; justify-content: space-between; margin-top: 8px; font-size: 12px; color: var(--muted); }
.wr-cash-meta b { color: var(--ink); font-size: 14px; }
.wr-note { margin-top: 8px; font-size: 11.5px; line-height: 1.6; color: var(--muted); }
.wr-cmp-list { display: grid; gap: 7px; }
.wr-cmp-row { display: grid; grid-template-columns: 64px 1fr auto; align-items: center; gap: 8px; }
.wr-cmp-row span:first-child { font-size: 12px; font-weight: 700; }
.wr-cmp-bar { height: 14px; background: var(--bg); border-radius: 999px; overflow: hidden; }
.wr-cmp-bar i { display: block; height: 100%; background: var(--muted); border-radius: 999px; }
.wr-cmp-row.home span:first-child { color: var(--blue); }
.wr-cmp-row.home .wr-cmp-bar i { background: var(--blue); }
.wr-cmp-row strong { font-size: 12px; font-variant-numeric: tabular-nums; }
@media (max-width: 720px) { .wr-grid { grid-template-columns: 1fr; } }

/* ===== 上下水道 自治体インフラ経営ダッシュボード ===== */
.utility-ai-dashboard { border-top: 5px solid var(--uto-accent); }
.utility-ai-score { min-width: 72px; padding: 8px 12px; border-radius: 12px; background: var(--uto-accent); color: #fff; font-size: 20px; font-weight: 900; text-align: center; }
.utility-ai-lead { margin: 0 0 14px; color: var(--muted); font-size: 12px; line-height: 1.7; }
.utility-ai-grid { display: grid; grid-template-columns: minmax(320px, .85fr) minmax(320px, 1.15fr); gap: 16px; }
.utility-rating-card, .utility-radar-card { min-width: 0; padding: 16px; border: 1px solid var(--line); border-radius: 14px; background: var(--surface-subtle); }
.utility-rating-total { display: grid; grid-template-columns: 1fr auto auto; gap: 8px; align-items: center; margin-bottom: 10px; padding-bottom: 10px; border-bottom: 1px solid var(--line); }
.utility-rating-total > span:first-child { font-size: 14px; font-weight: 900; }
.utility-rating-total > span:nth-child(2), .utility-rating-row > span:nth-child(2) { color: #b7791f; letter-spacing: 1px; white-space: nowrap; }
.utility-rating-total strong { font-size: 18px; }
.utility-rating-row { display: grid; grid-template-columns: 1fr auto 28px; gap: 8px; align-items: center; padding: 5px 0; font-size: 11.5px; }
.utility-rating-row > span:first-child small { display: block; margin-top: 2px; color: var(--muted); font-size: 8.5px; font-weight: 600; line-height: 1.35; }
.utility-rating-row b { text-align: right; }
.utility-rating-card p { margin: 10px 0 0; color: var(--muted); font-size: 11px; line-height: 1.65; }
.utility-radar-card svg { display: block; width: 100%; height: 300px; overflow: visible; }
.utility-radar-card polygon:not(.utility-radar-value) { fill: none; stroke: var(--line); stroke-width: 1; }
.utility-radar-card line { stroke: var(--line); stroke-width: 1; }
.utility-radar-card text { fill: var(--muted); font-size: 9px; font-weight: 700; }
.utility-radar-value { fill: color-mix(in srgb, var(--uto-accent) 24%, transparent); stroke: var(--uto-accent); stroke-width: 2.5; }
.utility-pop-table { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; }
.utility-pop-table article { min-width: 0; padding: 13px; border: 1px solid var(--line); border-radius: 12px; background: var(--surface-subtle); }
.utility-pop-table span, .utility-pop-table small { display: block; color: var(--muted); font-size: 10.5px; }
.utility-pop-table strong { display: block; margin: 3px 0 6px; font-size: 21px; }
.utility-pop-table div { display: grid; gap: 2px; margin-top: 8px; font-size: 10px; }
.utility-pop-table i { display: block; height: 7px; margin-top: 8px; border-radius: 99px; background: var(--line); overflow: hidden; }
.utility-pop-table em { display: block; height: 100%; border-radius: inherit; background: var(--status-warning); }
.utility-ai-comment { margin: 13px 0 0; padding: 12px 14px; border-left: 4px solid var(--uto-focus); background: var(--surface-subtle); font-size: 12px; line-height: 1.75; }
.utility-renewal-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; }
.utility-renewal-grid article { padding: 14px; border: 1px solid var(--line); border-radius: 12px; }
.utility-renewal-grid article.needed { border-style: dashed; background: var(--soft-amber); }
.utility-renewal-grid span, .utility-renewal-grid small { display: block; color: var(--muted); font-size: 10.5px; line-height: 1.5; }
.utility-renewal-grid strong { display: block; margin: 4px 0; font-size: 20px; }
.utility-issue-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.utility-issue-grid article { padding: 15px; border: 1px solid var(--line); border-top: 4px solid var(--status-warning); border-radius: 12px; }
.utility-issue-grid span { color: var(--status-warning); font-size: 10px; font-weight: 900; }
.utility-issue-grid h4 { margin: 5px 0 9px; font-size: 14px; }
.utility-issue-grid p { margin: 7px 0 0; color: var(--muted); font-size: 11px; line-height: 1.65; }
.utility-issue-grid p b { display: block; color: var(--ink); }
.utility-question-support { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--line); }
.utility-question-support article { padding: 12px; border-radius: 10px; background: var(--surface-subtle); }
.utility-question-support span { color: var(--uto-accent); font-size: 10px; font-weight: 900; }
.utility-question-support p { margin: 5px 0 0; font-size: 11.5px; line-height: 1.65; }
.utility-gap-grid, .utility-friendly-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.utility-gap-grid article, .utility-friendly-grid article { padding: 14px; border: 1px solid var(--line); border-radius: 12px; background: var(--surface-subtle); }
.utility-gap-grid h4, .utility-friendly-grid h4 { margin: 0 0 7px; font-size: 13px; }
.utility-gap-grid p, .utility-friendly-grid p { margin: 0; font-size: 11.5px; line-height: 1.7; }
.utility-gap-grid small { display: block; margin-top: 8px; color: var(--muted); font-size: 10px; line-height: 1.5; }
@media (max-width: 900px) {
  .utility-ai-grid { grid-template-columns: 1fr; }
  .utility-pop-table, .utility-renewal-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .utility-issue-grid, .utility-question-support, .utility-gap-grid, .utility-friendly-grid { grid-template-columns: 1fr; }
}
@media (max-width: 560px) {
  .utility-pop-table, .utility-renewal-grid { grid-template-columns: 1fr; }
  .utility-radar-card svg { height: 260px; }
  .utility-rating-total { grid-template-columns: 1fr; }
}

/* ===== 子どもの生活実態(EBPM) ===== */
.child-survey-section { margin-top: 8px; }
.cw-grid { display: grid; grid-template-columns: 1fr 1.1fr; gap: 16px; }
.cw-poverty h4, .cw-breakfast h4, .cw-barrier h4 { margin: 0 0 10px; font-size: 13px; }
.cw-pov-compare { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.cw-pov { border: 1px solid var(--line); border-left-width: 4px; border-radius: 12px; padding: 13px 16px; background: var(--paper); }
.cw-pov.good { border-left-color: var(--green); }
.cw-pov.pref { border-left-color: var(--muted); }
.cw-pov span { display: block; font-size: 11px; color: var(--muted); font-weight: 700; }
.cw-pov strong { display: block; font-size: 26px; letter-spacing: -.03em; margin: 2px 0; }
.cw-pov small { color: var(--muted); font-size: 11px; }
.cw-note { margin-top: 9px; font-size: 11.5px; line-height: 1.6; color: var(--muted); }
.cw-bar-row { display: grid; grid-template-columns: 92px 1fr 48px; align-items: center; gap: 8px; margin-bottom: 6px; font-size: 12px; }
.cw-bar { height: 12px; background: var(--bg); border-radius: 999px; overflow: hidden; }
.cw-bar i { display: block; height: 100%; background: var(--blue); border-radius: 999px; }
.cw-bar i.warn { background: var(--amber); }
.cw-bar-row strong { text-align: right; font-variant-numeric: tabular-nums; }
.cw-barrier { margin-top: 16px; }
@media (max-width: 720px) { .cw-grid { grid-template-columns: 1fr; } .cw-pov-compare { grid-template-columns: 1fr 1fr; } }

/* ===== 教育: 就学援助・点検評価 ===== */
.edu-review-section { margin-top: 8px; }
.er-grid { display: grid; grid-template-columns: 1.1fr 1fr; gap: 16px; }
.er-trend h4, .er-programs h4 { margin: 0 0 10px; font-size: 13px; }
.er-bars { display: flex; align-items: flex-end; gap: 8px; height: 100px; border-bottom: 1px solid var(--line); }
.er-bar-col { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: flex-end; height: 100%; }
.er-bar-col i { width: 60%; min-height: 4px; background: var(--amber); border-radius: 3px 3px 0 0; }
.er-bar-col span { font-size: 10px; color: var(--muted); margin-top: 3px; }
.er-bar-col b { font-size: 11px; font-variant-numeric: tabular-nums; }
.er-note { margin-top: 9px; font-size: 11.5px; line-height: 1.6; color: var(--muted); }
.er-note.neg { color: var(--red); }
.er-programs ul { margin: 0; padding: 0; list-style: none; display: grid; gap: 4px; max-height: 200px; overflow-y: auto; }
.er-programs li { display: flex; justify-content: space-between; gap: 8px; font-size: 12px; padding: 4px 0; border-bottom: 1px solid var(--line); }
.er-programs li span { color: var(--muted); font-size: 11px; white-space: nowrap; }
@media (max-width: 720px) { .er-grid { grid-template-columns: 1fr; } }

/* ===== 産業構造(就業者) ===== */
.industry-emp-section { margin-top: 8px; }
.ie-legend { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; margin-bottom: 10px; font-size: 12px; font-weight: 700; color: var(--muted); }
.ie-legend span { display: inline-flex; align-items: center; gap: 5px; }
.ie-legend i { width: 11px; height: 11px; border-radius: 2px; }
.ie-legend-note { font-weight: 400; }
.ie-list { display: grid; gap: 7px; }
.ie-row { display: grid; grid-template-columns: 150px 1fr 56px; align-items: end; gap: 10px; }
.ie-name { font-size: 12px; font-weight: 700; align-self: center; }
.ie-bars { display: flex; align-items: flex-end; gap: 3px; height: 36px; }
.ie-bars i { flex: 1; min-height: 2px; border-radius: 2px 2px 0 0; }
.ie-row strong { align-self: center; text-align: right; font-variant-numeric: tabular-nums; font-size: 12px; }
.ie-row strong.neg { color: var(--red); }
.ie-row strong.pos { color: var(--green); }
.ie-insight { margin-top: 12px; padding: 12px 14px; border-radius: 10px; background: var(--surface-subtle); font-size: 12.5px; line-height: 1.7; }
@media (max-width: 720px) { .ie-row { grid-template-columns: 96px 1fr 46px; } }

/* ===== 経済センサス(事業所規模) ===== */
.econ-census-section { margin-top: 8px; }
.ec-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.ec-card { border: 1px solid var(--line); border-radius: 12px; padding: 14px 16px; background: var(--paper); }
.ec-head { display: flex; justify-content: space-between; align-items: baseline; gap: 8px; }
.ec-head h4 { margin: 0; font-size: 14px; }
.ec-head span { color: var(--muted); font-size: 11px; }
.ec-main { display: flex; align-items: baseline; gap: 10px; margin: 8px 0; }
.ec-main strong { font-size: 24px; letter-spacing: -.03em; }
.ec-main small { font-weight: 700; font-size: 12px; }
.ec-main small.pos { color: var(--green); }
.ec-main small.neg { color: var(--red); }
.ec-bars { display: flex; align-items: flex-end; gap: 6px; height: 36px; }
.ec-bars i { flex: 1; min-height: 3px; background: var(--blue); border-radius: 2px 2px 0 0; }
.ec-sub { margin-top: 7px; font-size: 11px; color: var(--muted); font-weight: 700; }
.ec-insight { margin-top: 12px; padding: 12px 14px; border-radius: 10px; background: var(--surface-subtle); font-size: 12.5px; line-height: 1.7; }
@media (max-width: 720px) { .ec-grid { grid-template-columns: 1fr; } }

/* 議会の一般質問分析 */
.council-minutes-section .cm-badge { align-self: flex-start; padding: 5px 11px; border-radius: 999px; background: rgba(16,185,129,.14); color: #047857; font-size: 11px; font-weight: 800; white-space: nowrap; }
.cm-kpis { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin: 4px 0 18px; }
.cm-kpi { padding: 14px; border-radius: 12px; background: var(--surface-subtle); text-align: center; }
.cm-kpi strong { display: block; font-size: 26px; font-weight: 800; color: var(--text); }
.cm-kpi span { display: block; margin-top: 4px; font-size: 11px; color: var(--muted); font-weight: 700; }
.cm-grid { display: grid; grid-template-columns: 1.15fr 1fr; gap: 22px; }
.cm-col h4, .cm-sub { font-size: 13px; font-weight: 800; margin: 4px 0 12px; color: var(--text); }
.cm-sub { margin-top: 22px; }
.cm-theme-row { display: grid; grid-template-columns: 92px 1fr 46px; align-items: center; gap: 8px; margin-bottom: 8px; }
.cm-theme-name { font-size: 11.5px; font-weight: 700; color: var(--text); }
.cm-theme-bar { height: 14px; border-radius: 7px; background: var(--surface-subtle); overflow: hidden; }
.cm-theme-bar i { display: block; height: 100%; border-radius: 7px; background: linear-gradient(90deg, #6366f1, #8b5cf6); }
.cm-theme-val { font-size: 11.5px; font-weight: 800; color: var(--muted); text-align: right; }
.cm-note { font-size: 10.5px; color: var(--muted); margin-top: 10px; line-height: 1.6; }
.cm-members { list-style: none; padding: 0; margin: 0; }
.cm-members li { display: grid; grid-template-columns: 80px 1fr 64px; align-items: center; gap: 8px; margin-bottom: 9px; }
.cm-mname { font-size: 12px; font-weight: 800; color: var(--text); }
.cm-mbar { height: 12px; border-radius: 6px; background: var(--surface-subtle); overflow: hidden; }
.cm-mbar i { display: block; height: 100%; border-radius: 6px; background: linear-gradient(90deg, #0ea5e9, #38bdf8); }
.cm-mval { font-size: 11px; font-weight: 700; color: var(--muted); text-align: right; }
.cm-sessions { display: flex; gap: 10px; align-items: flex-end; padding: 8px 4px 0; overflow-x: auto; }
.cm-sbar { flex: 1 1 0; min-width: 52px; display: flex; flex-direction: column; align-items: center; height: 120px; justify-content: flex-end; }
.cm-sbar i { display: block; width: 60%; max-width: 34px; border-radius: 6px 6px 0 0; background: linear-gradient(180deg, #34d399, #10b981); min-height: 4px; }
.cm-sbar-n { font-size: 12px; font-weight: 800; color: var(--text); margin-top: 4px; }
.cm-sbar-l { font-size: 10px; color: var(--muted); font-weight: 700; margin-top: 2px; white-space: nowrap; }
.cm-insight { margin-top: 18px; padding: 13px 15px; border-radius: 10px; background: var(--surface-subtle); font-size: 12.5px; line-height: 1.75; }
.cm-detail-list { display: grid; gap: 8px; }
.cm-session { border: 1px solid var(--border); border-radius: 10px; padding: 4px 12px; background: var(--surface); }
.cm-session summary { cursor: pointer; font-size: 12.5px; font-weight: 700; padding: 8px 0; color: var(--text); }
.cm-ok { color: #047857; font-size: 10.5px; font-weight: 800; }
.cm-qlist { margin: 4px 0 10px; padding-left: 18px; }
.cm-qlist > li { margin-bottom: 9px; font-size: 12px; }
.cm-qlist > li > ul { margin: 4px 0 0; padding-left: 16px; color: var(--muted); }
.cm-qlist > li > ul > li { margin-bottom: 3px; line-height: 1.55; }
@media (max-width: 720px) { .cm-kpis { grid-template-columns: repeat(2, 1fr); } .cm-grid { grid-template-columns: 1fr; } }

/* 委員会の審議活動 */
.committee-minutes-section .ct-badge { align-self: flex-start; padding: 5px 11px; border-radius: 999px; background: rgba(16,185,129,.14); color: #047857; font-size: 11px; font-weight: 800; white-space: nowrap; }
.ct-kpis { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin: 4px 0 14px; }
.ct-kpi { padding: 14px; border-radius: 12px; background: var(--surface-subtle); text-align: center; }
.ct-kpi strong { display: block; font-size: 23px; font-weight: 800; color: var(--text); }
.ct-kpi span { display: block; margin-top: 4px; font-size: 11px; color: var(--muted); font-weight: 700; }
.ct-sub { font-size: 13px; font-weight: 800; margin: 22px 0 12px; color: var(--text); }
.ct-ca-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
.ct-ca-card { padding: 14px; border-radius: 12px; border: 1px solid var(--border); background: var(--surface); }
.ct-ca-head { display: flex; align-items: center; gap: 7px; }
.ct-ca-head h4 { font-size: 12.5px; font-weight: 800; margin: 0; }
.ct-dot { width: 10px; height: 10px; border-radius: 50%; background: var(--c); flex: none; }
.ct-ca-main { margin: 8px 0 6px; }
.ct-ca-main strong { font-size: 24px; font-weight: 800; color: var(--text); }
.ct-ca-main small { display: block; font-size: 11px; color: var(--muted); font-weight: 700; margin-top: 2px; }
.ct-legend { display: flex; gap: 16px; margin-bottom: 10px; }
.ct-legend span { display: inline-flex; align-items: center; gap: 5px; font-size: 11px; font-weight: 700; color: var(--muted); }
.ct-legend i { width: 11px; height: 11px; border-radius: 3px; }
.ct-members { list-style: none; padding: 0; margin: 0; }
.ct-members li { display: grid; grid-template-columns: 92px 1fr 46px; align-items: center; gap: 9px; margin-bottom: 7px; }
.ct-mname { font-size: 12px; font-weight: 700; color: var(--text); }
.ct-mbar { display: flex; height: 14px; border-radius: 7px; background: var(--surface-subtle); overflow: hidden; }
.ct-mbar i { display: block; height: 100%; }
.ct-mval { font-size: 11.5px; font-weight: 800; color: var(--muted); text-align: right; }
.ct-insight { margin-top: 18px; padding: 13px 15px; border-radius: 10px; background: var(--surface-subtle); font-size: 12.5px; line-height: 1.75; }
.ct-detail-list { display: grid; gap: 8px; }
.ct-cdetail { border: 1px solid var(--border); border-radius: 10px; padding: 4px 12px; background: var(--surface); }
.ct-cdetail summary { cursor: pointer; font-size: 12.5px; font-weight: 700; padding: 8px 0; color: var(--text); }
.ct-table { width: 100%; border-collapse: collapse; font-size: 11.5px; margin: 6px 0 10px; }
.ct-table th { text-align: left; color: var(--muted); font-weight: 700; padding: 5px 6px; border-bottom: 2px solid var(--border); white-space: nowrap; }
.ct-table td { padding: 5px 6px; border-bottom: 1px solid var(--border); vertical-align: top; }
.ct-table td:nth-child(4) { color: var(--muted); }
@media (max-width: 720px) { .ct-kpis { grid-template-columns: repeat(2, 1fr); } .ct-ca-grid { grid-template-columns: 1fr; } .ct-members li { grid-template-columns: 76px 1fr 42px; } }

/* 議員別の活動プロフィール */
.member-profiles-section .mp-vbadge { align-self: flex-start; padding: 5px 11px; border-radius: 999px; background: rgba(16,185,129,.14); color: #047857; font-size: 11px; font-weight: 800; white-space: nowrap; }
.mp-disclaimer { margin: 2px 0 16px; padding: 10px 13px; border-radius: 9px; background: rgba(245,158,11,.10); border: 1px solid rgba(245,158,11,.30); font-size: 11.5px; line-height: 1.65; color: var(--text); }
.mp-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(290px, 1fr)); gap: 14px; }
.mp-card { border: 1px solid var(--border); border-radius: 13px; padding: 15px; background: var(--surface); display: flex; flex-direction: column; }
.mp-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 12px; }
.mp-head h4 { font-size: 15px; font-weight: 800; margin: 0; color: var(--text); }
.mp-comm { font-size: 10.5px; font-weight: 800; color: #fff; background: var(--c); padding: 3px 9px; border-radius: 999px; white-space: nowrap; }
.mp-stats { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 12px; }
.mp-stat { padding: 10px; border-radius: 10px; background: var(--surface-subtle); }
.mp-stat strong { font-size: 22px; font-weight: 800; color: var(--text); }
.mp-stat em { font-size: 10.5px; font-style: normal; font-weight: 700; color: var(--muted); margin-left: 4px; }
.mp-stat span { display: block; margin-top: 5px; font-size: 10.5px; color: var(--muted); line-height: 1.5; }
.mp-themes { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 10px; }
.mp-theme { font-size: 11px; font-weight: 700; padding: 3px 9px; border-radius: 999px; color: var(--tc); background: color-mix(in srgb, var(--tc) 13%, transparent); border: 1px solid color-mix(in srgb, var(--tc) 30%, transparent); }
.mp-none { font-size: 11.5px; color: var(--muted); font-weight: 600; }
.mp-analysis { margin: 2px 0 10px; padding: 12px; border-radius: 10px; border: 1px solid color-mix(in srgb, var(--accent, #2563eb) 22%, var(--border)); background: color-mix(in srgb, var(--accent, #2563eb) 5%, var(--surface)); }
.mp-analysis-label { display: block; margin-bottom: 6px; color: var(--accent, #2563eb); font-size: 11px; font-weight: 800; }
.mp-analysis p { margin: 0; color: var(--text); font-size: 12px; font-weight: 650; line-height: 1.7; }
.mp-analysis ul { margin: 8px 0 0; padding: 8px 0 0 17px; border-top: 1px solid var(--border); }
.mp-analysis li { margin: 3px 0; color: var(--muted); font-size: 10.5px; line-height: 1.55; }
.mp-ex { margin-top: auto; }
.mp-ex summary { cursor: pointer; font-size: 11.5px; font-weight: 700; color: var(--accent, #2563eb); padding: 6px 0 2px; }
.mp-ex ul { margin: 6px 0 2px; padding-left: 4px; list-style: none; }
.mp-ex li { font-size: 11.5px; line-height: 1.55; margin-bottom: 6px; color: var(--text); }
.mp-ex-era { display: inline-block; font-size: 10px; font-weight: 800; color: var(--muted); background: var(--surface-subtle); padding: 1px 6px; border-radius: 5px; margin-right: 6px; }
@media (max-width: 720px) { .mp-grid { grid-template-columns: 1fr; } }

/* 議員別の貢献の手がかり(事実ベース) */
.member-contrib-section .mco-vbadge { align-self: flex-start; padding: 5px 11px; border-radius: 999px; background: rgba(16,185,129,.14); color: #047857; font-size: 11px; font-weight: 800; white-space: nowrap; }
.mco-disclaimer { margin: 2px 0 14px; padding: 11px 14px; border-radius: 9px; background: rgba(245,158,11,.10); border: 1px solid rgba(245,158,11,.30); font-size: 11.5px; line-height: 1.7; color: var(--text); }
.mco-legend { display: flex; flex-direction: column; gap: 5px; margin-bottom: 16px; padding: 11px 14px; border-radius: 9px; background: var(--surface-subtle); }
.mco-leg { font-size: 11px; color: var(--muted); display: flex; align-items: baseline; gap: 6px; line-height: 1.5; }
.mco-leg i { width: 10px; height: 10px; border-radius: 3px; flex: none; position: relative; top: 1px; }
.mco-leg b { color: var(--text); font-weight: 800; }
.mco-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(330px, 1fr)); gap: 14px; }
.mco-card { border: 1px solid var(--border); border-radius: 13px; padding: 15px; background: var(--surface); display: flex; flex-direction: column; }
.mco-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 10px; }
.mco-head h4 { font-size: 15px; font-weight: 800; margin: 0; color: var(--text); display: flex; align-items: center; gap: 8px; }
.mco-seat { font-size: 11px; font-weight: 800; color: var(--muted); background: var(--surface-subtle); border-radius: 6px; padding: 2px 7px; }
.mco-total { font-size: 11px; font-weight: 700; color: var(--muted); white-space: nowrap; }
.mco-bar { display: flex; height: 12px; border-radius: 6px; background: var(--surface-subtle); overflow: hidden; margin-bottom: 6px; }
.mco-bar i { display: block; height: 100%; }
.mco-cats { display: flex; gap: 14px; font-size: 11.5px; font-weight: 800; margin-bottom: 12px; }
.mco-themes { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin-bottom: 4px; }
.mco-lbl { font-size: 10.5px; font-weight: 700; color: var(--muted); margin-right: 2px; }
.mco-theme { font-size: 10.5px; font-weight: 700; padding: 3px 8px; border-radius: 999px; color: var(--tc); background: color-mix(in srgb, var(--tc) 13%, transparent); border: 1px solid color-mix(in srgb, var(--tc) 28%, transparent); }
.mco-none, .mco-noex { font-size: 11px; color: var(--muted); font-weight: 600; }
.mco-noex { margin-top: 10px; }
.mco-ex { margin-top: 10px; }
.mco-ex summary { cursor: pointer; font-size: 11.5px; font-weight: 700; color: var(--accent, #2563eb); padding: 4px 0; }
.mco-ex ul { margin: 8px 0 2px; padding: 0; list-style: none; }
.mco-ex li { margin-bottom: 12px; line-height: 1.6; }
.mco-tag { display: inline-block; font-size: 9.5px; font-weight: 800; color: #fff; padding: 1px 7px; border-radius: 5px; margin-right: 6px; }
.mco-src { font-size: 10px; font-weight: 700; color: var(--muted); margin-right: 4px; }
.mco-quote { display: block; margin-top: 4px; font-size: 11.5px; color: var(--text); }
@media (max-width: 720px) { .mco-grid { grid-template-columns: 1fr; } }

/* 総合戦略の数値目標と達成状況 */
.strategy-kpi-section .sk-badge { align-self: flex-start; padding: 5px 11px; border-radius: 999px; background: rgba(16,185,129,.14); color: #047857; font-size: 11px; font-weight: 800; white-space: nowrap; }
.sk-sub { font-size: 13px; font-weight: 800; margin: 20px 0 12px; color: var(--text); }
.sk-ach-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 14px; }
.sk-ach { padding: 13px 15px; border-radius: 11px; background: var(--surface-subtle); }
.sk-ach-top { display: flex; justify-content: space-between; align-items: baseline; gap: 8px; margin-bottom: 8px; }
.sk-ach-name { font-size: 12.5px; font-weight: 800; color: var(--text); }
.sk-ach-eval { font-size: 11px; font-weight: 800; white-space: nowrap; }
.sk-ach-bar { position: relative; height: 18px; border-radius: 9px; background: var(--surface); overflow: hidden; display: flex; align-items: center; }
.sk-ach-bar i { position: absolute; left: 0; top: 0; height: 100%; border-radius: 9px; }
.sk-ach-bar b { position: relative; margin-left: auto; padding-right: 9px; font-size: 11px; font-weight: 800; color: var(--text); z-index: 1; }
.sk-ach-sub { margin-top: 7px; font-size: 11px; color: var(--muted); font-weight: 600; line-height: 1.5; }
.sk-kpi { margin-top: 16px; padding: 13px 15px; border-radius: 11px; border: 1px solid var(--border); }
.sk-kpi-head { font-size: 11.5px; font-weight: 800; color: var(--text); margin-bottom: 8px; }
.sk-kpi-bar { display: flex; height: 14px; border-radius: 7px; overflow: hidden; background: var(--surface-subtle); }
.sk-kpi-bar i { display: block; height: 100%; }
.sk-kpi-legend { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 9px; }
.sk-kpi-legend span { display: inline-flex; align-items: center; gap: 5px; font-size: 10.5px; font-weight: 700; color: var(--muted); }
.sk-kpi-legend i { width: 10px; height: 10px; border-radius: 3px; }
.sk-cur-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 12px; }
.sk-cur { padding: 13px 14px; border-radius: 11px; border: 1px solid var(--border); background: var(--surface); }
.sk-cur h5 { font-size: 12px; font-weight: 800; margin: 0 0 9px; color: var(--text); line-height: 1.4; }
.sk-cur-vals { display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; }
.sk-base { font-size: 14px; font-weight: 700; color: var(--muted); }
.sk-arrow { color: var(--muted); font-weight: 800; }
.sk-target { font-size: 19px; font-weight: 800; color: #047857; }
.sk-cur-meta { margin-top: 7px; font-size: 10.5px; color: var(--muted); font-weight: 600; }
.sk-vision { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; margin-top: 14px; padding: 12px 15px; border-radius: 11px; background: var(--surface-subtle); }
.sk-vision-lbl { font-size: 11.5px; font-weight: 800; color: var(--text); }
.sk-vis { font-size: 13px; color: var(--text); font-weight: 700; }
.sk-vis b { color: var(--muted); font-weight: 800; margin-right: 5px; font-size: 11px; }
.sk-insight { margin-top: 18px; padding: 13px 15px; border-radius: 10px; background: var(--surface-subtle); font-size: 12.5px; line-height: 1.8; }
@media (max-width: 720px) { .sk-ach-grid, .sk-cur-grid { grid-template-columns: 1fr; } }

/* 長期人口推移 */
.pop-history-section .ph-badge { align-self: flex-start; padding: 5px 11px; border-radius: 999px; background: rgba(16,185,129,.14); color: #047857; font-size: 11px; font-weight: 800; white-space: nowrap; }
.ph-kpis { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin: 4px 0 8px; }
.ph-kpi { padding: 14px; border-radius: 12px; background: var(--surface-subtle); text-align: center; }
.ph-kpi strong { display: block; font-size: 21px; font-weight: 800; color: var(--text); }
.ph-kpi span { display: block; margin-top: 4px; font-size: 10.5px; color: var(--muted); font-weight: 700; line-height: 1.4; }
.ph-sub { font-size: 12.5px; font-weight: 800; margin: 20px 0 10px; color: var(--text); }
.ph-chart { display: flex; align-items: flex-end; gap: 8px; height: 170px; padding-top: 18px; }
.ph-col { flex: 1 1 0; display: flex; flex-direction: column; align-items: center; justify-content: flex-end; height: 100%; }
.ph-col i { display: block; width: 70%; max-width: 38px; border-radius: 5px 5px 0 0; background: linear-gradient(180deg, #60a5fa, #2563eb); min-height: 6px; }
.ph-col i.ph-peak { background: linear-gradient(180deg, #f59e0b, #d97706); }
.ph-val { font-size: 10px; font-weight: 800; color: var(--text); margin-bottom: 4px; }
.ph-yr { font-size: 9.5px; color: var(--muted); font-weight: 700; margin-top: 5px; }
.ph-hh-chart { display: flex; align-items: flex-end; gap: 8px; height: 88px; }
.ph-hh { flex: 1 1 0; display: flex; flex-direction: column; align-items: center; justify-content: flex-end; height: 100%; }
.ph-hh i { display: block; width: 55%; max-width: 26px; border-radius: 4px 4px 0 0; background: linear-gradient(180deg, #a78bfa, #7c3aed); min-height: 8px; }
.ph-hh span { font-size: 9.5px; color: var(--muted); font-weight: 700; margin-top: 4px; }
.ph-insight { margin-top: 16px; padding: 13px 15px; border-radius: 10px; background: var(--surface-subtle); font-size: 12.5px; line-height: 1.8; }
@media (max-width: 720px) { .ph-kpis { grid-template-columns: repeat(2, 1fr); } .ph-val, .ph-yr { font-size: 8.5px; } }

/* 長期人口推移: 年齢3区分の積み上げ */
.ph-age-legend { display: flex; gap: 16px; margin-bottom: 10px; }
.ph-age-legend span { display: inline-flex; align-items: center; gap: 5px; font-size: 11px; font-weight: 700; color: var(--muted); }
.ph-age-legend i { width: 11px; height: 11px; border-radius: 3px; display: inline-block; }
.ph-age-chart { display: flex; align-items: flex-end; gap: 8px; height: 200px; }
.ph-age-col { flex: 1 1 0; display: flex; flex-direction: column; align-items: center; height: 100%; }
.ph-age-stack { display: flex; flex-direction: column; justify-content: flex-end; width: 72%; max-width: 40px; height: 100%; border-radius: 5px 5px 0 0; overflow: hidden; }
.ph-age-stack i { display: block; width: 100%; position: relative; }
.ph-age-young { background: #f59e0b; }
.ph-age-work { background: #93c5fd; }
.ph-age-senior { background: #6366f1; display: flex; align-items: flex-start; justify-content: center; }
.ph-age-senior b { font-size: 9px; font-weight: 800; color: #fff; padding-top: 2px; }

/* 安全・安心の指標 */
.safety-stats-section .ss-badge { align-self: flex-start; padding: 5px 11px; border-radius: 999px; background: rgba(16,185,129,.14); color: #047857; font-size: 11px; font-weight: 800; white-space: nowrap; }
.ss-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; }
.ss-card { padding: 14px; border-radius: 12px; border: 1px solid var(--border); background: var(--surface); }
.ss-card h4 { font-size: 12.5px; font-weight: 800; margin: 0 0 12px; color: var(--text); }
.ss-chart { display: flex; align-items: flex-end; gap: 7px; height: 110px; }
.ss-col { flex: 1 1 0; display: flex; flex-direction: column; align-items: center; justify-content: flex-end; height: 100%; }
.ss-col i { display: block; width: 64%; max-width: 30px; border-radius: 4px 4px 0 0; min-height: 6px; }
.ss-v { font-size: 11px; font-weight: 800; color: var(--text); margin-bottom: 4px; }
.ss-yr { font-size: 10px; color: var(--muted); font-weight: 700; margin-top: 4px; }
.ss-sub { margin-top: 10px; font-size: 10.5px; color: var(--muted); line-height: 1.55; font-weight: 600; }
.ss-mark { display: inline-block; width: 10px; height: 10px; border-radius: 2px; background: #f59e0b; vertical-align: -1px; margin-right: 3px; }
.ss-note { margin-top: 14px; padding: 11px 14px; border-radius: 9px; background: rgba(245,158,11,.10); border: 1px solid rgba(245,158,11,.30); font-size: 11.5px; line-height: 1.7; color: var(--text); }
.ss-insight { margin-top: 12px; padding: 13px 15px; border-radius: 10px; background: var(--surface-subtle); font-size: 12.5px; line-height: 1.8; }
@media (max-width: 720px) { .ss-grid { grid-template-columns: 1fr; } }

/* 学校・保育の児童生徒数 */
.school-enroll-section .se-badge { align-self: flex-start; padding: 5px 11px; border-radius: 999px; background: rgba(16,185,129,.14); color: #047857; font-size: 11px; font-weight: 800; white-space: nowrap; }
.se-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; }
.se-card { padding: 13px; border-radius: 12px; border: 1px solid var(--border); background: var(--surface); }
.se-head { display: flex; align-items: baseline; justify-content: space-between; gap: 6px; margin-bottom: 10px; }
.se-head h4 { font-size: 11.5px; font-weight: 800; margin: 0; color: var(--text); }
.se-delta { font-size: 11px; font-weight: 800; white-space: nowrap; }
.se-delta.neg { color: #ef4444; }
.se-delta.pos { color: #10b981; }
.se-chart { display: flex; align-items: flex-end; gap: 5px; height: 96px; }
.se-col { flex: 1 1 0; display: flex; flex-direction: column; align-items: center; justify-content: flex-end; height: 100%; }
.se-col i { display: block; width: 70%; max-width: 22px; border-radius: 3px 3px 0 0; min-height: 8px; }
.se-v { font-size: 8.5px; font-weight: 800; color: var(--text); margin-bottom: 3px; }
.se-yr { font-size: 9px; color: var(--muted); font-weight: 700; margin-top: 3px; }
.se-sub { margin-top: 9px; font-size: 10px; color: var(--muted); line-height: 1.5; font-weight: 600; }
.se-insight { margin-top: 16px; padding: 13px 15px; border-radius: 10px; background: var(--surface-subtle); font-size: 12.5px; line-height: 1.8; }
@media (max-width: 720px) { .se-grid { grid-template-columns: repeat(2, 1fr); } }

/* 農業経営体数の推移 */
.agri-census-section .ag-badge { align-self: flex-start; padding: 5px 11px; border-radius: 999px; background: rgba(16,185,129,.14); color: #047857; font-size: 11px; font-weight: 800; white-space: nowrap; }
.ag-legend { display: flex; flex-wrap: wrap; gap: 14px; margin-bottom: 12px; }
.ag-legend span { display: inline-flex; align-items: center; gap: 5px; font-size: 11px; font-weight: 700; color: var(--muted); }
.ag-legend i { width: 11px; height: 11px; border-radius: 3px; }
.ag-chart { display: flex; align-items: flex-end; gap: 14px; height: 190px; padding-top: 18px; }
.ag-col { flex: 1 1 0; display: flex; flex-direction: column; align-items: center; justify-content: flex-end; height: 100%; }
.ag-stack { display: flex; flex-direction: column-reverse; justify-content: flex-start; width: 60%; max-width: 46px; height: 100%; border-radius: 5px 5px 0 0; overflow: hidden; }
.ag-stack i { display: block; width: 100%; }
.ag-v { font-size: 11px; font-weight: 800; color: var(--text); margin-bottom: 5px; text-align: center; }
.ag-v em { display: block; font-style: normal; font-size: 9px; color: #15803d; font-weight: 800; }
.ag-yr { font-size: 10px; color: var(--muted); font-weight: 700; margin-top: 5px; }
.ag-insight { margin-top: 16px; padding: 13px 15px; border-radius: 10px; background: var(--surface-subtle); font-size: 12.5px; line-height: 1.8; }

/* 生活保護受給状況 */
.lp-note { margin: 2px 0 14px; padding: 10px 13px; border-radius: 9px; background: rgba(245,158,11,.10); border: 1px solid rgba(245,158,11,.30); font-size: 11.5px; line-height: 1.65; color: var(--text); }
.lp-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.lp-card { padding: 13px; border-radius: 12px; border: 1px solid var(--border); background: var(--surface); }
.lp-card h4 { font-size: 12px; font-weight: 800; margin: 0 0 10px; color: var(--text); }
.lp-chart { display: flex; align-items: flex-end; gap: 7px; height: 110px; }
.lp-col { flex: 1 1 0; display: flex; flex-direction: column; align-items: center; justify-content: flex-end; height: 100%; }
.lp-col i { display: block; width: 62%; max-width: 30px; border-radius: 4px 4px 0 0; min-height: 8px; background: #f97316; }
.lp-v { font-size: 9.5px; font-weight: 800; color: var(--text); margin-bottom: 4px; }
.lp-yr { font-size: 10px; color: var(--muted); font-weight: 700; margin-top: 4px; }
.lp-insight { margin-top: 14px; padding: 13px 15px; border-radius: 10px; background: var(--surface-subtle); font-size: 12.5px; line-height: 1.8; }
@media (max-width: 720px) { .lp-grid { grid-template-columns: 1fr; } .ag-chart { gap: 8px; } }

/* ごみ処理状況 */
.waste-stats-section .wa-badge { align-self: flex-start; padding: 5px 11px; border-radius: 999px; background: rgba(16,185,129,.14); color: #047857; font-size: 11px; font-weight: 800; white-space: nowrap; }
.wa-kpis { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin: 4px 0 14px; }
.wa-kpi { padding: 13px; border-radius: 12px; background: var(--surface-subtle); text-align: center; }
.wa-kpi strong { display: block; font-size: 20px; font-weight: 800; color: var(--text); }
.wa-kpi span { display: block; margin-top: 4px; font-size: 10.5px; color: var(--muted); font-weight: 700; line-height: 1.4; }
.wa-legend { display: flex; flex-wrap: wrap; gap: 14px; margin-bottom: 10px; }
.wa-legend span { display: inline-flex; align-items: center; gap: 5px; font-size: 11px; font-weight: 700; color: var(--muted); }
.wa-legend i { width: 11px; height: 11px; border-radius: 3px; }
.wa-chart { display: flex; align-items: flex-end; gap: 12px; height: 180px; padding-top: 18px; }
.wa-col { flex: 1 1 0; display: flex; flex-direction: column; align-items: center; justify-content: flex-end; height: 100%; }
.wa-stack { display: flex; flex-direction: column-reverse; justify-content: flex-start; width: 62%; max-width: 44px; height: 100%; border-radius: 5px 5px 0 0; overflow: hidden; }
.wa-stack i { display: block; width: 100%; }
.wa-v { font-size: 10.5px; font-weight: 800; color: var(--text); margin-bottom: 5px; }
.wa-yr { font-size: 10px; color: var(--muted); font-weight: 700; margin-top: 5px; }
.wa-insight { margin-top: 16px; padding: 13px 15px; border-radius: 10px; background: var(--surface-subtle); font-size: 12.5px; line-height: 1.8; }
@media (max-width: 720px) { .wa-kpis { grid-template-columns: 1fr; } .wa-chart { gap: 7px; } }

/* 住宅の所有関係の推移 */
.housing-tenure-section .ht-badge { align-self: flex-start; padding: 5px 11px; border-radius: 999px; background: rgba(16,185,129,.14); color: #047857; font-size: 11px; font-weight: 800; white-space: nowrap; }
.ht-kpis { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin: 4px 0 14px; }
.ht-kpi { padding: 14px; border-radius: 12px; background: var(--surface-subtle); text-align: center; }
.ht-kpi strong { display: block; font-size: 21px; font-weight: 800; color: var(--text); }
.ht-kpi span { display: block; margin-top: 4px; font-size: 10.5px; color: var(--muted); font-weight: 700; line-height: 1.4; }
.ht-legend { display: flex; flex-wrap: wrap; gap: 14px; margin-bottom: 10px; align-items: center; }
.ht-legend span { display: inline-flex; align-items: center; gap: 5px; font-size: 11px; font-weight: 700; color: var(--muted); }
.ht-legend i { width: 11px; height: 11px; border-radius: 3px; display: inline-block; }
.ht-rate-lbl { color: var(--muted); font-size: 10.5px; }
.ht-owned { background: #2563eb; }
.ht-rented { background: #f59e0b; }
.ht-other { background: #cbd5e1; }
.ht-chart { display: flex; align-items: flex-end; gap: 12px; height: 200px; padding-top: 20px; }
.ht-col { flex: 1 1 0; display: flex; flex-direction: column; align-items: center; justify-content: flex-end; height: 100%; }
.ht-stack { display: flex; flex-direction: column-reverse; justify-content: flex-start; width: 62%; max-width: 46px; height: 100%; border-radius: 5px 5px 0 0; overflow: hidden; }
.ht-stack i { display: block; width: 100%; }
.ht-rate { font-size: 10px; font-weight: 800; color: #2563eb; margin-bottom: 5px; }
.ht-yr { font-size: 10px; color: var(--muted); font-weight: 700; margin-top: 5px; }
.ht-insight { margin-top: 16px; padding: 13px 15px; border-radius: 10px; background: var(--surface-subtle); font-size: 12.5px; line-height: 1.8; }
.ht-note { margin-top: 8px; font-size: 10.5px; color: var(--muted); line-height: 1.6; }
@media (max-width: 720px) { .ht-kpis { grid-template-columns: 1fr; } .ht-chart { gap: 7px; } }

/* アーカイブ拡充 収録一覧 */
.archive-inventory-panel .ai-kpis { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin: 4px 0 16px; }
.archive-inventory-panel .ai-kpi { padding: 14px; border-radius: 12px; background: var(--surface-subtle); text-align: center; }
.archive-inventory-panel .ai-kpi strong { display: block; font-size: 24px; font-weight: 800; color: var(--text); }
.archive-inventory-panel .ai-kpi span { display: block; margin-top: 4px; font-size: 11px; color: var(--muted); font-weight: 700; }
.ai-table { width: 100%; border-collapse: collapse; font-size: 12px; }
.ai-table thead th { text-align: left; padding: 8px 10px; border-bottom: 2px solid var(--border); color: var(--muted); font-weight: 800; font-size: 11px; white-space: nowrap; }
.ai-table td { padding: 8px 10px; border-bottom: 1px solid var(--border); vertical-align: top; }
.ai-cat-row td { background: var(--surface-subtle); font-weight: 800; color: var(--text); font-size: 11.5px; padding: 6px 10px; }
.ai-name strong { display: block; font-weight: 700; color: var(--text); }
.ai-name small { display: block; font-size: 10px; color: var(--muted); margin-top: 2px; }
.ai-rec { font-weight: 700; color: var(--text); white-space: nowrap; }
.ai-src { color: var(--muted); font-size: 11px; max-width: 280px; }
.ai-badge { display: inline-block; padding: 2px 8px; border-radius: 999px; font-size: 10px; font-weight: 800; white-space: nowrap; }
.ai-badge.ok { background: rgba(16,185,129,.14); color: #047857; }
.ai-badge.has { background: rgba(14,165,233,.14); color: #0369a1; }
.ai-badge.no { background: rgba(148,163,184,.18); color: #475569; }
@media (max-width: 720px) { .archive-inventory-panel .ai-kpis { grid-template-columns: repeat(2, 1fr); } .ai-src { display: none; } }

/* 市税・市債・基金の推移 */
.tax-debt-section .td-badge { align-self: flex-start; padding: 5px 11px; border-radius: 999px; background: rgba(16,185,129,.14); color: #047857; font-size: 11px; font-weight: 800; white-space: nowrap; }
.td-kpis { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin: 4px 0 14px; }
.td-kpi { padding: 13px; border-radius: 12px; background: var(--surface-subtle); text-align: center; }
.td-kpi strong { display: block; font-size: 19px; font-weight: 800; color: var(--text); }
.td-kpi span { display: block; margin-top: 4px; font-size: 10.5px; color: var(--muted); font-weight: 700; line-height: 1.4; }
.td-sub { font-size: 12.5px; font-weight: 800; margin: 20px 0 10px; color: var(--text); }
.td-legend { display: flex; flex-wrap: wrap; gap: 14px; margin-bottom: 10px; }
.td-legend span { display: inline-flex; align-items: center; gap: 5px; font-size: 11px; font-weight: 700; color: var(--muted); }
.td-legend i { width: 11px; height: 11px; border-radius: 3px; }
.td-chart { display: flex; align-items: flex-end; gap: 12px; height: 170px; padding-top: 18px; }
.td-col { flex: 1 1 0; display: flex; flex-direction: column; align-items: center; justify-content: flex-end; height: 100%; }
.td-stack { display: flex; flex-direction: column-reverse; justify-content: flex-start; width: 62%; max-width: 44px; height: 100%; border-radius: 5px 5px 0 0; overflow: hidden; }
.td-stack i { display: block; width: 100%; }
.td-debt-chart .td-col i.td-bond { display: block; width: 60%; max-width: 40px; border-radius: 5px 5px 0 0; background: linear-gradient(180deg,#fb7185,#e11d48); min-height: 6px; }
.td-v { font-size: 10.5px; font-weight: 800; color: var(--text); margin-bottom: 5px; }
.td-ratio { font-size: 9.5px; font-weight: 800; color: #e11d48; margin-top: 4px; }
.td-yr { font-size: 10px; color: var(--muted); font-weight: 700; margin-top: 4px; }
.td-insight { margin-top: 16px; padding: 13px 15px; border-radius: 10px; background: var(--surface-subtle); font-size: 12.5px; line-height: 1.8; }
@media (max-width: 720px) { .td-kpis { grid-template-columns: 1fr 1fr; } .td-chart { gap: 7px; } }

/* 一般会計 歳入・歳出内訳 */
.settlement-bd-section .sb-badge { align-self: flex-start; padding: 5px 11px; border-radius: 999px; background: rgba(16,185,129,.14); color: #047857; font-size: 11px; font-weight: 800; white-space: nowrap; }
.sb-srcbar { margin: 4px 0 18px; }
.sb-srcbar-track { display: flex; height: 30px; border-radius: 8px; overflow: hidden; font-size: 11px; font-weight: 800; color: #fff; }
.sb-self { background: #10b981; display: flex; align-items: center; justify-content: center; white-space: nowrap; }
.sb-dep { background: #f97316; display: flex; align-items: center; justify-content: center; white-space: nowrap; }
.sb-srcnote { margin-top: 8px; font-size: 11.5px; color: var(--muted); line-height: 1.6; }
.sb-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 22px; }
.sb-col h4 { font-size: 12.5px; font-weight: 800; margin: 0 0 12px; color: var(--text); }
.sb-rows { display: flex; flex-direction: column; gap: 6px; }
.sb-row { display: grid; grid-template-columns: 96px 1fr 42px 48px; align-items: center; gap: 7px; }
.sb-name { font-size: 11px; font-weight: 700; color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sb-bar { height: 13px; border-radius: 7px; background: var(--surface-subtle); overflow: hidden; }
.sb-bar i { display: block; height: 100%; border-radius: 7px; }
.sb-pct { font-size: 11px; font-weight: 800; color: var(--text); text-align: right; }
.sb-amt { font-size: 10.5px; font-weight: 700; color: var(--muted); text-align: right; }
.sb-leg { margin-top: 10px; font-size: 10.5px; color: var(--muted); font-weight: 600; }
.sb-dot { display: inline-block; width: 9px; height: 9px; border-radius: 2px; vertical-align: 0; margin: 0 3px; }
.sb-insight { margin-top: 18px; padding: 13px 15px; border-radius: 10px; background: var(--surface-subtle); font-size: 12.5px; line-height: 1.8; }
@media (max-width: 720px) { .sb-grid { grid-template-columns: 1fr; gap: 20px; } .sb-row { grid-template-columns: 84px 1fr 38px 44px; } }

/* 公共下水道の普及率 */
.sewer-coverage-section .sw-badge { align-self: flex-start; padding: 5px 11px; border-radius: 999px; background: rgba(16,185,129,.14); color: #047857; font-size: 11px; font-weight: 800; white-space: nowrap; }
.sw-kpis { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin: 4px 0 14px; }
.sw-kpi { padding: 13px; border-radius: 12px; background: var(--surface-subtle); text-align: center; }
.sw-kpi strong { display: block; font-size: 21px; font-weight: 800; color: var(--text); }
.sw-kpi span { display: block; margin-top: 4px; font-size: 10.5px; color: var(--muted); font-weight: 700; line-height: 1.4; }
.sw-chart { display: flex; align-items: flex-end; gap: 12px; height: 130px; padding-top: 16px; }
.sw-col { flex: 1 1 0; display: flex; flex-direction: column; align-items: center; justify-content: flex-end; height: 100%; }
.sw-col i { display: block; width: 56%; max-width: 36px; border-radius: 5px 5px 0 0; min-height: 10px; background: linear-gradient(180deg,#22d3ee,#0891b2); }
.sw-v { font-size: 11px; font-weight: 800; color: var(--text); margin-bottom: 4px; }
.sw-yr { font-size: 10px; color: var(--muted); font-weight: 700; margin-top: 4px; }
.sw-insight { margin-top: 14px; padding: 13px 15px; border-radius: 10px; background: var(--surface-subtle); font-size: 12.5px; line-height: 1.8; }
@media (max-width: 720px) { .sw-kpis { grid-template-columns: 1fr; } }

/* 歳入・歳出ページ移設時の単一カラム表示 */
.settlement-bd-section .sb-grid-single { grid-template-columns: 1fr; }
.settlement-bd-section .sb-grid-single .sb-rows { max-width: 640px; }

/* くらしと社会ページ グループ見出し */
.living-society-panel .ls-group-head { margin: 26px 0 10px; padding-bottom: 8px; border-bottom: 2px solid var(--border); }
.living-society-panel .ls-group-head h2 { font-size: 17px; font-weight: 800; margin: 0; color: var(--text); }
.living-society-panel .ls-group-head p { margin: 4px 0 0; font-size: 12px; color: var(--muted); font-weight: 600; }
.living-society-panel > section.panel:first-of-type { margin-top: 0; }

/* 現在地ページ: 4者向け入口ナビ */
.uto-audience-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; }
.uto-audience-grid button {
  display: flex; flex-direction: column; align-items: flex-start; gap: 6px;
  padding: 18px; border-radius: 14px; text-align: left; cursor: pointer;
  background: var(--surface); border: 1px solid var(--border);
  border-top: 4px solid var(--aud-accent, #2563eb); transition: transform .12s ease, box-shadow .12s ease;
}
.uto-audience-grid button:hover { transform: translateY(-2px); box-shadow: 0 8px 22px rgba(15,23,42,.10); }
.uto-audience-grid button > span { font-size: 11.5px; font-weight: 800; color: var(--aud-accent, #2563eb); letter-spacing: .02em; }
.uto-audience-grid button strong { font-size: 15px; font-weight: 800; color: var(--text); line-height: 1.4; }
.uto-audience-grid button p { font-size: 12px; color: var(--muted); line-height: 1.7; margin: 2px 0 0; }
.uto-audience-grid button b { margin-top: auto; padding-top: 6px; font-size: 12px; font-weight: 800; color: var(--aud-accent, #2563eb); }
.uto-audience-grid button:nth-child(1) { --aud-accent: #0ea5e9; }
.uto-audience-grid button:nth-child(2) { --aud-accent: #10b981; }
.uto-audience-grid button:nth-child(3) { --aud-accent: #8b5cf6; }
.uto-audience-grid button:nth-child(4) { --aud-accent: #f59e0b; }
@media (max-width: 900px) { .uto-audience-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 540px) { .uto-audience-grid { grid-template-columns: 1fr; } }

/* ===== 議員カルテ（議員プロファイリング）モダンUI ===== */
.member-analysis-panel { display: flex; flex-direction: column; gap: 28px; }
.ma-hero { padding: 8px 0 4px; }
.ma-kicker { display: inline-block; font-size: 11px; font-weight: 800; letter-spacing: .08em; color: #6366f1; background: rgba(99,102,241,.10); padding: 4px 10px; border-radius: 999px; }
.ma-hero h2 { font-size: 28px; font-weight: 800; margin: 12px 0 8px; color: var(--text); letter-spacing: -.01em; }
.ma-hero p { font-size: 14px; color: var(--muted); line-height: 1.8; max-width: 760px; }
.ma-note { margin: -10px 0 0; font-size: 11.5px; color: var(--muted); line-height: 1.7; padding: 11px 14px; background: rgba(245,158,11,.08); border: 1px solid rgba(245,158,11,.22); border-radius: 10px; }
.ma-block { background: var(--surface); border: 1px solid var(--border); border-radius: 18px; padding: 24px; }
.ma-block-head h3 { font-size: 16px; font-weight: 800; margin: 0 0 4px; color: var(--text); }
.ma-block-head p { font-size: 12.5px; color: var(--muted); line-height: 1.6; margin: 0 0 16px; }
.ma-scatter-wrap { position: relative; height: 380px; }
.ma-radar-wrap { position: relative; height: 300px; margin-bottom: 8px; }
.ag-diagnosis { display: grid; grid-template-columns: minmax(280px, .8fr) minmax(0, 1.5fr); gap: 18px; }
.ag-ai-card { padding: 24px; border-radius: 20px; color: #fff; background: linear-gradient(145deg, #312e81, #1d4ed8 58%, #0891b2); box-shadow: 0 16px 34px rgba(30,64,175,.20); }
.ag-label { display: inline-flex; padding: 4px 9px; border: 1px solid rgba(255,255,255,.28); border-radius: 999px; font-size: 10.5px; font-weight: 800; }
.ag-score { display: flex; gap: 10px; align-items: center; margin: 18px 0 8px; }
.ag-score strong { font-size: 48px; line-height: 1; }
.ag-score span { font-size: 12px; line-height: 1.5; color: #dbeafe; }
.ag-ai-card h3 { margin: 0 0 8px; font-size: 18px; }
.ag-ai-card p { margin: 0; font-size: 12.5px; line-height: 1.8; color: #e0f2fe; }
.ag-capability-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.ag-capability-grid article { padding: 14px; border: 1px solid var(--border); border-radius: 14px; background: var(--surface); display: grid; grid-template-columns: 1fr auto; gap: 7px 12px; }
.ag-capability-grid span { font-size: 12px; font-weight: 800; color: var(--text); }
.ag-capability-grid strong { color: #f59e0b; letter-spacing: 1px; }
.ag-capability-grid em, .ag-balance-row em, .ag-portfolio-row em { grid-column: 1 / -1; height: 7px; overflow: hidden; border-radius: 99px; background: var(--surface-subtle); }
.ag-capability-grid em i, .ag-balance-row em i, .ag-portfolio-row em i { display: block; height: 100%; border-radius: inherit; background: #2563eb; }
.ag-capability-grid small { grid-column: 1 / -1; color: var(--muted); font-size: 10px; text-align: right; }
.ag-two-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.ag-fit { display: grid; gap: 12px; }
.ag-fit-row { display: grid; grid-template-columns: 120px repeat(3, 1fr); gap: 12px; align-items: center; }
.ag-fit-row > strong { font-size: 12.5px; color: var(--text); }
.ag-fit-row > span { display: grid; gap: 4px; }
.ag-fit-row small { font-size: 10px; color: var(--muted); }
.ag-fit-row span > i { display: block; max-width: 100%; height: 8px; border-radius: 99px; }
.ag-portfolio, .ag-balance { display: grid; gap: 10px; }
.ag-portfolio-row { display: grid; grid-template-columns: 100px 34px 1fr; align-items: center; gap: 8px; }
.ag-portfolio-row > span { font-size: 11.5px; font-weight: 700; color: var(--text); }
.ag-portfolio-row > span i { display: inline-block; width: 8px; height: 8px; border-radius: 50%; margin-right: 7px; }
.ag-portfolio-row b, .ag-balance-row b { font-size: 11px; color: var(--muted); text-align: right; }
.ag-portfolio-row em { grid-column: auto; }
.ag-balance-row { display: grid; grid-template-columns: 70px 1fr 28px; gap: 9px; align-items: center; }
.ag-balance-row span { font-size: 11.5px; font-weight: 800; color: var(--text); }
.ag-balance-row em { grid-column: auto; height: 10px; }
.ag-gap-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 10px; }
.ag-gap-card { padding: 14px; border: 1px solid var(--border); border-radius: 13px; background: var(--surface-subtle); }
.ag-gap-card > span { display: inline-block; padding: 3px 7px; border-radius: 99px; color: #9a3412; background: rgba(234,88,12,.12); font-size: 9.5px; font-weight: 800; }
.ag-gap-card > span.is-alert { color: #b91c1c; background: rgba(220,38,38,.12); }
.ag-gap-card strong { display: block; margin-top: 9px; color: var(--text); font-size: 13px; }
.ag-gap-card p { margin: 6px 0 0; color: var(--muted); font-size: 10.5px; line-height: 1.6; }
.ag-heatmap { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; }
.ag-heat-cell { padding: 15px; border-radius: 12px; background: color-mix(in srgb, #2563eb var(--heat), var(--surface-subtle)); color: var(--text); border: 1px solid var(--border); }
.ag-heat-cell strong, .ag-heat-cell span { display: block; }
.ag-heat-cell strong { font-size: 13px; }
.ag-heat-cell span { margin-top: 5px; font-size: 10px; color: var(--muted); }
.ag-flow { display: flex; align-items: stretch; gap: 7px; overflow-x: auto; padding-bottom: 4px; }
.ag-flow-step { min-width: 132px; flex: 1; padding: 13px; border-radius: 12px; border: 1px solid rgba(37,99,235,.25); background: rgba(37,99,235,.07); }
.ag-flow-step.is-missing { border-style: dashed; border-color: var(--border); background: var(--surface-subtle); }
.ag-flow-step small, .ag-flow-step strong, .ag-flow-step span { display: block; }
.ag-flow-step small { color: #2563eb; font-weight: 800; }
.ag-flow-step strong { margin-top: 5px; font-size: 12px; color: var(--text); }
.ag-flow-step span { margin-top: 4px; font-size: 10px; color: var(--muted); }
.ag-flow-arrow { align-self: center; color: var(--muted); font-style: normal; }
.ag-data-note { margin: 13px 0 0; padding: 10px 12px; border-left: 3px solid #f59e0b; background: rgba(245,158,11,.07); color: var(--muted); font-size: 10.5px; line-height: 1.7; }
.ag-missing-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px; }
.ag-missing-grid article { padding: 13px; border: 1px dashed var(--border); border-radius: 11px; text-align: center; }
.ag-missing-grid strong, .ag-missing-grid span { display: block; }
.ag-missing-grid strong { color: #b45309; font-size: 12px; }
.ag-missing-grid span { margin-top: 3px; color: var(--muted); font-size: 10.5px; }
.ag-contact-empty { padding: 18px; border-radius: 13px; background: var(--surface-subtle); }
.ag-contact-empty strong { color: #b45309; }
.ag-contact-empty p { margin: 6px 0 0; color: var(--muted); font-size: 11px; line-height: 1.7; }

/* 議員一覧グリッド */
.ma-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 12px; }
.ma-card { display: flex; flex-direction: column; align-items: flex-start; gap: 8px; padding: 16px; border-radius: 14px; border: 1px solid var(--border); background: var(--surface); cursor: pointer; text-align: left; transition: transform .12s, box-shadow .12s, border-color .12s; }
.ma-card:hover { transform: translateY(-2px); box-shadow: 0 10px 26px rgba(15,23,42,.10); }
.ma-card.active { border-color: #6366f1; box-shadow: 0 0 0 2px rgba(99,102,241,.25); }
.ma-avatar { display: inline-flex; align-items: center; justify-content: center; width: 38px; height: 38px; border-radius: 12px; color: #fff; font-weight: 800; font-size: 17px; flex: none; }
.ma-card-name { font-size: 14px; font-weight: 800; color: var(--text); display: flex; align-items: baseline; gap: 6px; }
.ma-card-name small { font-size: 11px; font-weight: 700; color: var(--muted); }
.ma-card-themes { font-size: 11.5px; color: var(--muted); }
.ma-card-style { font-size: 10.5px; font-weight: 800; color: #6366f1; background: rgba(99,102,241,.10); padding: 2px 8px; border-radius: 999px; }

/* カルテ詳細 */
.ma-karte-head { display: flex; gap: 16px; align-items: flex-start; }
.ma-karte-head .ma-avatar { width: 60px; height: 60px; border-radius: 16px; font-size: 26px; }
.ma-karte-id h3 { font-size: 22px; font-weight: 800; margin: 0; color: var(--text); display: flex; align-items: baseline; gap: 8px; }
.ma-karte-id h3 small { font-size: 13px; font-weight: 700; color: var(--muted); }
.ma-karte-id p { font-size: 13.5px; color: var(--text); line-height: 1.7; margin: 6px 0 8px; }
.ma-karte-meta { display: flex; flex-wrap: wrap; gap: 8px 16px; }
.ma-karte-meta span { font-size: 11px; color: var(--muted); font-weight: 600; }
.ma-metrics { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin: 20px 0; }
.ma-metrics article { padding: 14px; border-radius: 12px; background: var(--surface-subtle); text-align: center; }
.ma-metrics strong { display: block; font-size: 24px; font-weight: 800; color: var(--text); }
.ma-metrics span { display: block; margin-top: 4px; font-size: 11px; color: var(--muted); font-weight: 700; }
.ma-karte-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 28px; }
.ma-karte-cols h4 { font-size: 13px; font-weight: 800; color: var(--text); margin: 0 0 12px; display: flex; flex-direction: column; gap: 2px; }
.ma-karte-cols h4 small { font-size: 11px; font-weight: 600; color: var(--muted); }
.ma-karte-cols h4.ma-mt { margin-top: 24px; }

/* タイプ軸バー */
.ma-axis { margin-bottom: 18px; }
.ma-axis-cap { font-size: 11px; color: var(--muted); line-height: 1.55; margin-bottom: 7px; }
.ma-axis-row { display: grid; grid-template-columns: 84px 1fr 84px; align-items: center; gap: 8px; }
.ma-axis-l { font-size: 11.5px; font-weight: 700; color: var(--text); text-align: right; }
.ma-axis-r { font-size: 11.5px; font-weight: 700; color: var(--muted); }
.ma-axis-track { position: relative; height: 8px; border-radius: 6px; background: linear-gradient(90deg, #6366f1, #e2e8f0 50%, #f59e0b); }
.ma-axis-track i { position: absolute; top: 50%; transform: translate(-50%, -50%); width: 16px; height: 16px; border-radius: 50%; background: #fff; border: 3px solid var(--text); }
.ma-axis-score { font-size: 11px; color: var(--muted); font-weight: 700; text-align: center; margin-top: 5px; }
.ma-axis-score b { font-size: 15px; color: var(--text); }
.ma-axis-score small { color: var(--muted); }

/* 議論スタイルバー */
.ma-style-cap { font-size: 10.5px; color: var(--muted); line-height: 1.55; margin: 0 0 10px; }
.ma-style-row { display: grid; grid-template-columns: 64px 1fr 30px; align-items: center; gap: 9px; margin-bottom: 9px; }
.ma-style-name { font-size: 12px; font-weight: 800; }
.ma-style-bar { height: 12px; border-radius: 6px; background: var(--surface-subtle); overflow: hidden; }
.ma-style-bar i { display: block; height: 100%; border-radius: 6px; }
.ma-style-val { font-size: 12px; font-weight: 800; color: var(--text); text-align: right; }

.ma-chips { display: flex; flex-wrap: wrap; gap: 7px; }
.ma-chip { font-size: 11.5px; font-weight: 700; color: #4338ca; background: rgba(99,102,241,.10); padding: 4px 11px; border-radius: 999px; }
.ma-similar { list-style: none; padding: 0; margin: 0; }
.ma-similar li { display: flex; align-items: center; gap: 10px; padding: 8px 0; border-bottom: 1px solid var(--border); }
.ma-similar li:last-child { border-bottom: none; }
.ma-similar .ma-avatar { width: 30px; height: 30px; border-radius: 9px; font-size: 14px; }
.ma-sim-name { flex: 1; font-size: 13px; font-weight: 700; color: var(--text); }
.ma-sim-pct { font-size: 14px; font-weight: 800; color: #6366f1; }

@media (max-width: 820px) {
  .ag-diagnosis, .ag-two-cols { grid-template-columns: 1fr; }
  .ag-gap-grid { grid-template-columns: repeat(2, 1fr); }
  .ag-heatmap { grid-template-columns: repeat(2, 1fr); }
  .ag-fit-row { grid-template-columns: 90px 1fr; }
  .ag-fit-row > span { grid-column: 2; }
  .ma-karte-cols { grid-template-columns: 1fr; gap: 20px; }
  .ma-metrics { grid-template-columns: 1fr 1fr; }
  .ma-hero h2 { font-size: 23px; }
}
@media (max-width: 520px) {
  .ag-capability-grid, .ag-gap-grid, .ag-heatmap { grid-template-columns: 1fr; }
  .ag-fit-row { grid-template-columns: 1fr; padding-bottom: 12px; border-bottom: 1px solid var(--border); }
  .ag-fit-row > span { grid-column: auto; }
  .ag-score strong { font-size: 40px; }
}

/* RMO・地域運営OS */
.rmo-os-panel { display: grid; gap: 18px; }
.rmo-hero { display: grid; grid-template-columns: minmax(0,1.45fr) minmax(250px,.55fr); gap: 28px; align-items: center; padding: clamp(28px,5vw,58px); border-radius: 26px; color: #fff; background: linear-gradient(135deg,#172554,#164e63 58%,#166534); }
.rmo-hero > div > span,.rmo-card header > span { color: #86efac; font-size: 11px; font-weight: 900; letter-spacing: .13em; }
.rmo-hero h1 { margin: 8px 0; font-size: clamp(32px,5vw,58px); }
.rmo-hero > div > p { font-size: clamp(20px,2.3vw,30px); font-weight: 900; }
.rmo-hero > div > small { display: block; max-width: 68ch; margin-top: 18px; color: #d1fae5; font-size: 14px; line-height: 1.8; }
.rmo-hero aside { padding: 22px; border: 1px solid rgba(255,255,255,.24); border-radius: 16px; background: rgba(255,255,255,.09); }
.rmo-hero aside span,.rmo-hero aside strong { display: block; }
.rmo-hero aside strong { margin: 7px 0; font-size: 24px; }
.rmo-hero aside p { margin: 0; color: #dbeafe; font-size: 12px; line-height: 1.7; }
.rmo-card { padding: clamp(20px,3vw,32px); border: 1px solid var(--line); border-radius: 20px; background: var(--paper); box-shadow: 0 6px 22px rgba(15,39,66,.05); }
.rmo-card header h2 { margin: 5px 0 8px; font-size: clamp(21px,2.2vw,29px); }
.rmo-card header > p { color: var(--muted); font-size: 13px; line-height: 1.7; }
.rmo-shift { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 14px; margin-top: 20px; }
.rmo-shift article { display: grid; grid-template-columns: auto 1fr; gap: 8px 14px; padding: 20px; border-left: 5px solid #b45309; border-radius: 14px; background: var(--soft); }
.rmo-shift article.future { border-color: #15803d; }
.rmo-shift b { color: #9a3412; font-size: 11px; }
.rmo-shift .future b { color: #166534; }
.rmo-shift strong { font-size: 20px; }
.rmo-shift i { color: var(--muted); font-style: normal; }
.rmo-shift span { font-weight: 900; }
.rmo-shift p { grid-column: 1/-1; margin: 4px 0 0; color: var(--muted); font-size: 12px; line-height: 1.65; }
.rmo-principles,.rmo-governance > div { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 9px; margin-top: 16px; }
.rmo-principles p,.rmo-governance p { display: grid; grid-template-columns: 28px 1fr; gap: 10px; align-items: start; margin: 0; padding: 13px; border-radius: 11px; background: var(--soft); font-size: 12px; line-height: 1.65; }
.rmo-principles b,.rmo-governance b { display: grid; place-items: center; width: 26px; height: 26px; border-radius: 50%; color: #fff; background: #166534; }
.rmo-layer-grid { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 11px; margin-top: 20px; }
.rmo-layer-grid article { padding: 17px; border-top: 5px solid #2563eb; border-radius: 13px; background: var(--soft); }
.rmo-layer-grid article.priority { border-color: #dc2626; }
.rmo-layer-grid span { color: #1d4ed8; font-size: 10px; font-weight: 900; }
.rmo-layer-grid .priority span { color: #b91c1c; }
.rmo-layer-grid h3 { margin: 7px 0; font-size: 17px; }
.rmo-layer-grid p { margin: 0; color: var(--muted); font-size: 12px; line-height: 1.65; }
.rmo-data-coverage { display: grid; grid-template-columns: repeat(3,1fr); gap: 10px; margin: 18px 0; }
.rmo-data-coverage article { padding: 15px; border-radius: 12px; color: #166534; background: #dcfce7; }
.rmo-data-coverage article.missing { color: #92400e; background: #fef3c7; }
.rmo-data-coverage strong,.rmo-data-coverage span { display: block; }
.rmo-data-coverage strong { font-size: 26px; }
.rmo-data-coverage span { font-size: 11px; font-weight: 800; }
.rmo-district-grid { display: grid; grid-template-columns: repeat(auto-fit,minmax(250px,1fr)); gap: 11px; }
.rmo-district-grid article { padding: 16px; border: 1px solid var(--line); border-radius: 13px; }
.rmo-district-grid article > div { display: flex; justify-content: space-between; gap: 8px; align-items: start; }
.rmo-district-grid h3 { margin: 0; font-size: 18px; }
.rmo-district-grid article > div span { padding: 4px 7px; border-radius: 999px; color: #92400e; background: #fef3c7; font-size: 9px; font-weight: 900; }
.rmo-district-grid dl { display: grid; grid-template-columns: repeat(2,1fr); gap: 7px; margin: 13px 0; }
.rmo-district-grid dl div { padding: 8px; border-radius: 8px; background: var(--soft); }
.rmo-district-grid dt { color: var(--muted); font-size: 10px; }
.rmo-district-grid dd { margin: 3px 0 0; font-weight: 900; }
.rmo-district-grid p { margin: 0; color: var(--muted); font-size: 11px; line-height: 1.6; }
.rmo-metric-status { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 15px; }
.rmo-metric-status article { display: flex; gap: 7px; padding: 7px 9px; border-radius: 999px; color: #166534; background: #dcfce7; font-size: 10px; }
.rmo-metric-status article.missing { color: #92400e; background: #fef3c7; }
.rmo-module-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 11px; margin-top: 18px; }
.rmo-module-grid article { padding: 17px; border: 1px solid var(--line); border-radius: 13px; background: var(--soft); }
.rmo-module-grid > article > span { color: #166534; font-size: 10px; font-weight: 900; }
.rmo-module-grid h3 { margin: 6px 0 11px; }
.rmo-module-grid dl { display: grid; gap: 7px; margin: 0; }
.rmo-module-grid dl div { display: grid; grid-template-columns: 42px 1fr; gap: 7px; font-size: 11px; }
.rmo-module-grid dt { color: var(--muted); }
.rmo-module-grid dd { margin: 0; }
.rmo-split { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 24px; }
.rmo-council,.rmo-success { display: grid; gap: 9px; margin-top: 15px; }
.rmo-council article,.rmo-success article { padding: 14px; border-left: 4px solid #2563eb; border-radius: 10px; background: var(--soft); }
.rmo-council span,.rmo-success span { color: #1d4ed8; font-size: 10px; font-weight: 900; }
.rmo-council strong,.rmo-success strong { display: block; margin: 4px 0; }
.rmo-council p,.rmo-success p { margin: 3px 0 0; color: var(--muted); font-size: 11px; line-height: 1.6; }
.rmo-roadmap { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 11px; margin-top: 18px; }
.rmo-roadmap article { padding: 17px; border-top: 5px solid #166534; border-radius: 13px; background: var(--soft); }
.rmo-roadmap span { color: #166534; font-size: 10px; font-weight: 900; }
.rmo-roadmap h3 { margin: 5px 0; }
.rmo-roadmap b { color: var(--muted); font-size: 10px; }
.rmo-roadmap ol { padding-left: 18px; font-size: 11px; line-height: 1.7; }
.rmo-empty { padding: 30px; border-radius: 16px; background: var(--paper); }
@media(max-width:1000px) { .rmo-layer-grid,.rmo-roadmap { grid-template-columns: repeat(2,1fr); } .rmo-module-grid { grid-template-columns: repeat(2,1fr); } }
@media(max-width:760px) { .rmo-hero,.rmo-shift,.rmo-split { grid-template-columns: 1fr; } .rmo-principles,.rmo-governance > div { grid-template-columns: 1fr; } }
@media(max-width:560px) {
  .rmo-os-panel,.rmo-os-panel > *,.rmo-hero > div,.rmo-hero aside { width: 100%; min-width: 0; max-width: 100%; }
  .rmo-os-panel { gap: 12px; overflow: hidden; }
  .rmo-hero { grid-template-columns: minmax(0,1fr); width: calc(100vw - 24px); max-width: calc(100vw - 24px); padding: 24px 20px; border-radius: 18px; overflow: hidden; }
  .rmo-hero h1 { font-size: clamp(28px,9vw,38px); line-height: 1.25; overflow-wrap: anywhere; }
  .rmo-hero > div > p { font-size: 20px; line-height: 1.5; overflow-wrap: anywhere; }
  .rmo-hero > div > small { font-size: 13px; }
  .rmo-card { padding: 18px; }
  .rmo-layer-grid,.rmo-module-grid,.rmo-roadmap,.rmo-data-coverage { grid-template-columns: 1fr; }
  .rmo-district-grid { grid-template-columns: 1fr; }
}

/* PFU・政策実験OS */
.pfu-os-panel { display: grid; gap: 18px; }
.pfu-hero { display: grid; grid-template-columns: minmax(0,1.45fr) minmax(260px,.55fr); gap: 28px; align-items: center; padding: clamp(30px,5vw,60px); border-radius: 26px; color: #fff; background: linear-gradient(135deg,#111827,#312e81 56%,#7c2d12); }
.pfu-hero > div > span,.pfu-card header > span { color: #c4b5fd; font-size: 11px; font-weight: 900; letter-spacing: .13em; }
.pfu-hero h1 { margin: 8px 0; font-size: clamp(38px,6vw,68px); }
.pfu-hero > div > p { font-size: clamp(18px,2.2vw,28px); font-weight: 900; }
.pfu-hero > div > strong { display: block; margin-top: 14px; color: #fde68a; font-size: 16px; }
.pfu-hero > div > small { display: block; max-width: 70ch; margin-top: 16px; color: #e0e7ff; font-size: 13px; line-height: 1.8; }
.pfu-hero aside { padding: 22px; border: 1px solid rgba(255,255,255,.24); border-radius: 16px; background: rgba(255,255,255,.09); }
.pfu-hero aside span,.pfu-hero aside strong { display: block; }
.pfu-hero aside strong { margin: 7px 0; font-size: 23px; }
.pfu-hero aside p { margin: 0; color: #e0e7ff; font-size: 12px; line-height: 1.7; }
.pfu-card { padding: clamp(20px,3vw,32px); border: 1px solid var(--line); border-radius: 20px; background: var(--paper); box-shadow: 0 6px 22px rgba(15,39,66,.05); }
.pfu-card header h2 { margin: 5px 0 8px; font-size: clamp(21px,2.2vw,29px); }
.pfu-card header > p { color: var(--muted); font-size: 13px; line-height: 1.7; }
.pfu-value-flow { display: flex; align-items: center; gap: 8px; overflow-x: auto; margin: 20px 0; }
.pfu-value-flow span { flex: 1; min-width: 150px; padding: 15px; border-radius: 12px; background: var(--soft); text-align: center; font-size: 12px; }
.pfu-value-flow b { font-size: 15px; }
.pfu-value-flow i { color: #7c3aed; font-style: normal; font-weight: 900; }
.pfu-principles { display: grid; grid-template-columns: repeat(5,1fr); gap: 9px; }
.pfu-principles article { padding: 14px; border-top: 4px solid #7c3aed; border-radius: 11px; background: var(--soft); }
.pfu-principles b { color: #7c3aed; }
.pfu-principles p { margin: 6px 0 0; font-size: 11px; line-height: 1.6; }
.pfu-entry { display: grid; grid-template-columns: repeat(3,1fr) .9fr; gap: 10px; margin-top: 18px; }
.pfu-entry article,.pfu-entry aside { display: grid; grid-template-columns: 30px 1fr; gap: 9px; align-items: center; padding: 15px; border-radius: 12px; background: var(--soft); }
.pfu-entry article b { display: grid; place-items: center; width: 28px; height: 28px; border-radius: 50%; color: #fff; background: #4338ca; }
.pfu-entry aside { display: block; color: #991b1b; background: #fee2e2; }
.pfu-entry aside span,.pfu-entry aside strong { display: block; }
.pfu-entry aside strong { margin-top: 5px; font-size: 17px; }
.pfu-types { display: grid; grid-template-columns: repeat(3,1fr); gap: 10px; margin-top: 12px; }
.pfu-types article { padding: 15px; border: 1px solid var(--line); border-radius: 12px; }
.pfu-types h3 { margin: 0 0 9px; }
.pfu-types p { display: flex; flex-wrap: wrap; gap: 5px; margin: 0; }
.pfu-types span { padding: 4px 7px; border-radius: 999px; color: #4338ca; background: #e0e7ff; font-size: 10px; font-weight: 800; }
.pfu-gates { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 10px; margin-top: 18px; }
.pfu-gates article { padding: 16px; border-top: 5px solid #4338ca; border-radius: 13px; background: var(--soft); }
.pfu-gates span { color: #4338ca; font-size: 10px; font-weight: 900; }
.pfu-gates h3 { margin: 5px 0; }
.pfu-gates strong { font-size: 11px; }
.pfu-gates p { margin: 7px 0 0; color: var(--muted); font-size: 11px; line-height: 1.55; }
.pfu-split { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 26px; }
.pfu-template,.pfu-kpis { display: grid; gap: 8px; margin-top: 15px; }
.pfu-template article,.pfu-kpis article { display: grid; grid-template-columns: 90px 1fr; gap: 10px; padding: 12px; border-radius: 10px; background: var(--soft); }
.pfu-template strong,.pfu-kpis strong { color: #4338ca; }
.pfu-template p,.pfu-kpis p { margin: 0; color: var(--muted); font-size: 11px; line-height: 1.6; }
.pfu-withdrawal { border-color: #fca5a5; }
.pfu-withdrawal-grid { display: grid; grid-template-columns: 1.4fr .6fr; gap: 18px; margin-top: 18px; }
.pfu-withdrawal-grid > div { display: grid; gap: 8px; }
.pfu-withdrawal-grid p { display: grid; grid-template-columns: 28px 1fr; gap: 9px; margin: 0; padding: 12px; border-radius: 10px; background: var(--soft); font-size: 12px; }
.pfu-withdrawal-grid p b { display: grid; place-items: center; width: 26px; height: 26px; border-radius: 50%; color: #fff; background: #b91c1c; }
.pfu-withdrawal-grid aside { padding: 16px; border-radius: 12px; color: #991b1b; background: #fee2e2; }
.pfu-withdrawal-grid aside span,.pfu-withdrawal-grid aside strong { display: block; }
.pfu-withdrawal-grid aside strong { margin-top: 9px; font-size: 12px; }
.pfu-sunset { display: grid; grid-template-columns: 120px 120px 1fr; gap: 10px; align-items: stretch; margin-top: 15px; }
.pfu-sunset article,.pfu-sunset > div { padding: 14px; border-radius: 11px; background: var(--soft); }
.pfu-sunset article span,.pfu-sunset article strong { display: block; }
.pfu-sunset article strong { margin-top: 4px; font-size: 23px; }
.pfu-sunset > div { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.pfu-sunset > div b { flex-basis: 100%; }
.pfu-sunset > div span { padding: 5px 8px; border-radius: 999px; color: #4338ca; background: #e0e7ff; font-size: 10px; font-weight: 900; }
.pfu-sunset > p { grid-column: 1/-1; margin: 0; color: #991b1b; font-size: 11px; font-weight: 900; }
.pfu-portfolio { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 12px; margin-top: 18px; }
.pfu-portfolio > article { padding: 18px; border: 1px solid var(--line); border-radius: 14px; }
.pfu-portfolio > article > div { display: flex; justify-content: space-between; gap: 8px; }
.pfu-portfolio > article > div span,.pfu-portfolio > article > div b { padding: 4px 7px; border-radius: 999px; font-size: 9px; }
.pfu-portfolio > article > div span { color: #4338ca; background: #e0e7ff; }
.pfu-portfolio > article > div b { color: #92400e; background: #fef3c7; }
.pfu-portfolio h3 { margin: 11px 0 5px; font-size: 18px; }
.pfu-portfolio .scope { color: var(--muted); font-size: 11px; }
.pfu-portfolio dl { display: grid; gap: 0; margin: 12px 0; }
.pfu-portfolio dl div { display: grid; grid-template-columns: 66px 1fr; gap: 8px; padding: 8px 0; border-top: 1px solid var(--line); font-size: 11px; line-height: 1.55; }
.pfu-portfolio dl div.stop { color: #991b1b; }
.pfu-portfolio dt { color: var(--muted); font-weight: 800; }
.pfu-portfolio dd { margin: 0; }
.pfu-portfolio small { color: #92400e; font-weight: 900; }
.pfu-review,.pfu-communication { margin: 15px 0; padding-left: 22px; font-size: 12px; line-height: 1.8; }
.pfu-decisions { display: flex; gap: 7px; }
.pfu-decisions span { flex: 1; padding: 9px; border-radius: 999px; color: #4338ca; background: #e0e7ff; font-size: 11px; font-weight: 900; text-align: center; }
.pfu-recommendations { display: grid; gap: 8px; margin-top: 15px; }
.pfu-recommendations article { display: grid; grid-template-columns: 28px 1fr; gap: 9px; align-items: center; padding: 12px; border-radius: 10px; background: var(--soft); }
.pfu-recommendations b { display: grid; place-items: center; width: 26px; height: 26px; border-radius: 50%; color: #fff; background: #4338ca; }
.pfu-note { margin: 13px 0 0; padding: 11px 13px; border-left: 4px solid #d97706; color: var(--muted); background: #fffbeb; font-size: 11px; line-height: 1.65; }
.pfu-evaluation { display: grid; grid-template-columns: 1.35fr .65fr; gap: 15px; margin-top: 17px; }
.pfu-evaluation > div { display: grid; grid-template-columns: repeat(5,1fr); gap: 8px; }
.pfu-evaluation article { padding: 13px; border-radius: 10px; background: var(--soft); }
.pfu-evaluation article span,.pfu-evaluation article strong { display: block; }
.pfu-evaluation article span { font-size: 10px; }
.pfu-evaluation article strong { margin-top: 5px; color: #4338ca; font-size: 21px; }
.pfu-evaluation aside { padding: 16px; border-radius: 12px; color: #fff; background: #4338ca; }
.pfu-evaluation aside span,.pfu-evaluation aside strong { display: block; }
.pfu-evaluation aside strong { margin: 5px 0; font-size: 25px; }
.pfu-evaluation aside p { margin: 0; color: #e0e7ff; font-size: 11px; line-height: 1.6; }
.pfu-governance > div { display: grid; grid-template-columns: repeat(2,1fr); gap: 9px; margin-top: 16px; }
.pfu-governance p { display: grid; grid-template-columns: 28px 1fr; gap: 9px; margin: 0; padding: 13px; border-radius: 11px; background: var(--soft); font-size: 12px; line-height: 1.65; }
.pfu-governance p b { display: grid; place-items: center; width: 26px; height: 26px; border-radius: 50%; color: #fff; background: #4338ca; }
.pfu-empty { padding: 30px; border-radius: 16px; background: var(--paper); }
@media(max-width:1050px) { .pfu-principles { grid-template-columns: repeat(3,1fr); } .pfu-entry { grid-template-columns: repeat(2,1fr); } .pfu-gates { grid-template-columns: repeat(2,1fr); } .pfu-portfolio { grid-template-columns: 1fr; } .pfu-evaluation { grid-template-columns: 1fr; } }
@media(max-width:760px) { .pfu-hero,.pfu-split,.pfu-withdrawal-grid { grid-template-columns: 1fr; } .pfu-types,.pfu-principles { grid-template-columns: 1fr; } .pfu-governance > div { grid-template-columns: 1fr; } .pfu-evaluation > div { grid-template-columns: repeat(2,1fr); } }
@media(max-width:560px) {
  .pfu-os-panel,.pfu-os-panel > *,.pfu-hero > div,.pfu-hero aside { width: 100%; min-width: 0; max-width: 100%; }
  .pfu-os-panel { gap: 12px; overflow: hidden; }
  .pfu-hero { grid-template-columns: minmax(0,1fr); width: calc(100vw - 24px); max-width: calc(100vw - 24px); padding: 24px 20px; border-radius: 18px; overflow: hidden; }
  .pfu-hero :is(h1,p,strong,small) { max-width: 100%; overflow-wrap: anywhere; word-break: normal; }
  .pfu-hero h1 { font-size: 39px; }
  .pfu-hero > div > p { font-size: 20px; line-height: 1.45; }
  .pfu-card { padding: 18px; }
  .pfu-entry,.pfu-gates,.pfu-evaluation > div { grid-template-columns: 1fr; }
  .pfu-sunset { grid-template-columns: repeat(2,1fr); }
  .pfu-sunset > div { grid-column: 1/-1; }
  .pfu-template article,.pfu-kpis article { grid-template-columns: 1fr; }
}

/* 令和8年度 当初予算 */
.budget-r8-section .b8-badge { align-self: flex-start; padding: 5px 11px; border-radius: 999px; background: rgba(239,68,68,.12); color: #b91c1c; font-size: 11px; font-weight: 800; white-space: nowrap; }
.b8-sub { font-size: 12.5px; font-weight: 800; margin: 18px 0 10px; color: var(--text); }
.b8-trend { display: flex; align-items: flex-end; gap: 14px; height: 130px; padding-top: 16px; }
.b8-tcol { flex: 1 1 0; display: flex; flex-direction: column; align-items: center; justify-content: flex-end; height: 100%; }
.b8-tcol i { display: block; width: 56%; max-width: 40px; border-radius: 5px 5px 0 0; min-height: 8px; }
.b8-tv { font-size: 11px; font-weight: 800; color: var(--text); margin-bottom: 4px; }
.b8-tyr { font-size: 11px; color: var(--muted); font-weight: 700; margin-top: 5px; }
.b8-tnote { margin: 10px 0 0; font-size: 12px; color: var(--muted); line-height: 1.6; }
.b8-srcbar { display: flex; height: 26px; border-radius: 7px; overflow: hidden; font-size: 11px; font-weight: 800; color: #fff; margin-bottom: 12px; }
.b8-self { background: #10b981; display: flex; align-items: center; justify-content: center; white-space: nowrap; }
.b8-dep { background: #f97316; display: flex; align-items: center; justify-content: center; white-space: nowrap; }
.b8-rows { display: flex; flex-direction: column; gap: 6px; max-width: 680px; }
.b8-row { display: grid; grid-template-columns: 120px 1fr 44px 52px; align-items: center; gap: 8px; }
.b8-name { font-size: 11.5px; font-weight: 700; color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.b8-bar { height: 13px; border-radius: 7px; background: var(--surface-subtle); overflow: hidden; }
.b8-bar i { display: block; height: 100%; border-radius: 7px; }
.b8-pct { font-size: 11.5px; font-weight: 800; color: var(--text); text-align: right; }
.b8-amt { font-size: 10.5px; font-weight: 700; color: var(--muted); text-align: right; }
.b8-insight { margin-top: 14px; padding: 13px 15px; border-radius: 10px; background: var(--surface-subtle); font-size: 12.5px; line-height: 1.8; }
@media (max-width: 720px) { .b8-row { grid-template-columns: 96px 1fr 40px 46px; } .b8-trend { gap: 8px; } }

/* R8 補正予算の款別増減バー */
.b8-amend { display: flex; flex-direction: column; gap: 6px; margin: 8px 0 4px; max-width: 620px; }
.b8-amend-row { display: grid; grid-template-columns: 110px 1fr 64px; align-items: center; gap: 8px; }
.b8-amend-track { position: relative; height: 12px; background: var(--surface-subtle); border-radius: 6px; }
.b8-amend-track i { position: absolute; top: 0; height: 100%; border-radius: 6px; }
.b8-amend-track i.pos { left: 0; background: #10b981; }
.b8-amend-track i.neg { right: 0; background: #ef4444; }
.b8-amend-val { font-size: 11px; font-weight: 800; text-align: right; }
.b8-amend-val.pos { color: #047857; }
.b8-amend-val.neg { color: #b91c1c; }

/* 財政の健全度（健全化判断比率） */
.fiscal-health-section .fh-vbadge { align-self: flex-start; padding: 5px 11px; border-radius: 999px; background: rgba(16,185,129,.14); color: #047857; font-size: 11px; font-weight: 800; white-space: nowrap; }
.fh-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; }
.fh-card { padding: 16px; border-radius: 14px; border: 1px solid var(--border); background: var(--surface); }
.fh-head { display: flex; align-items: center; justify-content: space-between; gap: 6px; }
.fh-head h4 { font-size: 12.5px; font-weight: 800; margin: 0; color: var(--text); }
.fh-badge { font-size: 10px; font-weight: 800; padding: 2px 8px; border-radius: 999px; white-space: nowrap; }
.fh-badge.ok { background: rgba(16,185,129,.14); color: #047857; }
.fh-badge.warn { background: rgba(239,68,68,.14); color: #b91c1c; }
.fh-value { font-size: 26px; font-weight: 800; color: var(--text); margin: 10px 0 12px; display: flex; align-items: baseline; gap: 8px; }
.fh-value small { font-size: 11px; font-weight: 700; color: var(--muted); }
.fh-gauge-track { height: 10px; border-radius: 6px; background: linear-gradient(90deg, #10b981, #f59e0b 70%, #ef4444); position: relative; overflow: hidden; }
.fh-gauge-track i { position: absolute; right: 0; top: 0; height: 100%; background: var(--surface-subtle); border-left: 2px solid var(--text); }
.fh-gauge-labels { display: flex; justify-content: space-between; margin-top: 5px; font-size: 9.5px; color: var(--muted); font-weight: 700; }
.fh-status { margin: 9px 0 0; font-size: 11px; color: var(--muted); font-weight: 700; line-height: 1.5; }
.fh-conclusion { margin-top: 16px; padding: 13px 15px; border-radius: 10px; background: rgba(16,185,129,.08); border: 1px solid rgba(16,185,129,.22); font-size: 12.5px; line-height: 1.8; }
.fh-audit { margin-top: 10px; font-size: 11.5px; color: var(--muted); line-height: 1.6; }
@media (max-width: 720px) { .fh-grid { grid-template-columns: 1fr 1fr; } .fh-value { font-size: 22px; } }
.fiscal-health-section .fh-grid-2 { grid-template-columns: repeat(2, 1fr); max-width: 560px; }
@media (max-width: 720px) { .fiscal-health-section .fh-grid-2 { grid-template-columns: 1fr; } }

/* R8/R7 予算推移バー: 当初+補正後の2段 */
.b8-tcol .b8-tbar { display: flex; flex-direction: column-reverse; justify-content: flex-start; width: 56%; max-width: 40px; height: 100%; }
.b8-tcol .b8-tbar i { display: block; width: 100%; }
.b8-tcol .b8-base { border-radius: 0 0 0 0; min-height: 8px; }
.b8-tcol .b8-tbar i.b8-sup { background: repeating-linear-gradient(45deg, #93c5fd, #93c5fd 4px, #bfdbfe 4px, #bfdbfe 8px); border-radius: 5px 5px 0 0; }
.b8-tcol .b8-tbar i.b8-base { border-radius: 5px 5px 0 0; }
.b8-tcol .b8-tbar i.b8-sup + .b8-base { border-radius: 0; }

/* 主要施策の成果 */
.mp2-kpis { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin: 4px 0 16px; }
.mp2-kpi { padding: 14px; border-radius: 12px; background: var(--surface-subtle); text-align: center; }
.mp2-kpi strong { display: block; font-size: 22px; font-weight: 800; color: var(--text); }
.mp2-kpi span { display: block; margin-top: 4px; font-size: 11px; color: var(--muted); font-weight: 700; }
.mp2-sub { font-size: 12.5px; font-weight: 800; margin: 18px 0 10px; color: var(--text); }
.mp2-depts { display: flex; flex-direction: column; gap: 7px; }
.mp2-drow { display: grid; grid-template-columns: 130px 1fr 56px 72px; align-items: center; gap: 8px; }
.mp2-dname { font-size: 11.5px; font-weight: 700; color: var(--text); }
.mp2-dname small { font-size: 10px; color: var(--muted); margin-left: 5px; font-weight: 700; }
.mp2-dbar { height: 13px; border-radius: 7px; background: var(--surface-subtle); overflow: hidden; }
.mp2-dbar i { display: block; height: 100%; border-radius: 7px; background: linear-gradient(90deg,#6366f1,#8b5cf6); }
.mp2-damt { font-size: 11px; font-weight: 800; color: var(--text); text-align: right; }
.mp2-drate { font-size: 10.5px; font-weight: 700; color: var(--muted); text-align: right; }
.mp2-tables { display: grid; grid-template-columns: 1fr 1fr; gap: 22px; margin-top: 6px; }
.mp2-table { width: 100%; border-collapse: collapse; font-size: 11.5px; }
.mp2-table th { text-align: left; color: var(--muted); font-weight: 700; padding: 5px 6px; border-bottom: 2px solid var(--border); white-space: nowrap; }
.mp2-table td { padding: 5px 6px; border-bottom: 1px solid var(--border); vertical-align: top; text-align: right; white-space: nowrap; }
.mp2-table td.mp2-name { text-align: left; white-space: normal; }
.mp2-name small { display: block; font-size: 9.5px; color: var(--muted); margin-top: 1px; }
.mp2-pill { display: inline-block; padding: 1px 7px; border-radius: 999px; font-size: 10px; font-weight: 800; }
.mp2-pill.hi { background: rgba(16,185,129,.14); color: #047857; }
.mp2-pill.mid { background: rgba(245,158,11,.16); color: #b45309; }
.mp2-pill.lo { background: rgba(239,68,68,.14); color: #b91c1c; }
.mp2-insight { margin-top: 16px; padding: 13px 15px; border-radius: 10px; background: var(--surface-subtle); font-size: 12.5px; line-height: 1.8; }
@media (max-width: 760px) { .mp2-kpis { grid-template-columns: 1fr; } .mp2-tables { grid-template-columns: 1fr; gap: 18px; } .mp2-drow { grid-template-columns: 100px 1fr 48px 60px; } }

/* 性質別歳出（扶助費の伸び） */
.expense-nature-section .en-kpis { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin: 6px 0 8px; }
.expense-nature-section .en-kpi { padding: 14px 14px; border-radius: 12px; background: var(--surface-subtle); border: 1px solid var(--border); display: flex; flex-direction: column; gap: 4px; }
.expense-nature-section .en-kpi.hero { background: linear-gradient(135deg, rgba(236,72,153,.12), rgba(236,72,153,.04)); border-color: rgba(236,72,153,.32); }
.expense-nature-section .en-kpi strong { font-size: 21px; font-weight: 800; color: var(--text); }
.expense-nature-section .en-kpi span { font-size: 11.5px; color: var(--text-muted); line-height: 1.5; }
.expense-nature-section .en-kpi b.en-up { display: inline-block; margin-left: 6px; color: #be185d; font-weight: 800; }
.expense-nature-section .en-sub { font-size: 12.5px; font-weight: 800; margin: 20px 0 12px; color: var(--text); }
.expense-nature-section .en-chart { display: flex; align-items: flex-end; gap: 10px; height: 150px; padding-top: 18px; }
.expense-nature-section .en-col { flex: 1 1 0; display: flex; flex-direction: column; align-items: center; justify-content: flex-end; height: 100%; gap: 4px; }
.expense-nature-section .en-col i { display: block; width: 70%; max-width: 38px; background: linear-gradient(180deg, #ec4899, #db2777); border-radius: 5px 5px 0 0; min-height: 3px; }
.expense-nature-section .en-col .en-v { font-size: 11px; font-weight: 800; color: #be185d; }
.expense-nature-section .en-col .en-yr { font-size: 10.5px; color: var(--text-muted); }
.expense-nature-section .en-rows { display: flex; flex-direction: column; gap: 9px; }
.expense-nature-section .en-row { display: grid; grid-template-columns: 120px 1fr 70px 60px; align-items: center; gap: 12px; }
.expense-nature-section .en-name { font-size: 12.5px; font-weight: 700; color: var(--text); }
.expense-nature-section .en-bar { display: block; height: 14px; border-radius: 7px; background: var(--surface-subtle); overflow: hidden; }
.expense-nature-section .en-bar i { display: block; height: 100%; border-radius: 7px; min-width: 3px; }
.expense-nature-section .en-amt { font-size: 12.5px; font-weight: 800; color: var(--text); text-align: right; }
.expense-nature-section .en-grow { font-size: 12px; font-weight: 800; text-align: right; color: var(--text-muted); }
.expense-nature-section .en-grow.up { color: #be185d; }
.expense-nature-section .en-grow.down { color: #047857; }
.expense-nature-section .en-insight { margin-top: 16px; padding: 14px 16px; border-radius: 10px; background: var(--surface-subtle); font-size: 12.5px; line-height: 1.85; }
@media (max-width: 760px) { .expense-nature-section .en-kpis { grid-template-columns: 1fr 1fr; } .expense-nature-section .en-row { grid-template-columns: 90px 1fr 56px 50px; gap: 8px; } }

/* ===== 今の宇土市の現状（小学生／中高生／一般市民向け） ===== */
/* ダッシュボード内の導線カード */
.uto-citynow-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }
.uto-citynow-grid button { display: flex; flex-direction: column; align-items: flex-start; gap: 8px; text-align: left; padding: 20px; border: 1px solid var(--line); border-radius: var(--radius-card); background: var(--paper); cursor: pointer; transition: transform .12s ease, box-shadow .12s ease, border-color .12s ease; }
.uto-citynow-grid button:hover { transform: translateY(-2px); box-shadow: var(--shadow); border-color: var(--brand, #2563eb); }
.uto-citynow-grid button strong { font-size: 16px; color: var(--text, #0f2742); }
.uto-citynow-grid button p { margin: 0; font-size: 12.5px; line-height: 1.7; color: var(--muted); }
.uto-citynow-grid button b { font-size: 12.5px; font-weight: 800; color: var(--brand, #2563eb); }
.cn-badge { padding: 4px 10px; border-radius: 999px; font-size: 11px; font-weight: 800; }
.cn-badge-kids { background: rgba(245,158,11,.16); color: #b45309; }
.cn-badge-teens { background: rgba(14,165,233,.16); color: #0369a1; }
.cn-badge-citizens { background: rgba(16,185,129,.16); color: #047857; }

/* ヒーロー */
.cn-hero { padding: 34px clamp(20px, 4vw, 44px); border-radius: 20px; color: #0f2742; }
.cn-hero .cn-kicker { display: inline-block; font-size: 12px; font-weight: 800; letter-spacing: .08em; opacity: .8; margin-bottom: 10px; }
.cn-hero h2 { margin: 0 0 12px; line-height: 1.3; font-size: clamp(24px, 3.4vw, 36px); }
.cn-hero p { margin: 0; max-width: 760px; line-height: 1.9; font-size: 14.5px; }
.cn-hero-kids { background: linear-gradient(135deg, #fff4d6, #ffe9f1); }
.cn-hero-kids h2 { font-size: clamp(26px, 4vw, 40px); }
.cn-hero-kids p { font-size: 15.5px; }
.cn-hero-teens { background: linear-gradient(135deg, #e0f2fe, #ede9fe); }
.cn-hero-citizens { background: linear-gradient(135deg, #ecfdf5, #eef2ff); }

.cn-plain-brief,
.cn-life-impact,
.cn-word-translation {
  padding: 24px clamp(18px, 3vw, 28px);
  border: 1px solid var(--line);
  border-radius: 18px;
  background: var(--paper);
}

.cn-plain-brief {
  background:
    linear-gradient(135deg, color-mix(in srgb, #10b981 9%, transparent), color-mix(in srgb, #2563eb 6%, transparent)),
    var(--paper);
}

.cn-plain-head,
.cn-life-impact-head {
  display: grid;
  gap: 6px;
  margin-bottom: 15px;
}

.cn-plain-head span,
.cn-life-impact-head span,
.cn-word-translation > div span {
  color: #047857;
  font-size: 10px;
  font-weight: 900;
  letter-spacing: .12em;
}

.cn-plain-head h3,
.cn-life-impact-head h3,
.cn-word-translation h3 {
  margin: 0;
  font-size: clamp(19px, 2.5vw, 26px);
}

.cn-plain-head p {
  margin: 0;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.75;
}

.cn-plain-grid,
.cn-life-impact-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
}

.cn-plain-grid article,
.cn-life-impact-grid article {
  display: grid;
  align-content: start;
  gap: 8px;
  padding: 16px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: var(--paper);
}

.cn-plain-grid span {
  width: fit-content;
  padding: 4px 8px;
  border-radius: 999px;
  color: #065f46;
  background: #d1fae5;
  font-size: 10px;
  font-weight: 900;
}

.cn-plain-grid strong,
.cn-life-impact-grid strong {
  color: var(--text, #0f2742);
  font-size: 15px;
  line-height: 1.45;
}

.cn-plain-grid p,
.cn-life-impact-grid p {
  margin: 0;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.75;
}

.cn-life-impact-grid button {
  justify-self: start;
  margin-top: 4px;
  padding: 8px 11px;
  border: 1px solid #10b981;
  border-radius: 999px;
  color: #047857;
  background: var(--paper);
  cursor: pointer;
  font-size: 11px;
  font-weight: 900;
}

.cn-life-impact-grid button:hover {
  color: #fff;
  background: #10b981;
}

.cn-word-translation {
  display: grid;
  grid-template-columns: minmax(220px, .45fr) minmax(0, 1fr);
  gap: 18px;
  background: color-mix(in srgb, #10b981 5%, var(--paper));
}

.cn-word-translation dl {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
  margin: 0;
}

.cn-word-translation dl div {
  padding: 13px;
  border-radius: 11px;
  background: var(--paper);
}

.cn-word-translation dt {
  color: var(--text, #0f2742);
  font-size: 13px;
  font-weight: 900;
}

.cn-word-translation dd {
  margin: 5px 0 0;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.65;
}

/* 小学生向け ファクトカード */
.cn-fact-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.cn-fact { display: flex; flex-direction: column; gap: 8px; padding: 24px; border: 2px solid #fde2b3; border-radius: 18px; background: var(--paper); }
.cn-fact .cn-emoji { font-size: 40px; line-height: 1; }
.cn-fact strong { font-size: 26px; color: #b45309; }
.cn-fact p { margin: 0; font-size: 14.5px; line-height: 2; color: var(--text, #0f2742); }
.cn-fact p b { color: #be185d; }

/* 中高生・一般 統計セクション */
.cn-stat-section { padding: 24px clamp(18px, 3vw, 28px); border: 1px solid var(--line); border-radius: 16px; background: var(--paper); }
.cn-stat-section h3 { margin: 0 0 16px; font-size: 17px; color: var(--text, #0f2742); }
.cn-stat-row { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; }
.cn-stat-row article { display: flex; flex-direction: column; gap: 5px; padding: 16px; border-radius: 12px; background: var(--surface-subtle, #f5f7fa); }
.cn-stat-row article span { font-size: 12px; color: var(--muted); }
.cn-stat-row article strong { font-size: 23px; font-weight: 800; color: var(--text, #0f2742); }
.cn-stat-row article small { font-size: 11.5px; color: var(--muted); line-height: 1.5; }
.cn-read { margin: 16px 0 0; padding: 14px 16px; border-radius: 10px; background: var(--surface-subtle, #f5f7fa); font-size: 13.5px; line-height: 1.9; }

/* 不足額の計算ライン */
.cn-gap-line { display: flex; align-items: stretch; gap: 12px; flex-wrap: wrap; }
.cn-gap-line article { flex: 1 1 0; min-width: 130px; display: flex; flex-direction: column; gap: 5px; padding: 16px; border-radius: 12px; background: var(--surface-subtle, #f5f7fa); text-align: center; }
.cn-gap-line article span { font-size: 12px; color: var(--muted); }
.cn-gap-line article strong { font-size: 24px; font-weight: 800; color: var(--text, #0f2742); }
.cn-gap-line i { display: flex; align-items: center; font-size: 22px; font-weight: 800; color: var(--muted); font-style: normal; }
.cn-gap-line .cn-gap-result { background: rgba(239,68,68,.1); border: 1px solid rgba(239,68,68,.3); }
.cn-gap-line .cn-gap-result strong { color: #b91c1c; }

/* 健全な点／注意点 の対比 */
.cn-balance { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin-top: 16px; }
.cn-balance-col { padding: 16px 18px; border-radius: 12px; }
.cn-balance-col h4 { margin: 0 0 10px; font-size: 14px; }
.cn-balance-col ul { margin: 0; padding-left: 18px; }
.cn-balance-col li { font-size: 13px; line-height: 1.95; color: var(--text, #0f2742); }
.cn-balance-col li b { font-weight: 800; }
.cn-good { background: rgba(16,185,129,.08); border: 1px solid rgba(16,185,129,.28); }
.cn-good h4 { color: #047857; }
.cn-watch { background: rgba(245,158,11,.08); border: 1px solid rgba(245,158,11,.3); }
.cn-watch h4 { color: #b45309; }

/* まとめカード */
.cn-note-card { padding: 24px clamp(18px, 3vw, 28px); border-left: 5px solid var(--brand, #2563eb); border-radius: 12px; background: var(--surface-subtle, #f5f7fa); }
.cn-note-card h3 { margin: 0 0 10px; font-size: 17px; color: var(--text, #0f2742); }
.cn-note-card p { margin: 0; font-size: 14px; line-height: 2; }

.cn-source { font-size: 11.5px; color: var(--muted); line-height: 1.7; margin: 0; }

/* 関連ページへのリンク */
.cn-links { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; }
.cn-links button { display: flex; flex-direction: column; gap: 3px; padding: 16px; border: 1px solid var(--line); border-radius: 12px; background: var(--paper); cursor: pointer; text-align: left; transition: transform .12s ease, border-color .12s ease; }
.cn-links button:hover { transform: translateY(-2px); border-color: var(--brand, #2563eb); }
.cn-links button span { font-size: 14.5px; font-weight: 800; color: var(--text, #0f2742); }
.cn-links button small { font-size: 11.5px; color: var(--brand, #2563eb); font-weight: 700; }

@media (max-width: 820px) {
  .uto-citynow-grid { grid-template-columns: 1fr; }
  .cn-fact-grid { grid-template-columns: 1fr; }
  .cn-stat-row { grid-template-columns: 1fr 1fr; }
  .cn-balance { grid-template-columns: 1fr; }
  .cn-links { grid-template-columns: 1fr 1fr; }
  .cn-plain-grid,
  .cn-life-impact-grid,
  .cn-word-translation,
  .cn-word-translation dl {
    grid-template-columns: 1fr;
  }
}

/* 章見出し */
.cn-chapter { display: flex; align-items: center; gap: 12px; margin: 8px 0 2px; }
.cn-chapter span { display: inline-flex; align-items: center; justify-content: center; width: 34px; height: 34px; border-radius: 10px; background: var(--brand, #2563eb); color: #fff; font-weight: 800; font-size: 16px; flex: 0 0 auto; }
.cn-chapter h3 { margin: 0; font-size: 19px; color: var(--text, #0f2742); }
.cn-hero-kids ~ .cn-chapter span { background: #f59e0b; }
.cn-hero-teens ~ .cn-chapter span { background: #0ea5e9; }
.cn-hero-citizens ~ .cn-chapter span { background: #10b981; }

/* サブ見出し */
.cn-subhead { margin: 22px 0 12px; font-size: 14.5px; color: var(--text, #0f2742); padding-left: 11px; border-left: 4px solid var(--brand, #2563eb); }
.cn-stat-section .cn-subhead:first-child { margin-top: 0; }

/* 絵文字リスト */
.cn-list { margin: 4px 0 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 12px; }
.cn-list li { font-size: 14.5px; line-height: 1.9; color: var(--text, #0f2742); padding-left: 4px; }
.cn-list li b { color: #be185d; }

/* 人口推計タイムライン */
.cn-timeline { display: flex; align-items: stretch; gap: 8px; flex-wrap: wrap; margin: 4px 0 6px; }
.cn-timeline article { flex: 1 1 0; min-width: 110px; display: flex; flex-direction: column; gap: 4px; padding: 14px 12px; border-radius: 12px; background: var(--surface-subtle, #f5f7fa); text-align: center; }
.cn-timeline article span { font-size: 11.5px; color: var(--muted); }
.cn-timeline article strong { font-size: 20px; font-weight: 800; color: var(--text, #0f2742); }
.cn-timeline article small { font-size: 11px; color: #b45309; }
.cn-timeline .cn-tl-now { background: rgba(37,99,235,.1); border: 1px solid rgba(37,99,235,.28); }
.cn-timeline .cn-tl-now strong { color: #1d4ed8; }
.cn-timeline i { display: flex; align-items: center; font-size: 18px; color: var(--muted); font-style: normal; }

/* 未来の選択肢カード */
.cn-future-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }
.cn-future-grid article { display: flex; flex-direction: column; gap: 8px; padding: 22px; border: 1px solid var(--line); border-radius: 16px; background: var(--paper); }
.cn-future-grid .cn-emoji { font-size: 32px; line-height: 1; }
.cn-future-grid strong { font-size: 16px; color: var(--text, #0f2742); }
.cn-future-grid p { margin: 0; font-size: 13px; line-height: 1.85; color: var(--muted); }
.cn-future .cn-list { margin-top: 12px; }

/* 小学生向け「できること」 */
.cn-kids-action { margin-top: 16px; padding: 16px 18px; border-radius: 12px; background: rgba(245,158,11,.1); border: 1px solid rgba(245,158,11,.3); }
.cn-kids-action h4 { margin: 0 0 8px; font-size: 15px; color: #b45309; }
.cn-kids-action p { margin: 0; font-size: 14px; line-height: 2; }

@media (max-width: 820px) {
  .cn-future-grid { grid-template-columns: 1fr; }
  .cn-timeline article { min-width: 90px; }
}

/* ===== 専門用語ツールチップ（term-tip） ===== */
.term-tip {
  position: relative;
  border-bottom: 1.5px dotted currentColor;
  cursor: help;
  text-underline-offset: 2px;
}
.term-tip::after { content: "?"; display: inline-flex; align-items: center; justify-content: center; width: 13px; height: 13px; margin-left: 3px; border-radius: 50%; background: var(--brand, #2563eb); color: #fff; font-size: 9px; font-weight: 800; vertical-align: super; line-height: 1; }
.term-tip:hover, .term-tip:focus-visible { outline: none; color: var(--brand, #2563eb); }

/* ===== インラインSVGアイコン ===== */
.ui-icon { width: 1.15em; height: 1.15em; flex: 0 0 auto; vertical-align: -0.18em; }

/* ダッシュボードKPIカードのアイコン */
.uto-kpi-titles { display: flex; align-items: flex-start; gap: 11px; min-width: 0; }
.uto-kpi-icon { display: inline-flex; align-items: center; justify-content: center; width: 38px; height: 38px; border-radius: 11px; flex: 0 0 auto; background: rgba(37,99,235,.1); color: #2563eb; }
.uto-kpi-icon .ui-icon { width: 22px; height: 22px; vertical-align: 0; }
.uto-kpi-icon.icon-people, .uto-kpi-icon.icon-senior, .uto-kpi-icon.icon-work { background: rgba(14,165,233,.12); color: #0369a1; }
.uto-kpi-icon.icon-savings { background: rgba(16,185,129,.12); color: #047857; }
.uto-kpi-icon.icon-debt, .uto-kpi-icon.icon-scale, .uto-kpi-icon.icon-coins { background: rgba(245,158,11,.14); color: #b45309; }
.uto-kpi-icon.icon-building { background: rgba(168,85,247,.12); color: #7c3aed; }

/* アラートカードのアイコン */
.uto-alert-top { display: flex; align-items: center; justify-content: space-between; gap: 8px; width: 100%; }
.uto-alert-icon { display: inline-flex; align-items: center; justify-content: center; width: 34px; height: 34px; border-radius: 10px; flex: 0 0 auto; background: rgba(15,39,66,.06); color: var(--text, #0f2742); }
.uto-alert-icon .ui-icon { width: 20px; height: 20px; vertical-align: 0; }

/* city-now サブ見出しのアイコン */
.cn-subhead { display: flex; align-items: center; gap: 9px; }
.cn-subhead .ui-icon { width: 20px; height: 20px; color: var(--brand, #2563eb); vertical-align: 0; flex: 0 0 auto; }
.cn-hero-kids ~ .cn-stat-section .cn-subhead .ui-icon { color: #f59e0b; }
.cn-hero-teens ~ .cn-stat-section .cn-subhead .ui-icon { color: #0ea5e9; }
.cn-hero-citizens ~ .cn-stat-section .cn-subhead .ui-icon { color: #10b981; }

@media (max-width: 640px) {
  .uto-kpi-icon { width: 32px; height: 32px; }
  .uto-kpi-icon .ui-icon { width: 19px; height: 19px; }
}

/* 質問ヒーロー見出しのアイコン */
.uto-hero-eyebrow { display: inline-flex; align-items: center; gap: 8px; }
.uto-hero-icon { display: inline-flex; align-items: center; justify-content: center; width: 30px; height: 30px; border-radius: 9px; flex: 0 0 auto; background: rgba(37,99,235,.12); color: #2563eb; }
.uto-hero-icon .ui-icon { width: 18px; height: 18px; vertical-align: 0; }
.uto-hero-icon.icon-droplet { background: rgba(14,165,233,.14); color: #0369a1; }
.uto-hero-icon.icon-heart { background: rgba(236,72,153,.12); color: #be185d; }
.uto-hero-icon.icon-people { background: rgba(14,165,233,.12); color: #0369a1; }
.uto-hero-icon.icon-coins { background: rgba(245,158,11,.14); color: #b45309; }
.uto-hero-icon.icon-building { background: rgba(168,85,247,.12); color: #7c3aed; }
.uto-hero-icon.icon-target { background: rgba(16,185,129,.12); color: #047857; }
.uto-hero-icon.icon-share { background: rgba(99,102,241,.12); color: #4f46e5; }

/* R7委員会セクション 追加スタイル */
.committee-r7-section .panel-head h3 { display: flex; align-items: center; gap: 8px; }
.committee-r7-section .panel-head h3 .ui-icon { width: 20px; height: 20px; color: #4f46e5; vertical-align: 0; }
.ctr-kwtags { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 8px; }
.ctr-kwtags span { font-size: 10.5px; font-weight: 700; padding: 3px 8px; border-radius: 999px; background: color-mix(in srgb, var(--c, #64748b) 12%, var(--paper)); color: var(--c, #64748b); }
.ctr-kw-list { display: flex; flex-direction: column; gap: 8px; }
.ctr-kw-row { display: grid; grid-template-columns: 130px 1fr 52px; align-items: center; gap: 12px; }
.ctr-kw-name { font-size: 12.5px; font-weight: 700; color: var(--text, #0f2742); }
.ctr-kw-bar { display: block; height: 13px; border-radius: 7px; background: var(--surface-subtle, #f5f7fa); overflow: hidden; }
.ctr-kw-bar i { display: block; height: 100%; border-radius: 7px; background: linear-gradient(90deg, #6366f1, #4f46e5); min-width: 3px; }
.ctr-kw-val { font-size: 12.5px; font-weight: 800; color: var(--text, #0f2742); text-align: right; }
@media (max-width: 640px) { .ctr-kw-row { grid-template-columns: 96px 1fr 44px; gap: 8px; } }

/* 委員会セクション 統合（改選マップ・期別） */
.ct-note { font-size: 12.5px; color: var(--muted); margin: 2px 0 12px; line-height: 1.7; }
.ct-move-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px 18px; }
.ct-move-row { display: flex; align-items: center; gap: 8px; padding: 8px 12px; border-radius: 10px; background: var(--surface-subtle, #f5f7fa); }
.ct-move-name { font-size: 12.5px; font-weight: 700; color: var(--text, #0f2742); min-width: 84px; }
.ct-move-arrow { color: var(--muted); font-weight: 800; }
.ct-chip { font-size: 11px; font-weight: 800; padding: 3px 9px; border-radius: 999px; background: color-mix(in srgb, var(--c, #64748b) 14%, var(--paper)); color: var(--c, #64748b); white-space: nowrap; }
.ct-chip-none { background: var(--surface-subtle, #eef1f5); color: var(--muted); }
.ct-ca-split { display: flex; gap: 10px; margin-top: 6px; }
.ct-ca-split span { font-size: 11px; color: var(--muted); }
.ct-discussion-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; margin-top: 12px; }
.ct-discussion-card { border: 1px solid var(--border); border-top: 4px solid var(--c); border-radius: 14px; background: var(--surface); padding: 16px; }
.ct-discussion-head { display: flex; align-items: center; gap: 8px; margin-bottom: 10px; }
.ct-discussion-head h5 { margin: 0; color: var(--text); font-size: 14px; line-height: 1.45; }
.ct-discussion-scope { margin: 0 0 10px; padding: 10px; border-radius: 9px; background: color-mix(in srgb, var(--c) 8%, var(--surface)); color: var(--text); font-size: 12px; line-height: 1.65; }
.ct-discussion-summary { margin: 0 0 10px; color: var(--text); font-size: 13px; font-weight: 700; line-height: 1.65; }
.ct-discussion-themes { display: grid; gap: 7px; margin: 0; padding: 0; list-style: none; }
.ct-discussion-themes li { display: grid; gap: 2px; padding-bottom: 7px; border-bottom: 1px solid var(--border); }
.ct-discussion-themes strong { color: var(--text); font-size: 12px; }
.ct-discussion-themes span { color: var(--muted); font-size: 11px; line-height: 1.5; }
.ct-discussion-meetings { margin-top: 12px; }
.ct-discussion-meetings summary { color: var(--c); font-size: 12px; font-weight: 800; cursor: pointer; }
.ct-discussion-meetings ul { display: grid; gap: 8px; margin: 10px 0 0; padding: 0; list-style: none; }
.ct-discussion-meetings li { display: grid; grid-template-columns: 62px minmax(0, 1fr) auto; align-items: start; gap: 7px; font-size: 11px; }
.ct-discussion-date { color: var(--muted); font-weight: 700; }
.ct-discussion-focus { display: grid; gap: 2px; color: var(--text); line-height: 1.4; }
.ct-discussion-focus small { color: var(--muted); }
.ct-method-note { margin: 10px 0 0; padding: 10px 12px; border-left: 3px solid #94a3b8; background: var(--surface-subtle); color: var(--muted); font-size: 11px; line-height: 1.65; }
@media (max-width: 960px) { .ct-discussion-grid { grid-template-columns: 1fr; } }
.ct-period { display: inline-block; font-size: 10.5px; font-weight: 800; padding: 2px 7px; border-radius: 6px; background: rgba(100,116,139,.14); color: #475569; }
.ct-period-now { background: rgba(79,70,229,.14); color: #4f46e5; }
@media (max-width: 700px) { .ct-move-grid { grid-template-columns: 1fr; } }

/* 議員カルテ 委員会での活動ブロック */
.ma-committee { margin: 4px 0 18px; padding: 18px 20px; border: 1px solid var(--line); border-radius: 14px; background: var(--surface-subtle, #f7f8fb); }
.ma-committee > h4 { margin: 0 0 14px; font-size: 14.5px; color: var(--text, #0f2742); display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.ma-committee > h4 small { font-size: 11px; font-weight: 600; color: var(--muted); }
.ma-cm-affil { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.ma-cm-period { display: flex; align-items: center; gap: 8px; padding: 9px 13px; border-radius: 10px; background: var(--paper); border: 1px solid var(--line); }
.ma-cm-plabel { font-size: 11px; font-weight: 800; color: var(--muted); }
.ma-cm-period b { font-size: 12.5px; color: var(--text, #0f2742); }
.ma-cm-arrow { font-size: 18px; font-weight: 800; color: var(--muted); }
.ma-cm-note { margin: 12px 0 0; font-size: 12.5px; line-height: 1.7; color: var(--text, #0f2742); }
.ma-cm-note b { color: #4f46e5; }
.ma-cm-stats { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin: 14px 0 0; }
.ma-cm-stats article { padding: 12px; border-radius: 10px; background: var(--paper); border: 1px solid var(--line); text-align: center; }
.ma-cm-stats strong { display: block; font-size: 19px; font-weight: 800; color: var(--text, #0f2742); }
.ma-cm-stats span { font-size: 10.5px; color: var(--muted); }
.ma-cm-themes { margin-top: 14px; }
.ma-cm-themes > span { display: block; font-size: 11.5px; color: var(--muted); margin-bottom: 7px; }
@media (max-width: 700px) { .ma-cm-stats { grid-template-columns: 1fr; } .ma-cm-affil { flex-direction: column; align-items: stretch; } .ma-cm-arrow { transform: rotate(90deg); align-self: center; } }

/* Mobile responsive hardening: keep navigation and dense data within viewport. */
@media (max-width: 640px) {
  html,
  body {
    max-width: 100%;
    overflow-x: clip;
  }

  .topbar {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 10px;
    padding: 14px 14px 12px;
  }

  .brand-block {
    min-width: 0;
  }

  .brand-block .eyebrow {
    margin-bottom: 1px;
    font-size: 10px;
  }

  .brand-block h1 {
    margin: 0;
    font-size: 24px;
  }

  .brand-copy,
  .source-note,
  .theme-toggle-label,
  .topbar-share-label {
    display: none;
  }
  .topbar-share { width: 44px; min-width: 44px; padding: 0; justify-content: center; }

  .topbar-actions {
    align-items: center;
    align-self: center;
    flex-direction: row;
  }

  .theme-toggle {
    width: 44px;
    min-width: 44px;
    padding: 0;
    justify-content: center;
  }

  .uto-global-nav {
    position: static;
    padding: 8px 12px;
    background: var(--paper);
    backdrop-filter: none;
  }

  .uto-nav-shell {
    display: block;
    padding: 0;
  }

  .uto-global-nav .uto-nav-shell > .primary-nav {
    display: none;
  }

  .uto-global-nav .uto-nav-shell > .site-map-menu {
    width: 100%;
    min-width: 0;
    margin: 0;
  }

  .site-map-menu > summary {
    display: grid;
    grid-template-columns: auto auto minmax(0, 1fr);
    min-height: 46px;
    padding: 8px 13px;
    justify-content: start;
    text-align: left;
  }

  .site-map-menu > summary span {
    font-size: 13px;
  }

  .site-map-menu > summary small {
    display: block;
    justify-self: end;
    font-size: 10px;
  }

  .site-map-menu-icon {
    display: flex;
    align-items: center;
    gap: 3px;
    margin: 0 8px 0 0;
  }

  .site-map-panel {
    position: fixed;
    z-index: 100;
    inset: 10px;
    width: auto;
    max-height: none;
    padding: 14px;
    overscroll-behavior: contain;
  }

  .site-map-heading {
    position: sticky;
    top: -14px;
    z-index: 1;
    margin: -14px -14px 12px;
    padding: 14px;
    border-bottom: 1px solid var(--line);
    background: var(--paper);
  }

  .site-map-heading h2 {
    font-size: 19px;
  }

  .site-map-heading > p {
    display: none;
  }

  main {
    width: 100%;
    padding: 14px 12px 44px;
  }

  main > .toolbar {
    width: 100%;
    margin-bottom: 14px;
    padding: 12px;
  }

  .toolbar,
  .data-sources {
    min-width: 0;
  }

  .data-sources {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    width: 100%;
    gap: 6px 10px;
  }

  .data-sources label {
    min-width: 0;
  }

  main > section,
  main > div,
  .panel,
  .panel-head,
  .dashboard,
  .kpis,
  .os-dashboard,
  .os-card,
  .os-panel-card,
  .chart,
  .table-wrap {
    min-width: 0;
    max-width: 100%;
  }

  .table-wrap,
  .ct-detail-list,
  .comparison-table-wrap {
    overflow-x: auto;
    overscroll-behavior-inline: contain;
    -webkit-overflow-scrolling: touch;
  }

  table {
    max-width: none;
  }

  img,
  canvas,
  svg {
    max-width: 100%;
  }

  .panel-head > *,
  .os-card-head > *,
  .os-section-head > * {
    max-width: 100%;
  }

  .panel-head h2,
  .panel-head h3,
  .panel-head p,
  .os-card h3,
  .os-card p {
    overflow-wrap: anywhere;
  }
}

@media (max-width: 420px) {

  .site-map-group {
    padding: 10px;
  }

  .panel,
  .analysis-panel,
  .comparison-panel,
  .detailed-analysis-panel,
  .statistics-panel,
  .export-panel,
  .focus-card,
  .kpi,
  .os-card,
  .os-panel-card,
  .os-chart-card {
    padding: 13px;
  }

  .ct-kpis,
  .cm-kpis,
  .ph-kpis,
  .fh-grid,
  .se-grid,
  .td-kpis {
    grid-template-columns: 1fr;
  }
}

.finance-command {
  margin: 18px 0 32px;
  color: var(--ink);
}

.finance-command-head,
.finance-diagnosis-grid,
.finance-benchmark-grid,
.finance-support-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.5fr) minmax(260px, .7fr);
  gap: 16px;
}

.finance-command-head {
  padding: 28px;
  color: #f8fafc;
  border-radius: 22px;
  background: linear-gradient(135deg, #10243f, #173e5e 62%, #176b70);
}

.finance-command-head > div > span,
.finance-section-title span,
.finance-facility-card > div > span,
.finance-support-grid article > span {
  color: #4aa9aa;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .14em;
}

.finance-command-head h2 {
  margin: 7px 0 10px;
  font-size: clamp(24px, 4vw, 39px);
  line-height: 1.25;
}

.finance-command-head p {
  margin: 0;
  color: #d9e6ec;
  line-height: 1.8;
}

.finance-command-head aside {
  display: grid;
  align-content: center;
  padding: 20px;
  text-align: center;
  border: 1px solid rgba(255,255,255,.2);
  border-radius: 16px;
  background: rgba(255,255,255,.08);
}

.finance-command-head aside strong {
  color: #f5c451;
  font-size: 25px;
  letter-spacing: .08em;
}

.finance-command-head aside b {
  margin: 4px 0;
  font-size: 25px;
}

.finance-command-head aside small {
  color: #c9d7df;
}

.finance-diagnosis-grid {
  margin-top: 16px;
}

.finance-radar-card,
.finance-ai-card,
.finance-benchmark-grid > article,
.finance-support-grid > article,
.finance-facility-card,
.finance-data-needs {
  padding: 22px;
  border: 1px solid var(--line);
  border-radius: 18px;
  background: var(--paper);
}

.finance-radar-card svg {
  display: block;
  width: min(100%, 360px);
  margin: 0 auto;
}

.finance-radar-card svg polygon:not(.finance-radar-value),
.finance-radar-card svg line {
  fill: none;
  stroke: var(--line);
}

.finance-radar-card svg text {
  fill: var(--muted);
  font-size: 9px;
  font-weight: 700;
}

.finance-radar-card .finance-radar-value {
  fill: rgba(30, 136, 168, .24);
  stroke: #1e88a8;
  stroke-width: 2.5;
}

.finance-score-list {
  display: grid;
  gap: 7px;
}

.finance-score-list span {
  display: grid;
  grid-template-columns: 1fr auto 30px;
  gap: 8px;
  align-items: center;
  padding-top: 7px;
  border-top: 1px solid var(--line);
}

.finance-score-list b small {
  display: block;
  margin-top: 2px;
  color: var(--muted);
  font-size: 8.5px;
  font-weight: 600;
  line-height: 1.35;
}

.finance-score-list i {
  color: #d99b16;
  font-style: normal;
  letter-spacing: .04em;
}

.finance-score-list em {
  color: var(--muted);
  font-style: normal;
  text-align: right;
}

.finance-ai-card {
  background: color-mix(in srgb, var(--paper) 92%, #e5f4f4);
}

.finance-ai-card > span {
  display: inline-block;
  padding: 5px 10px;
  color: #fff;
  font-size: 12px;
  font-weight: 800;
  border-radius: 999px;
  background: #176b70;
}

.finance-ai-card h3 {
  margin: 15px 0 10px;
  font-size: 23px;
  line-height: 1.5;
}

.finance-ai-card p,
.finance-facility-card p,
.finance-benchmark-summary,
.finance-data-needs p {
  line-height: 1.75;
}

.finance-ai-actions {
  display: grid;
  gap: 9px;
  margin-top: 18px;
}

.finance-ai-actions span {
  padding: 11px 12px;
  border-left: 4px solid #1e88a8;
  background: color-mix(in srgb, var(--paper) 86%, #d9eff4);
}

.finance-ai-actions b {
  margin-right: 10px;
}

.finance-alert-grid {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 10px;
  margin-top: 16px;
}

.finance-alert {
  padding: 16px;
  border: 1px solid var(--line);
  border-top: 5px solid #268765;
  border-radius: 14px;
  background: var(--paper);
}

.finance-alert.tone-watch { border-top-color: #d99b16; }
.finance-alert.tone-warning { border-top-color: #d56a27; }
.finance-alert.tone-danger { border-top-color: #c83c3c; }

.finance-alert > div {
  display: flex;
  justify-content: space-between;
  gap: 8px;
}

.finance-alert > div b {
  font-size: 11px;
}

.finance-alert strong {
  display: block;
  margin: 12px 0 7px;
  font-size: 23px;
}

.finance-alert p,
.finance-model-note {
  margin: 0;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.65;
}

.finance-section-title {
  display: flex;
  justify-content: space-between;
  align-items: end;
  gap: 12px;
  margin: 28px 0 12px;
}

.finance-section-title h3 {
  margin: 4px 0 0;
  font-size: 23px;
}

.finance-section-title > b {
  padding: 5px 9px;
  color: #855d00;
  font-size: 11px;
  border-radius: 999px;
  background: #fff1c7;
}

.finance-forecast-grid,
.finance-scenario-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
}

.finance-forecast-grid article,
.finance-scenario-grid article {
  padding: 18px;
  border: 1px solid var(--line);
  border-radius: 15px;
  background: var(--paper);
}

.finance-forecast-grid article > div,
.finance-scenario-grid article > span {
  display: flex;
  justify-content: space-between;
  color: var(--muted);
  font-weight: 800;
}

.finance-forecast-grid article > div b {
  color: #176b70;
  font-size: 11px;
}

.finance-forecast-grid article > strong {
  display: block;
  margin: 7px 0 12px;
  font-size: 28px;
}

.finance-forecast-grid dl,
.finance-scenario-grid dl,
.finance-facility-card dl,
.finance-support-grid dl {
  display: grid;
  gap: 8px;
  margin: 0;
}

.finance-forecast-grid dl div,
.finance-scenario-grid dl div,
.finance-facility-card dl div,
.finance-support-grid dl div {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  padding-top: 8px;
  border-top: 1px solid var(--line);
}

.finance-forecast-grid dt,
.finance-scenario-grid dt,
.finance-facility-card dt,
.finance-support-grid dt {
  color: var(--muted);
}

.finance-forecast-grid dd,
.finance-scenario-grid dd,
.finance-facility-card dd,
.finance-support-grid dd {
  margin: 0;
  font-weight: 800;
  text-align: right;
}

.finance-model-note {
  margin-top: 9px;
}

.finance-facility-card {
  display: grid;
  grid-template-columns: minmax(0, 1.5fr) minmax(250px, .7fr);
  gap: 24px;
  margin-top: 18px;
  border-left: 7px solid #d56a27;
}

.finance-facility-card h3 {
  margin: 6px 0 8px;
  font-size: 21px;
}

.finance-benchmark-grid {
  grid-template-columns: minmax(0, 1.4fr) minmax(280px, .8fr);
}

.finance-city-list {
  display: grid;
  gap: 6px;
}

.finance-city-list > div {
  display: grid;
  grid-template-columns: 75px repeat(4, minmax(90px, 1fr));
  gap: 8px;
  padding: 10px;
  font-size: 12px;
  border-radius: 8px;
  background: var(--soft);
}

.finance-city-list > div.is-uto {
  color: #fff;
  background: #176b70;
}

.finance-rank-list {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 7px;
}

.finance-rank-list span {
  padding: 10px 6px;
  text-align: center;
  border-radius: 9px;
  background: var(--soft);
}

.finance-rank-list b,
.finance-rank-list strong,
.finance-rank-list small {
  display: block;
}

.finance-rank-list b {
  min-height: 34px;
  color: var(--muted);
  font-size: 11px;
}

.finance-rank-list strong {
  font-size: 20px;
}

.finance-history {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
}

.finance-history article {
  position: relative;
  padding: 16px;
  border-top: 4px solid #1e88a8;
  border-radius: 10px;
  background: var(--soft);
}

.finance-history article > b {
  color: #1e88a8;
  font-size: 21px;
}

.finance-history h4 {
  margin: 8px 0 5px;
}

.finance-history p {
  margin: 0;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.6;
}

.finance-scenario-grid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  margin-top: 12px;
}

.finance-scenario-grid article.is-focus {
  border: 2px solid #d56a27;
}

.finance-support-grid {
  margin-top: 20px;
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.finance-support-grid dt {
  min-width: 95px;
  font-weight: 800;
}

.finance-support-grid dd {
  font-weight: 500;
  line-height: 1.6;
}

.finance-causal-chain {
  display: flex;
  align-items: stretch;
  justify-content: center;
  gap: 8px;
  margin-top: 20px;
  padding: 18px;
  overflow-x: auto;
  border-radius: 14px;
  background: #10243f;
}

.finance-causal-chain span {
  min-width: 130px;
  padding: 12px;
  color: #fff;
  font-size: 13px;
  font-weight: 800;
  text-align: center;
  border-radius: 8px;
  background: #176b70;
}

.finance-causal-chain i {
  align-self: center;
  color: #f5c451;
  font-style: normal;
  font-size: 20px;
}

.finance-data-needs {
  margin-top: 16px;
  border-style: dashed;
}

.finance-data-needs h3 {
  margin-top: 0;
}

@media (max-width: 980px) {
  .finance-command-head,
  .finance-diagnosis-grid,
  .finance-benchmark-grid,
  .finance-support-grid,
  .finance-facility-card {
    grid-template-columns: 1fr;
  }

  .finance-alert-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .finance-history,
  .finance-scenario-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 680px) {
  .finance-command-head {
    padding: 20px;
  }

  .finance-alert-grid,
  .finance-forecast-grid,
  .finance-history,
  .finance-scenario-grid,
  .finance-support-grid {
    grid-template-columns: 1fr;
  }

  .finance-city-list > div {
    grid-template-columns: 1fr 1fr;
  }

  .finance-city-list > div b {
    grid-column: 1 / -1;
  }

  .finance-rank-list {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .finance-causal-chain {
    justify-content: flex-start;
  }
}

.population-command { margin: 20px 0 34px; }
.population-command-head,
.population-diagnosis-grid,
.population-age-analysis,
.population-school-grid,
.population-support-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) minmax(280px, .8fr);
  gap: 16px;
}
.population-command-head {
  padding: 28px;
  color: #f8fafc;
  border-radius: 22px;
  background: linear-gradient(135deg, #162a45, #24516b 58%, #257568);
}
.population-command-head > div > span,
.population-section-title span,
.population-support-grid article > span {
  color: #64c7b7;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .14em;
}
.population-command-head h2 { margin: 7px 0 10px; font-size: clamp(25px, 4vw, 39px); line-height: 1.25; }
.population-command-head p { margin: 0; color: #dce8ed; line-height: 1.75; }
.population-command-head aside {
  display: grid;
  align-content: center;
  padding: 20px;
  text-align: center;
  border: 1px solid rgba(255,255,255,.2);
  border-radius: 16px;
  background: rgba(255,255,255,.08);
}
.population-command-head aside strong { color: #f5c451; font-size: 25px; letter-spacing: .08em; }
.population-command-head aside b { margin: 5px 0; font-size: 24px; }
.population-command-head aside small { color: #cadbe2; }
.population-diagnosis-grid { margin-top: 16px; }
.population-ai-card,
.population-impact-flow,
.population-pyramid-card,
.population-dam-card,
.population-school-grid article,
.population-support-grid article,
.population-data-needs {
  padding: 22px;
  border: 1px solid var(--line);
  border-radius: 18px;
  background: var(--paper);
}
.population-ai-card > span {
  display: inline-block;
  padding: 5px 10px;
  color: #fff;
  font-size: 12px;
  font-weight: 800;
  border-radius: 999px;
  background: #257568;
}
.population-ai-card h3 { margin: 14px 0 8px; font-size: 22px; line-height: 1.5; }
.population-ai-card p,
.population-impact-flow p,
.population-school-grid p,
.population-data-needs p { line-height: 1.75; }
.population-ai-card > div { display: grid; gap: 7px; margin-top: 16px; }
.population-ai-card > div span {
  display: grid;
  grid-template-columns: 1fr auto 30px;
  gap: 8px;
  padding-top: 7px;
  border-top: 1px solid var(--line);
}
.population-ai-card > div b small { display: block; margin-top: 2px; color: var(--muted); font-size: 8.5px; font-weight: 600; line-height: 1.35; }
.population-ai-card i { color: #d99b16; font-style: normal; }
.population-ai-card em { color: var(--muted); font-style: normal; text-align: right; }
.population-impact-flow > div { display: grid; gap: 5px; margin: 15px 0; }
.population-impact-flow > div span {
  padding: 11px;
  color: #fff;
  font-weight: 800;
  text-align: center;
  border-radius: 8px;
  background: #24516b;
}
.population-impact-flow > div span:nth-of-type(even) { background: #257568; }
.population-impact-flow i { color: #d99b16; font-style: normal; font-size: 20px; text-align: center; }
.population-section-title {
  display: flex;
  justify-content: space-between;
  align-items: end;
  gap: 12px;
  margin: 28px 0 12px;
}
.population-section-title h3 { margin: 4px 0 0; font-size: 23px; }
.population-section-title > b {
  padding: 5px 9px;
  color: #855d00;
  font-size: 11px;
  border-radius: 999px;
  background: #fff1c7;
}
.population-future-grid,
.population-youth-grid,
.population-district-heatmap,
.population-cross-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 11px;
}
.population-future-grid article,
.population-youth-grid article,
.population-district-heatmap article,
.population-cross-grid article {
  padding: 17px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: var(--paper);
}
.population-future-grid article > div,
.population-district-heatmap article > div {
  display: flex;
  justify-content: space-between;
  gap: 8px;
}
.population-future-grid article > div b,
.population-district-heatmap article > div b { color: #257568; font-size: 11px; }
.population-future-grid article > strong,
.population-district-heatmap article > strong,
.population-cross-grid article > strong {
  display: block;
  margin: 8px 0 12px;
  font-size: 25px;
}
.population-future-grid dl,
.population-district-heatmap dl,
.population-cross-grid dl,
.population-support-grid dl {
  display: grid;
  gap: 7px;
  margin: 0;
}
.population-future-grid dl div,
.population-district-heatmap dl div,
.population-cross-grid dl div,
.population-support-grid dl div {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  padding-top: 7px;
  border-top: 1px solid var(--line);
}
.population-future-grid dt,
.population-district-heatmap dt,
.population-cross-grid dt,
.population-support-grid dt { color: var(--muted); }
.population-future-grid dd,
.population-district-heatmap dd,
.population-cross-grid dd,
.population-support-grid dd { margin: 0; font-weight: 800; text-align: right; }
.population-model-note { margin: 9px 0 0; color: var(--muted); font-size: 12px; line-height: 1.65; }
.population-age-analysis { grid-template-columns: minmax(0, 1.2fr) minmax(300px, .8fr); }
.population-pyramid-tabs { display: flex; flex-wrap: wrap; gap: 7px; margin-bottom: 8px; }
.population-pyramid-tabs button {
  padding: 7px 12px;
  color: var(--ink);
  border: 1px solid var(--line);
  border-radius: 999px;
  background: var(--soft);
  cursor: pointer;
}
.population-pyramid-tabs button.active { color: #fff; border-color: #257568; background: #257568; }
.population-pyramid-card p,
.population-dam-card p { color: var(--muted); font-size: 12px; line-height: 1.65; }
.population-dam-card > div { display: grid; gap: 5px; }
.population-dam-card > div span { display: grid; grid-template-columns: 62px 1fr 65px; gap: 7px; align-items: center; font-size: 11px; }
.population-dam-card i { height: 10px; overflow: hidden; border-radius: 999px; background: var(--soft); }
.population-dam-card em { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, #257568, #58aab0); }
.population-youth-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.population-youth-grid strong { display: block; margin: 8px 0 3px; font-size: 25px; }
.population-youth-grid p { margin: 0; color: var(--muted); }
.population-district-heatmap { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.population-district-heatmap article { border-top: 5px solid #268765; }
.population-district-heatmap article.risk-watch { border-top-color: #d99b16; }
.population-district-heatmap article.risk-warning { border-top-color: #d56a27; }
.population-district-heatmap article.risk-danger { border-top-color: #c83c3c; }
.population-district-heatmap h4 { margin: 0; }
.population-school-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.population-school-grid article > div { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.population-school-grid article > div span { padding: 11px; text-align: center; border-radius: 9px; background: var(--soft); }
.population-school-grid article > div b,
.population-school-grid article > div strong,
.population-school-grid article > div small { display: block; }
.population-school-grid article > div strong { margin: 5px 0; font-size: 19px; }
.population-cross-grid article { border-left: 5px solid #24516b; }
.population-cross-grid .population-economy-card { border-left-color: #257568; }
.population-support-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); margin-top: 18px; }
.population-support-grid dt { min-width: 100px; font-weight: 800; }
.population-support-grid dd { font-weight: 500; line-height: 1.6; }
.population-sankey {
  display: grid;
  grid-template-columns: minmax(160px, 1.2fr) auto repeat(5, minmax(120px, 1fr));
  gap: 8px;
  align-items: stretch;
  margin-top: 18px;
  padding: 18px;
  overflow-x: auto;
  color: #fff;
  border-radius: 15px;
  background: #162a45;
}
.population-sankey > strong,
.population-sankey > span { display: grid; place-items: center; min-width: 120px; padding: 12px; text-align: center; border-radius: 9px; background: #24516b; }
.population-sankey > span { font-size: 12px; background: #257568; }
.population-sankey i { align-self: center; color: #f5c451; font-style: normal; font-size: 20px; }
.population-data-needs { margin-top: 16px; border-style: dashed; }
.population-data-needs h3 { margin-top: 0; }

@media (max-width: 980px) {
  .population-command-head,
  .population-diagnosis-grid,
  .population-age-analysis,
  .population-school-grid,
  .population-support-grid { grid-template-columns: 1fr; }
  .population-future-grid,
  .population-cross-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .population-district-heatmap { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 680px) {
  .population-command-head { padding: 20px; }
  .population-future-grid,
  .population-youth-grid,
  .population-district-heatmap,
  .population-cross-grid,
  .population-school-grid,
  .population-support-grid { grid-template-columns: 1fr; }
  .population-school-grid article > div { grid-template-columns: 1fr; }
  .population-sankey { justify-content: flex-start; }
}

.policy-command { margin: 20px 0 34px; }
.policy-command-head,
.policy-diagnosis-grid,
.policy-portfolio-grid,
.policy-gap-grid,
.policy-support-grid,
.policy-roi-card {
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) minmax(280px, .8fr);
  gap: 16px;
}
.policy-command-head {
  padding: 28px;
  color: #f8fafc;
  border-radius: 22px;
  background: linear-gradient(135deg, #18233d, #393f70 58%, #176b70);
}
.policy-command-head > div > span,
.policy-section-title span,
.policy-roi-card > div > span,
.policy-support-grid article > span {
  color: #73c9be;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .14em;
}
.policy-command-head h2 { margin: 7px 0 10px; font-size: clamp(25px, 4vw, 39px); line-height: 1.25; }
.policy-command-head p { margin: 0; color: #dce6ed; line-height: 1.75; }
.policy-command-head aside {
  display: grid;
  align-content: center;
  padding: 20px;
  text-align: center;
  border: 1px solid rgba(255,255,255,.2);
  border-radius: 16px;
  background: rgba(255,255,255,.08);
}
.policy-command-head aside strong { color: #f5c451; font-size: 25px; letter-spacing: .08em; }
.policy-command-head aside b { margin: 5px 0; font-size: 24px; }
.policy-command-head aside small { color: #cad8e1; }
.policy-diagnosis-grid { margin-top: 16px; }
.policy-radar-card,
.policy-ai-card,
.policy-map-wrap,
.policy-portfolio-grid > article,
.policy-kpi-dashboard article,
.policy-roi-card,
.policy-gap-grid article,
.policy-scenario-grid article,
.policy-support-grid article,
.policy-data-needs {
  padding: 22px;
  border: 1px solid var(--line);
  border-radius: 18px;
  background: var(--paper);
}
.policy-radar-card svg { display: block; width: min(100%, 360px); margin: 0 auto; }
.policy-radar-card svg polygon:not(.policy-radar-value),
.policy-radar-card svg line { fill: none; stroke: var(--line); }
.policy-radar-card svg text { fill: var(--muted); font-size: 8px; font-weight: 700; }
.policy-radar-card .policy-radar-value { fill: rgba(81, 93, 171, .24); stroke: #515dab; stroke-width: 2.5; }
.policy-radar-card > div { display: grid; gap: 7px; }
.policy-radar-card > div span { display: grid; grid-template-columns: 1fr auto 30px; gap: 8px; padding-top: 7px; border-top: 1px solid var(--line); }
.policy-radar-card > div b small { display: block; margin-top: 2px; color: var(--muted); font-size: 8px; font-weight: 600; line-height: 1.35; }
.policy-radar-card i { color: #d99b16; font-style: normal; }
.policy-radar-card em { color: var(--muted); font-style: normal; text-align: right; }
.policy-ai-card > span { display: inline-block; padding: 5px 10px; color: #fff; font-size: 12px; font-weight: 800; border-radius: 999px; background: #515dab; }
.policy-ai-card h3 { margin: 14px 0 8px; font-size: 22px; line-height: 1.5; }
.policy-ai-card p,
.policy-map-wrap p,
.policy-gap-grid p,
.policy-data-needs p { line-height: 1.75; }
.policy-ai-card > div { display: grid; gap: 8px; margin-top: 16px; }
.policy-ai-card > div span { padding: 10px; border-left: 4px solid #515dab; background: var(--soft); }
.policy-ai-card > div b { margin-right: 9px; }
.policy-section-title { display: flex; justify-content: space-between; align-items: end; gap: 12px; margin: 28px 0 12px; }
.policy-section-title h3 { margin: 4px 0 0; font-size: 23px; }
.policy-section-title > b { padding: 5px 9px; color: #855d00; font-size: 11px; border-radius: 999px; background: #fff1c7; }
.policy-map {
  position: relative;
  min-height: 430px;
  overflow: hidden;
  border-left: 2px solid var(--muted);
  border-bottom: 2px solid var(--muted);
  background:
    linear-gradient(90deg, rgba(38,122,113,.08) 50%, rgba(202,108,85,.08) 50%),
    linear-gradient(rgba(81,93,171,.07) 50%, transparent 50%);
}
.policy-map > i.vertical { position: absolute; top: 0; bottom: 0; left: 50%; border-left: 1px dashed var(--line); }
.policy-map > i.horizontal { position: absolute; left: 0; right: 0; top: 50%; border-top: 1px dashed var(--line); }
.policy-map > em { position: absolute; padding: 4px 7px; color: var(--muted); font-size: 11px; font-style: normal; font-weight: 800; }
.policy-map .q1 { left: 8px; top: 8px; }.policy-map .q2 { right: 8px; top: 8px; }.policy-map .q3 { left: 8px; bottom: 8px; }.policy-map .q4 { right: 8px; bottom: 8px; }
.policy-map .axis-y { position: absolute; z-index: 2; left: 7px; top: 48%; color: var(--muted); font-size: 11px; transform: rotate(-90deg); transform-origin: left top; }
.policy-map .axis-x { position: absolute; z-index: 2; right: 8px; bottom: 4px; color: var(--muted); font-size: 11px; }
.policy-map-dot { position: absolute; z-index: 3; max-width: 130px; transform: translate(-50%, -50%); }
.policy-map-dot i { display: block; width: 14px; height: 14px; margin: auto; border: 3px solid var(--paper); border-radius: 50%; background: #515dab; box-shadow: 0 1px 5px rgba(0,0,0,.3); }
.policy-map-dot b { display: block; margin-top: 3px; padding: 3px 5px; font-size: 10px; text-align: center; border-radius: 5px; background: color-mix(in srgb, var(--paper) 90%, transparent); }
.policy-map-dot.band-verify i { background: #267a71; }.policy-map-dot.band-target i { background: #2873a6; }.policy-map-dot.band-define i { background: #d49435; }.policy-map-dot.band-data i { background: #ca6c55; }
.policy-portfolio-grid { grid-template-columns: minmax(280px, .65fr) minmax(0, 1.35fr); }
.policy-portfolio-grid > article:first-child { display: grid; grid-template-columns: 190px 1fr; gap: 20px; align-items: center; }
.policy-donut { display: grid; place-items: center; width: 180px; height: 180px; border-radius: 50%; }
.policy-donut span { display: grid; place-items: center; width: 105px; height: 105px; font-weight: 800; border-radius: 50%; background: var(--paper); }
.policy-legend { display: grid; gap: 7px; }
.policy-legend span { display: grid; grid-template-columns: 12px 1fr auto; gap: 7px; align-items: center; }
.policy-legend i { width: 10px; height: 10px; border-radius: 50%; }
.policy-ranking ol { display: grid; gap: 6px; margin: 0; padding: 0; list-style: none; }
.policy-ranking li { display: grid; grid-template-columns: 30px 1fr 42px; gap: 9px; align-items: center; padding: 9px; border-radius: 8px; background: var(--soft); }
.policy-ranking li > b { display: grid; place-items: center; width: 28px; height: 28px; color: #fff; border-radius: 50%; background: #515dab; }
.policy-ranking li div span { display: block; margin-top: 3px; color: var(--muted); font-size: 10px; }
.policy-ranking li em { font-style: normal; font-size: 20px; font-weight: 800; text-align: right; }
.policy-order-note { margin: 0 0 9px; color: var(--muted); font-size: 10px; line-height: 1.55; }
.policy-ranking li em { font-size: 11px; }
.policy-impact-links { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.policy-impact-links article { display: grid; grid-template-columns: auto auto 1fr; gap: 8px; align-items: center; padding: 15px; border-radius: 12px; background: var(--soft); }
.policy-impact-links i { color: #d49435; font-style: normal; }
.policy-kpi-dashboard { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.policy-kpi-dashboard article > span { color: #515dab; font-size: 11px; font-weight: 800; }
.policy-kpi-dashboard h4 { min-height: 42px; margin: 6px 0; }
.policy-kpi-dashboard article > div { display: flex; align-items: center; gap: 8px; }
.policy-kpi-dashboard article > div strong { font-size: 21px; }
.policy-kpi-dashboard article > div i { color: #d49435; font-style: normal; }
.policy-kpi-dashboard meter { width: 100%; margin-top: 12px; }
.policy-kpi-dashboard p { margin-bottom: 0; color: var(--muted); font-size: 11px; line-height: 1.55; }
.policy-roi-card { border-left: 7px solid #d49435; }
.policy-roi-card h3 { margin: 6px 0; }
.policy-roi-card dl,
.policy-scenario-grid dl,
.policy-support-grid dl { display: grid; gap: 7px; margin: 0; }
.policy-roi-card dl div,
.policy-scenario-grid dl div,
.policy-support-grid dl div { display: flex; justify-content: space-between; gap: 10px; padding-top: 7px; border-top: 1px solid var(--line); }
.policy-roi-card dt,
.policy-scenario-grid dt,
.policy-support-grid dt { color: var(--muted); }
.policy-roi-card dd,
.policy-scenario-grid dd,
.policy-support-grid dd { margin: 0; font-weight: 800; text-align: right; }
.policy-gap-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.policy-gap-grid article { display: flex; flex-direction: column; gap: 8px; }
.policy-gap-grid h4 { margin: 0 0 5px; }
.policy-gap-grid span { padding: 8px 10px; border-radius: 7px; background: var(--soft); }
.policy-scenario-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; }
.policy-scenario-grid h4 { min-height: 38px; margin-top: 0; }
.policy-model-note { margin: 9px 0 0; color: var(--muted); font-size: 12px; line-height: 1.65; }
.policy-proposal-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 9px; }
.policy-proposal-list article { display: grid; grid-template-columns: 34px 1fr; gap: 10px; padding: 15px; border: 1px solid var(--line); border-radius: 12px; background: var(--paper); }
.policy-proposal-list article > b { display: grid; place-items: center; width: 32px; height: 32px; color: #fff; border-radius: 50%; background: #515dab; }
.policy-proposal-list h4 { margin: 0 0 4px; }.policy-proposal-list p { margin: 0; color: var(--muted); line-height: 1.6; }
.policy-support-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); margin-top: 18px; }
.policy-support-grid dt { min-width: 100px; font-weight: 800; }
.policy-support-grid dd { font-weight: 500; line-height: 1.6; }
.policy-sankey { display: flex; align-items: stretch; justify-content: center; gap: 8px; margin-top: 18px; padding: 18px; overflow-x: auto; color: #fff; border-radius: 14px; background: #18233d; }
.policy-sankey strong,.policy-sankey span { display: grid; place-items: center; min-width: 135px; padding: 12px; text-align: center; border-radius: 8px; background: #515dab; }
.policy-sankey span { background: #176b70; }.policy-sankey i { align-self: center; color: #f5c451; font-style: normal; font-size: 20px; }
.policy-data-needs { margin-top: 16px; border-style: dashed; }.policy-data-needs h3 { margin-top: 0; }

@media (max-width: 980px) {
  .policy-command-head,.policy-diagnosis-grid,.policy-portfolio-grid,.policy-gap-grid,.policy-support-grid,.policy-roi-card { grid-template-columns: 1fr; }
  .policy-kpi-dashboard,.policy-impact-links { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .policy-scenario-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 680px) {
  .policy-command-head { padding: 20px; }
  .policy-portfolio-grid > article:first-child { grid-template-columns: 1fr; justify-items: center; }
  .policy-kpi-dashboard,.policy-impact-links,.policy-scenario-grid,.policy-proposal-list,.policy-support-grid { grid-template-columns: 1fr; }
  .policy-map { min-height: 520px; }
  .policy-map-dot b { max-width: 90px; overflow-wrap: anywhere; }
  .policy-sankey { justify-content: flex-start; }
}

.home-decision-gateway { margin: 20px 0 36px; }
.home-diagnosis-grid { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(300px, .75fr); gap: 16px; }
.home-ai-diagnosis,.home-health-check,.home-future-clock,.home-forecast,.home-citizen-future-choice,.home-today,.home-top-risks,.home-simulator,.home-choice-section,.home-core-flow,.home-swot,.home-daily-question {
  padding: 24px;
  border: 1px solid var(--line);
  border-radius: 20px;
  background: var(--paper);
}
.home-ai-diagnosis { color: #f8fafc; background: linear-gradient(135deg, #14263f, #284d63 65%, #176b70); }
.future-command-center { margin: 22px 0; padding: clamp(20px,3vw,32px); border: 1px solid color-mix(in srgb,#1d4ed8 26%,var(--line)); border-radius: 24px; background: radial-gradient(circle at 8% 8%, color-mix(in srgb,#38bdf8 18%,transparent), transparent 32%), linear-gradient(145deg, color-mix(in srgb,#0f172a 4%,var(--paper)), color-mix(in srgb,#1d4ed8 5%,var(--paper))); box-shadow: var(--shadow); }
.future-command-head { display: grid; grid-template-columns: minmax(0,1fr) minmax(170px,.24fr); gap: 18px; align-items: stretch; }
.future-command-head span,.future-command-actions span { color: #1d4ed8; font-size: 10px; font-weight: 900; letter-spacing: .13em; }
.future-command-head h2 { margin: 5px 0 8px; font-size: clamp(22px,3vw,34px); }
.future-command-head p { max-width: 76ch; margin: 0; color: var(--muted); font-size: 13px; line-height: 1.85; }
.future-command-head aside { display: grid; align-content: center; gap: 4px; padding: 18px; border-radius: 18px; color: #fff; background: linear-gradient(145deg,#1e3a8a,#0f766e); }
.future-command-head aside small,.future-command-head aside strong,.future-command-head aside b { display: block; }
.future-command-head aside strong { font-size: 34px; }.future-command-head aside b { color: #dbeafe; font-size: 11px; }
.future-command-grid { display: grid; grid-template-columns: repeat(5,minmax(0,1fr)); gap: 12px; margin-top: 18px; }
.future-command-grid article { display: flex; flex-direction: column; min-height: 255px; padding: 16px; border: 1px solid var(--line); border-top: 5px solid #1d4ed8; border-radius: 16px; background: var(--paper); }
.future-command-grid article.danger { border-top-color: #dc2626; }.future-command-grid article.watch { border-top-color: #d97706; }.future-command-grid article.good { border-top-color: #0f766e; }
.future-command-grid article > div { display: flex; justify-content: space-between; gap: 8px; align-items: center; }
.future-command-grid article > div span,.future-command-grid article > div b { font-size: 9px; font-weight: 900; }
.future-command-grid article > div span { color: var(--muted); }.future-command-grid article > div b { padding: 4px 7px; border-radius: 999px; color: #1e3a8a; background: #dbeafe; }
.future-command-grid h3 { margin: 12px 0; font-size: 15px; line-height: 1.45; }
.future-command-grid dl { display: grid; gap: 8px; margin: 0 0 14px; }.future-command-grid dl div { padding-top: 8px; border-top: 1px solid var(--line); }
.future-command-grid dt,.future-command-grid dd { margin: 0; font-size: 11px; line-height: 1.6; }.future-command-grid dt { color: var(--muted); font-weight: 900; }
.future-command-grid button,.future-command-actions button { margin-top: auto; padding: 10px 12px; border: 0; border-radius: 10px; color: #fff; background: #1d4ed8; font-size: 11px; font-weight: 900; cursor: pointer; }
.future-command-actions { display: grid; grid-template-columns: minmax(220px,.35fr) minmax(0,1fr) auto; gap: 14px; align-items: center; margin-top: 16px; padding: 16px; border: 1px solid color-mix(in srgb,#1d4ed8 18%,var(--line)); border-radius: 16px; background: color-mix(in srgb,#1d4ed8 5%,var(--paper)); }
.future-command-actions h3 { margin: 4px 0 0; font-size: 16px; }.future-command-actions ol { display: grid; gap: 8px; margin: 0; padding-left: 20px; }
.future-command-actions li b,.future-command-actions li span { display: block; }.future-command-actions li b { font-size: 12px; }.future-command-actions li span { color: var(--muted); font-size: 11px; line-height: 1.55; }
.home-ai-diagnosis > span,.home-health-check > span,.home-today > span,.home-simulator > div > span,.home-daily-question > span { color: #64c7b7; font-size: 11px; font-weight: 800; letter-spacing: .14em; }
.home-ai-diagnosis h2,.home-health-check h2 { margin: 6px 0 12px; }
.home-ai-diagnosis > p { color: #dce8ed; line-height: 1.75; }
.home-overall-score { display: flex; align-items: center; gap: 14px; }
.home-overall-score strong { color: #f5c451; font-size: 27px; letter-spacing: .08em; }
.home-overall-score b { font-size: 24px; }
.home-score-list { display: grid; gap: 6px; margin-top: 15px; }
.home-score-list span { display: grid; grid-template-columns: 1fr auto 30px; gap: 8px; padding-top: 7px; border-top: 1px solid rgba(255,255,255,.16); }
.home-score-list b small { display: block; margin-top: 2px; color: #cad8e1; font-size: 8px; font-weight: 600; line-height: 1.35; }
.home-score-list i { color: #f5c451; font-style: normal; }.home-score-list em { font-style: normal; text-align: right; }
.home-health-check > div { display: grid; gap: 7px; }
.home-health-check article { display: grid; grid-template-columns: 12px 1fr auto; gap: 10px; align-items: center; padding: 11px; border-radius: 9px; background: var(--soft); }
.home-health-check article > i { width: 11px; height: 11px; border-radius: 50%; background: #268765; }
.home-health-check article.tone-watch > i { background: #d99b16; }.home-health-check article.tone-danger > i { background: #c83c3c; }
.home-health-check article small { display: block; margin-top: 2px; color: var(--muted); }
.home-health-check article strong { font-size: 12px; }
.home-future-clock,.home-forecast,.home-top-risks,.home-choice-section,.home-core-flow,.home-swot { margin-top: 18px; }
.home-future-clock > div:last-child,.home-forecast > div:last-child,.home-top-risks > div:last-child,.home-choice-section > div:last-child,.home-swot > div:last-child {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 11px;
}
.home-future-clock > div:last-child article { padding: 18px; color: #fff; border-radius: 14px; background: linear-gradient(145deg, #273a57, #176b70); }
.home-future-clock article > span { color: #bcd5df; }.home-future-clock article > strong { display: block; margin: 5px 0 13px; font-size: 27px; }
.home-future-clock dl { display: grid; gap: 6px; margin: 0; }
.home-future-clock dl div { display: flex; justify-content: space-between; padding-top: 6px; border-top: 1px solid rgba(255,255,255,.18); }
.home-future-clock dd { margin: 0; font-weight: 800; }.home-future-clock small { display: block; margin-top: 10px; color: #c7d9df; }
.home-forecast > div:last-child { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.home-forecast article { padding: 17px; border-top: 5px solid #d99b16; border-radius: 12px; background: var(--soft); }
.home-forecast article.danger { border-top-color: #c83c3c; }.home-forecast strong { display: block; margin: 8px 0; font-size: 20px; }
.home-forecast p { margin: 0; color: var(--muted); line-height: 1.55; }
.home-forecast article small { display: block; margin-top: 7px; color: var(--muted); font-size: 9px; line-height: 1.45; }
.home-citizen-future-choice { margin-top: 18px; background: linear-gradient(145deg, color-mix(in srgb,#0f766e 8%,var(--paper)), color-mix(in srgb,#2563eb 5%,var(--paper))); }
.home-citizen-choice-grid { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 11px; margin-top: 14px; }
.home-citizen-choice-grid button { display: flex; flex-direction: column; gap: 9px; min-height: 230px; padding: 16px; border: 1px solid var(--line); border-top: 5px solid #0f766e; border-radius: 15px; color: var(--ink); background: var(--paper); text-align: left; cursor: pointer; box-shadow: 0 10px 24px rgba(15,23,42,.05); }
.home-citizen-choice-grid button:nth-child(2) { border-top-color: #b45309; }
.home-citizen-choice-grid button:nth-child(3) { border-top-color: #7c3aed; }
.home-citizen-choice-grid button:nth-child(4) { border-top-color: #1d4ed8; }
.home-citizen-choice-grid span { width: fit-content; padding: 4px 8px; border-radius: 999px; color: #115e59; background: #ccfbf1; font-size: 9px; font-weight: 900; }
.home-citizen-choice-grid strong { font-size: 15px; line-height: 1.45; }
.home-citizen-choice-grid p { margin: 0; color: var(--ink); font-size: 11px; font-weight: 800; line-height: 1.6; }
.home-citizen-choice-grid small { display: block; margin-top: auto; color: var(--muted); font-size: 10px; line-height: 1.6; }
.home-citizen-choice-grid b { color: #0f766e; font-size: 10px; }
.home-citizen-choice-note { margin: 13px 0 0; padding: 11px 13px; border-left: 3px solid #0f766e; border-radius: 10px; color: var(--muted); background: color-mix(in srgb,#0f766e 7%,var(--paper)); font-size: 11px; line-height: 1.7; }
.home-today { display: grid; grid-template-columns: 150px 1fr; align-items: center; gap: 20px; margin-top: 18px; border-left: 7px solid #176b70; }
.home-today h2 { margin: 0 0 5px; }.home-today p { margin: 0; font-size: 17px; line-height: 1.7; }
.home-update-findings { display: grid; gap: 6px; }
.home-update-findings p { padding: 7px 9px; border-left: 3px solid #176b70; background: var(--soft); font-size: 12px; }
.home-update-findings b { margin-right: 8px; }
.home-today small { display: block; margin-top: 8px; color: var(--muted); font-size: 9px; }
.home-daily-question ol {
  display: grid;
  gap: 10px;
  max-width: 860px;
  margin: 18px auto;
  padding: 0;
  list-style: none;
  counter-reset: home-question;
  line-height: 1.6;
  text-align: left;
}

.home-daily-question li {
  counter-increment: home-question;
  display: grid;
  grid-template-columns: 34px minmax(0, 1fr);
  gap: 14px;
  align-items: start;
  padding: 12px 16px;
  border: 1px solid rgba(255, 255, 255, .16);
  border-radius: 14px;
  color: #f8fafc;
  background: rgba(255, 255, 255, .08);
  font-weight: 800;
}

.home-daily-question li::before {
  content: counter(home-question) ".";
  display: grid;
  place-items: center;
  width: 34px;
  height: 34px;
  border-radius: 999px;
  color: #14263f;
  background: #ffffff;
  font-weight: 950;
  line-height: 1;
}
.home-top-risks > div:last-child article { display: grid; grid-template-columns: 54px 1fr; gap: 12px; padding: 17px; border-radius: 12px; background: var(--soft); }
.home-top-risks article > b { display: grid; place-items: center; width: 50px; min-height: 42px; padding: 5px; color: #fff; font-size: 11px; border-radius: 10px; background: #c83c3c; }
.home-top-risks h3 { margin: 0 0 5px; }.home-top-risks p { margin: 4px 0; color: var(--muted); line-height: 1.55; }
.home-top-risks p strong { color: var(--text); }.home-top-risks small { display: block; margin-top: 7px; color: var(--muted); font-size: 9px; line-height: 1.45; }
.home-simulator { display: grid; grid-template-columns: minmax(260px, .65fr) minmax(0, 1.35fr); gap: 22px; margin-top: 18px; color: #fff; background: #14263f; }
.home-simulator h2 { margin: 6px 0 15px; }.home-simulator label { display: grid; gap: 9px; font-weight: 800; }
.home-simulator input { width: 100%; accent-color: #64c7b7; }.home-simulator p { color: #c6d6de; font-size: 12px; line-height: 1.6; }
.home-sim-results { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; align-content: center; }
.home-sim-results article { padding: 14px; border: 1px solid rgba(255,255,255,.15); border-radius: 10px; background: rgba(255,255,255,.07); }
.home-sim-results span { color: #bed1da; font-size: 12px; }.home-sim-results strong { display: block; margin-top: 5px; font-size: 19px; }
.home-choice-section > div:last-child { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.home-choice-section article { padding: 16px; border: 1px solid var(--line); border-top: 5px solid #515dab; border-radius: 12px; }
.home-choice-section h3 { margin-top: 0; }.home-choice-section p { color: var(--muted); font-size: 12px; line-height: 1.6; }
.home-choice-section p b { display: block; color: var(--ink); }
.home-core-flow > div:nth-child(2) { display: flex; align-items: stretch; justify-content: center; gap: 7px; overflow-x: auto; padding: 18px; color: #fff; border-radius: 14px; background: #14263f; }
.home-core-flow > div:nth-child(2) strong,.home-core-flow > div:nth-child(2) span { display: grid; place-items: center; min-width: 120px; padding: 13px; text-align: center; border-radius: 8px; background: #176b70; }
.home-core-flow > div:nth-child(2) i { align-self: center; color: #f5c451; font-style: normal; font-size: 20px; }.home-core-flow > p { color: var(--muted); line-height: 1.7; }
.home-swot > div:last-child { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.home-swot article { padding: 17px; border-top: 5px solid #268765; border-radius: 12px; background: var(--soft); }
.home-swot article.weakness { border-top-color: #d99b16; }.home-swot article.opportunity { border-top-color: #2873a6; }.home-swot article.threat { border-top-color: #c83c3c; }
.home-swot p { margin-bottom: 0; color: var(--muted); line-height: 1.6; }
.home-daily-question { margin-top: 18px; text-align: center; color: #fff; background: linear-gradient(135deg, #515dab, #176b70); }
.home-daily-question h2 { margin: 9px 0; font-size: clamp(24px, 4vw, 36px); }.home-daily-question p { color: #e0eaee; }
.home-daily-question button { padding: 11px 18px; color: #14263f; font-weight: 800; border: 0; border-radius: 999px; background: #fff; cursor: pointer; }

@media (max-width: 980px) {
  .home-diagnosis-grid,.home-simulator { grid-template-columns: 1fr; }
  .home-forecast > div:last-child,.home-choice-section > div:last-child,.home-swot > div:last-child { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .home-citizen-choice-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .future-command-head,.future-command-actions { grid-template-columns: 1fr; }
  .future-command-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 680px) {
  .home-ai-diagnosis,.home-health-check,.home-future-clock,.home-forecast,.home-citizen-future-choice,.home-today,.home-top-risks,.home-simulator,.home-choice-section,.home-core-flow,.home-swot,.home-daily-question { padding: 17px; }
  .home-future-clock > div:last-child,.home-forecast > div:last-child,.home-top-risks > div:last-child,.home-choice-section > div:last-child,.home-swot > div:last-child,.home-sim-results { grid-template-columns: 1fr; }
  .home-citizen-choice-grid { grid-template-columns: 1fr; }
  .future-command-center { padding: 17px; }
  .future-command-grid { grid-template-columns: 1fr; }
  .home-today { grid-template-columns: 1fr; gap: 5px; }
  .home-core-flow > div:nth-child(2) { justify-content: flex-start; }
}

.wellbeing-command { margin: 20px 0 36px; }
.wellbeing-head,.wellbeing-diagnosis,.children-wellbeing-grid,.living-job-grid,.living-support-grid { display: grid; grid-template-columns: minmax(0,1.35fr) minmax(280px,.65fr); gap: 16px; }
.wellbeing-head { padding: 28px; color: #fff; border-radius: 22px; background: linear-gradient(135deg,#17324a,#26605e 65%,#4f7b54); }
.wellbeing-head > div > span,.wellbeing-ai > span,.wellbeing-section-title span,.living-support-grid article > span { color: #8bd3bd; font-size: 11px; font-weight: 800; letter-spacing: .14em; }
.wellbeing-head h2 { margin: 7px 0 10px; font-size: clamp(25px,4vw,39px); line-height: 1.25; }
.wellbeing-head p { color: #dfebea; line-height: 1.75; }
.wellbeing-head aside { display: grid; align-content: center; padding: 20px; text-align: center; border: 1px solid rgba(255,255,255,.2); border-radius: 16px; background: rgba(255,255,255,.08); }
.wellbeing-head aside strong { color: #f5c451; font-size: 54px; }.wellbeing-head aside b { font-size: 20px; }.wellbeing-head aside small { color: #d0dfdf; }
.wellbeing-diagnosis { margin-top: 16px; }
.wellbeing-ai,.wellbeing-gauge,.wellbeing-future-grid article,.children-wellbeing-grid article,.living-job-grid article,.community-heatmap article,.living-risk-grid article,.living-support-grid article,.wellbeing-data-needs {
  padding: 20px; border: 1px solid var(--line); border-radius: 17px; background: var(--paper);
}
.wellbeing-ai > span { display: inline-block; padding: 5px 10px; color: #fff; border-radius: 999px; background: #26605e; }
.wellbeing-ai h3 { margin: 13px 0 8px; font-size: 22px; line-height: 1.5; }.wellbeing-ai p { line-height: 1.75; }
.wellbeing-ai > div { display: grid; gap: 6px; }
.wellbeing-ai > div span { display: grid; grid-template-columns: 100px auto 28px 1fr; gap: 8px; padding-top: 7px; border-top: 1px solid var(--line); }
.wellbeing-ai > div span.unmeasured { opacity: .72; }
.wellbeing-ai > div span.unmeasured i { color: var(--muted); font-size: 10px; letter-spacing: 0; }
.wellbeing-ai i { color: #d99b16; font-style: normal; }.wellbeing-ai em { font-style: normal; }.wellbeing-ai small { color: var(--muted); }
.wellbeing-gauge { text-align: center; }
.wellbeing-ring { --score:50; display: grid; place-content: center; width: 170px; height: 170px; margin: 12px auto; border-radius: 50%; background: radial-gradient(circle at center,var(--paper) 58%,transparent 59%),conic-gradient(#26605e calc(var(--score)*1%),var(--soft) 0); }
.wellbeing-ring strong { font-size: 45px; }.wellbeing-ring span { color: var(--muted); }
.wellbeing-bars,.child-happiness-list { display: grid; gap: 6px; text-align: left; }
.wellbeing-bars span,.child-happiness-list span { display: grid; grid-template-columns: 65px 1fr 30px; gap: 7px; align-items: center; }
.wellbeing-bars i,.child-happiness-list i { height: 9px; overflow: hidden; border-radius: 999px; background: var(--soft); }
.wellbeing-bars em,.child-happiness-list em { display: block; height: 100%; background: #4f8c75; }
.wellbeing-bars span.unmeasured i { border: 1px dashed #94a3b8; background: transparent; }
.wellbeing-bars span.unmeasured strong { color: var(--muted); font-size: 8px; }
.wellbeing-section-title { display: flex; justify-content: space-between; align-items: end; margin: 27px 0 11px; }
.wellbeing-section-title h3 { margin: 4px 0 0; font-size: 23px; }.wellbeing-section-title > b { padding: 5px 9px; color: #855d00; font-size: 11px; border-radius: 999px; background: #fff1c7; }
.wellbeing-future-grid,.community-heatmap,.living-risk-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 11px; }
.wellbeing-future-grid article > span { color: #26605e; font-weight: 800; }.wellbeing-future-grid article > strong { display: block; margin: 5px 0 12px; font-size: 27px; }
.wellbeing-future-grid dl,.children-wellbeing-grid dl,.living-job-grid dl,.community-heatmap dl,.living-support-grid dl { display: grid; gap: 6px; margin: 0; }
.wellbeing-future-grid dl div,.children-wellbeing-grid dl div,.living-job-grid dl div,.community-heatmap dl div,.living-support-grid dl div { display: flex; justify-content: space-between; gap: 10px; padding-top: 7px; border-top: 1px solid var(--line); }
.wellbeing-future-grid dt,.children-wellbeing-grid dt,.living-job-grid dt,.community-heatmap dt,.living-support-grid dt { color: var(--muted); }
.wellbeing-future-grid dd,.children-wellbeing-grid dd,.living-job-grid dd,.community-heatmap dd,.living-support-grid dd { margin: 0; font-weight: 800; text-align: right; }
.wellbeing-note { color: var(--muted); font-size: 12px; line-height: 1.65; }
.care-flow,.life-course-flow { display: flex; align-items: stretch; justify-content: center; gap: 7px; padding: 18px; overflow-x: auto; color: #fff; border-radius: 14px; background: #17324a; }
.care-flow strong,.care-flow span,.life-course-flow strong,.life-course-flow span { display: grid; place-items: center; min-width: 130px; padding: 12px; text-align: center; border-radius: 8px; background: #26605e; }
.care-flow i,.life-course-flow i { align-self: center; color: #f5c451; font-style: normal; font-size: 20px; }
.children-wellbeing-grid { grid-template-columns: repeat(3,minmax(0,1fr)); }
.children-wellbeing-grid p,.living-job-grid p,.living-risk-grid p { color: var(--muted); line-height: 1.65; }
.school-future-list { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 6px; }
.school-future-list span { padding: 9px; border-radius: 8px; background: var(--soft); }.school-future-list b,.school-future-list strong,.school-future-list small { display: block; }
.child-happiness-list span { grid-template-columns: 65px 1fr 28px; }.child-happiness-list small { grid-column: 1/-1; color: var(--muted); }
.living-job-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
.living-job-grid article:first-child > span { display: grid; grid-template-columns: 80px 80px 1fr; gap: 8px; padding: 9px; border-radius: 8px; background: var(--soft); }
.community-heatmap { grid-template-columns: repeat(3,minmax(0,1fr)); }
.community-heatmap article { border-top: 5px solid #268765; }.community-heatmap article.tone-watch { border-top-color:#d99b16; }.community-heatmap article.tone-warning { border-top-color:#d56a27; }.community-heatmap article.tone-danger { border-top-color:#c83c3c; }
.community-heatmap article > div { display: flex; justify-content: space-between; }.community-heatmap h4 { margin: 0; }.community-heatmap > article > strong { display: block; margin: 8px 0; font-size: 23px; }
.living-risk-grid { grid-template-columns: repeat(3,minmax(0,1fr)); }.living-risk-grid span { display: block; padding: 9px; border-radius: 7px; background: var(--soft); }
.living-support-grid { grid-template-columns: repeat(2,minmax(0,1fr)); margin-top: 18px; }.living-support-grid dt { min-width: 100px; font-weight: 800; }.living-support-grid dd { font-weight: 500; line-height: 1.6; }
.wellbeing-data-needs { margin-top: 16px; border-style: dashed; }.wellbeing-data-needs h3 { margin-top: 0; }
@media(max-width:980px){.wellbeing-head,.wellbeing-diagnosis,.children-wellbeing-grid,.living-job-grid,.living-support-grid{grid-template-columns:1fr}.community-heatmap,.living-risk-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:680px){.wellbeing-head{padding:20px}.wellbeing-future-grid,.community-heatmap,.living-risk-grid,.children-wellbeing-grid,.living-job-grid,.living-support-grid{grid-template-columns:1fr}.wellbeing-ai>div span{grid-template-columns:1fr auto 28px}.wellbeing-ai>div small{grid-column:1/-1}.care-flow,.life-course-flow{justify-content:flex-start}.school-future-list{grid-template-columns:1fr}}

.governance-command{margin:20px 0 36px}.governance-head,.governance-diagnosis,.council-roi-card,.governance-support-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(280px,.65fr);gap:16px}
.governance-head{padding:28px;color:#fff;border-radius:22px;background:linear-gradient(135deg,#17263e,#35476c 62%,#315f62)}
.governance-head>div>span,.governance-ai>span,.governance-section-title span,.council-roi-card>div>span,.governance-support-grid article>span{color:#80c8c0;font-size:11px;font-weight:800;letter-spacing:.14em}
.governance-head h2{margin:7px 0 10px;font-size:clamp(25px,4vw,39px);line-height:1.25}.governance-head p{color:#dee7ed;line-height:1.75}
.governance-head aside{display:grid;align-content:center;padding:20px;text-align:center;border:1px solid rgba(255,255,255,.2);border-radius:16px;background:rgba(255,255,255,.08)}
.governance-head aside strong{color:#f5c451;font-size:25px}.governance-head aside b{font-size:24px}.governance-head aside small{color:#cfdae2}
.governance-diagnosis{margin-top:16px}.governance-radar,.governance-ai,.council-gap-grid article,.council-impact-summary article,.council-impact-list article,.council-roi-card,.committee-outcome-grid article,.governance-support-grid article,.governance-data-needs{padding:20px;border:1px solid var(--line);border-radius:17px;background:var(--paper)}
.governance-radar svg{display:block;width:min(100%,360px);margin:auto}.governance-radar svg polygon:not(.governance-radar-value),.governance-radar svg line{fill:none;stroke:var(--line)}.governance-radar svg text{fill:var(--muted);font-size:8px;font-weight:700}.governance-radar-value{fill:rgba(70,91,157,.24);stroke:#465b9d;stroke-width:2.5}
.governance-radar>div{display:grid;gap:6px}.governance-radar>div span{display:grid;grid-template-columns:1fr auto 28px;gap:8px;padding-top:7px;border-top:1px solid var(--line)}.governance-radar i{color:#d99b16;font-style:normal}.governance-radar em{font-style:normal;text-align:right}
.governance-radar>div b small{display:block;margin-top:2px;color:var(--muted);font-size:8px;font-weight:600;line-height:1.35}.governance-radar>div span.unmeasured{opacity:.72}.governance-radar>div span.unmeasured i{color:var(--muted);font-size:9px;letter-spacing:0}
.governance-ai>span{display:inline-block;padding:5px 10px;color:#fff;border-radius:999px;background:#465b9d}.governance-ai h3{margin:13px 0 8px;font-size:22px;line-height:1.5}.governance-ai p{line-height:1.75}.governance-ai>div{display:grid;gap:8px}.governance-ai>div span{padding:10px;border-left:4px solid #465b9d;background:var(--soft)}.governance-ai>div b{margin-right:8px}
.governance-section-title{display:flex;justify-content:space-between;align-items:end;margin:27px 0 11px}.governance-section-title h3{margin:4px 0 0;font-size:23px}.governance-section-title>b{padding:5px 9px;color:#855d00;font-size:11px;border-radius:999px;background:#fff1c7}
.council-gap-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.council-gap-grid article{border-top:5px solid #268765}.council-gap-grid article.watch{border-top-color:#d99b16}.council-gap-grid article.shortage{border-top-color:#c83c3c}.council-gap-grid article>div{display:flex;justify-content:space-between}.council-gap-grid h4{margin:0}.council-gap-grid span{display:flex;justify-content:space-between;margin-top:9px;font-size:12px}.council-gap-grid>article>i{display:block;height:9px;overflow:hidden;border-radius:999px;background:var(--soft)}.council-gap-grid em{display:block;height:100%;background:#c83c3c}.council-gap-grid em.attention{background:#465b9d}.council-gap-grid small{display:block;margin-top:7px;color:var(--muted)}
.governance-note{color:var(--muted);font-size:12px;line-height:1.65}.council-impact-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px}.council-impact-summary span{color:var(--muted);font-size:12px}.council-impact-summary strong{display:block;margin-top:5px;font-size:24px}
.council-impact-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin-top:10px}.council-impact-list article>div{display:flex;justify-content:space-between}.council-impact-list article>div b{color:#465b9d}.council-impact-list h4{margin:8px 0}.council-impact-list p{font-size:12px;line-height:1.6}.council-impact-list small{color:var(--muted)}
.governance-flow{display:flex;justify-content:center;align-items:stretch;gap:7px;margin-top:16px;padding:17px;overflow-x:auto;color:#fff;border-radius:14px;background:#17263e}.governance-flow strong,.governance-flow span{display:grid;place-items:center;min-width:110px;padding:11px;text-align:center;border-radius:8px;background:#315f62}.governance-flow i{align-self:center;color:#f5c451;font-style:normal}
.council-roi-card{margin-top:16px;border-left:7px solid #d99b16}.council-roi-card h3{margin:6px 0}.council-roi-card p{line-height:1.7}.council-roi-card dl,.governance-support-grid dl{display:grid;gap:7px;margin:0}.council-roi-card dl div,.governance-support-grid dl div{display:flex;justify-content:space-between;gap:10px;padding-top:7px;border-top:1px solid var(--line)}.council-roi-card dt,.governance-support-grid dt{color:var(--muted)}.council-roi-card dd,.governance-support-grid dd{margin:0;font-weight:800;text-align:right}
.committee-outcome-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.committee-outcome-grid article>span{display:grid;grid-template-columns:70px 1fr 28px;gap:7px;align-items:center;margin-top:8px}.committee-outcome-grid i{height:9px;overflow:hidden;border-radius:999px;background:var(--soft)}.committee-outcome-grid em{display:block;height:100%;background:#315f62}.committee-outcome-grid p{color:var(--muted);font-size:12px}
.member-position-map{position:relative;min-height:480px;border:1px solid var(--line);border-radius:16px;background:linear-gradient(90deg,rgba(49,95,98,.07) 50%,rgba(70,91,157,.07) 50%),linear-gradient(rgba(70,91,157,.06) 50%,transparent 50%)}.member-position-map>i.vertical{position:absolute;top:0;bottom:0;left:50%;border-left:1px dashed var(--line)}.member-position-map>i.horizontal{position:absolute;left:0;right:0;top:50%;border-top:1px dashed var(--line)}.member-position-map>span{position:absolute;z-index:2;color:var(--muted);font-size:11px;font-weight:800}.member-position-map .axis-top{top:7px;left:48%}.member-position-map .axis-bottom{bottom:7px;left:48%}.member-position-map .axis-left{left:7px;top:49%}.member-position-map .axis-right{right:7px;top:49%}
.member-position-map button{position:absolute;z-index:3;transform:translate(-50%,-50%);padding:6px 8px;color:var(--ink);border:1px solid var(--line);border-radius:8px;background:var(--paper);box-shadow:0 2px 6px rgba(0,0,0,.12)}.member-position-map button b,.member-position-map button small{display:block;white-space:nowrap}.member-position-map button small{color:var(--muted)}
.future-question-radar{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:10px}.future-question-radar article{display:flex;flex-direction:column;gap:10px;padding:17px;border:1px solid var(--line);border-top:5px solid #268765;border-radius:14px;background:var(--paper)}.future-question-radar article.watch{border-top-color:#d99b16}.future-question-radar article.shortage{border-top-color:#c83c3c}.future-question-radar header{display:grid;grid-template-columns:34px 1fr auto;gap:10px;align-items:center}.future-question-radar header>b{display:grid;place-items:center;width:32px;height:32px;color:#fff;border-radius:50%;background:#465b9d}.future-question-radar header span,.future-question-radar header strong{display:block}.future-question-radar header span{font-size:14px;font-weight:900}.future-question-radar header strong{color:var(--muted);font-size:9px}.future-question-radar header em{font-style:normal;font-weight:900;color:#c83c3c}.future-question-radar p{margin:0;color:var(--ink);font-size:12px;font-weight:800;line-height:1.65}.future-question-radar dl{display:grid;gap:7px;margin:0}.future-question-radar dl div{padding-top:7px;border-top:1px solid var(--line)}.future-question-radar dt,.future-question-radar dd{margin:0;font-size:10px;line-height:1.55}.future-question-radar dt{color:var(--muted);font-weight:900}.future-issue-radar{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin-top:18px}.future-issue-radar article{display:grid;grid-template-columns:35px 1fr 55px;gap:10px;align-items:center;padding:14px;border:1px solid var(--line);border-radius:11px;background:var(--paper)}.future-issue-radar article>b{display:grid;place-items:center;width:32px;height:32px;color:#fff;border-radius:50%;background:#c83c3c}.future-issue-radar h4,.future-issue-radar p{margin:0}.future-issue-radar p{color:var(--muted);font-size:12px}.future-issue-radar>article>strong{text-align:right}
.governance-support-grid{grid-template-columns:repeat(2,minmax(0,1fr));margin-top:18px}.governance-support-grid dt{min-width:90px;font-weight:800}.governance-support-grid dd{font-weight:500;line-height:1.6}.governance-data-needs{margin-top:16px;border-style:dashed}.governance-data-needs h3{margin-top:0}
@media(max-width:980px){.governance-head,.governance-diagnosis,.council-roi-card,.governance-support-grid{grid-template-columns:1fr}.council-gap-grid,.council-impact-list,.committee-outcome-grid,.future-question-radar{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:680px){.governance-head{padding:20px}.council-gap-grid,.council-impact-summary,.council-impact-list,.committee-outcome-grid,.future-question-radar,.future-issue-radar,.governance-support-grid{grid-template-columns:1fr}.governance-flow{justify-content:flex-start}.member-position-map{min-height:600px}.member-position-map button b{font-size:10px}.member-position-map button small{display:none}}

/* 宇土OS 共通意思決定導線 */
.decision-journey { margin: 34px 0 12px; padding: 24px; border: 1px solid var(--line); border-radius: 20px; background: linear-gradient(145deg, color-mix(in srgb, #1d4ed8 5%, var(--paper)), var(--paper)); }
.decision-journey-head { display: flex; justify-content: space-between; gap: 20px; align-items: center; }
.decision-journey-head span { color: #1d4ed8; font-size: 10px; font-weight: 900; letter-spacing: .12em; }
.decision-journey-head h2 { margin: 4px 0; font-size: 22px; }
.decision-journey-head p { margin: 0; color: var(--muted); font-size: 12px; line-height: 1.65; }
.decision-journey-head aside { flex: 0 0 auto; min-width: 130px; padding: 11px 14px; border-radius: 11px; color: #fff; background: #172554; text-align: center; }
.decision-journey-head aside small,.decision-journey-head aside strong { display: block; }
.decision-journey-head aside small { color: #bfdbfe; font-size: 9px; }
.decision-journey-head aside strong { margin-top: 2px; }
.decision-journey-cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin-top: 17px; }
.decision-journey-cards button { display: grid; grid-template-columns: 28px 1fr auto; gap: 10px; align-items: center; min-width: 0; padding: 14px; border: 1px solid var(--line); border-radius: 12px; color: var(--ink); background: var(--paper); text-align: left; cursor: pointer; transition: transform .12s, border-color .12s, box-shadow .12s; }
.decision-journey-cards button:hover { transform: translateY(-2px); border-color: #1d4ed8; box-shadow: 0 8px 20px rgba(30,64,175,.12); }
.decision-journey-cards button > span { display: grid; place-items: center; width: 27px; height: 27px; border-radius: 50%; color: #fff; background: #1d4ed8; font-size: 11px; font-weight: 900; }
.decision-journey-cards strong,.decision-journey-cards small { display: block; }
.decision-journey-cards strong { font-size: 13px; }
.decision-journey-cards small { margin-top: 3px; color: var(--muted); font-size: 10px; line-height: 1.45; }
.decision-journey-cards b { color: #1d4ed8; font-size: 10px; white-space: nowrap; }
.decision-audience-guide { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 9px; margin-top: 12px; }
.decision-audience-guide button { display: grid; gap: 4px; min-width: 0; padding: 12px 14px; border: 1px solid color-mix(in srgb, #0f766e 25%, var(--line)); border-radius: 12px; color: var(--ink); background: color-mix(in srgb, var(--soft-green) 46%, var(--paper)); cursor: pointer; text-align: left; }
.decision-audience-guide button:hover { border-color: #0f766e; box-shadow: 0 8px 18px rgba(15,118,110,.1); transform: translateY(-1px); }
.decision-audience-guide span { color: #0f766e; font-size: 10px; font-weight: 900; letter-spacing: .08em; }
.decision-audience-guide strong { font-size: 12px; line-height: 1.45; }
.decision-use-cases { display: grid; grid-template-columns: auto repeat(3, minmax(0, 1fr)); gap: 8px; align-items: stretch; margin-top: 12px; padding: 10px; border: 1px dashed color-mix(in srgb, #1d4ed8 30%, var(--line)); border-radius: 14px; background: color-mix(in srgb, #1d4ed8 4%, var(--paper)); }
.decision-use-cases > span { display: grid; place-items: center; padding: 0 10px; color: #1d4ed8; font-size: 9px; font-weight: 900; letter-spacing: .11em; writing-mode: vertical-rl; }
.decision-use-cases button { display: grid; gap: 4px; min-width: 0; padding: 10px 12px; border: 1px solid var(--line); border-radius: 11px; color: var(--ink); background: var(--paper); cursor: pointer; text-align: left; }
.decision-use-cases button:hover { border-color: #1d4ed8; box-shadow: 0 7px 16px rgba(30,64,175,.1); }
.decision-use-cases strong { font-size: 12px; }
.decision-use-cases small { color: var(--muted); font-size: 10px; line-height: 1.45; }
.decision-journey-flow { display: flex; align-items: center; gap: 5px; margin-top: 14px; overflow-x: auto; padding: 9px 0 2px; }
.decision-journey-flow span { flex: 1; min-width: 82px; padding: 6px 8px; border-radius: 999px; color: var(--muted); background: var(--surface-subtle); font-size: 9px; font-weight: 800; text-align: center; }
.decision-journey-flow span.active { color: #fff; background: #0f766e; }
.decision-journey-flow i { color: var(--muted); font-style: normal; font-size: 10px; }
.decision-trust { display: grid; grid-template-columns: minmax(0, 1fr) minmax(320px, .8fr) auto; gap: 16px; align-items: center; margin-top: 17px; padding-top: 17px; border-top: 1px solid var(--line); }
.decision-trust > div:first-child > strong { margin-left: 8px; font-size: 12px; }
.decision-trust p { margin: 7px 0 0; color: var(--muted); font-size: 10.5px; line-height: 1.6; }
.decision-trust-badge { display: inline-block; padding: 3px 8px; border-radius: 999px; font-size: 9px; font-weight: 900; }
.decision-trust-badge.official { color: #0f766e; background: rgba(15,118,110,.12); }
.decision-trust-badge.mixed { color: #1d4ed8; background: rgba(29,78,216,.11); }
.decision-trust-badge.provisional { color: #b45309; background: rgba(180,83,9,.12); }
.decision-trust dl { display: grid; gap: 5px; margin: 0; }
.decision-trust dl div { display: grid; grid-template-columns: 84px 1fr; gap: 8px; font-size: 10px; }
.decision-trust dt { color: var(--muted); }
.decision-trust dd { margin: 0; color: var(--ink); font-weight: 800; }
.decision-trust button { padding: 9px 12px; border: 1px solid #1d4ed8; border-radius: 999px; color: #1d4ed8; background: var(--paper); font-size: 10px; font-weight: 800; white-space: nowrap; cursor: pointer; }
.decision-trust button:hover { color: #fff; background: #1d4ed8; }
@media (max-width: 780px) {
  .decision-journey-head { align-items: stretch; }
  .decision-journey-cards { grid-template-columns: 1fr; }
  .decision-audience-guide { grid-template-columns: 1fr; }
  .decision-use-cases { grid-template-columns: 1fr; }
  .decision-use-cases > span { display: block; padding: 0; writing-mode: horizontal-tb; }
  .decision-trust { grid-template-columns: 1fr; }
  .decision-trust button { justify-self: start; }
}
@media (max-width: 520px) {
  .decision-journey { padding: 17px; }
  .decision-journey-head { display: grid; }
  .decision-journey-head aside { min-width: 0; text-align: left; }
  .decision-journey-cards button { grid-template-columns: 28px 1fr; }
  .decision-journey-cards b { grid-column: 2; }
}

/* 意思決定案件ボード */
.decision-case-board { border-top: 6px solid #1d4ed8; }
.decision-case-summary { display: grid; grid-template-columns: repeat(4, 1fr); gap: 9px; margin: 15px 0; }
.decision-case-summary article { padding: 13px; border-radius: 11px; background: var(--soft); }
.decision-case-summary span,.decision-case-summary small { display: block; color: var(--muted); font-size: 10px; }
.decision-case-summary strong { display: block; margin: 4px 0; font-size: 20px; }
.decision-case-list { display: grid; gap: 12px; }
.decision-case { padding: 18px; border: 1px solid var(--line); border-radius: 14px; background: var(--paper); }
.decision-case-head { display: flex; justify-content: space-between; gap: 12px; }
.decision-case-head span { color: #1d4ed8; font-size: 9.5px; font-weight: 800; }
.decision-case-head h4 { margin: 3px 0 0; font-size: 18px; }
.decision-case-head button { align-self: start; padding: 7px 10px; border: 1px solid #1d4ed8; border-radius: 999px; color: #1d4ed8; background: var(--paper); font-size: 10px; font-weight: 800; cursor: pointer; }
.decision-case > p { margin: 9px 0; color: var(--muted); font-size: 12px; line-height: 1.65; }
.decision-case-evidence { display: flex; flex-wrap: wrap; gap: 5px; }
.decision-case-evidence span { padding: 4px 8px; border-radius: 999px; color: #334155; background: var(--soft); font-size: 9.5px; font-weight: 700; }
.decision-case-flow { display: grid; grid-template-columns: repeat(6, 1fr); gap: 6px; margin-top: 13px; }
.decision-case-flow > span { min-width: 0; padding: 10px 7px; border-radius: 9px; text-align: center; }
.decision-case-flow > span.done { color: #115e59; background: rgba(15,118,110,.1); border: 1px solid rgba(15,118,110,.18); }
.decision-case-flow > span.partial { color: #1d4ed8; background: rgba(37,99,235,.08); border: 1px solid rgba(37,99,235,.22); }
.decision-case-flow > span.missing { color: #9a3412; background: rgba(180,83,9,.08); border: 1px dashed rgba(180,83,9,.3); }
.decision-case-flow i,.decision-case-flow b,.decision-case-flow small { display: block; }
.decision-case-flow i { font-style: normal; font-weight: 900; }
.decision-case-flow b { margin-top: 3px; font-size: 10px; }
.decision-case-flow small { margin-top: 3px; font-size: 8.5px; line-height: 1.35; }
.decision-case-kpis { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 7px; margin-top: 10px; }
.decision-case-kpis > strong { grid-column: 1 / -1; color: var(--muted); font-size: 10px; }
.decision-case-kpis article { padding: 9px 10px; border: 1px solid var(--line); border-radius: 9px; background: var(--soft); }
.decision-case-kpis article div { display: flex; justify-content: space-between; gap: 8px; }
.decision-case-kpis b { font-size: 10px; }
.decision-case-kpis span { flex: none; color: #9a3412; font-size: 9px; font-weight: 800; }
.decision-case-kpis p { margin: 5px 0 3px; font-size: 9px; line-height: 1.45; }
.decision-case-kpis small { color: var(--muted); font-size: 8.5px; }
.decision-case-bottom { display: grid; grid-template-columns: minmax(250px, .7fr) minmax(0, 1.3fr); gap: 14px; margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--line); }
.decision-case-bottom dl { display: grid; gap: 5px; margin: 0; }
.decision-case-bottom dl div { display: grid; grid-template-columns: 130px 1fr; gap: 8px; font-size: 10px; }
.decision-case-bottom dt { color: var(--muted); }
.decision-case-bottom dd { margin: 0; font-weight: 800; }
.decision-case-bottom > div { display: flex; flex-wrap: wrap; gap: 5px; align-content: start; }
.decision-case-bottom > div span { padding: 5px 7px; border-left: 3px solid #1d4ed8; background: var(--soft); font-size: 9px; }
.decision-case-note { margin: 13px 0 0; padding: 10px 12px; border-left: 3px solid #b45309; color: var(--muted); background: rgba(180,83,9,.06); font-size: 10px; line-height: 1.6; }

/* 診断スコア共通の利用条件 */
.diagnosis-disclosure { display: grid; grid-template-columns: auto 1fr; gap: 12px; margin: 12px 0 16px; padding: 10px 12px; border: 1px solid var(--line); border-left: 4px solid #64748b; border-radius: 10px; background: var(--soft); }
.diagnosis-disclosure > span { align-self: center; padding: 5px 8px; border-radius: 999px; color: #334155; background: var(--paper); font-size: 9px; font-weight: 900; white-space: nowrap; }
.diagnosis-disclosure dl { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; margin: 0; }
.diagnosis-disclosure dl div { min-width: 0; }
.diagnosis-disclosure dt { color: var(--muted); font-size: 8.5px; font-weight: 800; }
.diagnosis-disclosure dd { margin: 2px 0 0; font-size: 9px; font-weight: 700; line-height: 1.4; }
@media (max-width: 900px) {
  .decision-case-summary { grid-template-columns: repeat(2, 1fr); }
  .decision-case-flow { grid-template-columns: repeat(3, 1fr); }
  .decision-case-kpis { grid-template-columns: 1fr; }
  .decision-case-bottom { grid-template-columns: 1fr; }
  .diagnosis-disclosure { grid-template-columns: 1fr; }
  .diagnosis-disclosure > span { justify-self: start; }
  .diagnosis-disclosure dl { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 560px) {
  .decision-case-summary,.decision-case-flow { grid-template-columns: 1fr; }
  .decision-case-head { display: grid; }
  .decision-case-head button { justify-self: start; }
  .decision-case-bottom dl div { grid-template-columns: 1fr; gap: 1px; }
  .diagnosis-disclosure dl { grid-template-columns: 1fr; }
}

/* 政策ROI分析 */
.policy-roi-panel { display: grid; gap: 16px; }
.policy-roi-hero { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 24px; align-items: center; padding: 28px; border-radius: 20px; color: #fff; background: linear-gradient(135deg, #312e81, #1d4ed8 62%, #0891b2); }
.policy-roi-hero span { font-size: 10px; font-weight: 900; letter-spacing: .12em; }
.policy-roi-hero h1 { margin: 7px 0 9px; font-size: clamp(25px, 4vw, 40px); }
.policy-roi-hero p { max-width: 760px; margin: 0; color: rgba(255,255,255,.86); font-size: 12px; line-height: 1.8; }
.policy-roi-hero aside { min-width: 180px; padding: 18px; border: 1px solid rgba(255,255,255,.22); border-radius: 16px; background: rgba(255,255,255,.11); text-align: center; }
.policy-roi-hero aside small,.policy-roi-hero aside span { display: block; }
.policy-roi-hero aside strong { display: block; margin: 5px 0; font-size: 42px; }
.policy-roi-hero aside strong b { font-size: 12px; }
.policy-roi-card { padding: 22px; border: 1px solid var(--line); border-radius: 16px; background: var(--paper); }
.policy-roi-card header span { color: #1d4ed8; font-size: 9px; font-weight: 900; letter-spacing: .08em; }
.policy-roi-card header h2 { margin: 4px 0 12px; font-size: 19px; }
.policy-roi-card > p { margin: 0; color: var(--muted); font-size: 12px; line-height: 1.75; }
.policy-roi-grid { display: grid; grid-template-columns: .75fr 1.25fr; gap: 16px; }
.policy-roi-flow { display: flex; align-items: center; gap: 7px; overflow-x: auto; padding: 4px 0 8px; }
.policy-roi-flow span { flex: 1; min-width: 100px; padding: 10px; border-radius: 999px; color: #1e3a8a; background: rgba(37,99,235,.1); font-size: 10px; font-weight: 900; text-align: center; }
.policy-roi-flow i { color: var(--muted); font-style: normal; }
.policy-roi-note { padding: 10px 12px; border-left: 3px solid #b45309; background: rgba(180,83,9,.06); }
.policy-roi-kpis { display: grid; grid-template-columns: repeat(2, 1fr); gap: 9px; }
.policy-roi-kpis article { padding: 15px; border-radius: 11px; background: var(--soft); }
.policy-roi-kpis strong,.policy-roi-kpis span { display: block; }
.policy-roi-kpis strong { font-size: 25px; }
.policy-roi-kpis span { margin-top: 3px; color: var(--muted); font-size: 10px; }
.policy-target-list { display: grid; gap: 10px; }
.policy-target-list article { padding: 10px 12px; border: 1px solid var(--line); border-radius: 10px; }
.policy-target-list article div { display: flex; justify-content: space-between; gap: 10px; font-size: 10px; }
.policy-target-list i { display: block; height: 6px; margin: 8px 0 5px; overflow: hidden; border-radius: 999px; background: var(--soft); }
.policy-target-list em { display: block; height: 100%; border-radius: inherit; background: #2563eb; }
.policy-target-list small { color: var(--muted); font-size: 8.5px; }
.policy-roi-table-wrap { overflow-x: auto; }
.policy-roi-table { width: 100%; min-width: 980px; border-collapse: collapse; font-size: 10px; }
.policy-roi-table th,.policy-roi-table td { padding: 11px 9px; border-bottom: 1px solid var(--line); text-align: left; vertical-align: top; }
.policy-roi-table th { color: var(--muted); background: var(--soft); }
.policy-roi-table td strong,.policy-roi-table td small,.policy-roi-table td span { display: block; }
.policy-roi-table td small { margin-top: 3px; color: var(--muted); }
.policy-roi-table td b { color: #1d4ed8; }
.policy-roi-table td span { margin-top: 3px; color: #9a3412; font-size: 8.5px; font-weight: 800; }
.policy-roi-table td em { display: inline-block; margin: 0 3px 3px 0; padding: 3px 6px; border-radius: 999px; color: #475569; background: var(--soft); font-style: normal; font-size: 8px; }
.policy-roi-formulas { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; }
.policy-roi-formulas article { padding: 14px; border: 1px solid var(--line); border-top: 4px solid #2563eb; border-radius: 11px; }
.policy-roi-formulas p { margin: 7px 0; font-size: 10px; font-weight: 800; line-height: 1.5; }
.policy-roi-formulas small { color: var(--muted); font-size: 9px; }
@media (max-width: 900px) {
  .policy-roi-grid,.policy-roi-formulas { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 620px) {
  .policy-roi-hero,.policy-roi-grid,.policy-roi-formulas { grid-template-columns: 1fr; }
  .policy-roi-hero { padding: 20px; }
  .policy-roi-hero aside { min-width: 0; text-align: left; }
  .policy-roi-card { padding: 17px; }
}

/* 空き家・住まい戦略 */
.housing-panel { display: grid; gap: 16px; }
.housing-hero { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 24px; align-items: center; padding: 28px; border-radius: 20px; color: #fff; background: linear-gradient(135deg,#422006,#92400e 60%,#c2410c); }
.housing-hero span { font-size: 10px; font-weight: 900; letter-spacing: .12em; }
.housing-hero h1 { margin: 7px 0 9px; font-size: clamp(25px,4vw,40px); }
.housing-hero p { max-width: 760px; margin: 0; color: rgba(255,255,255,.86); font-size: 12px; line-height: 1.8; }
.housing-hero aside { min-width: 170px; padding: 18px; border: 1px solid rgba(255,255,255,.22); border-radius: 16px; background: rgba(255,255,255,.11); text-align: center; }
.housing-hero aside small,.housing-hero aside strong,.housing-hero aside span { display: block; }
.housing-hero aside strong { margin: 5px 0; font-size: 32px; }
.housing-card { padding: 22px; border: 1px solid var(--line); border-radius: 16px; background: var(--paper); }
.housing-card header span { color: #c2410c; font-size: 9px; font-weight: 900; letter-spacing: .08em; }
.housing-card header h2 { margin: 4px 0 12px; font-size: 19px; }
.housing-card > p { color: var(--muted); font-size: 12px; line-height: 1.75; }
.housing-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.housing-scenarios { display: grid; grid-template-columns: repeat(3,1fr); gap: 10px; }
.housing-scenarios article { padding: 16px; border: 1px solid var(--line); border-top: 4px solid #c2410c; border-radius: 11px; }
.housing-scenarios article > span,.housing-scenarios article > strong,.housing-scenarios article > b { display: block; }
.housing-scenarios article > strong { margin: 4px 0; font-size: 25px; }
.housing-scenarios article > b { color: #9a3412; font-size: 10px; }
.housing-scenarios dl { display: grid; gap: 5px; margin: 12px 0 0; }
.housing-scenarios dl div { display: flex; justify-content: space-between; gap: 8px; padding-top: 5px; border-top: 1px solid var(--line); font-size: 9px; }
.housing-scenarios dd { margin: 0; font-weight: 800; }
.housing-caution { padding: 10px 12px; border-left: 3px solid #b45309; background: rgba(180,83,9,.06); }
.housing-tenure-list,.housing-district-list { display: grid; gap: 8px; }
.housing-tenure-list article,.housing-district-list article { padding: 10px; border: 1px solid var(--line); border-radius: 9px; }
.housing-tenure-list article > b,.housing-tenure-list article > span,.housing-tenure-list article > small { display: block; }
.housing-tenure-list article > span,.housing-district-list span { margin-top: 3px; font-size: 10px; }
.housing-tenure-list i { display: block; height: 6px; margin: 6px 0; overflow: hidden; border-radius: 999px; background: var(--soft); }
.housing-tenure-list em { display: block; height: 100%; background: #c2410c; }
.housing-tenure-list small,.housing-district-list small { color: var(--muted); font-size: 8.5px; }
.housing-district-list article { display: grid; grid-template-columns: 1fr auto; gap: 3px 10px; }
.housing-district-list small { grid-column: 1/-1; }
.housing-actions { display: grid; grid-template-columns: repeat(4,1fr); gap: 10px; }
.housing-actions article { padding: 14px; border-radius: 11px; background: var(--soft); }
.housing-actions b { display: inline-block; padding: 3px 7px; border-radius: 999px; color: #9a3412; background: #ffedd5; font-size: 9px; }
.housing-actions strong { display: block; margin: 8px 0 5px; font-size: 12px; }
.housing-actions p { margin: 0; color: var(--muted); font-size: 9.5px; line-height: 1.6; }
.housing-flow { display: flex; align-items: center; gap: 6px; overflow-x: auto; }
.housing-flow span { flex: 1; min-width: 100px; padding: 9px; border-radius: 999px; color: #9a3412; background: #ffedd5; font-size: 9px; font-weight: 900; text-align: center; }
.housing-flow i { color: var(--muted); font-style: normal; }
@media(max-width:900px) {
  .housing-grid,.housing-actions { grid-template-columns: repeat(2,1fr); }
}
@media(max-width:620px) {
  .housing-hero,.housing-grid,.housing-scenarios,.housing-actions { grid-template-columns: 1fr; }
  .housing-hero { padding: 20px; }
  .housing-hero aside { min-width: 0; text-align: left; }
  .housing-card { padding: 17px; }
}

/* 行政DX分析 */
.admin-dx-panel { display: grid; gap: 16px; }
.admin-dx-hero { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 24px; align-items: center; padding: 28px; border-radius: 20px; color: #fff; background: linear-gradient(135deg,#082f49,#0369a1 58%,#0d9488); }
.admin-dx-hero span { font-size: 10px; font-weight: 900; letter-spacing: .12em; }
.admin-dx-hero h1 { margin: 7px 0 9px; font-size: clamp(25px,4vw,40px); }
.admin-dx-hero p { max-width: 760px; margin: 0; color: rgba(255,255,255,.86); font-size: 12px; line-height: 1.8; }
.admin-dx-hero aside { min-width: 190px; padding: 18px; border: 1px solid rgba(255,255,255,.22); border-radius: 16px; background: rgba(255,255,255,.11); text-align: center; }
.admin-dx-hero aside small,.admin-dx-hero aside strong,.admin-dx-hero aside span { display: block; }
.admin-dx-hero aside strong { margin: 5px 0; font-size: 40px; }
.admin-dx-hero aside strong b { font-size: 12px; }
.admin-dx-card { padding: 22px; border: 1px solid var(--line); border-radius: 16px; background: var(--paper); }
.admin-dx-card header span { color: #0369a1; font-size: 9px; font-weight: 900; letter-spacing: .08em; }
.admin-dx-card header h2 { margin: 4px 0 12px; font-size: 19px; }
.admin-dx-card > p { margin: 0; color: var(--muted); font-size: 12px; line-height: 1.75; }
.admin-dx-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.admin-dx-kpis,.admin-efficiency-grid { display: grid; grid-template-columns: repeat(2,1fr); gap: 9px; }
.admin-dx-kpis article,.admin-efficiency-grid article { padding: 14px; border-radius: 10px; background: var(--soft); }
.admin-dx-kpis strong,.admin-dx-kpis span,.admin-efficiency-grid strong,.admin-efficiency-grid span,.admin-efficiency-grid small { display: block; }
.admin-dx-kpis strong,.admin-efficiency-grid strong { font-size: 23px; }
.admin-dx-kpis span,.admin-efficiency-grid span { margin-top: 4px; font-size: 9px; font-weight: 800; }
.admin-efficiency-grid small { margin-top: 4px; color: var(--muted); font-size: 8.5px; }
.admin-dx-readiness { display: grid; grid-template-columns: repeat(3,1fr); gap: 8px; }
.admin-dx-readiness article { padding: 11px; border: 1px solid var(--line); border-radius: 9px; }
.admin-dx-readiness article span,.admin-dx-readiness article strong,.admin-dx-readiness article small { display: block; }
.admin-dx-readiness article span { font-size: 8px; font-weight: 900; }
.admin-dx-readiness article.done span { color: #0f766e; }
.admin-dx-readiness article.pending span { color: #b45309; }
.admin-dx-readiness article strong { margin: 4px 0; font-size: 10px; }
.admin-dx-readiness article small { color: var(--muted); font-size: 8px; }
.admin-dx-bars { display: grid; gap: 9px; }
.admin-dx-bars article { display: grid; grid-template-columns: minmax(130px,1fr) 1.2fr 42px; gap: 8px; align-items: center; font-size: 9px; }
.admin-dx-bars i { height: 8px; overflow: hidden; border-radius: 999px; background: var(--soft); }
.admin-dx-bars em { display: block; height: 100%; background: #0d9488; }
.admin-dx-low { display: grid; gap: 7px; }
.admin-dx-low article { display: flex; justify-content: space-between; gap: 10px; padding: 9px 10px; border-left: 3px solid #b45309; background: rgba(180,83,9,.06); font-size: 9px; }
.admin-dx-low span { color: #9a3412; font-weight: 900; }
.admin-dx-flow { display: flex; align-items: center; gap: 6px; overflow-x: auto; }
.admin-dx-flow span { flex: 1; min-width: 110px; padding: 9px; border-radius: 999px; color: #075985; background: #e0f2fe; font-size: 9px; font-weight: 900; text-align: center; }
.admin-dx-flow i { color: var(--muted); font-style: normal; }
.admin-dx-actions { display: grid; grid-template-columns: repeat(4,1fr); gap: 10px; }
.admin-dx-actions article { padding: 14px; border: 1px solid var(--line); border-radius: 11px; }
.admin-dx-actions b { display: grid; place-items: center; width: 24px; height: 24px; border-radius: 50%; color: #fff; background: #0369a1; font-size: 10px; }
.admin-dx-actions strong { display: block; margin: 8px 0 5px; font-size: 11px; }
.admin-dx-actions p { margin: 0; color: var(--muted); font-size: 9px; line-height: 1.6; }
@media(max-width:900px) {
  .admin-dx-grid,.admin-dx-actions { grid-template-columns: repeat(2,1fr); }
}
@media(max-width:620px) {
  .admin-dx-hero,.admin-dx-grid,.admin-dx-actions { grid-template-columns: 1fr; }
  .admin-dx-hero { padding: 20px; }
  .admin-dx-hero aside { min-width: 0; text-align: left; }
  .admin-dx-card { padding: 17px; }
  .admin-dx-readiness,.admin-dx-kpis,.admin-efficiency-grid { grid-template-columns: 1fr 1fr; }
  .admin-dx-bars article { grid-template-columns: 1fr 38px; }
  .admin-dx-bars i { grid-column: 1/-1; grid-row: 2; }
}

/* 人材需給ダッシュボード */
.workforce-panel { display: grid; gap: 16px; }
.workforce-hero { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 24px; align-items: center; padding: 28px; border-radius: 20px; color: #fff; background: linear-gradient(135deg,#3f1d5c,#6d28d9 58%,#a21caf); }
.workforce-hero span { font-size: 10px; font-weight: 900; letter-spacing: .12em; }
.workforce-hero h1 { margin: 7px 0 9px; font-size: clamp(25px,4vw,40px); }
.workforce-hero p { max-width: 760px; margin: 0; color: rgba(255,255,255,.86); font-size: 12px; line-height: 1.8; }
.workforce-hero aside { min-width: 205px; padding: 18px; border: 1px solid rgba(255,255,255,.22); border-radius: 16px; background: rgba(255,255,255,.11); text-align: center; }
.workforce-hero aside small,.workforce-hero aside strong,.workforce-hero aside span { display: block; }
.workforce-hero aside strong { margin: 5px 0; font-size: 30px; }
.workforce-card { padding: 22px; border: 1px solid var(--line); border-radius: 16px; background: var(--paper); }
.workforce-card header span { color: #7e22ce; font-size: 9px; font-weight: 900; letter-spacing: .08em; }
.workforce-card header h2 { margin: 4px 0 12px; font-size: 19px; }
.workforce-card > p { margin: 0; color: var(--muted); font-size: 12px; line-height: 1.75; }
.workforce-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.workforce-domains { display: grid; grid-template-columns: repeat(3,1fr); gap: 10px; }
.workforce-domains article { padding: 14px; border: 1px solid var(--line); border-radius: 11px; }
.workforce-domains article > div { display: flex; justify-content: space-between; gap: 8px; }
.workforce-domains article > div span { color: #7e22ce; font-size: 8px; font-weight: 900; }
.workforce-domains dl { display: grid; gap: 5px; margin: 10px 0; }
.workforce-domains dl div { display: grid; grid-template-columns: 42px 1fr; gap: 6px; padding-top: 5px; border-top: 1px solid var(--line); font-size: 9px; }
.workforce-domains dt { color: var(--muted); }
.workforce-domains dd { margin: 0; font-weight: 800; }
.workforce-domains p { margin: 0; color: var(--muted); font-size: 8.5px; line-height: 1.5; }
.workforce-kpis,.workforce-economy { display: grid; grid-template-columns: repeat(4,1fr); gap: 9px; }
.workforce-kpis article,.workforce-economy article { padding: 14px; border-radius: 10px; background: var(--soft); }
.workforce-kpis strong,.workforce-kpis span,.workforce-economy strong,.workforce-economy span,.workforce-economy small { display: block; }
.workforce-kpis strong,.workforce-economy strong { font-size: 21px; }
.workforce-kpis span,.workforce-economy span { margin-top: 4px; font-size: 9px; font-weight: 800; }
.workforce-economy small { margin-top: 4px; color: var(--muted); font-size: 8px; }
.workforce-care { display: grid; grid-template-columns: 1fr auto 1fr; gap: 10px; align-items: center; }
.workforce-care article { padding: 14px; border-radius: 10px; background: var(--soft); text-align: center; }
.workforce-care article span,.workforce-care article strong { display: block; }
.workforce-care article strong { margin-top: 4px; font-size: 22px; }
.workforce-care i { color: #7e22ce; font-style: normal; font-weight: 900; }
.workforce-care p { grid-column: 1/-1; margin: 0; color: var(--muted); font-size: 9px; }
.workforce-actions { display: grid; grid-template-columns: repeat(6,1fr); gap: 9px; }
.workforce-actions article { padding: 13px; border: 1px solid var(--line); border-top: 4px solid #7e22ce; border-radius: 10px; }
.workforce-actions b { font-size: 11px; }
.workforce-actions p { margin: 6px 0 0; color: var(--muted); font-size: 8.5px; line-height: 1.5; }
@media(max-width:980px) {
  .workforce-domains { grid-template-columns: repeat(2,1fr); }
  .workforce-actions { grid-template-columns: repeat(3,1fr); }
  .workforce-economy { grid-template-columns: repeat(2,1fr); }
}
@media(max-width:620px) {
  .workforce-hero,.workforce-grid,.workforce-domains,.workforce-actions { grid-template-columns: 1fr; }
  .workforce-hero { padding: 20px; }
  .workforce-hero aside { min-width: 0; text-align: left; }
  .workforce-card { padding: 17px; }
  .workforce-kpis,.workforce-economy { grid-template-columns: repeat(2,1fr); }
}

/* 市民向け支援制度ナビ */
.citizen-support-navigator { margin: 18px 0 30px; padding: 24px; border: 1px solid var(--line); border-radius: 20px; background: var(--paper); }
.citizen-support-head { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 22px; align-items: center; padding: 22px; border-radius: 16px; color: #fff; background: linear-gradient(135deg,#14532d,#15803d 58%,#0f766e); }
.citizen-support-head span { font-size: 9px; font-weight: 900; letter-spacing: .12em; }
.citizen-support-head h2 { margin: 5px 0 8px; font-size: clamp(22px,3.5vw,34px); }
.citizen-support-head p { margin: 0; color: rgba(255,255,255,.86); font-size: 11px; line-height: 1.7; }
.citizen-support-head aside { min-width: 145px; padding: 14px; border: 1px solid rgba(255,255,255,.22); border-radius: 12px; background: rgba(255,255,255,.1); text-align: center; }
.citizen-support-head aside small,.citizen-support-head aside strong,.citizen-support-head aside span { display: block; }
.citizen-support-head aside strong { margin: 4px 0; font-size: 28px; }
.citizen-support-controls { display: grid; grid-template-columns: minmax(240px,.65fr) minmax(0,1.35fr); gap: 14px; margin: 15px 0; }
.life-issue-category-map { margin: 16px 0; padding: 17px; border: 1px solid color-mix(in srgb,#0f766e 24%,var(--line)); border-radius: 14px; background: color-mix(in srgb,#0f766e 5%,var(--paper)); }
.life-issue-category-head { display: flex; justify-content: space-between; gap: 12px; align-items: center; }
.life-issue-category-head span { color: #0f766e; font-size: 8px; font-weight: 900; letter-spacing: .12em; }
.life-issue-category-head h3 { margin: 3px 0 0; font-size: 18px; }
.life-issue-category-head b { padding: 6px 9px; border-radius: 999px; color: #115e59; background: #ccfbf1; font-size: 9px; white-space: nowrap; }
.life-issue-category-map > p { color: var(--muted); font-size: 9px; line-height: 1.65; }
.life-issue-category-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 10px; }
.life-issue-category-grid article { display: grid; gap: 8px; min-width: 0; padding: 13px; border: 1px solid var(--line); border-radius: 11px; background: var(--paper); }
.life-issue-category-grid article.active { border-color: #0f766e; box-shadow: 0 0 0 2px color-mix(in srgb,#0f766e 16%,transparent); }
.life-issue-category-grid article > div { display: flex; justify-content: space-between; gap: 10px; align-items: flex-start; }
.life-issue-category-grid strong { font-size: 11px; line-height: 1.35; }
.life-issue-category-grid article > div span { flex: 0 0 auto; padding: 4px 7px; border-radius: 999px; color: #115e59; background: #ccfbf1; font-size: 8px; font-weight: 900; }
.life-issue-category-grid p { margin: 0; color: var(--ink); font-size: 9px; font-weight: 800; line-height: 1.55; }
.life-issue-category-grid small { color: var(--muted); font-size: 8px; line-height: 1.5; }
.life-issue-category-grid ul { margin: 0; padding-left: 17px; color: var(--muted); font-size: 8px; line-height: 1.55; }
.life-issue-category-grid em { color: #0f766e; font-size: 8px; font-style: normal; line-height: 1.5; }
.life-issue-category-grid button,
.life-issue-selected button { justify-self: start; padding: 7px 10px; border: 0; border-radius: 999px; color: #fff; background: #0f766e; font-size: 8px; font-weight: 900; cursor: pointer; }
.life-issue-category-grid article.active button { color: #115e59; background: #ccfbf1; }
.life-issue-selected { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin-top: 12px; padding: 12px; border: 1px solid #0f766e; border-radius: 12px; background: color-mix(in srgb,#0f766e 8%,var(--paper)); }
.life-issue-selected > div { display: grid; gap: 2px; }
.life-issue-selected strong { font-size: 12px; }
.life-issue-selected span { color: #0f766e; font-size: 9px; font-weight: 900; }
.life-issue-selected p { flex: 1 1 260px; margin: 0; color: var(--muted); font-size: 9px; line-height: 1.6; }
.life-issue-selected button { color: #115e59; background: #ccfbf1; }
.support-delivery-monitor { margin: 16px 0; padding: 17px; border: 1px solid #f59e0b; border-radius: 14px; background: color-mix(in srgb,#f59e0b 7%,var(--paper)); }
.support-delivery-title { display: flex; justify-content: space-between; gap: 12px; align-items: center; }
.support-delivery-title span { color: #b45309; font-size: 8px; font-weight: 900; letter-spacing: .12em; }
.support-delivery-title h3 { margin: 3px 0 0; font-size: 18px; }
.support-delivery-title > b { padding: 6px 9px; border-radius: 999px; color: #92400e; background: #fef3c7; font-size: 9px; white-space: nowrap; }
.support-delivery-monitor > p { color: var(--muted); font-size: 9px; line-height: 1.65; }
.support-delivery-funnel { display: grid; grid-template-columns: repeat(6,minmax(0,1fr)); gap: 6px; margin: 13px 0; }
.support-delivery-funnel article { position: relative; min-width: 0; padding: 11px; border: 1px solid var(--line); border-radius: 10px; background: var(--paper); }
.support-delivery-funnel article:not(:last-child)::after { content: "›"; position: absolute; z-index: 1; top: 27px; right: -7px; color: #b45309; font-size: 17px; font-weight: 900; }
.support-delivery-funnel small,.support-delivery-funnel strong,.support-delivery-funnel span,.support-delivery-funnel b { display: block; }
.support-delivery-funnel small { color: #b45309; font-size: 7px; font-weight: 900; }
.support-delivery-funnel strong { margin: 4px 0; font-size: 9px; }
.support-delivery-funnel span { color: var(--muted); font-size: 8px; }
.support-delivery-funnel b { margin-top: 8px; color: #92400e; font-size: 8px; }
.support-delivery-funnel p { margin: 5px 0 0; color: var(--muted); font-size: 7.5px; line-height: 1.5; }
.support-delivery-actions { display: grid; grid-template-columns: .75fr 1.25fr; gap: 12px; padding-top: 12px; border-top: 1px solid var(--line); }
.support-delivery-actions strong { font-size: 9px; }
.support-delivery-actions p { display: flex; flex-wrap: wrap; gap: 4px; margin: 7px 0 0; }
.support-delivery-actions span { padding: 4px 6px; border-radius: 999px; color: #92400e; background: #fef3c7; font-size: 7.5px; font-weight: 800; }
.support-delivery-actions ol { margin: 0; padding-left: 18px; color: var(--muted); font-size: 8px; line-height: 1.65; }
.support-delivery-note { margin-bottom: 0 !important; padding: 8px 10px; border-left: 3px solid #b45309; background: color-mix(in srgb,#f59e0b 8%,transparent); }
.support-evidence-overview { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin-top: 10px; padding: 10px; border-radius: 9px; background: var(--paper); font-size: 8px; }
.support-evidence-overview strong { margin-right: 4px; }
.support-evidence-overview span { padding: 4px 7px; border-radius: 999px; color: #1d4ed8; background: #dbeafe; font-weight: 900; }
.support-evidence-overview small { flex-basis: 100%; color: var(--muted); line-height: 1.5; }
.support-source-quality { margin: 16px 0; padding: 17px; border: 1px solid color-mix(in srgb,#2563eb 24%,var(--line)); border-radius: 14px; background: color-mix(in srgb,#2563eb 5%,var(--paper)); }
.support-source-quality-head { display: flex; justify-content: space-between; gap: 12px; align-items: center; }
.support-source-quality-head span { color: #1d4ed8; font-size: 8px; font-weight: 900; letter-spacing: .12em; }
.support-source-quality-head h3 { margin: 3px 0 0; font-size: 18px; }
.support-source-quality-head b { padding: 6px 9px; border-radius: 999px; color: #1e40af; background: #dbeafe; font-size: 9px; white-space: nowrap; }
.support-source-quality > p { margin: 10px 0 12px; color: var(--muted); font-size: 9px; line-height: 1.65; }
.support-source-quality-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 10px; }
.support-source-quality-grid article { padding: 12px; border: 1px solid var(--line); border-radius: 11px; background: var(--paper); }
.support-source-quality-grid small,.support-source-quality-grid strong,.support-source-quality-grid span { display: block; }
.support-source-quality-grid small { color: var(--muted); font-size: 8px; font-weight: 800; }
.support-source-quality-grid strong { margin: 5px 0; font-size: 22px; }
.support-source-quality-grid span { color: var(--muted); font-size: 8px; line-height: 1.45; }
.support-source-quality-actions { margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--line); }
.support-source-quality-actions strong { font-size: 9px; }
.support-source-quality-actions ul { margin: 7px 0 0; padding-left: 18px; color: var(--muted); font-size: 8.5px; line-height: 1.65; }
.national-policy-alignment { margin: 16px 0; padding: 17px; border: 1px solid color-mix(in srgb,#7c3aed 24%,var(--line)); border-radius: 14px; background: color-mix(in srgb,#7c3aed 5%,var(--paper)); }
.national-policy-head { display: flex; justify-content: space-between; gap: 12px; align-items: center; }
.national-policy-head span { color: #6d28d9; font-size: 8px; font-weight: 900; letter-spacing: .12em; }
.national-policy-head h3 { margin: 3px 0 0; font-size: 18px; }
.national-policy-head b { padding: 6px 9px; border-radius: 999px; color: #5b21b6; background: #ede9fe; font-size: 9px; white-space: nowrap; }
.national-policy-alignment > p { margin: 10px 0 12px; color: var(--muted); font-size: 9px; line-height: 1.65; }
.national-policy-summary { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 9px; margin-bottom: 12px; }
.national-policy-summary article { padding: 11px; border: 1px solid var(--line); border-radius: 11px; background: var(--paper); }
.national-policy-summary small,.national-policy-summary strong,.national-policy-summary span { display: block; }
.national-policy-summary small { color: var(--muted); font-size: 8px; font-weight: 800; }
.national-policy-summary strong { margin: 5px 0; font-size: 20px; }
.national-policy-summary span { color: var(--muted); font-size: 8px; line-height: 1.45; }
.national-policy-frameworks { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 10px; }
.national-policy-frameworks article { padding: 12px; border: 1px solid var(--line); border-radius: 12px; background: var(--paper); }
.national-policy-frameworks article.high { border-color: color-mix(in srgb,#dc2626 26%,var(--line)); }
.national-policy-frameworks header { display: flex; justify-content: space-between; gap: 8px; align-items: center; }
.national-policy-frameworks header span,.national-policy-frameworks header b { padding: 4px 7px; border-radius: 999px; font-size: 7.5px; font-weight: 900; }
.national-policy-frameworks header span { color: #5b21b6; background: #ede9fe; }
.national-policy-frameworks header b { color: #92400e; background: #fef3c7; }
.national-policy-frameworks h4 { margin: 9px 0 6px; font-size: 13px; }
.national-policy-frameworks p,.national-policy-frameworks dd { color: var(--muted); font-size: 8.5px; line-height: 1.55; }
.national-policy-frameworks dl { display: grid; gap: 5px; margin: 8px 0; }
.national-policy-frameworks dl div { display: grid; grid-template-columns: 58px 1fr; gap: 6px; }
.national-policy-frameworks dt { color: var(--ink); font-size: 8px; font-weight: 900; }
.national-policy-frameworks dd { margin: 0; }
.national-policy-tags { display: flex; flex-wrap: wrap; gap: 5px; margin: 9px 0; }
.national-policy-tags span { padding: 4px 7px; border-radius: 999px; color: #115e59; background: #ccfbf1; font-size: 7.5px; font-weight: 800; }
.national-policy-frameworks article > small { display: inline-block; color: #6d28d9; font-size: 8px; font-weight: 900; }
.citizen-national-policy-summary .national-policy-frameworks,
.citizen-national-policy-summary .national-funding-opportunities,
.citizen-national-policy-summary .national-subsidy-audit,
.citizen-national-policy-summary .national-priority-checklist,
.citizen-national-policy-summary .national-policy-next-actions {
  display: none;
}
.citizen-national-routing {
  margin-top: 12px;
  padding: 12px;
  border: 1px solid color-mix(in srgb,#0f766e 24%,var(--line));
  border-radius: 12px;
  background: color-mix(in srgb,#0f766e 5%,var(--paper));
}
.citizen-national-routing strong,
.citizen-national-routing p {
  display: block;
}
.citizen-national-routing strong {
  color: var(--ink);
  font-size: 10px;
}
.citizen-national-routing p {
  margin: 6px 0 10px;
  color: var(--muted);
  font-size: 9px;
  line-height: 1.65;
}
.citizen-national-routing button {
  padding: 9px 12px;
  border: 0;
  border-radius: 9px;
  color: #fff;
  background: #0f766e;
  font-size: 9px;
  font-weight: 900;
  cursor: pointer;
}
.citizen-national-routing button:hover {
  filter: brightness(.96);
}
.national-funding-opportunities { margin-top: 13px; padding-top: 12px; border-top: 1px solid var(--line); }
.national-funding-opportunities h4 { margin: 0 0 9px; font-size: 12px; }
.national-funding-opportunities > div { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 9px; }
.national-funding-opportunities article { padding: 10px; border: 1px solid var(--line); border-radius: 10px; background: var(--paper); }
.national-funding-opportunities strong,.national-funding-opportunities span,.national-funding-opportunities small { display: block; }
.national-funding-opportunities strong { font-size: 10px; }
.national-funding-opportunities span { margin-top: 3px; color: #6d28d9; font-size: 7.5px; font-weight: 900; }
.national-funding-opportunities p,.national-funding-opportunities small { color: var(--muted); font-size: 8px; line-height: 1.55; }
.national-funding-linked-programs { display: flex; flex-wrap: wrap; gap: 5px; margin: 8px 0; }
.national-funding-linked-programs b { padding: 4px 7px; border-radius: 999px; color: #115e59; background: #ccfbf1; font-size: 7.5px; line-height: 1.3; }
.national-subsidy-audit { margin-top: 13px; padding: 13px; border: 1px solid color-mix(in srgb,#0f766e 26%,var(--line)); border-radius: 12px; background: color-mix(in srgb,#0f766e 6%,var(--paper)); }
.national-subsidy-audit-head { display: flex; justify-content: space-between; gap: 10px; align-items: center; margin-bottom: 10px; }
.national-subsidy-audit-head span { color: #0f766e; font-size: 8px; font-weight: 900; letter-spacing: .12em; }
.national-subsidy-audit-head h4 { margin: 3px 0 0; font-size: 13px; }
.national-subsidy-audit-head b { padding: 6px 9px; border-radius: 999px; color: #115e59; background: #ccfbf1; font-size: 8px; white-space: nowrap; }
.national-subsidy-audit-kpis { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 8px; }
.national-subsidy-audit-kpis article { padding: 10px; border: 1px solid color-mix(in srgb,#0f766e 18%,var(--line)); border-radius: 10px; background: var(--paper); }
.national-subsidy-audit-kpis small,.national-subsidy-audit-kpis strong,.national-subsidy-audit-kpis span { display: block; }
.national-subsidy-audit-kpis small { color: var(--muted); font-size: 8px; font-weight: 900; }
.national-subsidy-audit-kpis strong { margin: 4px 0; color: var(--ink); font-size: 16px; }
.national-subsidy-audit-kpis span { color: var(--muted); font-size: 8px; line-height: 1.45; }
.national-subsidy-audit-themes { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 8px; margin-top: 9px; }
.national-subsidy-audit-themes article { padding: 9px; border-radius: 10px; background: color-mix(in srgb,#fff 78%,transparent); }
.national-subsidy-audit-themes strong { display: block; color: #0f766e; font-size: 9px; }
.national-subsidy-audit-themes p,.national-subsidy-audit > p { margin: 5px 0 0; color: var(--muted); font-size: 8.5px; line-height: 1.6; }
.national-priority-checklist { margin-top: 13px; padding: 13px; border: 1px solid color-mix(in srgb,#d97706 28%,var(--line)); border-radius: 12px; background: color-mix(in srgb,#d97706 6%,var(--paper)); }
.national-priority-checklist-head { display: flex; justify-content: space-between; gap: 10px; align-items: center; margin-bottom: 10px; }
.national-priority-checklist-head span { color: #b45309; font-size: 8px; font-weight: 900; letter-spacing: .12em; }
.national-priority-checklist-head h4 { margin: 3px 0 0; font-size: 13px; }
.national-priority-checklist-head b { padding: 6px 9px; border-radius: 999px; color: #92400e; background: #fef3c7; font-size: 8px; white-space: nowrap; }
.national-priority-checklist > div:not(.national-priority-checklist-head) { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 9px; }
.national-priority-checklist article { padding: 11px; border: 1px solid color-mix(in srgb,#d97706 20%,var(--line)); border-radius: 11px; background: var(--paper); }
.national-priority-checklist small,.national-priority-checklist strong,.national-priority-checklist span { display: block; }
.national-priority-checklist small { color: #b45309; font-size: 8px; font-weight: 900; }
.national-priority-checklist strong { margin: 4px 0; color: var(--ink); font-size: 10px; }
.national-priority-checklist span,.national-priority-checklist p,.national-priority-checklist li,.national-priority-checklist > p { color: var(--muted); font-size: 8px; line-height: 1.55; }
.national-priority-checklist ul { display: grid; gap: 4px; margin: 8px 0 0; padding-left: 16px; }
.national-policy-next-actions { margin-top: 12px; padding: 11px; border-radius: 10px; background: color-mix(in srgb,#0f172a 5%,var(--paper)); }
.national-policy-next-actions strong { font-size: 9px; }
.national-policy-next-actions ul { margin: 7px 0 0; padding-left: 18px; color: var(--muted); font-size: 8.5px; line-height: 1.65; }
.senior-welfare-focus { margin: 16px 0; padding: 17px; border: 1px solid color-mix(in srgb,#7c3aed 28%,var(--line)); border-radius: 14px; background: color-mix(in srgb,#7c3aed 6%,var(--paper)); }
.senior-welfare-focus-head { display: flex; justify-content: space-between; gap: 12px; align-items: center; }
.senior-welfare-focus-head span { color: #6d28d9; font-size: 8px; font-weight: 900; letter-spacing: .12em; }
.senior-welfare-focus-head h3 { margin: 3px 0 0; font-size: 18px; }
.senior-welfare-focus-head b { padding: 6px 9px; border-radius: 999px; color: #5b21b6; background: #ede9fe; font-size: 9px; white-space: nowrap; }
.senior-welfare-focus > p { color: var(--muted); font-size: 9px; line-height: 1.65; }
.senior-welfare-focus-actions { display: flex; flex-wrap: wrap; gap: 8px; margin: 10px 0 12px; }
.senior-welfare-focus-actions button { padding: 9px 12px; border: 0; border-radius: 9px; color: #fff; background: #7c3aed; font-size: 9px; font-weight: 900; cursor: pointer; }
.senior-welfare-focus-actions button:last-child { color: #5b21b6; background: #ede9fe; }
.senior-welfare-focus-grid { display: grid; grid-template-columns: .8fr 1fr 1fr; gap: 10px; }
.senior-welfare-focus-grid article { padding: 12px; border: 1px solid var(--line); border-radius: 10px; background: var(--paper); }
.senior-welfare-focus-grid h4 { margin: 0 0 8px; font-size: 11px; }
.senior-welfare-focus-grid ul,.senior-welfare-focus-grid ol { margin: 0; padding-left: 18px; color: var(--muted); font-size: 8.5px; line-height: 1.65; }
.senior-welfare-focus-grid p { display: flex; flex-wrap: wrap; gap: 5px; margin: 0; }
.senior-welfare-focus-grid p span { padding: 4px 7px; border-radius: 999px; color: #5b21b6; background: #ede9fe; font-size: 8px; font-weight: 800; }
.child-family-focus { margin: 16px 0; padding: 17px; border: 1px solid color-mix(in srgb,#db2777 28%,var(--line)); border-radius: 14px; background: color-mix(in srgb,#db2777 6%,var(--paper)); }
.child-family-focus-head { display: flex; justify-content: space-between; gap: 12px; align-items: center; }
.child-family-focus-head span { color: #be185d; font-size: 8px; font-weight: 900; letter-spacing: .12em; }
.child-family-focus-head h3 { margin: 3px 0 0; font-size: 18px; }
.child-family-focus-head b { padding: 6px 9px; border-radius: 999px; color: #9d174d; background: #fce7f3; font-size: 9px; white-space: nowrap; }
.child-family-focus > p { color: var(--muted); font-size: 9px; line-height: 1.65; }
.child-family-focus-actions { display: flex; flex-wrap: wrap; gap: 8px; margin: 10px 0 12px; }
.child-family-focus-actions button { padding: 9px 12px; border: 0; border-radius: 9px; color: #fff; background: #db2777; font-size: 9px; font-weight: 900; cursor: pointer; }
.child-family-focus-actions button:last-child { color: #9d174d; background: #fce7f3; }
.child-family-focus-grid { display: grid; grid-template-columns: .8fr 1fr 1fr; gap: 10px; }
.child-family-focus-grid article { padding: 12px; border: 1px solid var(--line); border-radius: 10px; background: var(--paper); }
.child-family-focus-grid h4 { margin: 0 0 8px; font-size: 11px; }
.child-family-focus-grid ul,.child-family-focus-grid ol { margin: 0; padding-left: 18px; color: var(--muted); font-size: 8.5px; line-height: 1.65; }
.child-family-focus-grid p { display: flex; flex-wrap: wrap; gap: 5px; margin: 0; }
.child-family-focus-grid p span { padding: 4px 7px; border-radius: 999px; color: #9d174d; background: #fce7f3; font-size: 8px; font-weight: 800; }
.citizen-support-controls label { display: grid; gap: 5px; color: var(--muted); font-size: 9px; font-weight: 800; }
.citizen-support-controls input { width: 100%; padding: 10px 12px; border: 1px solid var(--line); border-radius: 10px; color: var(--ink); background: var(--paper); font: inherit; font-size: 11px; }
.citizen-support-controls > div { display: flex; flex-wrap: wrap; gap: 6px; align-items: end; }
.citizen-support-controls button { padding: 8px 10px; border: 1px solid var(--line); border-radius: 999px; color: var(--ink); background: var(--paper); font-size: 9px; font-weight: 800; cursor: pointer; }
.citizen-support-controls button.active { color: #fff; border-color: #15803d; background: #15803d; }
.citizen-support-controls button b { margin-left: 3px; }
.citizen-support-summary { display: grid; grid-template-columns: repeat(4,1fr); gap: 8px; margin-bottom: 15px; }
.citizen-support-summary article { padding: 11px; border-radius: 10px; background: var(--soft); }
.citizen-support-summary strong,.citizen-support-summary span { display: block; }
.citizen-support-summary span { margin-top: 3px; color: #15803d; font-size: 10px; font-weight: 900; }
.citizen-support-summary p { margin: 5px 0 0; color: var(--muted); font-size: 8.5px; line-height: 1.5; }
.citizen-support-active-filter { margin: -6px 0 14px; padding: 9px 11px; border-left: 3px solid #0f766e; color: #115e59; background: #ccfbf1; font-size: 9px; font-weight: 800; line-height: 1.55; }
.life-issue-decision-card { margin: 0 0 14px; padding: 15px; border: 1px solid #0f766e; border-radius: 13px; background: color-mix(in srgb,#0f766e 7%,var(--paper)); }
.life-issue-decision-head { display: flex; justify-content: space-between; gap: 12px; align-items: center; }
.life-issue-decision-head span { color: #0f766e; font-size: 8px; font-weight: 900; letter-spacing: .12em; }
.life-issue-decision-head h3 { margin: 3px 0 0; font-size: 17px; }
.life-issue-decision-head b { padding: 6px 9px; border-radius: 999px; color: #115e59; background: #ccfbf1; font-size: 9px; white-space: nowrap; }
.life-issue-decision-card > p { margin: 8px 0 12px; color: var(--ink); font-size: 10px; font-weight: 800; line-height: 1.65; }
.life-issue-decision-grid { display: grid; grid-template-columns: .85fr 1fr 1fr; gap: 10px; }
.life-issue-decision-grid article { padding: 11px; border: 1px solid var(--line); border-radius: 10px; background: var(--paper); }
.life-issue-decision-grid h4 { margin: 0 0 8px; font-size: 10px; }
.life-issue-decision-grid p { display: flex; flex-wrap: wrap; gap: 5px; margin: 0; color: var(--muted); font-size: 8.5px; line-height: 1.6; }
.life-issue-decision-grid p span { padding: 4px 7px; border-radius: 999px; color: #115e59; background: #ccfbf1; font-size: 8px; font-weight: 800; }
.life-issue-decision-grid ul { margin: 0; padding-left: 17px; color: var(--muted); font-size: 8.5px; line-height: 1.65; }
.life-issue-decision-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.life-issue-decision-actions button { padding: 9px 12px; border: 0; border-radius: 9px; color: #fff; background: #0f766e; font-size: 9px; font-weight: 900; cursor: pointer; }
.life-issue-decision-actions button:last-child { color: #115e59; background: #ccfbf1; }
.citizen-support-results { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 10px; }
.citizen-support-results > article { padding: 16px; border: 1px solid var(--line); border-radius: 12px; }
.citizen-support-card-head { display: flex; justify-content: space-between; gap: 8px; }
.citizen-support-card-head span,.citizen-support-card-head b { padding: 3px 7px; border-radius: 999px; font-size: 8px; }
.citizen-support-card-head span { color: #166534; background: #dcfce7; font-weight: 900; }
.citizen-support-card-head b { color: #1d4ed8; background: #dbeafe; }
.citizen-support-link-level { display: inline-flex; flex-wrap: wrap; gap: 5px; align-items: center; margin: -2px 0 10px; padding: 6px 8px; border-radius: 9px; font-size: 8px; font-weight: 900; }
.citizen-support-link-level span { font-weight: 700; opacity: .82; }
.citizen-support-link-level.article { color: #065f46; background: #d1fae5; }
.citizen-support-link-level.list { color: #1e40af; background: #dbeafe; }
.citizen-support-link-level.category { color: #92400e; background: #fef3c7; }
.citizen-support-national-fit { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin: -4px 0 10px; padding: 7px 9px; border-radius: 9px; color: #5b21b6; background: #ede9fe; font-size: 8px; }
.citizen-support-national-fit strong { font-weight: 900; }
.citizen-support-national-fit span { font-weight: 900; }
.citizen-support-national-fit small { color: #6d28d9; font-weight: 700; }
.citizen-support-results h3 { margin: 9px 0; font-size: 15px; }
.citizen-support-results dl { display: grid; gap: 6px; margin: 0; }
.citizen-support-results dl div { display: grid; grid-template-columns: 76px 1fr; gap: 8px; padding-top: 6px; border-top: 1px solid var(--line); font-size: 9px; line-height: 1.5; }
.citizen-support-results dt { color: var(--muted); font-weight: 800; }
.citizen-support-results dd { margin: 0; }
.citizen-support-meta { display: flex; flex-wrap: wrap; gap: 5px; margin: 11px 0; }
.citizen-support-meta span,.citizen-support-meta small { padding: 4px 6px; border-radius: 6px; background: var(--soft); color: var(--muted); font-size: 8px; }
.citizen-support-reach { display: flex; flex-wrap: wrap; gap: 5px; align-items: center; margin: 0 0 10px; padding: 7px; border-radius: 8px; background: var(--soft); font-size: 8px; }
.citizen-support-reach b { margin-right: 2px; }
.citizen-support-reach span { color: #166534; font-weight: 800; }
.citizen-support-reach span.unknown { color: #92400e; }
.citizen-support-kpi-template { margin: 0 0 10px; padding: 10px; border-left: 3px solid #7c3aed; border-radius: 7px; background: color-mix(in srgb,#7c3aed 6%,var(--paper)); }
.citizen-support-kpi-template > div { display: flex; justify-content: space-between; gap: 8px; align-items: center; }
.citizen-support-kpi-template strong { font-size: 9px; }
.citizen-support-kpi-template > div span { color: #6d28d9; font-size: 7.5px; font-weight: 900; }
.citizen-support-kpi-template p { display: flex; flex-wrap: wrap; gap: 4px; margin: 6px 0 0; color: var(--muted); font-size: 8px; line-height: 1.5; }
.citizen-support-kpi-template p b { flex-basis: 100%; color: var(--ink); }
.citizen-support-kpi-template p span { padding: 3px 6px; border-radius: 999px; color: #5b21b6; background: #ede9fe; font-weight: 800; }
.citizen-support-kpi-template small { display: block; margin-top: 6px; color: var(--muted); font-size: 7.5px; line-height: 1.5; }
.citizen-support-evidence { margin: 0 0 10px; padding: 10px; border-left: 3px solid #2563eb; border-radius: 7px; background: color-mix(in srgb,#2563eb 6%,var(--paper)); }
.citizen-support-evidence > span { color: #1d4ed8; font-size: 7.5px; font-weight: 900; }
.citizen-support-evidence > strong { display: block; margin: 3px 0; font-size: 16px; }
.citizen-support-evidence > b { font-size: 8px; }
.citizen-support-evidence p { margin: 5px 0; color: var(--muted); font-size: 8px; line-height: 1.55; }
.citizen-support-evidence small { color: var(--muted); font-size: 7.5px; }
.citizen-support-evidence small a { font-size: inherit; }
.citizen-support-evidence.missing { border-left-color: var(--line); background: var(--soft); }
.citizen-support-results a { display: inline-block; color: #15803d; font-size: 9px; font-weight: 900; text-decoration: none; }
.citizen-support-results a:hover { text-decoration: underline; }
.citizen-support-caution { margin: 14px 0 0; padding: 10px 12px; border-left: 3px solid #b45309; color: var(--muted); background: rgba(180,83,9,.06); font-size: 9px; line-height: 1.6; }
@media(max-width:900px) {
  .citizen-support-controls,.citizen-support-summary { grid-template-columns: repeat(2,1fr); }
  .support-source-quality-grid { grid-template-columns: repeat(2,1fr); }
  .national-policy-summary,.national-policy-frameworks,.national-funding-opportunities > div,.national-subsidy-audit-kpis,.national-subsidy-audit-themes,.national-priority-checklist > div:not(.national-priority-checklist-head) { grid-template-columns: repeat(2,1fr); }
  .support-delivery-funnel { grid-template-columns: repeat(3,1fr); }
  .support-delivery-funnel article::after { display: none; }
  .senior-welfare-focus-grid { grid-template-columns: 1fr; }
}
@media(max-width:620px) {
  .citizen-support-navigator { padding: 14px; }
  .citizen-support-head,.support-source-quality-grid,.national-policy-summary,.national-policy-frameworks,.national-funding-opportunities > div,.national-subsidy-audit-kpis,.national-subsidy-audit-themes,.national-priority-checklist > div:not(.national-priority-checklist-head),.citizen-support-controls,.citizen-support-summary,.citizen-support-results { grid-template-columns: 1fr; }
  .citizen-support-head { padding: 18px; }
  .citizen-support-head aside { min-width: 0; text-align: left; }
  .citizen-support-results dl div { grid-template-columns: 1fr; gap: 2px; }
  .support-delivery-title,.support-source-quality-head,.national-policy-head,.national-subsidy-audit-head,.national-priority-checklist-head,.senior-welfare-focus-head { align-items: flex-start; flex-direction: column; }
  .support-delivery-funnel,.support-delivery-actions { grid-template-columns: 1fr; }
}

/* 2026-06 UX readability pass: expanded dashboards */
:root {
  --text-body: 14px;
  --text-support: 12px;
  --text-label: 11px;
  --space-card: clamp(18px, 2.2vw, 28px);
  --space-section: clamp(22px, 3vw, 38px);
}

body {
  font-size: var(--text-body);
  line-height: 1.65;
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
}

main {
  width: min(100%, calc(var(--content-max) + 84px));
  margin-inline: auto;
}

.panel,
.insight,
.kpi {
  border-radius: var(--radius-card);
}

.living-society-panel .ls-group-head {
  margin-top: var(--space-section);
  padding-bottom: 12px;
}

.living-society-panel .ls-group-head h2 {
  font-size: clamp(20px, 2vw, 26px);
}

.living-society-panel .ls-group-head p {
  margin-top: 6px;
  font-size: 13px;
  line-height: 1.65;
}

.citizen-support-navigator {
  padding: clamp(18px, 2.5vw, 32px);
  border-radius: 24px;
  box-shadow: var(--shadow);
}

.citizen-support-head {
  padding: clamp(24px, 3vw, 38px);
  border-radius: 20px;
}

.citizen-support-head span,
.support-delivery-title span,
.national-policy-head span,
.national-subsidy-audit-head span,
.national-priority-checklist-head span {
  font-size: var(--text-label);
}

.citizen-support-head p {
  max-width: 68ch;
  font-size: 14px;
  line-height: 1.8;
}

.citizen-support-head aside {
  min-width: 170px;
  padding: 18px;
}

.citizen-support-head aside strong {
  font-size: 36px;
}

.support-delivery-monitor {
  margin: 22px 0;
  padding: clamp(18px, 2vw, 26px);
  border-radius: 18px;
}

.support-source-quality {
  margin: 22px 0;
  padding: clamp(18px, 2vw, 26px);
  border-radius: 18px;
}

.support-delivery-title h3,
.support-source-quality-head h3,
.national-policy-head h3,
.national-subsidy-audit-head h4,
.national-priority-checklist-head h4 {
  font-size: clamp(20px, 2vw, 25px);
}

.support-delivery-title > b,
.support-source-quality-head b,
.national-policy-head b,
.national-subsidy-audit-head b,
.national-priority-checklist-head b {
  padding: 8px 12px;
  font-size: 12px;
}

.support-delivery-monitor > p,
.support-source-quality > p,
.national-policy-alignment > p,
.national-subsidy-audit > p,
.national-priority-checklist > p,
.support-delivery-note {
  font-size: 13px;
  line-height: 1.8;
}

.national-policy-alignment {
  margin: 22px 0;
  padding: clamp(18px, 2vw, 26px);
  border-radius: 18px;
}

.national-policy-summary,
.national-policy-frameworks,
.national-funding-opportunities > div,
.national-subsidy-audit-kpis,
.national-subsidy-audit-themes,
.national-priority-checklist > div:not(.national-priority-checklist-head) {
  gap: 12px;
}

.national-policy-summary article,
.national-policy-frameworks article,
.national-funding-opportunities article,
.national-subsidy-audit-kpis article,
.national-subsidy-audit-themes article,
.national-priority-checklist article {
  padding: 16px;
  border-radius: 14px;
}

.national-policy-summary small,
.national-policy-summary span,
.national-policy-frameworks p,
.national-policy-frameworks dd,
.national-funding-opportunities p,
.national-funding-opportunities small,
.national-subsidy-audit-kpis small,
.national-subsidy-audit-kpis span,
.national-subsidy-audit-themes p,
.national-priority-checklist span,
.national-priority-checklist p,
.national-priority-checklist li,
.national-policy-next-actions ul {
  font-size: 12px;
  line-height: 1.7;
}

.national-policy-frameworks h4 {
  font-size: 16px;
  line-height: 1.45;
}

.support-source-quality-grid {
  gap: 12px;
}

.support-source-quality-grid article {
  padding: 16px;
  border-radius: 14px;
}

.support-source-quality-grid small,
.support-source-quality-grid span {
  font-size: 12px;
}

.support-source-quality-grid strong {
  font-size: 28px;
}

.support-source-quality-actions strong {
  font-size: 13px;
}

.support-source-quality-actions ul {
  font-size: 12px;
  line-height: 1.75;
}

.support-delivery-funnel {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
  margin: 20px 0;
}

.support-delivery-funnel article {
  min-height: 176px;
  padding: 16px;
  border-radius: 14px;
}

.support-delivery-funnel article::after {
  display: none;
}

.support-delivery-funnel small {
  font-size: 10px;
}

.support-delivery-funnel strong {
  margin: 7px 0;
  font-size: 15px;
  line-height: 1.45;
}

.support-delivery-funnel span,
.support-delivery-funnel b {
  font-size: 12px;
}

.support-delivery-funnel p {
  margin-top: 9px;
  font-size: 11px;
  line-height: 1.65;
}

.support-delivery-actions {
  gap: 20px;
  padding-top: 18px;
}

.support-delivery-actions strong {
  font-size: 13px;
}

.support-delivery-actions span {
  padding: 6px 9px;
  font-size: 11px;
}

.support-delivery-actions ol {
  font-size: 12px;
  line-height: 1.8;
}

.support-evidence-overview {
  gap: 8px;
  margin-top: 16px;
  padding: 14px;
  font-size: 12px;
}

.support-evidence-overview span {
  padding: 6px 9px;
}

.support-evidence-overview small {
  font-size: 11px;
}

.citizen-support-controls {
  margin: 22px 0;
}

.citizen-support-controls label {
  gap: 8px;
  font-size: 12px;
}

.citizen-support-controls input,
.citizen-support-controls button {
  min-height: 44px;
  font-size: 13px;
}

.citizen-support-controls button {
  padding: 10px 14px;
}

.citizen-support-summary {
  gap: 12px;
  margin-bottom: 22px;
}

.citizen-support-summary article {
  padding: 16px;
  border: 1px solid var(--line);
  border-radius: 14px;
}

.citizen-support-summary strong {
  font-size: 14px;
}

.citizen-support-summary span {
  margin-top: 5px;
  font-size: 13px;
}

.citizen-support-summary p {
  margin-top: 8px;
  font-size: 12px;
  line-height: 1.65;
}

.citizen-support-results {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 480px), 1fr));
  gap: 16px;
}

.citizen-support-results > article {
  padding: clamp(18px, 2vw, 24px);
  border-radius: 16px;
  box-shadow: 0 5px 18px rgba(15, 39, 66, .055);
}

.citizen-support-card-head {
  align-items: flex-start;
}

.citizen-support-card-head span,
.citizen-support-card-head b {
  padding: 5px 9px;
  font-size: 11px;
}

.citizen-support-results h3 {
  margin: 14px 0;
  font-size: clamp(18px, 1.7vw, 22px);
  line-height: 1.45;
}

.citizen-support-link-level {
  margin-bottom: 14px;
  padding: 8px 10px;
  font-size: 11px;
}

.citizen-support-results dl {
  gap: 0;
}

.citizen-support-results dl div {
  grid-template-columns: 104px 1fr;
  gap: 14px;
  padding: 11px 0;
  font-size: 13px;
  line-height: 1.7;
}

.citizen-support-meta {
  gap: 7px;
  margin: 15px 0;
}

.citizen-support-meta span,
.citizen-support-meta small,
.citizen-support-reach {
  font-size: 11px;
}

.citizen-support-meta span,
.citizen-support-meta small {
  padding: 6px 8px;
}

.citizen-support-reach {
  gap: 8px;
  padding: 11px;
}

.citizen-support-evidence {
  padding: 14px;
  border-radius: 10px;
}

.citizen-support-evidence > span,
.citizen-support-evidence > b,
.citizen-support-evidence small {
  font-size: 11px;
}

.citizen-support-evidence > strong {
  margin: 5px 0;
  font-size: 22px;
}

.citizen-support-evidence p {
  margin: 8px 0;
  font-size: 12px;
  line-height: 1.7;
}

.citizen-support-results a {
  min-height: 44px;
  padding: 11px 0;
  font-size: 13px;
}

.citizen-support-caution {
  margin-top: 20px;
  padding: 14px 16px;
  font-size: 12px;
  line-height: 1.75;
}

/* Common hierarchy for recently expanded OS modules */
:is(
  .strategy-room-card, .integrated-os-card, .economy-command-card,
  .own-source-card, .trading-room-card, .future-center-card,
  .city-health-card, .policy-roi-card, .housing-card,
  .admin-dx-card, .workforce-card
) {
  padding: var(--space-card);
  border-radius: 20px;
  box-shadow: 0 5px 20px rgba(15, 39, 66, .05);
}

:is(
  .strategy-room-card, .integrated-os-card, .economy-command-card,
  .own-source-card, .trading-room-card, .future-center-card,
  .city-health-card, .policy-roi-card, .housing-card,
  .admin-dx-card, .workforce-card
) header h2,
:is(
  .strategy-room-card, .integrated-os-card, .economy-command-card,
  .own-source-card, .trading-room-card, .future-center-card,
  .city-health-card, .policy-roi-card, .housing-card,
  .admin-dx-card, .workforce-card
) header h3 {
  font-size: clamp(19px, 2vw, 25px);
  line-height: 1.4;
}

:is(
  .strategy-room-card, .integrated-os-card, .economy-command-card,
  .own-source-card, .trading-room-card, .future-center-card,
  .city-health-card, .policy-roi-card, .housing-card,
  .admin-dx-card, .workforce-card
) :is(p, dd, li) {
  line-height: 1.7;
}

@media (max-width: 760px) {
  main {
    padding-inline: 12px;
  }

  .citizen-support-head {
    grid-template-columns: 1fr;
  }

  .citizen-support-head aside {
    min-width: 0;
    text-align: left;
  }

  .support-delivery-funnel {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .life-issue-category-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .support-delivery-actions,
  .support-source-quality-grid,
  .senior-welfare-focus-grid,
  .child-family-focus-grid,
  .life-issue-decision-grid,
  .citizen-support-controls,
  .citizen-support-summary {
    grid-template-columns: 1fr;
  }

  .citizen-support-controls > div {
    flex-wrap: nowrap;
    overflow-x: auto;
    padding-bottom: 6px;
    scroll-snap-type: x proximity;
  }

  .citizen-support-controls button {
    flex: 0 0 auto;
    scroll-snap-align: start;
  }

  .citizen-support-results {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 520px) {
  body,
  main {
    width: 100%;
    max-width: 100vw;
    overflow-x: clip;
  }

  .living-society-panel,
  .living-society-panel > *,
  .living-society-panel .uto-question-hero,
  .living-society-panel .uto-question-hero > div,
  .living-society-panel .uto-question-hero aside {
    width: 100%;
    min-width: 0;
    max-width: 100%;
  }

  .living-society-panel {
    overflow: hidden;
  }

  .living-society-panel .uto-question-hero {
    grid-template-columns: minmax(0, 1fr);
    gap: 22px;
    width: calc(100vw - 24px);
    max-width: calc(100vw - 24px);
    padding: 24px 20px;
  }

  .living-society-panel .uto-question-hero h2 {
    max-width: 100%;
    font-size: clamp(27px, 8.5vw, 34px);
    line-height: 1.25;
    letter-spacing: -.025em;
    overflow-wrap: anywhere;
  }

  .living-society-panel .uto-question-hero > div > p {
    font-size: 14px;
    line-height: 1.85;
  }

  .citizen-support-navigator {
    margin-inline: -4px;
    padding: 14px;
    border-radius: 18px;
  }

  .citizen-support-head,
  .support-source-quality,
  .support-delivery-monitor,
  .senior-welfare-focus,
  .child-family-focus,
  .citizen-support-results > article {
    padding: 18px;
  }

  .support-delivery-funnel {
    grid-template-columns: 1fr;
  }

  .life-issue-category-grid {
    grid-template-columns: 1fr;
  }

  .support-delivery-funnel article {
    min-height: 0;
  }

  .citizen-support-results dl div {
    grid-template-columns: 1fr;
    gap: 3px;
  }

  .citizen-support-results dt {
    font-size: 11px;
  }
}

/* 主要施策 年度推移チャート */
.mpt-legend { display: flex; flex-wrap: wrap; gap: 14px; align-items: center; margin: 4px 0 10px; font-size: 11.5px; color: var(--muted); }
.mpt-legend span { display: inline-flex; align-items: center; gap: 6px; }
.mpt-lg-budget::before { content: ""; width: 12px; height: 12px; border-radius: 3px; background: #cbd5e1; }
.mpt-lg-settle::before { content: ""; width: 12px; height: 12px; border-radius: 3px; background: #10b981; }
.mpt-chart { display: flex; align-items: flex-end; gap: 12px; height: 190px; padding-top: 22px; }
.mpt-col { flex: 1 1 0; display: flex; flex-direction: column; align-items: center; justify-content: flex-end; height: 100%; gap: 5px; }
.mpt-rate { font-size: 11px; font-weight: 800; color: #047857; }
.mpt-bars { position: relative; display: flex; align-items: flex-end; justify-content: center; gap: 3px; width: 100%; height: 100%; }
.mpt-bars i { display: block; width: 42%; max-width: 26px; border-radius: 4px 4px 0 0; min-height: 2px; }
.mpt-budget { background: #cbd5e1; }
.mpt-settle { background: linear-gradient(180deg, #10b981, #059669); }
.mpt-amt { font-size: 11px; font-weight: 800; color: var(--text, #0f2742); }
.mpt-yr { font-size: 11px; color: var(--muted); }
@media (max-width: 640px) { .mpt-chart { gap: 7px; height: 160px; } .mpt-bars i { max-width: 16px; } }

/* 類似団体（Ⅰ-1）平均との 住民1人当たり性質別歳出 比較 */
.sc-legend { display: flex; justify-content: space-between; align-items: center; max-width: 560px; margin: 4px auto 12px; font-size: 11px; color: var(--muted); }
.sc-legend .sc-mid { font-weight: 800; color: var(--text, #0f2742); }
.sc-rows { display: flex; flex-direction: column; gap: 9px; }
.sc-row { display: grid; grid-template-columns: 118px 1fr 52px 168px; align-items: center; gap: 12px; }
.sc-name { font-size: 12.5px; font-weight: 700; color: var(--text, #0f2742); }
.sc-track { position: relative; height: 16px; border-radius: 8px; background: var(--surface-subtle, #f5f7fa); }
.sc-center { position: absolute; left: 50%; top: -3px; bottom: -3px; width: 2px; background: #94a3b8; transform: translateX(-1px); }
.sc-fill { position: absolute; top: 0; height: 100%; min-width: 2px; }
.sc-fill.sc-under { background: linear-gradient(90deg, #0ea5e9, #38bdf8); border-radius: 8px 0 0 8px; }
.sc-fill.sc-over { background: linear-gradient(90deg, #f472b6, #db2777); border-radius: 0 8px 8px 0; }
.sc-ratio { font-size: 13px; font-weight: 800; text-align: right; }
.sc-ratio.under { color: #0369a1; }
.sc-ratio.over { color: #be185d; }
.sc-vals { font-size: 12px; font-weight: 700; color: var(--text, #0f2742); text-align: right; }
.sc-vals small { font-size: 11px; font-weight: 500; color: var(--muted); }
@media (max-width: 760px) { .sc-row { grid-template-columns: 90px 1fr 44px; } .sc-vals { display: none; } }

/* ===== 折れ線グラフの高度化（滑らか曲線・面グラデ・Y軸ラベル・最新値バッジ） ===== */
.chart-line { fill: none; stroke-linecap: round; stroke-linejoin: round; }
.chart-axis-label { fill: var(--muted); font-size: 9.5px; font-weight: 600; }
.chart-danger-line { stroke: #c4362e; stroke-dasharray: 6 5; stroke-width: 1.4; }
.chart-danger-label { fill: #c4362e; font-size: 10px; font-weight: 800; }
.svg-series-point.is-last { stroke-width: 3; }
.chart-last-badge rect { filter: drop-shadow(0 2px 5px rgba(15, 39, 66, 0.28)); }
.chart-last-badge text { fill: #fff; font-size: 10.5px; font-weight: 800; letter-spacing: .2px; }
:root[data-theme="dark"] .chart-axis-label { fill: #8492a3; }

/* ===== チャート表示アニメーション（動きで推移を直感的に。reduced-motion時は無効） ===== */
@media (prefers-reduced-motion: no-preference) {
  @keyframes cl-draw  { from { stroke-dashoffset: 1600; } to { stroke-dashoffset: 0; } }
  @keyframes cl-draws { from { stroke-dashoffset: 600; }  to { stroke-dashoffset: 0; } }
  @keyframes cl-fade  { from { opacity: 0; } to { opacity: 1; } }
  @keyframes cl-pop   { 0% { opacity: 0; transform: scale(0); } 70% { opacity: 1; transform: scale(1.18); } 100% { transform: scale(1); } }
  @keyframes cl-rise  { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }
  @keyframes cl-growx { from { transform: scaleX(0); } to { transform: scaleX(1); } }
  @keyframes cl-growy { from { transform: scaleY(0); } to { transform: scaleY(1); } }

  /* 折れ線：実線は描画、点線(類似・推計)はフェード */
  .os-chart svg .chart-line.series-uto,
  .os-chart svg .chart-line.series-pref {
    stroke-dasharray: 1600;
    animation: cl-draw 1.15s cubic-bezier(.4, 0, .2, 1) both;
  }
  .os-chart svg .chart-line.series-peer,
  .os-chart svg .chart-line.series-projection { animation: cl-fade .9s ease-out .45s both; }
  /* 面グラデ：フェードイン */
  .os-chart svg path[fill^="url"] { animation: cl-fade 1s ease-out .15s both; }
  /* データ点：線を描いた後にポップ */
  .os-chart svg .svg-series-point { transform-box: fill-box; transform-origin: center; animation: cl-pop .5s cubic-bezier(.34, 1.56, .64, 1) .9s both; }
  /* 最新値バッジ */
  .os-chart svg .chart-last-badge { animation: cl-fade .5s ease-out 1.05s both; }
  /* 積み上げ棒：下からせり上がりフェード */
  .os-chart svg rect[rx] { transform-box: fill-box; transform-origin: bottom; animation: cl-rise .6s ease-out both; }
  /* 積み上げ棒の各セグメント：左の列から、下の段から順番に積み上がる */
  .os-chart svg rect.stack-seg {
    transform-box: fill-box; transform-origin: bottom;
    animation: cl-growy .5s cubic-bezier(.16,1,.3,1) both;
    animation-delay: calc(var(--col, 0) * .08s + var(--seg, 0) * .07s);
  }
  /* ウォーターフォール：左から順番に */
  .os-chart svg rect.wf-bar {
    transform-box: fill-box; transform-origin: bottom;
    animation: cl-rise .5s ease-out both;
    animation-delay: calc(var(--col, 0) * .1s);
  }

  /* スパークライン：小さく描画 */
  .sparkline .spark-line { stroke-dasharray: 600; animation: cl-draws 1s ease-out both; }
  .sparkline .spark-area { animation: cl-fade .9s ease-out .1s both; }
  .sparkline circle { transform-box: fill-box; transform-origin: center; animation: cl-pop .45s cubic-bezier(.34, 1.56, .64, 1) .8s both; }

  /* CSS製バー：横バーは左から、縦バーは下からグロー */
  .sc-fill { animation: cl-growx .8s cubic-bezier(.4, 0, .2, 1) both; }
  .sc-fill.sc-under { transform-origin: right center; }
  .sc-fill.sc-over { transform-origin: left center; }
  .en-bar i, .ctr-kw-bar i, .ct-ca-bar i, .mp2-dbar i, .cn-bar i, .ph-bar-fill {
    transform-origin: left center; animation: cl-growx .75s cubic-bezier(.4, 0, .2, 1) both;
  }
  .mpt-bars i, .en-col i, .b8-tcol i, .cn-chart .en-col i {
    transform-origin: bottom; animation: cl-growy .7s cubic-bezier(.4, 0, .2, 1) both;
  }
}

/* ===== スクロール連動の登場フェード（画面に入った要素だけがふわっと表示） ===== */
@media (prefers-reduced-motion: no-preference) {
  .reveal-on-scroll {
    opacity: 0;
    transform: translateY(18px);
    transition: opacity .5s cubic-bezier(.16, 1, .3, 1), transform .5s cubic-bezier(.16, 1, .3, 1);
    will-change: opacity, transform;
  }
  .reveal-on-scroll.is-revealed {
    opacity: 1;
    transform: translateY(0);
  }
  /* 内部のチャート等のアニメは、ブロックが画面に入ってから再生（描画と登場を同期） */
  .reveal-on-scroll * { animation-play-state: paused; }
  .reveal-on-scroll.is-revealed * { animation-play-state: running; }
}

/* ===== 前年比トレンド（上昇=浮く / 下降=沈む） ===== */
.uto-kpi-value-row { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.uto-kpi-trend { display: inline-flex; align-items: center; gap: 4px; font-size: 11.5px; font-weight: 800; padding: 3px 9px; border-radius: 999px; white-space: nowrap; }
.uto-kpi-trend i { font-style: normal; font-size: 9px; line-height: 1; }
.uto-kpi-trend.up { color: #047857; background: rgba(16, 185, 129, .13); }
.uto-kpi-trend.down { color: #b91c1c; background: rgba(239, 68, 68, .12); }
@media (prefers-reduced-motion: no-preference) {
  @keyframes kpi-float-up { 0% { opacity: 0; transform: translateY(9px); } 62% { opacity: 1; transform: translateY(-3px); } 100% { transform: translateY(0); } }
  @keyframes kpi-sink-down { 0% { opacity: 0; transform: translateY(-9px); } 62% { opacity: 1; transform: translateY(3px); } 100% { transform: translateY(0); } }
  .uto-kpi-trend.up { animation: kpi-float-up .7s cubic-bezier(.16, 1, .3, 1) .9s both; }
  .uto-kpi-trend.down { animation: kpi-sink-down .7s cubic-bezier(.16, 1, .3, 1) .9s both; }
}

/* ===== Sankey（お金の流れ） ===== */
.sankey-section .sankey-svg { width: 100%; height: auto; display: block; margin: 6px 0 4px; }
.sankey-node { stroke: rgba(15,39,66,.08); stroke-width: .5; }
.sankey-center { fill: #475569; }
.sankey-label { fill: var(--text, #0f2742); font-size: 11.5px; font-weight: 700; }
.sankey-val { fill: var(--muted); font-size: 10px; font-weight: 700; }
.sankey-center-label { fill: var(--muted); font-size: 10.5px; font-weight: 800; }
.sankey-ribbon { opacity: .4; transition: opacity .18s ease; }
.sankey-ribbon:hover { opacity: .72; }
:root[data-theme="dark"] .sankey-label { fill: #e6edf5; }
@media (prefers-reduced-motion: no-preference) {
  @keyframes sankey-flow { from { opacity: 0; } to { opacity: .4; } }
  .sankey-ribbon.in { animation: sankey-flow .55s ease both; animation-delay: calc(var(--si) * .09s); }
  .sankey-ribbon.out { animation: sankey-flow .55s ease both; animation-delay: calc(.45s + var(--si) * .09s); }
}

/* ===== 人口減少シミュレーター（将来負担分析） ===== */
.pop-sim-section { margin-top: 18px; }
.pop-sim-section .psim-slider-row {
  display: flex; align-items: center; gap: 14px; margin: 6px 0 18px;
  padding: 14px 16px; border-radius: 14px;
  background: linear-gradient(135deg, rgba(56,132,255,.07), rgba(56,132,255,.02));
  border: 1px solid var(--border);
}
.psim-slider-row .psim-slider-cap { font-size: 13px; color: var(--muted); font-weight: 700; white-space: nowrap; }
.psim-slider-row input[type="range"] {
  flex: 1; height: 6px; -webkit-appearance: none; appearance: none;
  background: linear-gradient(90deg, var(--accent), #8fb8ff); border-radius: 999px; outline: none;
}
.psim-slider-row input[type="range"]::-webkit-slider-thumb {
  -webkit-appearance: none; appearance: none; width: 22px; height: 22px; border-radius: 50%;
  background: #fff; border: 3px solid var(--accent); cursor: pointer;
  box-shadow: 0 2px 8px rgba(0,0,0,.18); transition: transform .15s ease;
}
.psim-slider-row input[type="range"]::-webkit-slider-thumb:hover { transform: scale(1.12); }
.psim-slider-row input[type="range"]::-moz-range-thumb {
  width: 22px; height: 22px; border-radius: 50%; background: #fff; border: 3px solid var(--accent); cursor: pointer;
}
.psim-pop { font-size: 26px; font-weight: 800; min-width: 130px; text-align: right; color: var(--text);
  font-variant-numeric: tabular-nums; transition: color .3s ease; }
.pop-sim-section.is-shrinking .psim-pop { color: #d4575b; }

.psim-readouts { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin-bottom: 18px; }
.psim-readouts article {
  padding: 14px; border-radius: 12px; background: var(--card-2, rgba(255,255,255,.04));
  border: 1px solid var(--border); display: flex; flex-direction: column; gap: 2px;
}
.psim-readouts article span { font-size: 12px; color: var(--muted); font-weight: 600; }
.psim-readouts article strong { font-size: 21px; font-weight: 800; font-variant-numeric: tabular-nums;
  transition: color .3s ease; }
.psim-readouts article small { font-size: 11px; color: var(--muted); }
.psim-readouts article.psim-up strong { color: #d4575b; }

.psim-grid-cap { font-size: 14px; margin: 4px 0 10px; }
.psim-grid-cap small { color: var(--muted); font-weight: 600; margin-left: 6px; }
.psim-grid {
  display: grid; grid-template-columns: repeat(12, 1fr); gap: 8px;
  padding: 14px; border-radius: 12px; background: var(--card-2, rgba(255,255,255,.04));
  border: 1px solid var(--border); margin-bottom: 14px;
}
.psim-icon {
  font-size: 26px; text-align: center; line-height: 1.2;
  transition: opacity .4s ease, filter .4s ease, transform .4s ease;
}
.psim-icon.is-faded { opacity: .14; filter: grayscale(1); transform: scale(.82); }

.psim-chain {
  font-size: 13.5px; line-height: 1.7; padding: 14px 16px; border-radius: 12px;
  background: rgba(212,87,91,.06); border: 1px solid rgba(212,87,91,.22); margin: 0 0 12px;
}
.pop-sim-section:not(.is-shrinking) .psim-chain { background: rgba(56,132,255,.06); border-color: rgba(56,132,255,.22); }
.psim-chain b { color: #d4575b; }
.pop-sim-section:not(.is-shrinking) .psim-chain b { color: var(--accent); }
.psim-chain-tag {
  display: inline-block; margin-left: 6px; padding: 2px 10px; border-radius: 999px;
  background: #d4575b; color: #fff; font-size: 12px; font-weight: 700;
}
@media (max-width: 720px) {
  .psim-readouts { grid-template-columns: repeat(2, 1fr); }
  .psim-grid { grid-template-columns: repeat(8, 1fr); }
  .psim-pop { font-size: 22px; min-width: 100px; }
}

/* ===== ヒーロー: 線描画SVG + キャッチコピー単語フェードアップ ===== */
.uto-home-hero { position: relative; }
.uto-home-hero > div,
.uto-home-hero > aside { position: relative; z-index: 1; }
.hero-lineart {
  position: absolute; right: 0; top: 0; width: min(58%, 560px); height: 100%;
  z-index: 0; opacity: .5; pointer-events: none;
}
.hero-line { fill: none; stroke-linecap: round; }
.hero-line-pop { stroke: rgba(255,255,255,.3); stroke-width: 2.5; }
.hero-line-base { stroke: rgba(255,255,255,.12); stroke-width: 1.5; }
.hero-line-keep { stroke: #8fd7c3; stroke-width: 3; }
.hero-dot { stroke: none; }
.hero-dot-a { fill: rgba(255,255,255,.55); }
.hero-dot-b { fill: rgba(255,255,255,.4); }
.hero-dot-c { fill: #8fd7c3; }

.hero-catch .hero-word { display: inline-block; }
@media (prefers-reduced-motion: no-preference) {
  .hero-catch .hero-word {
    opacity: 0; transform: translateY(16px);
    animation: heroWordUp .62s cubic-bezier(.16,1,.3,1) both;
    animation-delay: calc(.18s + var(--w) * .11s);
  }
  @keyframes heroWordUp { to { opacity: 1; transform: none; } }

  .hero-line { stroke-dasharray: 1; stroke-dashoffset: 1; }
  .hero-line-pop { animation: heroDraw 1.5s ease .35s both; }
  .hero-line-base { animation: heroDraw 1.1s ease .2s both; }
  .hero-line-keep { animation: heroDraw 1.6s cubic-bezier(.16,1,.3,1) .55s both; }
  @keyframes heroDraw { from { stroke-dashoffset: 1; } to { stroke-dashoffset: 0; } }

  .hero-dot { opacity: 0; animation: heroDotIn .4s ease both; }
  .hero-dot-a { animation-delay: .4s; }
  .hero-dot-c { animation-delay: 1.5s; }
  .hero-dot-b { animation-delay: 1.85s; }
  @keyframes heroDotIn { from { opacity: 0; transform: scale(.2); } to { opacity: 1; transform: none; } }
}
@media (max-width: 760px) {
  .hero-lineart { width: 70%; opacity: .32; }
}

/* ===== Top page hero repair: keep the current-position card balanced ===== */
.uto-home-hero {
  grid-template-columns: minmax(300px, .95fr) minmax(360px, 1.05fr);
  grid-template-rows: auto auto;
  align-items: center;
  min-height: clamp(420px, 42vw, 560px);
  padding: clamp(30px, 4.8vw, 58px);
}

.uto-home-hero > .hero-lineart {
  position: relative;
  inset: auto;
  grid-column: 1;
  grid-row: 1 / span 2;
  align-self: center;
  justify-self: stretch;
  width: min(100%, 560px);
  height: min(24vw, 260px);
  opacity: .72;
}

.uto-home-hero > div {
  grid-column: 2;
  grid-row: 1;
  align-self: end;
  max-width: 680px;
}

.uto-home-hero .hero-catch {
  max-width: 560px;
  margin: 10px 0 16px;
  font-size: clamp(34px, 4.2vw, 58px);
  line-height: 1.13;
  letter-spacing: -.05em;
}

.uto-home-hero .hero-catch br {
  display: none;
}

.uto-home-hero .hero-word {
  margin: 0 .08em .08em 0;
  padding: .02em .12em .06em;
  border-radius: .08em;
  background: linear-gradient(90deg, rgba(255,255,255,.10), rgba(255,255,255,.02));
  box-decoration-break: clone;
  -webkit-box-decoration-break: clone;
}

.uto-home-hero > div > p {
  max-width: 600px;
  margin: 0;
  font-size: clamp(14px, 1.25vw, 17px);
  line-height: 1.75;
}

.uto-home-hero > aside {
  grid-column: 2;
  grid-row: 2;
  align-self: start;
  max-width: 600px;
  padding: 18px 20px;
}

@media (max-width: 980px) {
  .uto-home-hero {
    grid-template-columns: 1fr;
    min-height: auto;
  }

  .uto-home-hero > .hero-lineart,
  .uto-home-hero > div,
  .uto-home-hero > aside {
    grid-column: 1;
    grid-row: auto;
  }

  .uto-home-hero > .hero-lineart {
    order: 2;
    height: 220px;
    max-width: 560px;
    opacity: .5;
  }

  .uto-home-hero .hero-catch {
    font-size: clamp(36px, 10vw, 68px);
  }
}

@media (max-width: 560px) {
  .uto-home-hero {
    padding: 26px;
    border-radius: 20px;
  }

  .uto-home-hero .hero-catch {
    font-size: clamp(32px, 12vw, 54px);
    line-height: 1.16;
  }

  .uto-home-hero > .hero-lineart {
    height: 160px;
  }

  .uto-home-hero aside {
    padding: 18px;
  }
}

/* ===== 施設更新タイムライン 2025→2040 ===== */
.facility-timeline-card .ftl-track {
  position: relative;
  display: grid; grid-template-columns: repeat(5, 1fr); gap: 10px;
  align-items: end;
  padding: 18px 8px 8px; margin-top: 6px;
}
.ftl-axis {
  position: absolute; left: 8px; right: 8px; bottom: 62px; height: 2px;
  background: var(--border); z-index: 0;
}
.ftl-col {
  position: relative; z-index: 1;
  display: flex; flex-direction: column; align-items: center; justify-content: flex-end;
  text-align: center; gap: 4px;
}
.ftl-plot {
  height: 160px; width: 100%;
  display: flex; flex-direction: column; align-items: center; justify-content: flex-end; gap: 4px;
}
.ftl-count { font-size: 15px; font-weight: 800; font-variant-numeric: tabular-nums; color: var(--text); }
.ftl-bar {
  width: 60%; max-width: 46px; height: var(--h); min-height: 8px;
  border-radius: 8px 8px 0 0; overflow: hidden; display: flex; align-items: flex-end;
  background: rgba(56,132,255,.12);
}
.ftl-bar > i {
  display: block; width: 100%; height: 100%;
  border-radius: 8px 8px 0 0;
  background: linear-gradient(180deg, var(--accent), #8fb8ff);
  transform-origin: bottom; transform: scaleY(0);
}
.is-revealed .ftl-bar > i { animation: ftlGrow .7s cubic-bezier(.16,1,.3,1) forwards; }
@keyframes ftlGrow { to { transform: scaleY(1); } }
.ftl-dot {
  width: 11px; height: 11px; border-radius: 50%;
  background: var(--accent); border: 2px solid var(--card-bg, #fff); margin-top: 2px;
}
.ftl-year { font-size: 12.5px; font-weight: 700; color: var(--text); margin-top: 2px; }
.ftl-caption { font-size: 11px; color: var(--muted); }
.ftl-area { font-size: 11px; color: var(--muted); font-variant-numeric: tabular-nums; }

/* 超過(警告) */
.ftl-overdue .ftl-bar { background: rgba(212,87,91,.14); }
.ftl-overdue .ftl-bar > i { background: linear-gradient(180deg, #d4575b, #e89aa0); }
.ftl-overdue .ftl-dot { background: #d4575b; }
.ftl-overdue .ftl-count { color: #d4575b; }
.ftl-col.is-warning .ftl-year::before { content: "⚠ "; }

/* まもなく到来(パルス) */
.ftl-near .ftl-bar > i { background: linear-gradient(180deg, #e6a23c, #f3c77a); }
.ftl-near .ftl-dot { background: #e6a23c; }
.ftl-near .ftl-count { color: #c47e1a; }
@media (prefers-reduced-motion: no-preference) {
  .ftl-col.is-pulse .ftl-dot { animation: ftlPulse 1.8s ease-in-out infinite; }
  @keyframes ftlPulse {
    0%, 100% { box-shadow: 0 0 0 0 rgba(230,162,60,.5); }
    50% { box-shadow: 0 0 0 7px rgba(230,162,60,0); }
  }
}
/* 2040以降 */
.ftl-beyond .ftl-bar > i { background: linear-gradient(180deg, #6b7a8f, #9fb0c2); }
.ftl-beyond .ftl-dot { background: #6b7a8f; }

.ftl-legend { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 14px; margin-top: 12px; }
.ftl-key { font-size: 12px; font-weight: 700; display: inline-flex; align-items: center; gap: 5px; }
.ftl-key::before { content: ""; width: 10px; height: 10px; border-radius: 50%; }
.ftl-key.ftl-overdue::before { background: #d4575b; }
.ftl-key.ftl-near::before { background: #e6a23c; }
.ftl-key.ftl-beyond::before { background: #6b7a8f; }
.ftl-total { margin-left: auto; font-size: 11.5px; color: var(--muted); }
@media (max-width: 640px) {
  .facility-timeline-card .ftl-track { min-height: 200px; gap: 4px; }
  .ftl-caption { display: none; }
}

/* ===== 比較ページ 並び替えランキング（FLIP） ===== */
.muni-rank-metric-tag {
  align-self: flex-start; padding: 4px 12px; border-radius: 999px;
  background: rgba(56,132,255,.1); color: var(--accent); font-size: 12px; font-weight: 800;
}
.muni-rank-list { list-style: none; margin: 8px 0 0; padding: 0; }
.muni-rank-row {
  display: grid; grid-template-columns: 34px minmax(120px, 1.1fr) minmax(80px, 2fr) auto;
  align-items: center; gap: 12px;
  padding: 10px 12px; border-radius: 12px; margin-bottom: 6px;
  background: var(--card-2, rgba(255,255,255,.03)); border: 1px solid var(--border);
  will-change: transform;
}
.muni-rank-no {
  width: 28px; height: 28px; display: grid; place-items: center;
  border-radius: 50%; background: var(--border); color: var(--text);
  font-size: 13px; font-weight: 800; font-variant-numeric: tabular-nums;
}
.muni-rank-row:nth-child(1) .muni-rank-no { background: #e6b422; color: #3a2c00; }
.muni-rank-row:nth-child(2) .muni-rank-no { background: #c7ccd1; color: #2a2f35; }
.muni-rank-row:nth-child(3) .muni-rank-no { background: #d9a06b; color: #3a2300; }
.muni-rank-name { display: flex; flex-direction: column; line-height: 1.25; min-width: 0; }
.muni-rank-name strong { font-size: 14px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.muni-rank-name small { font-size: 11px; color: var(--muted); }
.muni-rank-bar { height: 10px; border-radius: 999px; background: rgba(56,132,255,.1); overflow: hidden; }
.muni-rank-bar > i {
  display: block; height: 100%; border-radius: 999px;
  background: linear-gradient(90deg, var(--accent), #8fb8ff);
  transition: width .5s cubic-bezier(.16,1,.3,1);
}
.muni-rank-val { font-size: 13.5px; font-weight: 800; font-variant-numeric: tabular-nums; text-align: right; white-space: nowrap; }
.muni-rank-row.is-home {
  background: rgba(56,132,255,.1); border-color: var(--accent);
}
.muni-rank-row.is-home .muni-rank-name strong { color: var(--accent); }
.muni-rank-row.is-home .muni-rank-bar > i { background: linear-gradient(90deg, #1f6feb, #5a9bff); }
@media (prefers-reduced-motion: no-preference) {
  .muni-rank-row.flip-enter { animation: muniRankIn .45s ease both; }
  @keyframes muniRankIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
}
@media (max-width: 640px) {
  .muni-rank-row { grid-template-columns: 28px minmax(90px, 1fr) auto; }
  .muni-rank-bar { display: none; }
}

/* ===== ツールバーのコンテキスト表示 =====
   年度・指標・データソースは旧カードビューア画面でのみ表示。OS画面では全文検索だけを残す。 */
.toolbar.is-os-mode { grid-template-columns: minmax(260px, 1fr); }
.toolbar.is-os-mode .toolbar-card-only { display: none; }
.toolbar.is-os-mode .search-label { grid-column: 1 / -1; }

/* ===== 財政ムダ発見（政策改善ダッシュボード） ===== */
.wf-disclaimer {
  margin: 16px 0; padding: 14px 18px; border-radius: 12px; line-height: 1.8; font-size: 13.5px;
  background: rgba(230,162,60,.08); border: 1px solid rgba(230,162,60,.3); color: var(--text);
}
.wf-disclaimer b { color: #c47e1a; }

.wf-kpi-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin-bottom: 18px; }
.wf-kpi { padding: 14px 16px; border-radius: 12px; background: var(--card-2, rgba(255,255,255,.03)); border: 1px solid var(--border); display: flex; flex-direction: column; gap: 3px; }
.wf-kpi span { font-size: 12px; color: var(--muted); font-weight: 700; }
.wf-kpi strong { font-size: 21px; font-weight: 800; font-variant-numeric: tabular-nums; }
.wf-kpi small { font-size: 11px; color: var(--muted); }
.wf-kpi.wf-danger { border-color: rgba(212,87,91,.4); } .wf-kpi.wf-danger strong { color: #d4575b; }
.wf-kpi.wf-warn { border-color: rgba(230,162,60,.4); } .wf-kpi.wf-warn strong { color: #c47e1a; }
.wf-kpi.wf-watch strong { color: #b78a00; }
.wf-kpi.wf-muted strong { color: var(--muted); font-size: 16px; }

.wf-tabs { margin-bottom: 14px; flex-wrap: wrap; }
.wf-pane { display: none; }
.wf-pane.is-active { display: block; }

.wf-score-legend { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 10px; }
.wf-badge { display: inline-block; padding: 3px 10px; border-radius: 999px; font-size: 12px; font-weight: 800; }
.wf-badge.wf-danger { background: #d4575b; color: #fff; }
.wf-badge.wf-warn { background: #e6a23c; color: #3a2400; }
.wf-badge.wf-watch { background: #f0d264; color: #4a3a00; }
.wf-badge.wf-muted { background: var(--border); color: var(--muted); }

.wf-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.wf-table th { text-align: left; padding: 8px 10px; font-size: 11.5px; color: var(--muted); border-bottom: 2px solid var(--border); white-space: nowrap; }
.wf-table td { padding: 9px 10px; border-bottom: 1px solid var(--border); vertical-align: top; }
.wf-row { cursor: pointer; transition: background .15s ease; }
.wf-row:hover, .wf-row:focus-visible { background: rgba(56,132,255,.06); outline: none; }
.wf-table td small { display: block; font-size: 10.5px; color: var(--muted); }
.wf-name { font-weight: 700; min-width: 180px; }
.wf-num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.wf-score-pill { display: inline-block; min-width: 30px; text-align: center; padding: 3px 8px; border-radius: 8px; font-weight: 800; font-variant-numeric: tabular-nums; }
.wf-score-pill.wf-danger { background: #d4575b; color: #fff; }
.wf-score-pill.wf-warn { background: #e6a23c; color: #3a2400; }
.wf-score-pill.wf-watch { background: #f0d264; color: #4a3a00; }
.wf-score-pill.wf-muted { background: var(--border); color: var(--muted); }
.wf-flags { display: flex; flex-wrap: wrap; gap: 4px; max-width: 240px; }
.wf-flags span { font-size: 10.5px; padding: 2px 7px; border-radius: 6px; background: rgba(212,87,91,.1); color: #b8474b; white-space: nowrap; }
.wf-flag-none { background: var(--border) !important; color: var(--muted) !important; }
.wf-tone-danger .wf-priority { box-shadow: inset 3px 0 0 #d4575b; }

.wf-similar-group { border: 1px solid var(--border); border-radius: 12px; padding: 12px; margin-bottom: 10px; }
.wf-similar-head { display: flex; justify-content: space-between; font-size: 12px; color: var(--muted); margin-bottom: 8px; }
.wf-similar-head strong { color: var(--text); font-size: 14px; }
.wf-similar-item { display: grid; grid-template-columns: auto 1fr auto; gap: 10px; align-items: center; width: 100%; text-align: left; padding: 8px 10px; border: 1px solid var(--border); border-radius: 8px; background: var(--card-2, rgba(255,255,255,.03)); margin-bottom: 5px; cursor: pointer; }
.wf-similar-item:hover { background: rgba(56,132,255,.06); }
.wf-similar-item span { font-size: 11px; color: var(--muted); }
.wf-similar-item strong { font-size: 13px; }
.wf-similar-item b { font-variant-numeric: tabular-nums; }

.wf-heatmap { display: grid; grid-template-columns: 130px repeat(var(--wf-cols), 1fr); gap: 4px; }
.wf-heat-corner, .wf-heat-head { font-size: 12px; font-weight: 700; color: var(--muted); padding: 6px; }
.wf-heat-head { text-align: center; }
.wf-heat-label { font-size: 12.5px; font-weight: 700; padding: 6px; display: flex; align-items: center; }
.wf-heat-cell { display: grid; place-items: center; min-height: 44px; border-radius: 8px; font-size: 12px; font-weight: 700; font-variant-numeric: tabular-nums; background: color-mix(in srgb, #d4575b calc(var(--heat) * 80%), transparent); color: var(--text); }
.wf-heat-cell span { background: rgba(255,255,255,.55); border-radius: 5px; padding: 1px 6px; }
:root[data-theme="dark"] .wf-heat-cell span { background: rgba(0,0,0,.4); }

.wf-percapita-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
.wf-percapita-grid article { padding: 14px; border-radius: 12px; border: 1px solid var(--border); background: var(--card-2, rgba(255,255,255,.03)); }
.wf-percapita-grid span { font-size: 12px; color: var(--muted); font-weight: 700; }
.wf-percapita-grid strong { display: block; font-size: 20px; font-weight: 800; margin: 4px 0; font-variant-numeric: tabular-nums; }
.wf-percapita-grid small { font-size: 11px; color: var(--muted); }
.wf-percapita-grid .wf-na strong, .wf-kpi.wf-muted strong { color: var(--muted); }

.wf-chart-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.wf-canvas-wrap { position: relative; height: 300px; }
.wf-na-list { list-style: none; margin: 0; padding: 0; }
.wf-na-list li { padding: 10px 0; border-bottom: 1px solid var(--border); }
.wf-na-list strong { display: block; font-size: 14px; }
.wf-na-list span { font-size: 12.5px; color: var(--muted); }

/* モーダル */
.wf-modal { position: fixed; inset: 0; z-index: 100; display: flex; align-items: center; justify-content: center; padding: 20px; }
.wf-modal[hidden] { display: none; }
.wf-modal-overlay { position: absolute; inset: 0; background: rgba(8,14,22,.55); backdrop-filter: blur(2px); }
.wf-modal-box { position: relative; z-index: 1; width: min(680px, 100%); max-height: 88vh; overflow-y: auto; background: var(--card-bg, #fff); border: 1px solid var(--border); border-radius: 16px; padding: 24px; box-shadow: 0 24px 60px rgba(0,0,0,.3); }
:root[data-theme="dark"] .wf-modal-box { background: #131a24; }
.wf-modal-close { position: absolute; top: 12px; right: 14px; width: 32px; height: 32px; border-radius: 50%; border: 1px solid var(--border); background: var(--card-2, rgba(0,0,0,.04)); font-size: 18px; cursor: pointer; line-height: 1; }
.wf-modal-head h3 { margin: 8px 0 2px; font-size: 19px; }
.wf-modal-head p { font-size: 12.5px; color: var(--muted); }
.wf-modal-grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: 10px; margin: 16px 0; }
.wf-modal-grid article { padding: 10px; border-radius: 10px; background: var(--card-2, rgba(255,255,255,.03)); border: 1px solid var(--border); }
.wf-modal-grid span { font-size: 10.5px; color: var(--muted); }
.wf-modal-grid strong { display: block; font-size: 15px; font-weight: 800; margin-top: 2px; font-variant-numeric: tabular-nums; }
.wf-modal-section { margin-top: 16px; }
.wf-modal-section h4 { font-size: 13px; margin: 0 0 8px; }
.wf-modal-flags { display: flex; flex-wrap: wrap; gap: 6px; }
.wf-modal-flags span { font-size: 11.5px; padding: 3px 9px; border-radius: 7px; background: rgba(212,87,91,.1); color: #b8474b; }
.wf-parts { list-style: none; margin: 0; padding: 0; }
.wf-parts li { display: flex; justify-content: space-between; padding: 5px 0; border-bottom: 1px dashed var(--border); font-size: 12.5px; }
.wf-parts b { color: #c47e1a; }
.wf-questions, .wf-similar-names { margin: 0; padding-left: 18px; }
.wf-questions li, .wf-similar-names li { font-size: 12.5px; line-height: 1.7; margin-bottom: 4px; }
.wf-ai-comment { font-size: 13px; line-height: 1.8; padding: 12px 14px; border-radius: 10px; background: rgba(56,132,255,.07); border: 1px solid rgba(56,132,255,.2); }
.wf-na-note { font-size: 12px; color: var(--muted); line-height: 1.7; }
.wf-summary-text { font-size: 13px; line-height: 1.85; padding: 12px 14px; border-radius: 10px; background: rgba(31,157,87,.07); border: 1px solid rgba(31,157,87,.2); white-space: pre-wrap; }
.wf-summary-note { font-size: 11.5px; color: var(--muted); line-height: 1.65; margin-top: 6px; }

@media (max-width: 860px) {
  .wf-kpi-grid { grid-template-columns: repeat(2, 1fr); }
  .wf-percapita-grid, .wf-chart-grid { grid-template-columns: 1fr; }
  .wf-modal-grid { grid-template-columns: repeat(2, 1fr); }
}

/* ===== 現在地診断: スコア算定方法の説明 ===== */
.home-score-method { margin-top: 14px; border-top: 1px solid rgba(255,255,255,.14); padding-top: 12px; }
.home-score-method summary { cursor: pointer; font-size: 12.5px; font-weight: 700; color: #c7d6e6; list-style: revert; }
.home-score-method summary:hover { color: #fff; }
.home-score-method ul { margin: 10px 0 8px; padding-left: 18px; }
.home-score-method li { font-size: 12px; line-height: 1.75; color: #d6e0ea; margin-bottom: 4px; }
.home-score-method li b { color: #fff; }
.home-score-method p { font-size: 11.5px; color: #9fb3c7; line-height: 1.7; }

/* UTO PRIDE: the top page is a future-design story before it is a dashboard. */
.uto-pride-hero {
  position: relative;
  display: grid;
  grid-template-columns: minmax(340px, .88fr) minmax(480px, 1.12fr);
  min-height: min(760px, calc(100vh - 150px));
  overflow: hidden;
  border-radius: 34px;
  color: #fff;
  background:
    radial-gradient(circle at 73% 23%, rgba(255, 217, 142, .2), transparent 22%),
    linear-gradient(135deg, #0b2c42 0%, #155e65 52%, #6e8f64 100%);
  box-shadow: 0 28px 80px rgba(13, 54, 66, .2);
}

.uto-pride-hero-copy {
  position: relative;
  z-index: 3;
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: clamp(42px, 7vw, 96px);
  background: linear-gradient(90deg, rgba(5, 28, 43, .9), rgba(5, 28, 43, .68) 76%, transparent);
}

.uto-pride-label,
.uto-pride-story-heading > span,
.uto-pride-generations span {
  color: #a6e3d2;
  font-size: 12px;
  font-weight: 900;
  letter-spacing: .2em;
}

.uto-pride-hero h2 {
  max-width: 680px;
  margin: 18px 0 24px;
  color: #fff;
  font-size: clamp(42px, 5.6vw, 82px);
  line-height: 1.13;
  letter-spacing: -.065em;
  text-wrap: balance;
}

.uto-pride-hero-copy > p {
  max-width: 620px;
  margin: 0;
  color: #e7f1ed;
  font-size: clamp(15px, 1.35vw, 19px);
  line-height: 1.9;
}

.uto-pride-hero-copy .uto-pride-lead {
  margin-bottom: 16px;
  color: #fff;
  font-size: clamp(21px, 2.2vw, 31px);
  font-weight: 850;
  line-height: 1.55;
}

.uto-pride-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 34px;
}

.uto-pride-actions button {
  min-height: 52px;
  padding: 13px 24px;
  border: 1px solid #fff;
  border-radius: 999px;
  color: #12374a;
  background: #fff;
  font: inherit;
  font-weight: 900;
  cursor: pointer;
  transition: transform .2s ease, box-shadow .2s ease, background .2s ease;
}

.uto-pride-actions button.secondary {
  color: #fff;
  background: rgba(255, 255, 255, .08);
  backdrop-filter: blur(10px);
}

.uto-pride-actions button:hover,
.uto-pride-actions button:focus-visible {
  transform: translateY(-3px);
  box-shadow: 0 12px 30px rgba(0, 0, 0, .22);
}

.uto-pride-scenery {
  position: relative;
  min-height: 620px;
  overflow: hidden;
  background: linear-gradient(to bottom, rgba(151, 207, 218, .15), rgba(255, 226, 171, .18) 48%, rgba(14, 72, 83, .12));
}

.scene-sun {
  position: absolute;
  top: 17%;
  right: 18%;
  width: 92px;
  aspect-ratio: 1;
  border-radius: 50%;
  background: #f7d89c;
  box-shadow: 0 0 70px rgba(247, 216, 156, .45);
}

.scene-mountain {
  position: absolute;
  right: -8%;
  bottom: 31%;
  width: 105%;
  height: 38%;
  border-radius: 52% 48% 0 0 / 100% 100% 0 0;
  transform: rotate(-5deg);
}

.scene-mountain-back { background: rgba(58, 111, 105, .54); }
.scene-mountain-front {
  right: -28%;
  bottom: 24%;
  width: 120%;
  height: 35%;
  background: rgba(27, 82, 73, .72);
}

.scene-sea {
  position: absolute;
  inset: auto 0 0;
  height: 35%;
  background:
    repeating-linear-gradient(174deg, rgba(255,255,255,.14) 0 2px, transparent 2px 28px),
    linear-gradient(#2c7b83, #174d61);
}

.scene-field {
  position: absolute;
  left: -9%;
  bottom: -9%;
  width: 78%;
  height: 34%;
  border-radius: 50% 60% 0 0;
  background: repeating-linear-gradient(112deg, #708e56 0 16px, #8ba56d 16px 32px);
  transform: rotate(5deg);
}

.scene-school {
  position: absolute;
  z-index: 2;
  right: 12%;
  bottom: 21%;
  width: 150px;
  height: 82px;
  border: 8px solid rgba(255,255,255,.82);
  border-top-width: 20px;
  background: repeating-linear-gradient(90deg, #3f7b87 0 18px, #eaf1ec 18px 26px);
  box-shadow: 0 15px 35px rgba(5, 35, 43, .24);
}

.scene-school::before {
  content: "";
  position: absolute;
  left: 24px;
  top: -52px;
  width: 72px;
  height: 42px;
  background: #e8eee7;
  clip-path: polygon(50% 0, 100% 100%, 0 100%);
}

.scene-people {
  position: absolute;
  z-index: 3;
  right: 36%;
  bottom: 15%;
  display: flex;
  align-items: end;
  gap: 16px;
}

.scene-people i {
  position: relative;
  display: block;
  width: 20px;
  height: 58px;
  border-radius: 10px 10px 5px 5px;
  background: #f4d2a0;
}

.scene-people i::before {
  content: "";
  position: absolute;
  left: 1px;
  top: -21px;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  background: #f4d2a0;
}

.scene-people i:nth-child(2) { height: 78px; background: #d87958; }
.scene-people i:nth-child(3) { height: 48px; background: #f0c466; }

.uto-pride-hero-note {
  position: absolute;
  z-index: 4;
  right: 34px;
  bottom: 26px;
  max-width: 430px;
  margin: 0;
  color: rgba(255,255,255,.86);
  font-size: 12px;
  font-weight: 750;
  letter-spacing: .04em;
  text-align: right;
}

.uto-pride-story {
  padding: clamp(42px, 7vw, 88px);
  border: 1px solid var(--line);
  border-radius: 28px;
  background: var(--paper);
}

.uto-pride-story-heading {
  max-width: 900px;
  margin-bottom: clamp(28px, 4vw, 48px);
}

.uto-pride-story-heading > span { color: #247d73; }
.uto-pride-story-heading h2,
.uto-pride-generations h2 {
  margin: 10px 0 0;
  font-size: clamp(31px, 4.5vw, 58px);
  line-height: 1.28;
  letter-spacing: -.055em;
  text-wrap: balance;
}
.uto-pride-story-heading p {
  max-width: 680px;
  color: var(--muted);
  font-size: 16px;
  line-height: 1.85;
}

.uto-pride-origin-body {
  display: grid;
  grid-template-columns: minmax(280px, .7fr) minmax(0, 1.3fr);
  gap: clamp(34px, 7vw, 90px);
  align-items: center;
}

.uto-pride-issue-words {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 10px;
}

.uto-pride-issue-words span {
  display: grid;
  min-height: 100px;
  place-items: center;
  padding: 18px;
  border-radius: 16px;
  color: #184953;
  background: #eaf4ef;
  font-size: clamp(16px, 1.7vw, 22px);
  font-weight: 900;
  text-align: center;
}

.uto-pride-origin-body p,
.uto-pride-together > p,
.uto-pride-generations p {
  color: var(--muted);
  font-size: clamp(16px, 1.5vw, 19px);
  line-height: 2;
}
.uto-pride-origin-body p strong { color: var(--ink); }

.uto-pride-position-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
}

.uto-pride-position-grid button {
  position: relative;
  display: grid;
  min-height: 220px;
  align-content: start;
  padding: 24px;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 18px;
  color: var(--ink);
  background: var(--surface-subtle);
  text-align: left;
  cursor: pointer;
  transition: transform .2s ease, border-color .2s ease, box-shadow .2s ease;
}

.uto-pride-position-grid button::after {
  content: "";
  position: absolute;
  right: -34px;
  bottom: -45px;
  width: 130px;
  height: 130px;
  border-radius: 50%;
  background: color-mix(in srgb, #4d9b8c 13%, transparent);
}

.uto-pride-position-grid button:hover,
.uto-pride-position-grid button:focus-visible {
  border-color: #459588;
  transform: translateY(-5px);
  box-shadow: 0 18px 42px rgba(22, 81, 81, .12);
}

.uto-pride-position-grid button > span {
  color: #388579;
  font-size: 12px;
  font-weight: 900;
  letter-spacing: .15em;
}
.uto-pride-position-grid strong { margin-top: 18px; font-size: 26px; }
.uto-pride-position-grid p { margin: 8px 0 24px; color: var(--muted); font-size: 16px; }
.uto-pride-position-grid b { margin-top: auto; color: #25786e; font-size: 12px; }

.uto-pride-generations {
  display: grid;
  grid-template-columns: minmax(300px, .85fr) minmax(0, 1.15fr);
  gap: clamp(44px, 8vw, 110px);
  align-items: center;
  padding: clamp(54px, 8vw, 110px);
  border-radius: 30px;
  color: #fff;
  background:
    linear-gradient(125deg, rgba(7, 46, 62, .96), rgba(21, 103, 96, .88)),
    radial-gradient(circle at 80% 20%, #d9ad62, transparent 30%);
}
.uto-pride-generations h2 { color: #fff; }
.uto-pride-generations p { color: #e3efeb; }

.uto-pride-partners {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: 10px;
  margin-bottom: 28px;
}
.uto-pride-partners span {
  display: grid;
  min-height: 88px;
  place-items: center;
  border: 1px solid color-mix(in srgb, #388579 25%, var(--line));
  border-radius: 50%;
  color: #256e68;
  background: color-mix(in srgb, #a9dfcf 18%, var(--paper));
  font-size: 16px;
  font-weight: 900;
}

.uto-pride-capability-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
}
.uto-pride-capability-grid button {
  display: grid;
  gap: 8px;
  min-height: 130px;
  align-content: center;
  padding: 20px;
  border: 1px solid var(--line);
  border-radius: 16px;
  color: var(--ink);
  background: var(--surface-subtle);
  text-align: left;
  cursor: pointer;
  transition: background .2s ease, transform .2s ease;
}
.uto-pride-capability-grid button:hover,
.uto-pride-capability-grid button:focus-visible {
  color: #fff;
  background: #176b70;
  transform: translateY(-3px);
}
.uto-pride-capability-grid strong { font-size: 18px; }
.uto-pride-capability-grid span { color: var(--muted); font-size: 12px; }
.uto-pride-capability-grid button:hover span,
.uto-pride-capability-grid button:focus-visible span { color: #d9efea; }

.uto-pride-footer {
  display: flex;
  justify-content: space-between;
  gap: 28px;
  margin-top: 72px;
  padding: 42px max(24px, calc((100vw - var(--content-max)) / 2));
  color: #e9f3ef;
  background: #102f42;
}
.uto-pride-footer div { display: grid; gap: 7px; }
.uto-pride-footer span { color: #8fd7c3; font-size: 11px; font-weight: 900; letter-spacing: .2em; }
.uto-pride-footer strong { font-size: 20px; }
.uto-pride-footer p { margin: 0; color: #c9ddd7; line-height: 1.7; }
.uto-pride-footer p b { color: #fff; }
.brand-copy b { margin-right: 5px; color: #247d73; letter-spacing: .08em; }

.uto-pride-compass {
  display: grid;
  grid-template-columns: auto minmax(260px, 1fr) auto;
  gap: 24px;
  align-items: center;
  padding: 13px max(24px, calc((100vw - var(--content-max)) / 2));
  border-bottom: 1px solid rgba(56, 133, 121, .2);
  color: #173b49;
  background:
    linear-gradient(90deg, rgba(221, 242, 233, .96), rgba(245, 248, 241, .96)),
    var(--paper);
}
.uto-pride-compass > div { display: grid; gap: 2px; min-width: 260px; }
.uto-pride-compass span {
  color: #277c70;
  font-size: 9px;
  font-weight: 950;
  letter-spacing: .18em;
}
.uto-pride-compass strong { font-size: 13px; }
.uto-pride-compass p {
  margin: 0;
  color: #49686f;
  font-size: 12px;
  line-height: 1.6;
  text-align: center;
}
.uto-pride-compass button {
  padding: 8px 13px;
  border: 1px solid rgba(39, 124, 112, .34);
  border-radius: 999px;
  color: #176b63;
  background: rgba(255,255,255,.7);
  font: inherit;
  font-size: 10px;
  font-weight: 850;
  cursor: pointer;
}
.uto-pride-compass button:hover,
.uto-pride-compass button:focus-visible { color: #fff; background: #176b63; }

[data-theme="dark"] .uto-pride-compass {
  color: #e1f2ed;
  background: linear-gradient(90deg, #163b3c, #173143);
}
[data-theme="dark"] .uto-pride-compass p { color: #bed6d1; }
[data-theme="dark"] .uto-pride-compass button { color: #dff5ef; background: rgba(255,255,255,.06); }

.decision-pride-principle {
  display: grid;
  grid-template-columns: minmax(210px, .55fr) minmax(280px, 1fr);
  gap: 14px 28px;
  margin: -24px -24px 24px;
  padding: 24px;
  border-radius: 20px 20px 0 0;
  color: #f6fbf9;
  background:
    radial-gradient(circle at 95% 0%, rgba(218, 179, 101, .22), transparent 28%),
    linear-gradient(125deg, #12384a, #176b63);
}
.decision-pride-principle > div:first-child { align-self: center; }
.decision-pride-principle > div:first-child span,
.decision-pride-principle > div:first-child strong { display: block; }
.decision-pride-principle > div:first-child span {
  color: #9fe1d0;
  font-size: 9px;
  font-weight: 950;
  letter-spacing: .16em;
}
.decision-pride-principle > div:first-child strong {
  margin-top: 6px;
  font-size: 21px;
  line-height: 1.35;
}
.decision-pride-principle > p {
  align-self: center;
  margin: 0;
  color: #dcebe7;
  font-size: 13px;
  line-height: 1.75;
}
.decision-pride-principle dl {
  display: grid;
  grid-column: 1 / -1;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
  margin: 3px 0 0;
}
.decision-pride-principle dl div {
  padding: 11px 12px;
  border: 1px solid rgba(255,255,255,.14);
  border-radius: 11px;
  background: rgba(255,255,255,.07);
}
.decision-pride-principle dt {
  color: #9fe1d0;
  font-size: 9px;
  font-weight: 900;
}
.decision-pride-principle dd {
  margin: 4px 0 0;
  color: #fff;
  font-size: 10px;
  font-weight: 750;
  line-height: 1.55;
}

@media (prefers-reduced-motion: no-preference) {
  .uto-pride-scenery > span { animation: utoSceneryIn .9s cubic-bezier(.16,1,.3,1) both; }
  .scene-mountain { animation-delay: .12s !important; }
  .scene-sea { animation-delay: .2s !important; }
  .scene-field, .scene-school { animation-delay: .3s !important; }
  .scene-people { animation-delay: .45s !important; }
  @keyframes utoSceneryIn { from { opacity: 0; transform: translateY(24px); } }
}

@media (max-width: 980px) {
  .uto-pride-hero { grid-template-columns: 1fr; min-height: 0; }
  .uto-pride-hero-copy { min-height: 560px; background: linear-gradient(rgba(5,28,43,.91), rgba(5,28,43,.55)); }
  .uto-pride-scenery { position: absolute; inset: 0; min-height: 100%; }
  .uto-pride-origin-body,
  .uto-pride-generations { grid-template-columns: 1fr; }
  .uto-pride-position-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .uto-pride-capability-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .uto-pride-partners { grid-template-columns: repeat(3, 1fr); }
  .uto-pride-hero-note { display: none; }
  .uto-pride-compass { grid-template-columns: 1fr auto; }
  .uto-pride-compass p { grid-column: 1 / -1; grid-row: 2; text-align: left; }
  .decision-pride-principle dl { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 600px) {
  .uto-pride-hero { border-radius: 22px; }
  .uto-pride-hero-copy { min-height: 620px; padding: 34px 24px; }
  .uto-pride-hero h2 { font-size: clamp(39px, 12vw, 58px); }
  .uto-pride-actions { display: grid; }
  .uto-pride-story,
  .uto-pride-generations { padding: 36px 22px; border-radius: 20px; }
  .uto-pride-position-grid,
  .uto-pride-capability-grid { grid-template-columns: 1fr; }
  .uto-pride-position-grid button { min-height: 185px; }
  .uto-pride-issue-words { grid-template-columns: 1fr 1fr; }
  .uto-pride-issue-words span { min-height: 82px; padding: 12px; }
  .uto-pride-partners { grid-template-columns: repeat(2, 1fr); }
  .uto-pride-footer { flex-direction: column; padding: 34px 24px; }
  .uto-pride-compass { grid-template-columns: 1fr; gap: 7px; padding: 12px 18px; }
  .uto-pride-compass > div { min-width: 0; }
  .uto-pride-compass p { grid-column: auto; grid-row: auto; }
  .uto-pride-compass button { justify-self: start; }
  .decision-pride-principle {
    grid-template-columns: 1fr;
    margin: -17px -17px 20px;
    padding: 20px 17px;
  }
  .decision-pride-principle dl { grid-template-columns: 1fr; }
}

/* ===== 自治体比較: 参照ベンチマーク（どこに学べるか） ===== */
.muni-benchmark-section .bm-tag { align-self: flex-start; padding: 4px 12px; border-radius: 999px; background: rgba(56,132,255,.1); color: var(--accent); font-size: 12px; font-weight: 800; white-space: nowrap; }
.bm-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 14px; margin-top: 6px; }
.bm-card { border: 1px solid var(--border); border-radius: 14px; padding: 14px 16px; background: var(--card-2, rgba(255,255,255,.03)); }
.bm-card-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; margin-bottom: 10px; }
.bm-card-head h3 { font-size: 15px; margin: 0; }
.bm-card-head small { font-size: 11.5px; color: var(--muted); }
.bm-uto { text-align: right; white-space: nowrap; }
.bm-uto span { font-size: 10.5px; color: var(--muted); display: block; }
.bm-uto strong { font-size: 17px; font-weight: 800; font-variant-numeric: tabular-nums; color: var(--accent); }
.bm-uto b { font-size: 10.5px; color: var(--muted); font-weight: 700; display: block; }
.bm-refs { list-style: none; margin: 0; padding: 0; }
.bm-refs li { display: grid; grid-template-columns: 1fr auto auto; gap: 8px; align-items: center; padding: 6px 0; border-top: 1px dashed var(--border); font-size: 12.5px; }
.bm-name { font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.bm-val { font-variant-numeric: tabular-nums; color: var(--text); }
.bm-diff { font-size: 11.5px; color: #1f9d57; font-weight: 700; white-space: nowrap; }
.bm-src { color: var(--accent); text-decoration: underline; margin-left: 4px; font-weight: 700; }
.bm-foot { font-size: 11px; color: var(--muted); margin: 8px 0 0; line-height: 1.6; }
.bm-spending { margin-top: 16px; border-top: 1px solid var(--border); padding-top: 14px; }
.bm-spending > h3 { font-size: 14px; margin: 0 0 10px; }
.bm-spending-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.bm-spending-grid article { padding: 12px 14px; border-radius: 12px; border: 1px solid var(--border); }
.bm-spending-grid span { font-size: 11px; font-weight: 700; color: var(--muted); }
.bm-spending-grid strong { display: block; font-size: 16px; font-weight: 800; margin: 2px 0; }
.bm-spending-grid b { font-size: 13px; font-variant-numeric: tabular-nums; }
.bm-spending-grid small { display: block; font-size: 11px; color: var(--muted); margin-top: 4px; line-height: 1.6; }
.bm-over { background: rgba(212,87,91,.06); } .bm-over b { color: #d4575b; }
.bm-under { background: rgba(56,132,255,.06); } .bm-under b { color: var(--accent); }
.bm-strength { font-size: 12px; color: var(--muted); margin: 12px 0 0; line-height: 1.7; }
@media (max-width: 760px) { .bm-grid, .bm-spending-grid { grid-template-columns: 1fr; } }

/* ===== 参照ベンチマーク: 全国順位ブロック ===== */
.bm-national { margin-top: 16px; border-top: 1px solid var(--border); padding-top: 14px; }
.bm-national > h3 { font-size: 14px; margin: 0 0 10px; }
.bm-rank-strip { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; }
.bm-rank-strip article { padding: 11px 13px; border-radius: 12px; border: 1px solid var(--border); background: var(--card-2, rgba(255,255,255,.03)); text-align: center; }
.bm-rank-strip span { font-size: 11px; color: var(--muted); font-weight: 700; display: block; }
.bm-rank-strip strong { font-size: 17px; font-weight: 800; font-variant-numeric: tabular-nums; display: block; margin: 3px 0; }
.bm-rank-strip b { font-size: 12px; font-variant-numeric: tabular-nums; }
.bm-rank-strip b small { color: var(--muted); font-weight: 600; }
.bm-rank-strip .is-low { border-color: rgba(212,87,91,.4); background: rgba(212,87,91,.06); }
.bm-rank-strip .is-low b { color: #d4575b; }
.bm-rank-strip .is-high { border-color: rgba(31,157,87,.35); background: rgba(31,157,87,.06); }
.bm-rank-strip .is-high b { color: #1f9d57; }
.bm-national-refs { margin-top: 12px; }
.bm-national-refs h4 { font-size: 12.5px; margin: 0 0 6px; color: var(--text); }
@media (max-width: 760px) { .bm-rank-strip { grid-template-columns: repeat(2, 1fr); } }

/* ===== 予算配分シミュレーター ===== */
.realloc-section .realloc-tag { align-self: flex-start; padding: 4px 12px; border-radius: 999px; background: rgba(230,162,60,.12); color: #c47e1a; font-size: 12px; font-weight: 800; white-space: nowrap; }
.realloc-readouts { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin: 14px 0 16px; }
.realloc-readouts article { padding: 14px; border-radius: 12px; border: 1px solid var(--border); background: var(--card-2, rgba(255,255,255,.03)); }
.realloc-readouts span { font-size: 12px; color: var(--muted); font-weight: 700; }
.realloc-readouts strong { display: block; font-size: 22px; font-weight: 800; margin: 3px 0; font-variant-numeric: tabular-nums; }
.realloc-readouts small { font-size: 11px; color: var(--muted); line-height: 1.5; }
.realloc-free strong { color: var(--accent); }
.realloc-need strong { color: #d4575b; }
.realloc-net strong.is-positive { color: #1f9d57; }
.realloc-net strong.is-negative { color: #d4575b; }
.realloc-cats { display: flex; flex-direction: column; gap: 7px; }
.realloc-cat { display: grid; grid-template-columns: 130px 150px 1fr 72px; gap: 12px; align-items: center; padding: 7px 4px; border-bottom: 1px solid var(--border); font-size: 13px; }
.realloc-name { font-weight: 700; }
.realloc-name b { display: inline-block; margin-left: 5px; font-size: 10px; padding: 1px 6px; border-radius: 5px; background: var(--border); color: var(--muted); font-weight: 700; }
.realloc-vals { font-variant-numeric: tabular-nums; }
.realloc-vals small { display: block; font-size: 10.5px; color: var(--muted); }
.realloc-move { text-align: right; font-weight: 800; font-variant-numeric: tabular-nums; font-size: 12.5px; }
.realloc-cat.is-mandatory { opacity: .72; }
@media (max-width: 760px) {
  .realloc-readouts { grid-template-columns: 1fr; }
  .realloc-cat { grid-template-columns: 1fr auto; row-gap: 4px; }
  .realloc-cat .sc-track { display: none; }
}
.realloc-summary { margin: 12px 0 0; padding: 11px 14px; border-radius: 10px; background: rgba(56,132,255,.06); border: 1px solid rgba(56,132,255,.18); font-size: 12.5px; line-height: 1.7; color: var(--text); }

/* ===== スマホ・タブレット最適化: 横はみ出し防止の共通対策 =====
   グリッド/フレックスの子は既定で min-width:auto（=内容幅）のため縮まず横スクロール/見切れの原因になる。
   タブレット幅以下で min-width:0 を与え、内容に応じて縮められるようにする（明示的な min-width 指定は優先される）。
   画像・SVG・canvas・iframe・動画は幅100%までに制限。 */
@media (max-width: 900px) {
  .os-dashboard, .os-dashboard *,
  main > section[class*="panel"], main > section[class*="panel"] *,
  main > section[class*="-os"], main > section[class*="-os"] * {
    min-width: 0;
  }
  main img, main svg, main canvas, main video, main iframe, main table { max-width: 100%; }
  .table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
}

/* ===== 委員会の深掘り（委員会別・テーマ別） ===== */
.committee-dd-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin: 6px 0 18px; }
.committee-dd-card { border: 1px solid var(--border); border-radius: 14px; padding: 14px; background: var(--card-2, rgba(255,255,255,.03)); }
.cdd-head { display: flex; justify-content: space-between; align-items: baseline; gap: 8px; margin-bottom: 10px; }
.cdd-head h4 { font-size: 15px; margin: 0; }
.cdd-head span { font-size: 11px; color: var(--muted); white-space: nowrap; }
.cdd-themes { display: flex; flex-direction: column; gap: 6px; margin-bottom: 12px; }
.cdd-theme { display: grid; grid-template-columns: 84px 1fr 40px; gap: 8px; align-items: center; font-size: 12px; }
.cdd-theme span { color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cdd-theme i { height: 8px; border-radius: 999px; background: rgba(56,132,255,.12); overflow: hidden; }
.cdd-theme i em { display: block; height: 100%; border-radius: 999px; background: linear-gradient(90deg, var(--accent), #8fb8ff); }
.cdd-theme b { text-align: right; font-variant-numeric: tabular-nums; }
.cdd-members { border-top: 1px solid var(--border); padding-top: 9px; display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.cdd-members > span { font-size: 11px; color: var(--muted); font-weight: 700; width: 100%; }
.cdd-members b { font-size: 12px; padding: 3px 9px; border-radius: 999px; background: rgba(56,132,255,.1); color: var(--accent); display: inline-flex; gap: 5px; align-items: baseline; }
.cdd-members b small { color: var(--muted); font-weight: 600; }
.committee-dd-matrix > h4 { font-size: 14px; margin: 0 0 10px; }
.cdd-matrix-grid { display: grid; grid-template-columns: 110px repeat(var(--cdd-cols), 1fr); gap: 4px; }
.cdd-mx-corner, .cdd-mx-head { font-size: 11.5px; font-weight: 700; color: var(--muted); padding: 5px; }
.cdd-mx-head { text-align: center; }
.cdd-mx-label { font-size: 12px; font-weight: 700; padding: 5px; display: flex; align-items: center; }
.cdd-mx-cell { display: grid; place-items: center; min-height: 38px; border-radius: 8px; font-size: 12px; font-weight: 700; font-variant-numeric: tabular-nums; background: color-mix(in srgb, var(--accent) calc(var(--heat) * 70%), transparent); color: var(--text); }
.cdd-mx-cell.is-lead { outline: 2px solid var(--accent); }
:root[data-theme="dark"] .cdd-mx-cell { color: #e6eef7; }
@media (max-width: 760px) { .committee-dd-grid { grid-template-columns: 1fr; } }

/* ===== 操作できる統合シナリオ（2040未来予測センター） ===== */
.scenario-sim .scenario-slider-row { display: flex; align-items: center; gap: 14px; margin: 6px 0 16px; padding: 14px 16px; border-radius: 14px; background: rgba(56,132,255,.06); border: 1px solid rgba(56,132,255,.18); }
.scenario-slider-row > span { font-size: 13px; color: var(--muted); font-weight: 700; white-space: nowrap; }
.scenario-slider-row input[type="range"] { flex: 1; height: 6px; -webkit-appearance: none; appearance: none; background: linear-gradient(90deg, #d4575b, var(--accent)); border-radius: 999px; outline: none; }
.scenario-slider-row input[type="range"]::-webkit-slider-thumb { -webkit-appearance: none; width: 22px; height: 22px; border-radius: 50%; background: #fff; border: 3px solid var(--accent); cursor: pointer; box-shadow: 0 2px 8px rgba(0,0,0,.18); }
.scenario-popval { font-size: 24px; font-weight: 800; min-width: 130px; text-align: right; font-variant-numeric: tabular-nums; }
.scenario-cascade { display: flex; align-items: stretch; gap: 8px; flex-wrap: wrap; margin-bottom: 10px; }
.scenario-cascade article { flex: 1; min-width: 120px; padding: 12px; border-radius: 12px; border: 1px solid var(--border); background: var(--card-2, rgba(255,255,255,.03)); text-align: center; }
.scenario-cascade article span { font-size: 11px; color: var(--muted); font-weight: 700; display: block; }
.scenario-cascade article strong { font-size: 19px; font-weight: 800; display: block; margin: 3px 0; font-variant-numeric: tabular-nums; }
.scenario-cascade article small { font-size: 10.5px; color: var(--muted); }
.scenario-cascade > i { align-self: center; color: #f5c451; font-style: normal; font-size: 18px; font-weight: 800; }
.scenario-summary { margin: 10px 0; padding: 12px 14px; border-radius: 10px; background: rgba(212,87,91,.06); border: 1px solid rgba(212,87,91,.2); font-size: 13px; line-height: 1.8; }
@media (max-width: 760px) { .scenario-cascade > i { display: none; } .scenario-cascade article { min-width: calc(50% - 4px); } }

/* ===== 気づきダイジェスト（重要発見） ===== */
.insight-digest-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
.insight-card { text-align: left; border: 1px solid var(--border); border-left-width: 4px; border-radius: 14px; padding: 16px; background: var(--card-2, rgba(255,255,255,.03)); cursor: pointer; display: flex; flex-direction: column; gap: 4px; transition: transform .15s ease, box-shadow .15s ease; }
.insight-card:hover { transform: translateY(-2px); box-shadow: 0 6px 18px rgba(0,0,0,.1); }
.insight-card > span { font-size: 12px; color: var(--muted); font-weight: 800; }
.insight-card > strong { font-size: 22px; font-weight: 800; font-variant-numeric: tabular-nums; line-height: 1.2; }
.insight-card > small { font-size: 12px; color: var(--muted); line-height: 1.6; flex: 1; }
.insight-card > b { font-size: 12px; color: var(--accent); font-weight: 800; margin-top: 4px; }
.insight-card.insight-danger { border-left-color: #d4575b; } .insight-card.insight-danger > strong { color: #d4575b; }
.insight-card.insight-warn { border-left-color: #e6a23c; } .insight-card.insight-warn > strong { color: #c47e1a; }
.insight-card.insight-good { border-left-color: #1f9d57; } .insight-card.insight-good > strong { color: #1f9d57; font-size: 18px; }
@media (max-width: 900px) { .insight-digest-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { .insight-digest-grid { grid-template-columns: 1fr; } }

/* ===== 印刷最適化（A4・議会/市民配布向け） ===== */
@media print {
  @page { size: A4; margin: 14mm 12mm; }
  html, body { background: #fff !important; color: #111 !important; }
  /* ダークモードでも印刷は白地・黒字に統一 */
  :root[data-theme="dark"] { --text:#111; --muted:#555; --border:#ccc; --card-2:#fff; --paper:#fff; --ink:#111; }
  /* ナビ・操作系・余計なクロームを非表示 */
  .topbar .topbar-actions, .uto-global-nav, #toolbar, .theme-toggle, .site-map-menu,
  input[type="range"], .scenario-slider-row, .psim-slider-row, .wf-tabs, .sub-tab-strip,
  .filter-reset-button, .muni-bulk-pin, [data-municipality-pin], .text-link-button { display: none !important; }
  /* スクロール演出で隠れている内容を全て表示 */
  .reveal-on-scroll { opacity: 1 !important; transform: none !important; }
  .app-loading { display: none !important; }
  /* sticky/影/角丸を印刷向けに整理 */
  .toolbar, .topbar { position: static !important; box-shadow: none !important; }
  main { width: 100% !important; max-width: none !important; padding: 0 !important; }
  /* パネルは1ページに収まるよう改ページ制御 */
  section, article, .panel, .uto-home-section, .future-center-card, .committee-dd-card,
  .insight-card, .bm-card, .wf-kpi { break-inside: avoid; page-break-inside: avoid; }
  h1, h2, h3 { break-after: avoid; }
  /* 広い表は全体を印刷（はみ出しは縮小フォントで吸収） */
  .table-wrap { overflow: visible !important; }
  table { font-size: 9px !important; }
  /* 色付き背景は薄く（インク節約・可読性） */
  .uto-home-hero, .home-decision-gateway, .future-center-hero, .governance-command,
  .municipality-hero, .wasteFinderPanel .panel-head { background: #fff !important; color: #111 !important; border: 1px solid #ccc; }
  .uto-home-hero h2, .uto-home-kicker, .future-center-hero h1 { color: #111 !important; }
  a { color: #111 !important; text-decoration: none; }
}
.bm-trend { display: block; font-size: 10.5px; font-weight: 800; margin-top: 3px; }
.bm-trend.down { color: #d4575b; } .bm-trend.up { color: #1f9d57; } .bm-trend.flat { color: var(--muted); }

/* 地区別マップ（D-1） */
.district-map-section .district-metric-tabs { display: flex; flex-wrap: wrap; gap: 8px; margin: 4px 0 12px; }
.district-metric-chip { font-size: 12.5px; font-weight: 800; padding: 7px 13px; border: 1px solid var(--line); background: var(--card, #fff); color: var(--muted); border-radius: 999px; cursor: pointer; }
.district-metric-chip.active { border-color: rgba(31,157,87,.5); background: rgba(31,157,87,.1); color: #157a43; }
.district-map-large { height: 420px; border: 1px solid var(--line); border-radius: 12px; overflow: hidden; background: #eef1f4; }
.district-map-legend { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 14px; margin-top: 10px; color: var(--muted); font-size: 11.5px; }
.district-map-legend .dml-title { font-weight: 900; color: var(--ink); }
.district-map-legend span { display: inline-flex; gap: 6px; align-items: center; }
.district-map-legend i { width: 11px; height: 11px; border-radius: 50%; background: var(--muted); display: inline-block; }
.district-map-legend .dml-size i { width: 17px; height: 17px; border: 2px solid var(--muted); background: transparent; }

/* わたしの税金の使い道（試算） A-3 */
.tax-usage-section .tax-usage-input { margin: 4px 0 14px; }
.tax-usage-input label { display: block; font-size: 13px; font-weight: 800; color: var(--ink); margin-bottom: 6px; }
.tax-usage-field { display: inline-flex; align-items: center; gap: 6px; }
.tax-usage-field input { width: 160px; font-size: 20px; font-weight: 900; padding: 8px 10px; border: 1px solid var(--line); border-radius: 10px; text-align: right; color: var(--ink); background: var(--card, #fff); }
.tax-usage-field span { font-size: 14px; font-weight: 800; color: var(--muted); }
.tax-usage-presets { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 10px; }
.tax-usage-presets > span { font-size: 12px; color: var(--muted); font-weight: 700; }
.tax-usage-preset { font-size: 12px; font-weight: 800; padding: 6px 11px; border: 1px solid rgba(31,157,87,.35); background: rgba(31,157,87,.08); color: #157a43; border-radius: 999px; cursor: pointer; }
.tax-usage-preset:hover { background: rgba(31,157,87,.16); }
.tax-usage-hint { font-size: 11.5px; color: var(--muted); line-height: 1.65; margin-top: 8px; }
.tax-usage-headline { font-size: 14px; line-height: 1.85; padding: 12px 14px; border-radius: 12px; background: rgba(56,132,255,.07); border: 1px solid rgba(56,132,255,.2); margin-bottom: 14px; }
.tax-usage-headline b { color: var(--brand); }
.tax-usage-list { display: grid; gap: 10px; }
.tax-usage-row { display: flex; gap: 12px; align-items: flex-start; }
.tax-usage-ic { font-size: 22px; line-height: 1.2; width: 30px; text-align: center; flex: 0 0 auto; }
.tax-usage-main { flex: 1 1 auto; min-width: 0; }
.tax-usage-row-head { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; }
.tax-usage-row-head strong { font-size: 13.5px; color: var(--ink); }
.tax-usage-amt { font-size: 15px; font-weight: 900; color: var(--ink); white-space: nowrap; }
.tax-usage-bar { height: 8px; border-radius: 999px; background: rgba(0,0,0,.06); overflow: hidden; margin: 5px 0 3px; }
.tax-usage-bar i { display: block; height: 100%; border-radius: 999px; background: linear-gradient(90deg, #3884ff, #1f9d57); }
.tax-usage-main small { font-size: 11px; color: var(--muted); }

/* 施設見直しシミュレーション（D-2） */
.facility-scenario-section .scenario-band-row { display: flex; flex-wrap: wrap; gap: 8px; margin: 4px 0 14px; }
.scenario-band-chip { display: flex; flex-direction: column; align-items: flex-start; gap: 1px; font-size: 12.5px; font-weight: 800; padding: 7px 12px; border: 1px solid var(--line); background: var(--card, #fff); color: var(--muted); border-radius: 10px; cursor: pointer; }
.scenario-band-chip small { font-size: 10.5px; font-weight: 600; color: var(--muted); }
.scenario-band-chip.active { border-color: rgba(154,166,178,.7); background: rgba(154,166,178,.16); color: var(--ink); }
.scenario-band-chip.active small { color: var(--ink); }
.scenario-readouts { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 10px; margin-bottom: 14px; }
.scenario-readouts article { border: 1px solid var(--line); border-radius: 12px; padding: 10px 12px; background: var(--card, #fff); }
.scenario-readouts span { display: block; font-size: 11.5px; color: var(--muted); font-weight: 700; }
.scenario-readouts strong { display: block; font-size: 19px; font-weight: 900; color: var(--ink); margin: 2px 0; }
.scenario-readouts small { font-size: 10.5px; color: var(--muted); line-height: 1.5; }
.scenario-readouts .scenario-saving { border-color: rgba(212,87,91,.35); background: rgba(212,87,91,.06); }
.scenario-readouts .scenario-saving strong { color: #c1474b; }
.facility-scenario-map { height: 400px; border: 1px solid var(--line); border-radius: 12px; overflow: hidden; background: #eef1f4; }

/* 指標ファインダー（D-3） */
.metric-finder-section .metric-finder-controls { display: flex; flex-direction: column; gap: 10px; margin-bottom: 12px; }
.metric-finder-search { width: 100%; font-size: 14px; padding: 11px 14px; border: 1px solid var(--line); border-radius: 12px; color: var(--ink); background: var(--card, #fff); }
.metric-finder-chips { display: flex; flex-wrap: wrap; gap: 7px; }
.mf-chip { font-size: 12px; font-weight: 800; padding: 6px 11px; border: 1px solid var(--line); background: var(--card, #fff); color: var(--muted); border-radius: 999px; cursor: pointer; display: inline-flex; gap: 6px; align-items: center; }
.mf-chip span { font-size: 10.5px; background: rgba(0,0,0,.06); border-radius: 999px; padding: 1px 6px; }
.mf-chip.active { border-color: rgba(56,132,255,.5); background: rgba(56,132,255,.1); color: var(--brand); }
.metric-finder-results { display: grid; gap: 9px; max-height: 560px; overflow-y: auto; }
.metric-finder-row { display: flex; justify-content: space-between; gap: 14px; align-items: flex-start; border: 1px solid var(--line); border-radius: 12px; padding: 11px 13px; background: var(--card, #fff); }
.mf-main { min-width: 0; flex: 1 1 auto; }
.mf-head { display: flex; flex-wrap: wrap; gap: 8px; align-items: baseline; }
.mf-head strong { font-size: 14px; color: var(--ink); }
.mf-cat { font-size: 10.5px; font-weight: 800; color: var(--muted); background: rgba(0,0,0,.05); border-radius: 6px; padding: 1px 7px; }
.mf-meta { display: flex; flex-wrap: wrap; gap: 8px 12px; align-items: baseline; margin: 5px 0; }
.mf-value { font-size: 16px; font-weight: 900; color: var(--ink); }
.mf-value.needed { color: var(--muted); font-size: 13px; }
.mf-rank { font-size: 11.5px; font-weight: 800; color: #157a43; }
.mf-status { font-size: 10.5px; font-weight: 800; border-radius: 999px; padding: 1px 8px; }
.mf-status.mf-ok, .mf-status.mf-available { background: rgba(31,157,87,.12); color: #157a43; }
.mf-status.mf-partial { background: rgba(232,163,61,.16); color: #a5680f; }
.mf-status.mf-needed { background: rgba(212,87,91,.12); color: #c1474b; }
.mf-interp { font-size: 11.5px; color: var(--muted); line-height: 1.6; margin-top: 3px; }
.mf-source { flex: 0 0 auto; text-align: right; display: flex; flex-direction: column; gap: 4px; align-items: flex-end; }
.mf-source a { font-size: 12px; font-weight: 800; color: var(--brand); text-decoration: none; white-space: nowrap; }
.mf-source code { font-size: 10px; color: var(--muted); overflow-wrap: anywhere; }
.metric-finder-empty { font-size: 13px; color: var(--muted); padding: 18px; text-align: center; }
/* 施設カルテ（A1） — scores＋master＋geo を1施設に集約するモーダル */
.fac-card-open { margin-top: 12px; width: 100%; padding: 9px 12px; border-radius: 9px; border: 1px solid var(--brand); background: transparent; color: var(--brand); font-size: 12.5px; font-weight: 800; cursor: pointer; }
.fac-card-open:hover { background: color-mix(in srgb, var(--brand) 10%, transparent); }
.fac-card-actions { margin-top: 12px; display: flex; flex-direction: column; gap: 7px; }
.fac-card-actions .fac-card-open { margin-top: 0; }
.fac-compare-toggle { display: inline-flex; align-items: center; gap: 6px; font-size: 11.5px; font-weight: 700; color: var(--muted); cursor: pointer; align-self: flex-start; }
.fac-compare-toggle input { accent-color: var(--brand); cursor: pointer; }
/* 複数施設比較バー */
.fac-compare-bar { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin: 14px 0 10px; padding: 10px 14px; border: 1px solid var(--line); border-radius: 12px; background: var(--soft); }
.fac-compare-hint { font-size: 11px; color: var(--muted); flex: 1 1 220px; }
.fac-compare-count { font-size: 12px; font-weight: 800; }
.fac-compare-open, .fac-compare-clear { padding: 7px 14px; border-radius: 999px; font-size: 12px; font-weight: 800; cursor: pointer; border: 1px solid var(--brand); }
.fac-compare-open { background: var(--brand); color: #fff; }
.fac-compare-clear { background: transparent; color: var(--muted); border-color: var(--line); }
.fac-compare-open:disabled, .fac-compare-clear:disabled { opacity: .45; cursor: not-allowed; }
/* 施設カルテ比較表 */
.fcmp-head { padding-right: 32px; display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.fcmp-csv { flex: none; padding: 7px 13px; border-radius: 999px; border: 1px solid var(--brand); background: var(--brand); color: #fff; font-size: 12px; font-weight: 800; cursor: pointer; white-space: nowrap; }
.fcmp-csv:hover { filter: brightness(1.08); }
.fcmp-table-wrap { overflow-x: auto; margin: 12px 0; }
.fcmp-table { width: 100%; border-collapse: collapse; font-size: 12px; }
.fcmp-table th, .fcmp-table td { border: 1px solid var(--line); padding: 7px 10px; text-align: left; vertical-align: top; }
.fcmp-table thead th { background: var(--soft); }
.fcmp-table thead th b { display: block; margin-top: 4px; font-size: 12.5px; }
.fcmp-table tbody th { background: var(--soft); font-weight: 800; white-space: nowrap; color: var(--ink); }
.fcmp-table td { color: var(--ink); }
.fcmp-table tr.fcmp-axis th { color: var(--muted); font-weight: 700; }
.fcmp-table td.fcmp-hot { background: color-mix(in srgb, var(--brand) 14%, transparent); font-weight: 800; }
.fcard-modal { position: fixed; inset: 0; z-index: 100; display: flex; align-items: center; justify-content: center; padding: 20px; }
.fcard-modal[hidden] { display: none; }
.fcard-overlay { position: absolute; inset: 0; background: rgba(8,14,22,.55); backdrop-filter: blur(2px); }
.fcard-box { position: relative; z-index: 1; width: min(680px, 100%); max-height: 88vh; overflow-y: auto; background: var(--card-bg, #fff); border: 1px solid var(--border); border-radius: 16px; padding: 24px; box-shadow: 0 24px 60px rgba(0,0,0,.3); }
:root[data-theme="dark"] .fcard-box { background: #131a24; }
.fcard-close { position: absolute; top: 12px; right: 14px; width: 32px; height: 32px; border-radius: 50%; border: 1px solid var(--border); background: var(--card-2, rgba(0,0,0,.04)); font-size: 18px; cursor: pointer; line-height: 1; }
.fcard-head { display: flex; align-items: flex-start; gap: 14px; padding-right: 32px; }
.fcard-head h3 { margin: 4px 0 2px; font-size: 19px; }
.fcard-head p { font-size: 12.5px; color: var(--muted); margin: 0; }
.fcard-score { text-align: center; flex-shrink: 0; }
.fcard-score strong { display: block; font-size: 30px; font-weight: 900; line-height: 1; font-variant-numeric: tabular-nums; }
.fcard-score span { font-size: 11px; color: var(--muted); }
.fcard-head-meta { flex: 1; }
.fcard-confidence { text-align: center; flex-shrink: 0; }
.fcard-confidence span { display: block; font-size: 10px; color: var(--muted); }
.fcard-confidence strong { font-size: 15px; font-weight: 800; }
.fcard-riskimpact { display: flex; align-items: center; gap: 10px; margin: 14px 0 4px; font-size: 12.5px; color: var(--muted); }
.fcard-riskimpact b { color: var(--text); font-size: 14px; font-variant-numeric: tabular-nums; }
.fcard-riskimpact i { font-style: normal; opacity: .5; }
.fcard-facts { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin: 14px 0; }
.fcard-fact { padding: 10px; border-radius: 10px; background: var(--card-2, rgba(0,0,0,.03)); border: 1px solid var(--border); }
.fcard-fact span { font-size: 10.5px; color: var(--muted); }
.fcard-fact strong { display: block; font-size: 14px; font-weight: 800; margin-top: 2px; }
.fcard-fact small { display: block; font-size: 10px; color: var(--muted); margin-top: 2px; }
.fcard-section { margin-top: 16px; }
.fcard-section h4 { font-size: 13px; margin: 0 0 8px; }
.fcard-section p { font-size: 12.5px; line-height: 1.7; margin: 0; }
.fcard-radar-wrap { height: 240px; }
.fcard-axis-list { list-style: none; margin: 10px 0 0; padding: 0; display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; }
.fcard-axis-list li { display: flex; justify-content: space-between; font-size: 11.5px; padding: 5px 8px; border-radius: 7px; background: var(--card-2, rgba(0,0,0,.03)); }
.fcard-axis-list b { font-variant-numeric: tabular-nums; }
.fcard-action p { font-weight: 700; }
.fcard-map { height: 220px; border-radius: 12px; overflow: hidden; border: 1px solid var(--border); }
.fcard-map-note, .fcard-no-geo { font-size: 11px; color: var(--muted); margin-top: 6px; }
.fcard-info-needed ul { margin: 0; padding-left: 18px; font-size: 12px; line-height: 1.7; }
.fcard-missing { font-size: 11.5px; color: var(--amber); margin-top: 10px; }
.fcard-source { font-size: 11px; color: var(--muted); margin-top: 16px; line-height: 1.6; }
.fcard-empty { padding: 24px; text-align: center; color: var(--muted); }
@media (max-width: 560px) { .fcard-facts, .fcard-axis-list { grid-template-columns: repeat(2, 1fr); } }
/* city-health: 部分指標バッジ・採点基準・総合点の但し書き（採点の透明性） */
.city-health-method-note { margin: -4px 0 12px; color: var(--muted); font-size: 11.5px; line-height: 1.65; }
.city-health-domain-grid h3 { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.ch-partial-badge { font-size: 9px; font-weight: 900; color: #b45309; background: rgba(217,119,6,.14); border: 1px solid rgba(217,119,6,.45); border-radius: 999px; padding: 1px 7px; cursor: help; }
:root[data-theme="dark"] .ch-partial-badge { color: #fbbf24; }
.city-health-domain-grid small.ch-scope { color: #b45309; font-weight: 700; line-height: 1.5; }
:root[data-theme="dark"] .city-health-domain-grid small.ch-scope { color: #fbbf24; }
.city-health-domain-grid small.ch-basis { color: var(--muted); line-height: 1.5; margin: 2px 0; }

/* city-health: 部分指標は総合点に算入しない旨のカード内注記（方針③） */
.city-health-domain-grid small.ch-excluded { color: #b45309; font-weight: 700; line-height: 1.5; }
:root[data-theme="dark"] .city-health-domain-grid small.ch-excluded { color: #fbbf24; }

/* 総合計画KPIダッシュボード（C1） — 基準値→2030目標の距離と必要ペース */
.skpi-panel .skpi-signal-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin: 14px 0; }
.skpi-signal-grid article { padding: 10px 12px; border-radius: 10px; border: 1px solid var(--line); background: var(--soft); }
.skpi-signal-grid article span { font-size: 11px; color: var(--muted); }
.skpi-signal-grid article strong { display: block; font-size: 22px; font-weight: 900; }
.skpi-signal-grid article.good strong { color: #0f766e; }
.skpi-signal-grid article.watch strong { color: #b45309; }
.skpi-signal-grid article.danger strong { color: #be123c; }
.skpi-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 12px; }
.skpi-card { border: 1px solid var(--line); border-left: 5px solid var(--line); border-radius: 12px; padding: 14px; background: var(--paper); }
.skpi-card.tone-good { border-left-color: #0f766e; }
.skpi-card.tone-watch { border-left-color: #d97706; }
.skpi-card.tone-danger { border-left-color: #e11d48; }
.skpi-card.tone-reference { border-left-color: #94a3b8; }
.skpi-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 8px; }
.skpi-head h4 { margin: 0; font-size: 14px; }
.skpi-band { font-size: 10px; font-weight: 900; border-radius: 999px; padding: 2px 9px; white-space: nowrap; }
.skpi-band.good { color: #0f766e; background: rgba(15,118,110,.12); }
.skpi-band.watch { color: #b45309; background: rgba(217,119,6,.14); }
.skpi-band.danger { color: #be123c; background: rgba(225,29,72,.12); }
.skpi-band.reference { color: #64748b; background: rgba(100,116,139,.12); }
.skpi-goal { margin: 6px 0 10px; font-size: 11px; color: var(--muted); }
.skpi-track { display: flex; align-items: center; gap: 8px; }
.skpi-point { flex: 1; }
.skpi-point span { font-size: 10px; color: var(--muted); }
.skpi-point strong { display: block; font-size: 16px; font-weight: 800; font-variant-numeric: tabular-nums; }
.skpi-point small { font-size: 10px; color: var(--muted); }
.skpi-target { text-align: right; }
.skpi-arrow { color: var(--muted); font-size: 16px; flex-shrink: 0; }
.skpi-pace { margin: 10px 0 0; font-size: 11.5px; font-weight: 700; color: var(--ink); }
.skpi-note { margin-top: 14px; font-size: 11px; color: var(--muted); line-height: 1.6; }
@media (max-width: 520px) { .skpi-panel .skpi-signal-grid { grid-template-columns: 1fr 1fr; } }

/* 地区マップ 公共施設オーバーレイ（D-4 / A2） */
.district-facility-toggle { margin-left: auto; }
.district-map-legend .dml-facility { display: inline-flex; align-items: center; gap: 4px; flex-wrap: wrap; }
.district-map-legend .dml-facility i { width: 10px; height: 10px; border-radius: 50%; display: inline-block; border: 1px solid #fff; box-shadow: 0 0 0 1px rgba(0,0,0,.15); }

/* 10年財政見通しシミュレーター（B1） */
.fiscal-proj-section .fp-levers { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; margin: 14px 0; }
.fp-levers label { display: flex; flex-direction: column; gap: 5px; font-size: 12px; font-weight: 800; color: var(--ink); }
.fp-levers output { font-weight: 900; color: var(--brand); }
.fp-levers input[type="range"] { width: 100%; }
.fp-levers small { font-weight: 500; font-size: 10.5px; color: var(--muted); }
.fp-readouts { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; margin: 12px 0; }
.fp-readouts article { padding: 10px 12px; border: 1px solid var(--line); border-radius: 10px; background: var(--soft); }
.fp-readouts article.fp-alert { border-color: rgba(225,29,72,.5); background: rgba(225,29,72,.06); }
.fp-readouts span { font-size: 10.5px; color: var(--muted); }
.fp-readouts strong { display: block; font-size: 19px; font-weight: 900; font-variant-numeric: tabular-nums; margin: 2px 0; }
.fp-readouts small { font-size: 10px; color: var(--muted); }
.fp-positive { color: #0f766e; }
.fp-negative { color: #be123c; }
.fp-chart-wrap { height: 260px; margin: 8px 0 4px; }
@media (max-width: 720px) { .fiscal-proj-section .fp-levers { grid-template-columns: 1fr; } .fp-readouts { grid-template-columns: 1fr 1fr; } }

/* 地区別経営カルテ */
.district-management-panel { display: grid; gap: 18px; min-width: 0; max-width: 100%; overflow: hidden; }
.district-management-panel > *, .district-management-panel .diagnosis-disclosure, .district-management-panel .diagnosis-disclosure dl, .district-management-panel .diagnosis-disclosure dd { min-width: 0; max-width: 100%; overflow-wrap: anywhere; }
.district-card-hero { display: flex; justify-content: space-between; gap: 24px; padding: clamp(24px, 4vw, 48px); border-radius: 24px; color: #fff; background: linear-gradient(135deg, #153d4f, #176b65); }
.district-card-hero span, .district-section-head span { font-size: 11px; font-weight: 900; letter-spacing: .12em; }
.district-card-hero h1 { margin: 8px 0; font-size: clamp(28px, 4vw, 46px); }
.district-card-hero p { max-width: 720px; margin: 0; line-height: 1.8; }
.district-card-hero aside { min-width: 150px; align-self: center; text-align: center; padding: 18px; border: 1px solid rgba(255,255,255,.3); border-radius: 18px; background: rgba(255,255,255,.1); }
.district-card-hero aside strong { display: block; font-size: 34px; }
.district-card-hero aside small { color: rgba(255,255,255,.82); }
.district-selector { display: flex; flex-wrap: wrap; gap: 8px; padding: 14px; border: 1px solid var(--line); border-radius: 16px; background: var(--paper); }
.district-selector button, .district-comparison-table button { border: 1px solid var(--line); border-radius: 999px; padding: 8px 14px; color: var(--ink); background: var(--soft); font-weight: 800; cursor: pointer; }
.district-selector button.active { color: #fff; border-color: #176b65; background: #176b65; }
.district-profile-card, .district-management-card, .district-data-gaps { padding: clamp(18px, 3vw, 28px); border: 1px solid var(--line); border-radius: 18px; background: var(--paper); }
.district-profile-head, .district-section-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; }
.district-profile-head h2, .district-section-head h2, .district-data-gaps h2 { margin: 4px 0 6px; }
.district-profile-head p, .district-data-gaps p { margin: 0; color: var(--muted); }
.district-profile-head > strong { padding: 6px 11px; border-radius: 999px; color: #9a5a08; background: rgba(232,163,61,.14); white-space: nowrap; }
.district-kpis { display: grid; grid-template-columns: repeat(6, 1fr); gap: 10px; margin-top: 20px; }
.district-kpis article { padding: 14px; border-radius: 12px; background: var(--soft); }
.district-kpis span, .district-kpis small { display: block; color: var(--muted); font-size: 11px; }
.district-kpis strong { display: block; margin: 4px 0; font-size: 21px; }
.district-management-grid { display: grid; grid-template-columns: 1.1fr .9fr; gap: 18px; }
.district-section-head > small { color: var(--muted); }
.district-needs { display: grid; gap: 10px; margin-top: 16px; }
.district-needs article { display: flex; gap: 12px; padding: 14px; border: 1px solid var(--line); border-radius: 12px; }
.district-needs article > b { display: grid; place-items: center; flex: 0 0 30px; height: 30px; border-radius: 50%; color: #176b65; background: rgba(23,107,101,.12); }
.district-needs h3 { margin: 0 0 5px; font-size: 15px; }
.district-needs p { margin: 0 0 5px; line-height: 1.65; }
.district-needs small, .district-caution { color: var(--muted); line-height: 1.6; }
.district-caution { margin: 14px 0 0; font-size: 11.5px; }
.district-facility-summary { display: flex; align-items: baseline; gap: 10px; margin: 18px 0 10px; }
.district-facility-summary strong { font-size: 30px; }
.district-facility-summary span { color: var(--muted); font-size: 12px; }
.district-facility-list { display: grid; gap: 8px; }
.district-facility-list article { display: flex; justify-content: space-between; gap: 12px; padding: 10px 0; border-bottom: 1px solid var(--line); }
.district-facility-list strong, .district-facility-list small { display: block; }
.district-facility-list small, .district-facility-list span { color: var(--muted); font-size: 11px; }
.district-comparison-table th, .district-comparison-table td { white-space: nowrap; }
.district-comparison-table tbody tr.is-selected { background: rgba(23,107,101,.09); }
.district-comparison-table button { padding: 5px 10px; border-radius: 8px; }
.district-data-gaps { display: grid; grid-template-columns: minmax(240px, .8fr) 1.2fr; gap: 24px; }
.district-data-gaps > div:last-child { display: grid; grid-template-columns: repeat(2, 1fr); gap: 9px; }
.district-data-gaps article { display: flex; justify-content: space-between; gap: 10px; padding: 12px; border-radius: 10px; background: var(--soft); }
.district-data-gaps article span { color: #b45309; font-size: 11px; font-weight: 900; }
@media (max-width: 980px) {
  .district-kpis { grid-template-columns: repeat(3, 1fr); }
  .district-management-grid, .district-data-gaps { grid-template-columns: 1fr; }
}
@media (max-width: 600px) {
  .district-card-hero { display: block; border-radius: 18px; }
  .district-card-hero aside { min-width: 0; width: auto; margin-top: 18px; }
  .district-card-hero p { overflow-wrap: anywhere; }
  .district-management-panel .diagnosis-disclosure { overflow: hidden; }
  .district-kpis { grid-template-columns: repeat(2, 1fr); }
  .district-data-gaps > div:last-child { grid-template-columns: 1fr; }
  .district-profile-head { display: block; }
  .district-profile-head > strong { display: inline-block; margin-top: 10px; }
}

/* 全ページ共通シナリオ */
.common-scenario-bar { margin: 0 0 18px; min-width: 0; }
.common-scenario-bar details { border: 1px solid rgba(29,78,216,.28); border-radius: 14px; background: color-mix(in srgb, #2563eb 5%, var(--paper)); overflow: hidden; }
.common-scenario-bar summary { display: grid; grid-template-columns: auto auto 1fr; align-items: center; gap: 10px 16px; padding: 12px 16px; cursor: pointer; list-style: none; }
.common-scenario-bar summary::-webkit-details-marker { display: none; }
.common-scenario-bar summary > span { padding: 4px 8px; border-radius: 999px; color: #1d4ed8; background: rgba(37,99,235,.1); font-size: 10px; font-weight: 900; }
.common-scenario-bar summary > strong { font-size: 13px; }
.common-scenario-bar summary > small { color: var(--muted); font-size: 11px; }
.common-scenario-bar summary::after { content: "設定"; justify-self: end; color: #1d4ed8; font-size: 10px; font-weight: 900; }
.common-scenario-body { display: grid; grid-template-columns: minmax(320px, 1.4fr) 130px minmax(260px, 1fr); gap: 14px; align-items: end; padding: 14px 16px 16px; border-top: 1px solid var(--line); }
.common-scenario-presets { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.common-scenario-presets button { padding: 10px; border: 1px solid var(--line); border-radius: 10px; color: var(--ink); background: var(--paper); text-align: left; cursor: pointer; }
.common-scenario-presets button strong, .common-scenario-presets button small { display: block; }
.common-scenario-presets button small { margin-top: 2px; color: var(--muted); font-size: 9px; }
.common-scenario-presets button.active { border-color: #2563eb; box-shadow: inset 0 0 0 1px #2563eb; }
.common-scenario-body label { display: grid; gap: 5px; color: var(--muted); font-size: 10px; font-weight: 800; }
.common-scenario-body select { padding: 8px; border: 1px solid var(--line); border-radius: 8px; color: var(--ink); background: var(--paper); }
.common-scenario-slider { grid-template-columns: 1fr auto; }
.common-scenario-slider input { grid-column: 1 / -1; width: 100%; }
.common-scenario-slider output { color: var(--ink); font-weight: 900; }
.common-scenario-body > p { grid-column: 1 / -1; margin: 0; color: var(--muted); font-size: 9.5px; line-height: 1.6; }
@media (max-width: 850px) {
  .common-scenario-body { grid-template-columns: 1fr 120px; }
  .common-scenario-slider { grid-column: 1 / -1; }
}
@media (max-width: 560px) {
  .common-scenario-bar summary { grid-template-columns: 1fr auto; gap: 5px 8px; }
  .common-scenario-bar summary > span { justify-self: start; }
  .common-scenario-bar summary > strong { grid-column: 1 / -1; }
  .common-scenario-bar summary > small { grid-column: 1 / -1; overflow-wrap: anywhere; }
  .common-scenario-bar summary::after { grid-column: 2; grid-row: 1; }
  .common-scenario-body { grid-template-columns: 1fr; }
  .common-scenario-presets { grid-template-columns: 1fr; }
  .common-scenario-slider { grid-column: auto; }
}

/* 共通KPI・用語辞書 */
.kpi-dictionary-panel { display: grid; gap: 16px; min-width: 0; }
.kpi-dictionary-hero { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 24px; align-items: center; padding: clamp(24px, 4vw, 44px); border-radius: 22px; color: #fff; background: linear-gradient(135deg, #312e81, #1d4ed8 58%, #0e7490); }
.kpi-dictionary-hero span { font-size: 10px; font-weight: 900; letter-spacing: .14em; }
.kpi-dictionary-hero h1 { margin: 7px 0 10px; font-size: clamp(28px, 4vw, 44px); }
.kpi-dictionary-hero p { max-width: 760px; margin: 0; color: rgba(255,255,255,.86); line-height: 1.8; }
.kpi-dictionary-hero aside { min-width: 180px; padding: 18px; border: 1px solid rgba(255,255,255,.28); border-radius: 16px; text-align: center; background: rgba(255,255,255,.1); }
.kpi-dictionary-hero aside strong, .kpi-dictionary-hero aside small { display: block; }
.kpi-dictionary-hero aside strong { font-size: 32px; }
.kpi-dictionary-hero aside small { margin-top: 5px; color: rgba(255,255,255,.78); }
.kpi-dictionary-summary { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; }
.kpi-dictionary-summary article { padding: 15px; border: 1px solid var(--line); border-radius: 13px; background: var(--paper); }
.kpi-dictionary-summary span, .kpi-dictionary-summary small { display: block; color: var(--muted); font-size: 10px; }
.kpi-dictionary-summary strong { display: block; margin: 4px 0; font-size: 22px; }
.kpi-dictionary-controls { display: grid; grid-template-columns: minmax(260px, 1fr) 210px 170px auto; gap: 10px; align-items: end; padding: 14px; border: 1px solid var(--line); border-radius: 14px; background: var(--paper); }
.kpi-dictionary-controls label { display: grid; gap: 5px; color: var(--muted); font-size: 10px; font-weight: 800; }
.kpi-dictionary-controls input, .kpi-dictionary-controls select, .kpi-dictionary-controls button { min-height: 40px; padding: 9px 11px; border: 1px solid var(--line); border-radius: 9px; color: var(--ink); background: var(--soft); }
.kpi-dictionary-controls button { color: #1d4ed8; font-weight: 900; cursor: pointer; }
.kpi-dictionary-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.kpi-dictionary-count { grid-column: 1 / -1; display: flex; align-items: baseline; gap: 6px; }
.kpi-dictionary-count span { color: var(--muted); font-size: 11px; }
.kpi-dictionary-list > article { padding: 17px; border: 1px solid var(--line); border-radius: 14px; background: var(--paper); }
.kpi-dictionary-head { display: flex; justify-content: space-between; gap: 12px; }
.kpi-dictionary-head span { color: #1d4ed8; font-size: 9px; font-weight: 900; }
.kpi-dictionary-head h2 { margin: 4px 0; font-size: 17px; }
.kpi-dictionary-head strong { color: var(--muted); font-size: 11px; }
.kpi-dictionary-head em { align-self: flex-start; padding: 4px 8px; border-radius: 999px; font-size: 9px; font-style: normal; font-weight: 900; white-space: nowrap; }
.kpi-dictionary-head em.available { color: #0f766e; background: rgba(15,118,110,.12); }
.kpi-dictionary-head em.partial { color: #b45309; background: rgba(217,119,6,.14); }
.kpi-dictionary-head em.needed { color: #be123c; background: rgba(225,29,72,.12); }
.kpi-dictionary-list > article > p { min-height: 3.2em; color: var(--muted); font-size: 11px; line-height: 1.65; }
.kpi-dictionary-list dl { display: grid; grid-template-columns: 1fr 1fr; gap: 7px; margin: 12px 0 0; }
.kpi-dictionary-list dl div { min-width: 0; padding: 8px; border-radius: 8px; background: var(--soft); }
.kpi-dictionary-list dt { color: var(--muted); font-size: 9px; }
.kpi-dictionary-list dd { margin: 3px 0 0; font-size: 10px; font-weight: 800; overflow-wrap: anywhere; }
.kpi-dictionary-list code { font-size: 9px; }
.kpi-dictionary-governance { padding: 22px; border: 1px solid var(--line); border-radius: 16px; background: var(--paper); }
.kpi-dictionary-governance > div { display: grid; grid-template-columns: repeat(4, 1fr); gap: 9px; }
.kpi-dictionary-governance article { padding: 12px; border-left: 4px solid #1d4ed8; background: var(--soft); }
.kpi-dictionary-governance p { margin: 5px 0 0; color: var(--muted); font-size: 10px; line-height: 1.6; }
@media (max-width: 900px) {
  .kpi-dictionary-summary, .kpi-dictionary-governance > div { grid-template-columns: repeat(2, 1fr); }
  .kpi-dictionary-controls { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 600px) {
  .kpi-dictionary-hero { grid-template-columns: 1fr; }
  .kpi-dictionary-hero aside { min-width: 0; }
  .kpi-dictionary-summary, .kpi-dictionary-controls, .kpi-dictionary-list, .kpi-dictionary-governance > div { grid-template-columns: 1fr; }
  .kpi-dictionary-count { grid-column: auto; }
  .kpi-dictionary-list dl { grid-template-columns: 1fr; }
}

/* SITEWIDE READABILITY PASS
   情報量が増えたページでも本文・注釈・操作ラベルが読めるよう、画面表示だけに効く
   タイポグラフィの下限を設ける。ページ面積より可読性を優先するための共通レイヤー。 */
@media screen {
  body {
    font-size: var(--font-body);
    line-height: var(--line-body);
  }

  main,
  .app-main,
  .main-content {
    font-size: var(--font-body);
    line-height: var(--line-body);
  }

  main :is(p, li, dd) {
    font-size: max(14.5px, 0.9rem) !important;
    line-height: 1.78 !important;
  }

  main :is(dt, label, button, input, select, textarea) {
    font-size: max(13.5px, 0.84rem) !important;
    line-height: 1.5 !important;
  }

  main :is(small, figcaption, .chart-source, .note, .caption, .help-text) {
    font-size: max(12.5px, 0.78rem) !important;
    line-height: 1.65 !important;
  }

  main :is(th, td) {
    font-size: max(13px, 0.82rem) !important;
    line-height: 1.58 !important;
  }

  main :is(h1, h2, h3, h4, strong) {
    line-height: 1.35 !important;
  }

  .uto-nav-list > button span {
    font-size: 15px !important;
  }

  .uto-nav-list > button small,
  .site-map-menu > summary span,
  .site-map-menu > summary small,
  .site-map-panel :is(button small, p, small),
  .common-scenario-bar summary > small,
  .common-scenario-presets button small {
    font-size: 12.5px !important;
    line-height: 1.6 !important;
  }

  .site-map-panel :is(button strong, h3),
  .common-scenario-bar summary > strong {
    font-size: 14.5px !important;
    line-height: 1.45 !important;
  }

  .common-scenario-bar summary > span,
  .common-scenario-bar summary::after,
  .common-scenario-body label {
    font-size: 12px !important;
  }

  .common-scenario-body > p {
    font-size: 13px !important;
    line-height: 1.68 !important;
  }

  .decision-journey :is(p, small, li, dd, dt, button, label),
  .decision-audience-guide :is(p, small, li, dd, dt, button, label),
  .decision-use-cases :is(p, small, li, dd, dt, button, label),
  .decision-trust :is(p, small, li, dd, dt, button, label) {
    font-size: 13.5px !important;
    line-height: 1.68 !important;
  }

  .citizen-support-navigator :is(span, small, b, em, dt, dd, p, li, button, label, a),
  .national-policy-alignment :is(span, small, b, em, dt, dd, p, li, button, label, a),
  .support-source-quality :is(span, small, b, em, dt, dd, p, li, button, label, a),
  .support-delivery-monitor :is(span, small, b, em, dt, dd, p, li, button, label, a),
  .life-issue-category-map :is(span, small, b, em, dt, dd, p, li, button, label, a),
  .senior-welfare-focus :is(span, small, b, em, dt, dd, p, li, button, label, a),
.child-family-focus :is(span, small, b, em, dt, dd, p, li, button, label, a) {
    font-size: 13px !important;
    line-height: 1.65 !important;
  }

  /* 子育て環境・不登校支援: PCではカードを読みやすい3列に固定する。 */
  .child-family-focus-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    gap: 18px !important;
  }

  .child-family-focus-grid article {
    min-width: 0;
    padding: 20px !important;
  }

  .child-family-focus-grid h4 {
    font-size: 16px !important;
    line-height: 1.5 !important;
  }

  .child-family-focus-grid p span {
    max-width: 100%;
    white-space: normal;
  }

  /* 支援制度一覧: 広いPCでも5列へ増やさず、本文を読める3列に保つ。 */
  .living-society-panel .citizen-support-results {
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    gap: 22px !important;
  }

  .living-society-panel .citizen-support-results > article {
    min-width: 0;
  }

  @media (max-width: 980px) {
    .child-family-focus-grid {
      grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    }

    .living-society-panel .citizen-support-results {
      grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    }
  }

  @media (max-width: 640px) {
    .child-family-focus-grid {
      grid-template-columns: 1fr !important;
      gap: 12px !important;
    }

    .living-society-panel .citizen-support-results {
      grid-template-columns: 1fr !important;
      gap: 14px !important;
    }
  }

  .kpi-dictionary-panel :is(span, small, p, li, dt, dd, code, label, button),
  .data-gap-alert-card :is(span, small, p, li, dt, dd, button),
  .project-registry :is(span, small, p, li, dt, dd, button),
  .future-command-center :is(span, small, p, li, dt, dd, button),
  .policy-ledger :is(span, small, p, li, dt, dd, button),
  .rmo-page :is(span, small, p, li, dt, dd, button),
  .pfu-page :is(span, small, p, li, dt, dd, button) {
    font-size: 13px !important;
    line-height: 1.66 !important;
  }

  .kpi-dictionary-head h2,
  .kpi-dictionary-list > article h2,
  .data-gap-alert-card h3,
  .project-registry h3,
  .future-command-center h3,
  .policy-ledger h3 {
    font-size: max(17px, 1.05rem) !important;
  }

  .badge,
  .tag,
  .status-badge,
  .priority-pill,
  .category-chip,
  .health-chip,
  [class*="badge"],
  [class*="tag"],
  [class*="chip"],
  [class*="pill"] {
    font-size: max(12px, 0.74rem) !important;
    line-height: 1.45 !important;
  }

  @media (max-width: 720px) {
    :root {
      --font-body: clamp(16.5px, 2.4vw, 18px);
      --font-ui: clamp(14.5px, 2vw, 16px);
      --font-caption: clamp(13px, 1.8vw, 14.5px);
    }

    main :is(p, li, dd) {
      font-size: max(15px, 0.94rem) !important;
      line-height: 1.82 !important;
    }

    main :is(small, figcaption, .chart-source, .note, .caption, .help-text) {
      font-size: max(13px, 0.82rem) !important;
    }
  }
}

/* 修正: 狭幅(≤640px)でカードビューアのツールバー（年度・指標・全文検索・データソース）を1列に積む。
   末尾に追記された .toolbar 基本ルール(3列grid, minmax 180/210/320)が、上方の @media(max-640) の
   1列指定をソース順で上書きしてしまい、revenue/expense/graphs/table/finance-staff/budget-settlement で
   ページ全体が横スクロールしていた回帰を解消（末尾追記でカスケードを最終勝者にする）。 */
@media (max-width: 640px) {
  .toolbar { grid-template-columns: 1fr; }
  .toolbar .search-label { grid-column: 1 / -1; }
}
/* 修正: .re-analysis（歳入/歳出/全データ分析）が grid-template-columns 未指定で
   単一 auto 列となり、内部の幅広テーブル等の max-content に列が膨張して、デスクトップで
   ページ全体が約2倍に横スクロールしていた回帰を解消。列をコンテナ幅に固定する。 */
.re-analysis { grid-template-columns: minmax(0, 1fr); }

/* 同上: .re-tables の列を max-content で膨張させず、各テーブルはブロック内で横スクロールさせる。
   歳出（目的別/性質別の幅広テーブル）等でデスクトップのページ横はみ出しを解消。 */
.re-tables { grid-template-columns: minmax(0, 1fr); }
.re-table-block { min-width: 0; overflow-x: auto; }
@media (min-width: 900px) {
  .re-tables { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
}

/* 同種の grid 列膨張対策（デスクトップ横はみ出し） */
/* 政策の選択肢: 主要施策2テーブルの2列gridが nowrap テーブルの max-content で膨張 */
.mp2-tables { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
.mp2-tcol { min-width: 0; overflow-x: auto; }
@media (max-width: 760px) { .mp2-tables { grid-template-columns: minmax(0, 1fr); } }
/* 将来負担分析: 10年財政シミュレーターのレバー3列がラベル内容の max-content で膨張 */
.fiscal-proj-section .fp-levers { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.fp-levers label { min-width: 0; }
.fp-readouts { grid-template-columns: repeat(4, minmax(0, 1fr)); }
/* レンジ入力(スライダー)がグリッド/フレックス内で固有幅により縮まず横はみ出す問題への対策 */
.fp-levers input[type="range"], .common-scenario-slider input[type="range"], .psim-slider-row input[type="range"] { min-width: 0; }
/* 自治体比較: 4列コントロールの検索/選択入力が固有幅(size既定)で縮まず列を膨張させる対策 */
.municipality-controls { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.municipality-controls label { min-width: 0; }
.municipality-controls input, .municipality-controls select { min-width: 0; width: 100%; box-sizing: border-box; }
/* 統計分析: 発見ヒーローの2列gridを子要素ごと縮められるように */
.stat-discovery-hero { grid-template-columns: minmax(0, 1.4fr) minmax(0, .6fr); }
.stat-discovery-hero > * { min-width: 0; }
.statistics-panel .panel { grid-template-columns: minmax(0, 1fr); }

/* 施設カルテ: 更新時期の目安（築60年到達） */
.fcard-renewal { border-left: 4px solid var(--line); padding-left: 12px; }
.fcard-renewal.tone-danger { border-left-color: #e11d48; }
.fcard-renewal.tone-watch { border-left-color: #d97706; }
.fcard-renewal.tone-good { border-left-color: #0f766e; }
.fcard-renewal-row { display: flex; align-items: baseline; gap: 10px; }
.fcard-renewal-row strong { font-size: 18px; font-weight: 900; font-variant-numeric: tabular-nums; }
.fcard-renewal-band { font-size: 10px; font-weight: 900; border-radius: 999px; padding: 2px 9px; }
.fcard-renewal-band.danger { color: #be123c; background: rgba(225,29,72,.12); }
.fcard-renewal-band.watch { color: #b45309; background: rgba(217,119,6,.14); }
.fcard-renewal-band.good { color: #0f766e; background: rgba(15,118,110,.12); }
.fcard-renewal-note { font-size: 11px; color: var(--muted); line-height: 1.6; margin: 6px 0 0; }
/* 10年財政見通し: シナリオ・プリセット */
.fp-presets { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 12px 0 4px; }
.fp-presets-label { font-size: 11px; font-weight: 800; color: var(--muted); }
.fp-presets button { font-size: 12px; font-weight: 800; padding: 6px 12px; border: 1px solid var(--line); border-radius: 999px; background: var(--paper); color: var(--ink); cursor: pointer; }
.fp-presets button:hover { border-color: var(--brand); color: var(--brand); }
.fp-presets button.active { border-color: var(--brand); background: color-mix(in srgb, var(--brand) 12%, transparent); color: var(--brand); }
.fp-presets .fp-copy { margin-left: auto; border-style: dashed; }
.fp-presets .fp-copy:hover { border-style: solid; }
.fp-copied { font-size: 11px; font-weight: 800; color: #0f766e; }
@media (max-width: 560px) { .fp-presets .fp-copy { margin-left: 0; } }
/* 重ね描き（プリセット差分比較） */
.fp-pin-bar { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; margin: 10px 0 2px; }
.fp-pin-add, .fp-pin-clear { font-size: 12px; font-weight: 800; padding: 6px 12px; border-radius: 999px; border: 1px solid var(--brand); cursor: pointer; }
.fp-pin-add { background: var(--brand); color: #fff; }
.fp-pin-clear { background: transparent; color: var(--muted); border-color: var(--line); }
.fp-pin-add:disabled, .fp-pin-clear:disabled { opacity: .45; cursor: not-allowed; }
.fp-pin-hint { font-size: 11px; color: var(--muted); flex: 1 1 200px; }
.fp-pin-chips { display: flex; flex-wrap: wrap; gap: 6px; flex-basis: 100%; }
.fp-pin-chip { display: inline-flex; align-items: center; gap: 5px; font-size: 11px; font-weight: 700; padding: 3px 8px; border: 1px solid var(--line); border-radius: 999px; background: var(--paper); }
.fp-pin-chip i { width: 14px; height: 0; border-top: 2px dashed var(--pin-color, var(--brand)); }
.fp-pin-chip button { border: none; background: none; color: var(--muted); font-size: 13px; line-height: 1; cursor: pointer; padding: 0 0 0 2px; }
.fp-pin-chip button:hover { color: var(--danger, #dc2626); }
/* 名前付き保存シナリオ */
.fp-saved-bar { margin: 8px 0 2px; }
.fp-save-form { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.fp-save-form input { flex: 1 1 220px; min-width: 0; padding: 7px 11px; border: 1px solid var(--line); border-radius: 8px; background: var(--paper); color: var(--ink); font-size: 12.5px; }
.fp-save-btn { padding: 7px 14px; border-radius: 999px; border: 1px solid var(--brand); background: var(--brand); color: #fff; font-size: 12px; font-weight: 800; cursor: pointer; white-space: nowrap; }
.fp-saved-hint { display: block; margin: 6px 0; font-size: 11px; color: var(--muted); }
.fp-saved-list { display: flex; flex-wrap: wrap; gap: 7px; }
.fp-saved-empty { font-size: 11px; color: var(--muted); }
.fp-saved-chip { display: inline-flex; align-items: center; gap: 6px; padding: 4px 6px 4px 11px; border: 1px solid var(--line); border-radius: 999px; background: var(--paper); font-size: 11.5px; }
.fp-saved-chip b { font-weight: 800; max-width: 150px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fp-saved-chip small { color: var(--muted); font-size: 10px; }
.fp-saved-chip button { border: 1px solid var(--line); background: var(--soft); color: var(--brand); border-radius: 999px; font-size: 11px; font-weight: 700; padding: 2px 9px; cursor: pointer; }
.fp-saved-chip button:hover { border-color: var(--brand); }
.fp-saved-chip .fp-saved-del { border: none; background: none; color: var(--muted); font-size: 14px; padding: 0 2px; }
.fp-saved-chip .fp-saved-del:hover { color: var(--danger, #dc2626); }
/* 自治体比較: 強み・弱みの自動講評 */
.comparison-insights { margin: 14px 0 4px; padding: 14px 16px; border: 1px solid var(--line); border-radius: 12px; background: var(--soft); }
.comparison-insights-head { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; flex-wrap: wrap; }
.comparison-insights-head h4 { margin: 0; font-size: 14px; }
.comparison-insights-head span { font-size: 11.5px; font-weight: 800; color: var(--muted); }
.comparison-insights-cols { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; margin: 12px 0; }
.comparison-insights-cols article { border: 1px solid var(--line); border-radius: 10px; padding: 12px 14px; background: var(--paper); }
.comparison-insights-cols h5 { margin: 0 0 8px; font-size: 12px; }
.ci-strength { border-left: 4px solid #0f766e; }
.ci-weakness { border-left: 4px solid #e11d48; }
.comparison-insights-cols ul { margin: 0; padding: 0; list-style: none; display: grid; gap: 6px; }
.comparison-insights-cols li { display: flex; flex-direction: column; gap: 1px; font-size: 12.5px; }
.comparison-insights-cols li b { font-weight: 800; }
.comparison-insights-cols li span { font-size: 11px; color: var(--muted); }
.comparison-insights-cols li .ci-action { margin-top: 3px; align-self: flex-start; font-size: 11px; font-weight: 700; }
.ci-why { display: inline-block; margin-left: 6px; padding: 0 6px; border: 1px solid var(--line); border-radius: 999px; font-size: 9.5px; font-weight: 800; color: var(--muted); cursor: help; vertical-align: middle; }
.ci-why:hover, .ci-why:focus { border-color: var(--brand); color: var(--brand); outline: none; }
.ci-empty { margin: 0; font-size: 12px; color: var(--muted); }
.comparison-insights-note { margin: 8px 0 0; font-size: 10.5px; color: var(--muted); line-height: 1.6; }
.comparison-insights-neutral { margin: 2px 0 0; border: 1px solid var(--line); border-radius: 10px; background: var(--paper); }
.comparison-insights-neutral > summary { cursor: pointer; padding: 9px 13px; font-size: 12px; font-weight: 800; list-style: none; display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; }
.comparison-insights-neutral > summary::-webkit-details-marker { display: none; }
.comparison-insights-neutral > summary::before { content: "▸"; color: var(--muted); font-weight: 700; }
.comparison-insights-neutral[open] > summary::before { content: "▾"; }
.comparison-insights-neutral > summary span { font-size: 11px; font-weight: 700; color: var(--muted); }
.comparison-insights-neutral ul { margin: 0; padding: 4px 13px 12px; list-style: none; display: grid; gap: 6px; }
.comparison-insights-neutral li { display: flex; flex-direction: column; gap: 1px; font-size: 12.5px; }
.comparison-insights-neutral li b { font-weight: 800; }
.comparison-insights-neutral li span { font-size: 11px; color: var(--muted); }
.comparison-insights-neutral li .ci-action { margin-top: 3px; align-self: flex-start; font-size: 11px; font-weight: 700; }
@media (max-width: 640px) { .comparison-insights-cols { grid-template-columns: 1fr; } }
/* 相対ポジション（順位）ビュー */
.comparison-position { margin: 12px 0 4px; padding: 14px 16px; border: 1px solid var(--line); border-radius: 12px; background: var(--paper); }
.comparison-position-head { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; flex-wrap: wrap; }
.comparison-position-head h4 { margin: 0; font-size: 14px; }
.cmp-pos-legend { display: flex; gap: 12px; font-size: 11px; font-weight: 700; color: var(--muted); }
.cmp-pos-legend .lg-uto { color: var(--brand); }
.cmp-pos-axis { display: flex; justify-content: space-between; margin: 10px 0 4px; padding-left: 138px; font-size: 10px; font-weight: 700; color: var(--muted); }
.cmp-pos-rows { display: grid; gap: 9px; }
.cmp-pos-row { display: grid; grid-template-columns: 130px 1fr; align-items: center; gap: 8px; }
.cmp-pos-label { font-size: 12px; font-weight: 700; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cmp-pos-label small { display: block; font-size: 10px; font-weight: 600; color: var(--muted); }
.cmp-pos-track { position: relative; height: 18px; border-radius: 999px; background: linear-gradient(90deg, color-mix(in srgb, #e11d48 16%, transparent), color-mix(in srgb, var(--muted) 10%, transparent), color-mix(in srgb, #0d9488 18%, transparent)); }
.cmp-pos-dot { position: absolute; top: 50%; width: 11px; height: 11px; border-radius: 50%; background: var(--muted); border: 1.5px solid var(--paper); transform: translate(-50%, -50%); }
.cmp-pos-dot.is-uto { width: 15px; height: 15px; background: var(--brand); border-radius: 2px; transform: translate(-50%, -50%) rotate(45deg); z-index: 2; }
.cmp-pos-note { margin: 10px 0 0; font-size: 10.5px; color: var(--muted); line-height: 1.6; }
@media (max-width: 640px) { .cmp-pos-row { grid-template-columns: 92px 1fr; } .cmp-pos-axis { padding-left: 100px; } }
/* 施設カルテ: 共有リンク（コピー）アクション */
.fcard-actions { position: absolute; top: 12px; right: 14px; display: flex; align-items: center; gap: 8px; z-index: 2; }
.fcard-actions .fcard-close { position: static; top: auto; right: auto; }
.fcard-copy { font-size: 11px; font-weight: 800; padding: 5px 11px; border: 1px solid var(--line); border-radius: 999px; background: var(--paper); color: var(--ink); cursor: pointer; }
.fcard-copy:hover { border-color: var(--brand); color: var(--brand); }
.fcard-copied { font-size: 11px; font-weight: 800; color: #0f766e; }

/* 令和6年度一般会計: 当初予算・補正予算・決算ライフサイクル */
.budget-settlement-panel,
.budget-lifecycle,
.budget-lifecycle > *,
.budget-lifecycle-purpose,
.budget-lifecycle-purpose .table-wrap {
  min-width: 0;
  max-width: 100%;
}
.budget-lifecycle { overflow: hidden; }
.budget-lifecycle-purpose .table-wrap {
  width: 100%;
  overflow-x: auto;
}
.budget-lifecycle-quality {
  align-self: flex-start;
  padding: 6px 10px;
  border: 1px solid color-mix(in srgb, var(--green) 35%, var(--line));
  border-radius: 999px;
  color: var(--green);
  background: color-mix(in srgb, var(--green) 8%, var(--paper));
  font-size: 11px;
  font-weight: 900;
  white-space: nowrap;
}
.budget-lifecycle-kpis {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
  margin: 18px 0;
}
.budget-lifecycle-kpis article {
  display: grid;
  align-content: start;
  gap: 5px;
  min-width: 0;
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--surface-subtle);
}
.budget-lifecycle-kpis span,
.budget-lifecycle-kpis small {
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
}
.budget-lifecycle-kpis strong {
  font-size: clamp(18px, 2vw, 26px);
  font-variant-numeric: tabular-nums;
}
.budget-lifecycle-stages {
  display: grid;
  gap: 8px;
  padding: 16px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--paper);
}
.budget-lifecycle-stage {
  display: grid;
  grid-template-columns: minmax(130px, .75fr) minmax(180px, 2fr) minmax(90px, auto) minmax(80px, auto);
  align-items: center;
  gap: 10px;
}
.budget-lifecycle-stage > div {
  display: grid;
  gap: 2px;
}
.budget-lifecycle-stage strong { font-size: 12px; }
.budget-lifecycle-stage small {
  overflow: hidden;
  color: var(--muted);
  font-size: 9px;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.budget-lifecycle-mobile-value { display: none; }
.budget-lifecycle-stage b,
.budget-lifecycle-stage em {
  font-size: 11px;
  font-style: normal;
  font-variant-numeric: tabular-nums;
  text-align: right;
  white-space: nowrap;
}
.budget-lifecycle-bar {
  display: block;
  overflow: hidden;
  height: 11px;
  border-radius: 999px;
  background: var(--soft);
}
.budget-lifecycle-bar i {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--brand), var(--teal));
}
.budget-lifecycle-amendments {
  margin-top: 14px;
  border: 1px solid var(--line);
  border-radius: 12px;
}
.budget-lifecycle-amendments > summary {
  padding: 12px 14px;
  cursor: pointer;
  font-size: 12px;
  font-weight: 900;
}
.budget-lifecycle-amendments .table-wrap { padding: 0 12px 12px; }
.budget-lifecycle-purpose { margin-top: 24px; }
.budget-lifecycle-purpose h3 { margin-bottom: 4px; }
.budget-lifecycle-purpose p {
  margin-top: 0;
  color: var(--muted);
  font-size: 12px;
}
.budget-lifecycle-caveats {
  margin-top: 18px;
  padding: 14px 16px;
  border-left: 4px solid var(--amber);
  border-radius: 8px;
  background: var(--soft-amber);
  font-size: 11px;
  line-height: 1.7;
}
.budget-lifecycle-caveats ul { margin: 6px 0; padding-left: 18px; }
.budget-lifecycle-caveats p { margin: 8px 0 0; color: var(--muted); }
.budget-lifecycle .positive { color: var(--green); }
.budget-lifecycle .negative { color: var(--red); }
@media (max-width: 860px) {
  .budget-lifecycle-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .budget-lifecycle-stage { grid-template-columns: minmax(120px, .8fr) minmax(120px, 1.4fr) minmax(80px, auto); }
  .budget-lifecycle-stage em { grid-column: 3; }
}
@media (max-width: 560px) {
  .budget-settlement-panel,
  .budget-lifecycle {
    width: calc(100vw - 24px);
    max-width: calc(100vw - 24px);
    box-sizing: border-box;
  }
  .budget-lifecycle .panel-head h2 {
    overflow-wrap: anywhere;
    white-space: normal !important;
  }
  .budget-lifecycle-quality { white-space: normal; }
  .budget-lifecycle-kpis { grid-template-columns: minmax(0, 1fr); }
  .budget-lifecycle-stage {
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 5px 8px;
  }
  .budget-lifecycle-stage > div { min-width: 0; }
  .budget-lifecycle-mobile-value {
    display: flex;
    align-items: center;
    gap: 8px;
    color: var(--ink);
    font-size: 11px;
    font-weight: 900;
    white-space: normal;
  }
  .budget-lifecycle-mobile-value em { text-align: left; }
  .budget-lifecycle-stage .budget-lifecycle-bar { grid-column: 1 / -1; grid-row: 2; }
  .budget-lifecycle-stage b { grid-column: 2; grid-row: 1; }
  .budget-lifecycle-stage em { grid-column: 2; grid-row: 3; }
}
