:root {
  --site-navy: #08284a;
  --site-navy-deep: #04182e;
  --site-orange: #d85208;
  --site-orange-bright: #f36a16;
  --site-aqua: #2e8996;
  --site-paper: #fbfaf6;
  --site-text: #152b40;
  --site-muted: #536779;
  --site-focus: #007f93;
  --site-rule: rgba(8, 40, 74, .16);
  --site-shadow: 0 20px 54px rgba(8, 40, 74, .11);
}

html {
  color-scheme: light;
  scroll-behavior: smooth;
  scroll-padding-top: 96px;
  scrollbar-gutter: stable;
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}

body {
  overflow-x: clip;
  color: var(--site-text);
  font-family: "Hiragino Sans", "Yu Gothic", "YuGothic", "Noto Sans JP", system-ui, sans-serif;
  font-synthesis: none;
  text-rendering: optimizeLegibility;
}

:where(main, section, article, aside, nav, header, footer, div) {
  min-width: 0;
}

:where(iframe, embed, object) {
  max-width: 100%;
}

[hidden] {
  display: none !important;
}

main:focus { outline: 0; }

:where(h1, h2, h3) {
  text-wrap: balance;
}

:where(p, li, dd, figcaption) {
  overflow-wrap: break-word;
  text-wrap: pretty;
}

:where(img, svg, video) {
  max-width: 100%;
}

:where(button, input, select, textarea) {
  font: inherit;
}

:where(a, button, summary, input, select, textarea):focus-visible {
  outline: 3px solid var(--site-focus) !important;
  outline-offset: 4px !important;
}

:where(a, button, summary) {
  -webkit-tap-highlight-color: rgba(243, 106, 22, .18);
  touch-action: manipulation;
}

:where(a[href], button:not(:disabled), summary) {
  cursor: pointer;
}

:where([id]) {
  scroll-margin-top: 104px;
}

:where(.campaign-header, .topbar, [class*="_header_"]) {
  -webkit-backdrop-filter: saturate(130%) blur(16px);
  backdrop-filter: saturate(130%) blur(16px);
}

:where(.campaign-header nav a, .desktop-nav a, [class*="_desktopNav_"] a)[aria-current="page"],
:where(.campaign-header nav a, .desktop-nav a, [class*="_desktopNav_"] a).is-current {
  color: var(--site-orange);
  text-decoration: underline;
  text-decoration-thickness: 2px;
  text-underline-offset: 7px;
}

:where(.directory-breadcrumb, [class*="_breadcrumb_"]) {
  scrollbar-width: none;
}

:where(.directory-breadcrumb, [class*="_breadcrumb_"])::-webkit-scrollbar {
  display: none;
}

:where(.official-caution, .station-reference-note, .fact-note) {
  border-left: 5px solid var(--site-orange-bright) !important;
  box-shadow: 0 12px 34px rgba(8, 40, 74, .07);
}

:where(.priority-card, .policy-card, .indicator-card, .achievement-card,
  .municipality-feature-cards > article, .municipality-solution-cards > article,
  .policy-action-grid > article, .station-verify-steps > article, [class*="_factCard_"]) {
  isolation: isolate;
}

:where(.priority-card, .policy-card, .indicator-card, .achievement-card,
  .municipality-feature-cards > article, .municipality-solution-cards > article,
  .policy-action-grid > article, .station-verify-steps > article, [class*="_factCard_"]):focus-within {
  box-shadow: var(--site-shadow) !important;
}

:where(.station-grid > a, .municipality-result-grid > a) {
  content-visibility: auto;
  contain-intrinsic-block-size: 120px;
}

:where(table) {
  width: 100%;
  border-collapse: collapse;
}

:where(th, td) {
  padding: 12px 14px;
  border-bottom: 1px solid var(--site-rule);
  text-align: left;
  vertical-align: top;
}

.directory-empty-state {
  margin: 20px 0 0;
  padding: 22px 24px;
  border: 1px solid var(--site-rule);
  border-left: 5px solid var(--site-orange-bright);
  color: var(--site-muted);
  background: #fff;
  font-size: 15px;
  line-height: 1.8;
}

.municipality-local-nav a[aria-current="location"],
.municipality-local-nav a.is-current {
  color: #fff;
  background: linear-gradient(115deg, var(--site-orange), var(--site-orange-bright));
}

.municipality-local-nav a[aria-current="location"] span,
.municipality-local-nav a.is-current span {
  color: #fff;
}

@view-transition {
  navigation: auto;
}

::view-transition-old(root),
::view-transition-new(root) {
  animation-duration: 180ms;
  animation-timing-function: ease-out;
}

.not-found-header {
  display: flex;
  align-items: center;
  min-height: 84px;
  padding: 0 clamp(22px, 7vw, 108px);
  border-bottom: 3px solid var(--site-orange-bright);
  background: rgba(251, 250, 246, .96);
}

.not-found-header a {
  display: grid;
  grid-template-columns: auto auto;
  align-items: center;
  gap: 1px 14px;
  color: var(--site-navy);
  text-decoration: none;
}

.not-found-header span { grid-row: 1 / 3; color: var(--site-orange); letter-spacing: -.22em; }
.not-found-header strong { font-size: 19px; }
.not-found-header small { color: var(--site-muted); letter-spacing: .16em; font-size: 8px; }

.not-found-main {
  min-height: calc(100dvh - 178px);
  padding: clamp(72px, 11vw, 150px) clamp(22px, 9vw, 148px);
  background:
    radial-gradient(circle at 88% 12%, rgba(243, 106, 22, .15), transparent 27%),
    radial-gradient(circle at 74% 62%, rgba(46, 137, 150, .14), transparent 34%),
    var(--site-paper);
}

.not-found-main > p:first-child {
  margin: 0;
  color: var(--site-orange);
  letter-spacing: .2em;
  font: 800 11px/1.4 Arial, sans-serif;
}

.not-found-main h1 {
  max-width: 11ch;
  margin: 24px 0;
  color: var(--site-navy);
  letter-spacing: -.05em;
  font-size: clamp(42px, 7vw, 86px);
  line-height: 1.22;
}

.not-found-main > p:nth-of-type(2) {
  max-width: 650px;
  color: var(--site-muted);
  font-size: 16px;
  line-height: 1.9;
}

.not-found-main nav {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 280px));
  gap: 10px;
  margin-top: 38px;
}

.not-found-main nav a {
  display: flex;
  align-items: center;
  justify-content: space-between;
  min-height: 56px;
  padding: 0 18px;
  color: #fff;
  background: var(--site-navy);
  text-decoration: none;
  font-weight: 750;
}

.not-found-main nav a::after { content: "→"; color: #ff9a55; }
.not-found-main nav a:first-child { background: linear-gradient(115deg, #b64300, var(--site-orange-bright)); }

.not-found-footer {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  padding: 24px clamp(22px, 7vw, 108px);
  color: rgba(255, 255, 255, .72);
  background: var(--site-navy-deep);
  font-size: 11px;
}

.not-found-footer a { color: inherit; }

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

  :where([id]) { scroll-margin-top: 82px; }

  :where(.campaign-header nav a, .desktop-nav a, .campaign-header-cta,
    .menu-toggle, .campaign-mobile-menu summary, .campaign-mobile-menu a,
    .mobile-menu a, .button, [class*="_headerCta_"], [class*="_mobileMenu_"] a) {
    min-height: 44px;
  }

  :where(.directory-breadcrumb, [class*="_breadcrumb_"]) {
    overflow-x: auto;
    max-width: 100%;
    white-space: nowrap;
  }

  :where(.municipality-local-nav, .policy-topic-nav) {
    overscroll-behavior-inline: contain;
  }

  :where(.municipality-search-wrap input, input[type="search"]) {
    min-height: 48px;
    font-size: 16px !important;
  }

  .not-found-main { min-height: calc(100dvh - 160px); padding-top: 72px; }
  .not-found-main nav { grid-template-columns: 1fr; }
  .not-found-footer { display: grid; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    scroll-behavior: auto !important;
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
  }

  ::view-transition-old(root),
  ::view-transition-new(root) {
    animation: none !important;
  }
}

@media (forced-colors: active) {
  :where(a, button, summary):focus-visible { outline: 3px solid CanvasText !important; }
}

@media print {
  :where(.campaign-header, .topbar, [class*="_header_"]) {
    position: static !important;
    backdrop-filter: none !important;
  }
  a[href^="http"]::after { content: " (" attr(href) ")"; font-size: .8em; }
}

/* 2026-08-08: desktop navigation stays visible on PC. Compact navigation is
   reserved for tablet/mobile widths; tighter spacing prevents collisions on
   common 1024–1440px desktop windows without removing any destination. */
@media (min-width: 1024px) {
  body.home .topbar,
  .campaign-header,
  body:not(.home) header[class*="_header_"] {
    grid-template-columns: auto minmax(0, 1fr) auto;
    gap: clamp(12px, 1.8vw, 30px);
    padding-right: clamp(18px, 2.8vw, 48px);
    padding-left: clamp(18px, 2.8vw, 48px);
  }

  body.home .topbar > .desktop-nav,
  .campaign-header > nav[aria-label="メインナビゲーション"],
  body:not(.home) header[class*="_header_"] > nav[class*="_desktopNav_"] {
    display: flex;
    justify-content: center;
    gap: clamp(10px, 1.45vw, 24px);
    min-width: 0;
  }

  body.home .topbar > .desktop-nav a,
  .campaign-header > nav[aria-label="メインナビゲーション"] a,
  body:not(.home) header[class*="_header_"] > nav[class*="_desktopNav_"] a {
    white-space: nowrap;
    letter-spacing: .02em;
    font-size: clamp(11px, .92vw, 14px) !important;
  }

  body.home .topbar > .header-cta,
  .campaign-header > .campaign-header-cta,
  body:not(.home) header[class*="_header_"] > a[class*="_headerCta_"] {
    display: inline-flex;
    min-width: 126px;
    padding-right: 14px;
    padding-left: 14px;
  }

  body.home .topbar > .menu-toggle,
  body.home .topbar > .mobile-menu,
  .campaign-header > .campaign-mobile-menu,
  body:not(.home) header[class*="_header_"] > details[class*="_mobileMenu_"] {
    display: none !important;
  }
}

/* 2026-08-07: approved homepage headline wrapping.
   Keep both campaign statements intact across browser font metrics while
   allowing only the two intentional lines in the voices statement. */
body.home .voter-guide-heading h2 {
  max-width: 100%;
  white-space: nowrap;
  letter-spacing: -.055em;
  font-size: clamp(48px, 4.6vw, 84px);
  line-height: 1.08;
}

body.home .voter-guide-heading h2 strong {
  display: inline;
  margin: 0;
  white-space: inherit;
}

body.home .voices-message h2 {
  max-width: 100%;
  letter-spacing: -.05em;
  font-size: clamp(36px, 3.4vw, 60px);
  line-height: 1.32;
}

body.home .voices-message h2 > span,
body.home .voices-message h2 > em {
  display: block;
  white-space: nowrap;
  overflow-wrap: normal;
  word-break: keep-all;
}

@media (max-width: 1160px) {
  body.home .voices-message h2 {
    font-size: clamp(38px, 6vw, 64px);
  }
}

@media (max-width: 1060px) {
  body.home .voter-guide-heading h2 {
    font-size: clamp(42px, 7vw, 74px);
  }
}

@media (max-width: 760px) {
  body.home .voter-guide-heading h2 {
    margin-top: 24px;
    letter-spacing: -.06em;
    font-size: clamp(23px, 7.4vw, 42px);
    line-height: 1.16;
  }

  body.home .voices-message h2 {
    margin: 28px 0 26px;
    letter-spacing: -.045em;
    font-size: clamp(29px, 9.2vw, 44px);
    line-height: 1.38;
  }
}

@media (max-width: 350px) {
  body.home .voter-guide-heading h2 { font-size: 23px; }
  body.home .voices-message h2 { font-size: 29px; }
}
/* Shared election-information phase. The phase changes only after official
   filing information has been checked; dates alone never switch the wording. */
.site-phase-bar {
  position: relative;
  z-index: 8;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 22px;
  min-height: 54px;
  padding: 9px clamp(18px, 4vw, 64px);
  color: #fff;
  border-left: 7px solid #f36a16;
  background: #071f3a;
  box-shadow: 0 8px 24px rgba(7, 31, 58, .16);
}

.site-phase-bar p,
.site-phase-bar a {
  margin: 0;
}

.site-phase-bar p,
.site-phase-bar a,
.site-phase-bar a > span,
.site-phase-bar a > b {
  display: flex;
  align-items: center;
}

.site-phase-bar p {
  gap: 12px;
  min-width: 0;
}

.site-phase-bar p strong {
  flex: 0 0 auto;
  padding: 6px 9px;
  color: #071f3a;
  border-radius: 3px;
  background: #ff9a55;
  letter-spacing: .08em;
  font-size: 11px;
}

.site-phase-bar p span {
  overflow-wrap: anywhere;
  font-size: 12px;
  font-weight: 800;
}

.site-phase-bar a {
  gap: 18px;
  color: #fff;
  text-decoration: none;
}

.site-phase-bar a > span {
  color: rgba(255, 255, 255, .72);
  font-size: 11px;
}

.site-phase-bar a > b {
  gap: 8px;
  white-space: nowrap;
  color: #ff9a55;
  font-size: 11px;
}

.site-phase-bar a:hover > b,
.site-phase-bar a:focus-visible > b {
  color: #fff;
}

.site-phase-bar a:focus-visible {
  outline: 3px solid #ff9a55;
  outline-offset: 4px;
}

@media (max-width: 760px) {
  .site-phase-bar {
    grid-template-columns: 1fr;
    gap: 7px;
    padding: 11px 16px 12px;
  }

  .site-phase-bar a {
    justify-content: space-between;
    gap: 10px;
    padding-left: 1px;
  }

  .site-phase-bar a > span {
    font-size: 10px;
  }
}

/* The voting guide starts with one clear action: choose a municipality, then
   continue to its polling-place list. The searchable 41-municipality directory
   remains directly below as an accessible alternative. */
body[data-site-page="vote"] .polling-quick-guide {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, .78fr) minmax(0, 1.22fr);
  gap: clamp(30px, 5vw, 78px);
  align-items: center;
  margin: 0 0 clamp(56px, 7vw, 94px);
  padding: clamp(30px, 4.8vw, 68px);
  overflow: hidden;
  color: #fff;
  background:
    radial-gradient(circle at 94% 2%, rgba(243, 106, 22, .28), transparent 31%),
    linear-gradient(125deg, #071f39, #0b365d 68%, #0c4662);
  box-shadow: 0 24px 60px rgba(8, 40, 74, .17);
}

body[data-site-page="vote"] .polling-quick-guide::after {
  content: "41";
  position: absolute;
  right: -18px;
  bottom: -62px;
  color: rgba(255, 255, 255, .055);
  font: 900 clamp(150px, 18vw, 260px)/1 Arial, sans-serif;
  pointer-events: none;
}

body[data-site-page="vote"] .polling-quick-copy,
body[data-site-page="vote"] .polling-select-form {
  position: relative;
  z-index: 1;
}

body[data-site-page="vote"] .polling-quick-copy > p:first-child {
  margin: 0 0 15px;
  color: #ff9a55;
  letter-spacing: .18em;
  font: 800 10px/1.5 Arial, sans-serif;
}

body[data-site-page="vote"] .polling-quick-copy > span {
  display: inline-grid;
  place-items: center;
  width: 34px;
  height: 34px;
  margin-bottom: 16px;
  border: 1px solid rgba(255, 255, 255, .34);
  border-radius: 50%;
  color: #ffb079;
  font: 800 11px/1 Arial, sans-serif;
}

body[data-site-page="vote"] .polling-quick-copy h2 {
  margin: 0;
  color: #fff;
  letter-spacing: -.035em;
  font-size: clamp(27px, 3vw, 43px);
  line-height: 1.3;
}

body[data-site-page="vote"] .polling-quick-copy > p:last-child {
  max-width: 30em;
  margin: 18px 0 0;
  color: rgba(255, 255, 255, .76);
  font-size: 14px;
  line-height: 1.85;
}

body[data-site-page="vote"] .polling-select-form {
  padding: clamp(24px, 3.2vw, 38px);
  color: #08284a;
  background: #fff;
  box-shadow: 0 18px 40px rgba(3, 18, 34, .24);
}

body[data-site-page="vote"] .polling-select-form label {
  display: block;
  margin-bottom: 10px;
  color: #08284a;
  font-size: 14px;
  font-weight: 800;
}

body[data-site-page="vote"] .polling-select-controls {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 10px;
}

body[data-site-page="vote"] .polling-select-controls select {
  width: 100%;
  min-width: 0;
  min-height: 58px;
  padding: 0 46px 0 17px;
  border: 2px solid #b9c6d2;
  border-radius: 0;
  color: #08284a;
  background: #fff;
  font: 700 16px/1.4 inherit;
}

body[data-site-page="vote"] .polling-select-controls select:focus-visible {
  border-color: #e65c00;
  outline: 3px solid rgba(243, 106, 22, .24);
  outline-offset: 2px;
}

body[data-site-page="vote"] .polling-select-controls button {
  min-height: 58px;
  padding: 0 22px;
  border: 0;
  color: #fff;
  background: linear-gradient(115deg, #b64300, #f36a16);
  font: 800 14px/1.4 inherit;
  white-space: nowrap;
}

body[data-site-page="vote"] .polling-select-controls button span {
  margin-left: 12px;
}

body[data-site-page="vote"] .polling-select-controls button:disabled {
  color: #6b7781;
  background: #e5e9ec;
  cursor: not-allowed;
}

body[data-site-page="vote"] .polling-select-form > p {
  margin: 14px 0 0;
  color: #647384;
  font-size: 12px;
  line-height: 1.65;
}

body[data-site-page="vote"] .polling-select-form > p strong {
  color: #c34c00;
}

/* Official voting methods are grouped before the municipality directory so a
   visitor can first decide how to vote, then find the relevant polling place. */
body[data-site-page="vote"] .vote-methods-guide {
  margin: 0 0 clamp(70px, 8vw, 112px);
  padding: clamp(34px, 5.5vw, 72px);
  border: 1px solid var(--site-rule);
  border-top: 8px solid var(--site-orange-bright);
  background:
    radial-gradient(circle at 94% 5%, rgba(46, 137, 150, .13), transparent 29%),
    #fff;
  box-shadow: var(--site-shadow);
}

body[data-site-page="vote"] .vote-methods-heading,
.policy-verification-heading {
  display: grid;
  grid-template-columns: minmax(160px, .38fr) minmax(0, 1.62fr);
  gap: clamp(28px, 5vw, 72px);
  align-items: start;
  margin-bottom: clamp(32px, 4.5vw, 54px);
}

body[data-site-page="vote"] .vote-methods-heading > p,
.policy-verification-heading > p {
  margin: 8px 0 0;
  color: var(--site-orange);
  letter-spacing: .2em;
  font: 850 11px/1.5 Arial, sans-serif;
}

body[data-site-page="vote"] .vote-methods-heading > div,
.policy-verification-heading > div {
  position: relative;
  padding-left: 58px;
}

body[data-site-page="vote"] .vote-methods-heading > div > span,
.policy-verification-heading > div > span {
  position: absolute;
  top: 9px;
  left: 0;
  display: grid;
  place-items: center;
  width: 38px;
  height: 38px;
  border: 1px solid var(--site-rule);
  color: var(--site-orange);
  font: 850 11px/1 Arial, sans-serif;
}

body[data-site-page="vote"] .vote-methods-heading h2,
.policy-verification-heading h2 {
  margin: 0;
  color: var(--site-navy);
  letter-spacing: -.045em;
  font-size: clamp(34px, 4.4vw, 58px);
  line-height: 1.28;
}

body[data-site-page="vote"] .vote-methods-heading div > p,
.policy-verification-heading div > p {
  max-width: 760px;
  margin: 16px 0 0;
  color: var(--site-muted);
  font-size: 16px;
  line-height: 1.9;
}

body[data-site-page="vote"] .ballot-change-notice {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  gap: 22px;
  align-items: center;
  margin-bottom: 16px;
  padding: 22px 24px;
  color: #fff;
  background: linear-gradient(115deg, #071f39, #0b3c60);
}

body[data-site-page="vote"] .ballot-change-notice > span {
  padding: 8px 10px;
  color: #071f39;
  background: #ff9a55;
  letter-spacing: .1em;
  font: 900 10px/1 Arial, sans-serif;
}

body[data-site-page="vote"] .ballot-change-notice strong {
  display: block;
  font-size: clamp(17px, 1.5vw, 21px);
  line-height: 1.5;
}

body[data-site-page="vote"] .ballot-change-notice p {
  margin: 5px 0 0;
  color: rgba(255, 255, 255, .74);
  font-size: 13px;
  line-height: 1.65;
}

body[data-site-page="vote"] .ballot-change-notice a {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  min-height: 46px;
  padding: 0 15px;
  border: 1px solid rgba(255, 255, 255, .35);
  color: #fff;
  white-space: nowrap;
  font-size: 13px;
  font-weight: 800;
}

body[data-site-page="vote"] .ballot-change-notice a:hover {
  color: #071f39;
  background: #fff;
}

body[data-site-page="vote"] .ballot-change-notice i { color: #ff9a55; font-style: normal; }

body[data-site-page="vote"] .election-date-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  margin: 0 0 18px;
  border-top: 1px solid var(--site-rule);
  border-left: 1px solid var(--site-rule);
}

body[data-site-page="vote"] .election-date-grid > div {
  min-height: 142px;
  padding: 22px;
  border-right: 1px solid var(--site-rule);
  border-bottom: 1px solid var(--site-rule);
  background: #fbfaf6;
}

body[data-site-page="vote"] .election-date-grid dt {
  margin-bottom: 18px;
  color: var(--site-orange);
  letter-spacing: .08em;
  font-size: 12px;
  font-weight: 850;
}

body[data-site-page="vote"] .election-date-grid dd { margin: 0; }
body[data-site-page="vote"] .election-date-grid strong { display: block; color: var(--site-navy); font-size: 20px; line-height: 1.45; }
body[data-site-page="vote"] .election-date-grid span { display: block; margin-top: 8px; color: var(--site-muted); font-size: 12px; line-height: 1.6; }

body[data-site-page="vote"] .voting-method-cards {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  border-top: 1px solid var(--site-rule);
  border-left: 1px solid var(--site-rule);
}

body[data-site-page="vote"] .voting-method-cards article {
  grid-column: span 2;
  min-height: 280px;
  padding: 26px;
  border-right: 1px solid var(--site-rule);
  border-bottom: 1px solid var(--site-rule);
  background: #fff;
}

body[data-site-page="vote"] .voting-method-cards article:nth-child(4) { grid-column: 2 / span 2; }
body[data-site-page="vote"] .voting-method-cards article > span { color: var(--site-orange); font: 900 12px/1 Arial, sans-serif; }
body[data-site-page="vote"] .voting-method-cards h3 { margin: 34px 0 14px; color: var(--site-navy); font-size: 21px; line-height: 1.5; }
body[data-site-page="vote"] .voting-method-cards p { margin: 0; color: var(--site-text); font-size: 15px; line-height: 1.85; }
body[data-site-page="vote"] .voting-method-cards small { display: block; margin-top: 16px; padding-top: 14px; border-top: 1px solid var(--site-rule); color: var(--site-muted); font-size: 12px; line-height: 1.7; }

body[data-site-page="vote"] .vote-official-actions {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 30px;
  align-items: end;
  margin-top: 18px;
  padding: 26px;
  border-left: 6px solid var(--site-orange-bright);
  background: #f1f6f7;
}

body[data-site-page="vote"] .vote-official-actions strong { color: var(--site-navy); font-size: 18px; }
body[data-site-page="vote"] .vote-official-actions p { margin: 8px 0 0; color: var(--site-muted); font-size: 13px; line-height: 1.7; }
body[data-site-page="vote"] .vote-official-actions nav { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 9px; }
body[data-site-page="vote"] .vote-official-actions a { display: inline-flex; align-items: center; justify-content: space-between; gap: 16px; min-height: 50px; padding: 0 17px; color: #fff; background: var(--site-navy); font-size: 13px; font-weight: 800; }
body[data-site-page="vote"] .vote-official-actions a span { color: #ff9a55; }
body[data-site-page="vote"] .vote-official-actions a:hover { background: var(--site-orange); }

/* Policy figures remain public as announced, while the unresolved eligibility,
   financing and start-date fields are kept visibly separate. */
.policy-verification {
  padding: clamp(76px, 9vw, 132px) clamp(28px, 8vw, 132px);
  border-top: 9px solid var(--site-orange-bright);
  background:
    radial-gradient(circle at 90% 8%, rgba(243, 106, 22, .12), transparent 30%),
    #f3f7f7;
}

.policy-verification-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 12px 24px;
  margin: 0 0 20px;
  padding: 15px 18px;
  border: 1px solid var(--site-rule);
  background: #fff;
  color: var(--site-muted);
  font-size: 13px;
  font-weight: 750;
}

.policy-verification-legend span { display: inline-flex; align-items: center; gap: 8px; }
.policy-verification-legend i { width: 10px; height: 10px; border-radius: 50%; }
.policy-verification-legend .is-published { background: #17846e; }
.policy-verification-legend .is-checking { background: var(--site-orange-bright); }

.policy-verification-table { border-top: 1px solid var(--site-rule); border-left: 1px solid var(--site-rule); }
.policy-verification-row {
  display: grid;
  grid-template-columns: minmax(200px, .9fr) minmax(145px, .6fr) minmax(230px, 1.15fr) minmax(230px, 1.25fr);
}

.policy-verification-row > * {
  min-width: 0;
  margin: 0;
  padding: 22px;
  border-right: 1px solid var(--site-rule);
  border-bottom: 1px solid var(--site-rule);
  background: #fff;
}

.policy-verification-row.is-header > * {
  padding-top: 15px;
  padding-bottom: 15px;
  color: #fff;
  background: var(--site-navy);
  letter-spacing: .04em;
  font-size: 12px;
}

.policy-verification-row h3 { color: var(--site-navy); font-size: 17px; line-height: 1.55; }
.policy-verification-row h3 span { display: block; margin-bottom: 24px; color: var(--site-orange); font: 900 11px/1 Arial, sans-serif; }
.policy-verification-row p { color: var(--site-text); font-size: 14px; line-height: 1.8; }
.policy-verification-row p b { display: block; margin-bottom: 14px; color: var(--site-navy); font-size: 19px; }

.verification-status {
  display: inline-flex;
  align-items: center;
  width: max-content;
  margin-top: 13px;
  padding: 6px 8px;
  border-radius: 2px;
  letter-spacing: .05em;
  font-size: 10px;
  font-weight: 850;
  line-height: 1;
}

.verification-status.is-published { color: #075c4c; background: #d9f0ea; }
.verification-status.is-checking { color: #843000; background: #ffe3cf; }
.policy-verification-note { max-width: 940px; margin: 22px 0 0; color: var(--site-muted); font-size: 13px; line-height: 1.85; }
.policy-verification-source { display: inline-flex; align-items: center; gap: 18px; min-height: 52px; margin-top: 20px; padding: 0 18px; color: #fff; background: var(--site-navy); font-size: 14px; font-weight: 800; }
.policy-verification-source span { color: #ff9a55; }
.policy-verification-source:hover { background: var(--site-orange); }

@media (max-width: 980px) {
  body[data-site-page="vote"] .election-date-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  body[data-site-page="vote"] .voting-method-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  body[data-site-page="vote"] .voting-method-cards article,
  body[data-site-page="vote"] .voting-method-cards article:nth-child(4) { grid-column: auto; }
  body[data-site-page="vote"] .voting-method-cards article:last-child { grid-column: 1 / -1; }
  .policy-verification-row { grid-template-columns: minmax(180px, .8fr) minmax(130px, .55fr) minmax(210px, 1fr) minmax(210px, 1fr); }
}

@media (max-width: 760px) {
  body[data-site-page="vote"] .polling-quick-guide {
    grid-template-columns: 1fr;
    gap: 25px;
    margin-inline: -1px;
    padding: 30px 20px 22px;
  }

  body[data-site-page="vote"] .polling-quick-guide::after {
    right: -20px;
    bottom: auto;
    top: 12px;
    font-size: 130px;
  }

  body[data-site-page="vote"] .polling-quick-copy h2 {
    max-width: 10em;
    font-size: 28px;
  }

  body[data-site-page="vote"] .polling-select-form {
    padding: 20px 16px;
  }

  body[data-site-page="vote"] .polling-select-controls {
    grid-template-columns: 1fr;
  }

  body[data-site-page="vote"] .polling-select-controls select,
  body[data-site-page="vote"] .polling-select-controls button {
    min-height: 54px;
    font-size: 16px;
  }

  body[data-site-page="vote"] .vote-methods-guide {
    margin-inline: -1px;
    padding: 32px 18px;
    border-top-width: 6px;
  }

  body[data-site-page="vote"] .vote-methods-heading,
  .policy-verification-heading {
    grid-template-columns: 1fr;
    gap: 18px;
  }

  body[data-site-page="vote"] .vote-methods-heading > div,
  .policy-verification-heading > div { padding-left: 0; }
  body[data-site-page="vote"] .vote-methods-heading > div > span,
  .policy-verification-heading > div > span { position: static; margin-bottom: 14px; }
  body[data-site-page="vote"] .vote-methods-heading h2,
  .policy-verification-heading h2 { font-size: 31px; }

  body[data-site-page="vote"] .ballot-change-notice { grid-template-columns: 1fr; gap: 14px; padding: 20px; }
  body[data-site-page="vote"] .ballot-change-notice > span { width: max-content; }
  body[data-site-page="vote"] .ballot-change-notice a { justify-content: space-between; width: 100%; white-space: normal; }
  body[data-site-page="vote"] .election-date-grid { grid-template-columns: 1fr; }
  body[data-site-page="vote"] .election-date-grid > div { min-height: 0; padding: 18px; }
  body[data-site-page="vote"] .election-date-grid dt { margin-bottom: 9px; }
  body[data-site-page="vote"] .voting-method-cards { grid-template-columns: 1fr; }
  body[data-site-page="vote"] .voting-method-cards article,
  body[data-site-page="vote"] .voting-method-cards article:last-child { grid-column: auto; min-height: 0; padding: 22px; }
  body[data-site-page="vote"] .voting-method-cards h3 { margin-top: 22px; }
  body[data-site-page="vote"] .vote-official-actions { grid-template-columns: 1fr; padding: 20px; }
  body[data-site-page="vote"] .vote-official-actions nav { display: grid; justify-content: stretch; }
  body[data-site-page="vote"] .vote-official-actions a { width: 100%; }

  .policy-verification { padding: 66px 20px; border-top-width: 6px; }
  .policy-verification-legend { display: grid; }
  .policy-verification-table { border-top: 0; border-left: 0; }
  .policy-verification-row,
  .policy-verification-row.is-header { display: grid; grid-template-columns: 1fr; margin-bottom: 14px; border-top: 1px solid var(--site-rule); border-left: 1px solid var(--site-rule); }
  .policy-verification-row.is-header { display: none; }
  .policy-verification-row > * { padding: 18px; }
  .policy-verification-row h3 span { margin-bottom: 13px; }
  .policy-verification-row p::before { display: block; margin-bottom: 8px; color: var(--site-orange); letter-spacing: .07em; font-size: 10px; font-weight: 850; }
  .policy-verification-row p:nth-of-type(1)::before { content: "発表資料上の試算"; }
  .policy-verification-row p:nth-of-type(2)::before { content: "対象・算定"; }
  .policy-verification-row p:nth-of-type(3)::before { content: "財源・開始時期"; }
}

@media (max-width: 380px) {
  .site-phase-bar p {
    align-items: flex-start;
  }

  .site-phase-bar p span {
    font-size: 11px;
    line-height: 1.55;
  }

  .site-phase-bar a > span {
    max-width: 160px;
    line-height: 1.45;
  }
}

@media (prefers-reduced-motion: reduce) {
  .site-phase-bar *,
  .site-phase-bar *::before,
  .site-phase-bar *::after {
    scroll-behavior: auto !important;
    transition: none !important;
  }
}

/* Keep the four disclosure promises visually aligned at every browser width.
   The outer frame and internal dividers are defined separately so no edge
   disappears when the grid changes from four columns to two. */
body.home .hero-disclosure {
  border: 1px solid rgba(8, 33, 63, .18);
}

body.home .hero-disclosure div {
  display: flex;
  flex-direction: column;
  justify-content: center;
  min-height: 92px;
  padding: 16px clamp(8px, 1vw, 12px) 17px;
  border-right: 0;
  border-bottom: 0;
}

body.home .hero-disclosure div + div {
  border-left: 1px solid rgba(8, 33, 63, .14);
}

body.home .hero-disclosure dt,
body.home .hero-disclosure dd span {
  white-space: nowrap;
  word-break: keep-all;
  overflow-wrap: normal;
}

body.home .hero-disclosure dd {
  margin-top: 9px;
  font-size: 14px;
  line-height: 1.45;
  letter-spacing: -.02em;
}

body.home .hero-disclosure dd span {
  display: block;
}

/* Connect the four priorities to the candidate's concrete route to delivery. */
body.home .hero-negotiation {
  width: min(720px, 100%);
  margin: 14px 0 0;
  padding: 12px 18px 13px;
  border-left: 5px solid var(--site-orange-bright);
  color: #fff;
  background: linear-gradient(105deg, #08284a 0%, #0d416d 72%, #0b6876 100%);
  box-shadow: 0 12px 28px rgba(8, 40, 74, .16);
  letter-spacing: .08em;
  font-size: clamp(16px, 1.35vw, 20px);
  font-weight: 850;
  line-height: 1.5;
  text-align: center;
  white-space: nowrap;
}

@media (max-width: 760px) {
  body.home .hero-disclosure div,
  body.home .hero-disclosure div:first-child {
    min-height: 82px;
    padding: 14px 12px;
  }

  body.home .hero-disclosure div + div {
    border-left: 0;
  }

  body.home .hero-disclosure div:nth-child(2n) {
    border-left: 1px solid rgba(8, 33, 63, .14);
  }

  body.home .hero-disclosure div:nth-child(-n + 2) {
    border-bottom: 1px solid rgba(8, 33, 63, .14);
  }

  body.home .hero-negotiation {
    margin-top: 12px;
    padding: 12px 8px 13px;
    border-left-width: 4px;
    letter-spacing: .02em;
    font-size: clamp(16px, 5vw, 19px);
  }
}

/* 2026-08-08: keep the homepage's closing statement and profile introduction
   inside their own columns. The text remains unchanged; only intentional
   phrase boundaries and desktop column proportions control wrapping. */
body.home .connect-heading h2 > span {
  display: block;
  width: max-content;
  max-width: 100%;
  white-space: nowrap;
  word-break: keep-all;
  overflow-wrap: normal;
}

@media (min-width: 1181px) {
  body.home .connect-section {
    grid-template-columns: minmax(360px, .82fr) minmax(0, 1.18fr);
    gap: clamp(40px, 5vw, 80px);
  }

  body.home .profile-section .section-title {
    grid-template-columns: 160px minmax(0, 1fr) minmax(260px, .52fr);
    gap: clamp(32px, 3.3vw, 52px);
  }

  body.home .profile-section .section-title > p span {
    white-space: nowrap;
    word-break: keep-all;
  }

  body.home .profile-section .section-title h2 {
    font-size: clamp(40px, 3.6vw, 56px);
    line-height: 1.36;
  }
}

/* 2026-08-08: approved composite FV.
   Desktop uses the complete 16:9 artwork and its left-side copy space.
   Mobile uses a dedicated square crop and places the copy below the portrait
   so the face, tie and message never compete for the same pixels. */
body.home .hero {
  isolation: isolate;
  background: #eef8fb;
}

body.home .hero-backdrop {
  position: absolute;
  z-index: 0;
  inset: 0;
  background: #dff3f8;
  overflow: hidden;
}

body.home .hero-picture {
  position: absolute;
  inset: 0;
  display: block;
}

body.home .hero-backdrop-image {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  max-width: none;
  object-fit: cover;
  object-position: center center;
  filter: none;
}

body.home .hero-backdrop::before {
  position: absolute;
  z-index: 2;
  inset: 0;
  display: block;
  content: "";
  background:
    linear-gradient(90deg,
      rgba(252, 254, 253, .99) 0 34%,
      rgba(252, 254, 253, .95) 44%,
      rgba(252, 254, 253, .74) 54%,
      rgba(252, 254, 253, .24) 66%,
      transparent 80%),
    linear-gradient(180deg, transparent 66%, rgba(8, 40, 74, .08) 100%);
  pointer-events: none;
}

body.home .hero-backdrop::after,
body.home .hero::after,
body.home .hero-portrait {
  display: none !important;
}

body.home .hero-copy {
  position: relative;
  z-index: 3;
  width: min(760px, 55vw);
  background: transparent;
}

/* Keep the election status and public-service record on the two intentional
   lines approved for the FV, including narrow smartphone viewports. */
body.home .hero-role-line {
  display: block;
  white-space: nowrap;
  word-break: keep-all;
  overflow-wrap: normal;
}

@media (min-width: 761px) and (max-width: 1023px) {
  body.home .hero-backdrop-image {
    object-position: 67% center;
  }

  body.home .hero-backdrop::before {
    background:
      linear-gradient(90deg,
        rgba(252, 254, 253, .99) 0 42%,
        rgba(252, 254, 253, .94) 54%,
        rgba(252, 254, 253, .50) 68%,
        transparent 86%),
      linear-gradient(180deg, transparent 66%, rgba(8, 40, 74, .08) 100%);
  }
}

@media (max-width: 760px) {
  body.home .hero {
    min-height: 0;
    padding: 0;
    background: #f4f8f8;
    overflow: clip;
  }

  body.home .hero-backdrop {
    position: relative;
    inset: auto;
    width: 100%;
    height: clamp(340px, 100vw, 500px);
  }

  body.home .hero-backdrop-image {
    object-fit: cover;
    object-position: center center;
  }

  body.home .hero-backdrop::before {
    background:
      linear-gradient(180deg,
        transparent 0 80%,
        rgba(244, 248, 248, .36) 90%,
        #f4f8f8 100%);
  }

  body.home .hero-copy {
    position: relative;
    width: 100%;
    min-height: 0;
    margin-top: -18px;
    padding: 34px 18px 38px;
    border-top: 4px solid var(--site-orange-bright);
    background: linear-gradient(180deg, rgba(244, 248, 248, .98), #f4f8f8 72%);
    box-shadow: 0 -14px 34px rgba(8, 40, 74, .08);
  }

  body.home .hero-eyebrow {
    width: fit-content;
    max-width: 100%;
    margin-bottom: 15px;
    font-size: 9px;
  }

  body.home .hero h1 {
    width: 100%;
    max-width: none;
    font-size: clamp(31px, 9.6vw, 40px);
    line-height: 1.17;
    text-shadow: none;
  }

  body.home .hero h1 > span {
    margin-bottom: 7px;
    font-size: .48em;
  }

  body.home .hero h1 > strong,
  body.home .hero h1 > em {
    white-space: nowrap;
  }

  body.home .hero-lead {
    max-width: none;
    margin-top: 24px;
    font-size: 16px;
    line-height: 1.9;
  }

  body.home .hero-actions {
    margin-top: 25px;
  }

  body.home .hero-disclosure {
    margin-top: 22px;
  }

  body.home .hero-role {
    font-size: clamp(9px, 2.7vw, 12px);
  }

  body.home .scroll-cue {
    display: none;
  }
}

@media (max-width: 350px) {
  body.home .hero-backdrop {
    height: 340px;
  }
}
/* Direct links from the homepage land on the selected priority below the fixed header. */
.policy-action-grid > article[id^="priority-"] {
  scroll-margin-top: 9rem;
}

.policy-action-grid > article[id^="priority-"]:target {
  outline: 3px solid rgba(242, 106, 46, 0.7);
  outline-offset: 5px;
}
