.button--blue{ background: var(--jn-blue); border-color: var(--jn-blue); }
.text-link{ display: inline-block; padding-bottom: 2px; border-bottom: 1px solid currentColor; font-weight: 800; }
.status-chip{ display: inline-flex; min-height: 24px; align-items: center; padding: 2px 8px; color: #fff; background: var(--jn-ink); font-size: 11px; font-weight: 900; letter-spacing: .04em; }
.empty-message{ padding: 30px; color: var(--jn-muted); background: var(--jn-paper); border-left: 4px solid var(--jn-red); }
/* Header */
.site-header{ position: relative; z-index: 20; background: #fff; border-bottom: 1px solid var(--jn-line); }
.search-submit{ min-width: 100px; color: #fff; background: var(--jn-ink); border: 0; font-weight: 900; cursor: pointer; }
.standard-card time{ color: var(--jn-muted); font-size: 12px; }
.focus-placeholder{ grid-column: 1/-1; padding: 28px; background: var(--jn-paper); border-top: 4px solid var(--jn-red); }
.focus-placeholder span{ display: block; color: var(--jn-red); font-size: 12px; font-weight: 900; }
.section-heading--compact{ margin-bottom: 0; }
.bill-page .bill-progress li, .bill-row .bill-progress li{ font-size: 10px; }
.embargo-banner{ padding: 22px; color: var(--jn-warn-ink); background: var(--jn-warn-bg); border: 1px solid var(--jn-warn-border); }
.embargo-banner p{ margin-bottom: 0; }
.section-heading--light{ border-color: #6b7280; }
.section-heading--light > div + a{ color: #d1d5db; }
.video-placeholder{ position: relative; min-height: 270px; padding: 100px 26px 26px; color: #fff; background: linear-gradient(145deg,#334155,#111827); }
.video-placeholder .play-badge{ top: 32px; bottom: auto; }
.card-grid--four{ grid-template-columns: repeat(4, minmax(0, 1fr)); }
.card-grid--three{ grid-template-columns: repeat(3, minmax(0, 1fr)); }
.standard-card__image{ display: block; aspect-ratio: 16/9; margin-bottom: 12px; overflow: hidden; background: var(--jn-paper); }
.standard-card h3{ margin: 5px 0 8px; font-size: 18px; line-height: 1.42; }
.search-page, .product-page{ padding: 48px 0 80px; }
.archive-description{ max-width: 760px; color: var(--jn-muted); }
.status-filter a{ padding: 7px 12px; background: #fff; border: 1px solid var(--jn-line); font-size: 12px; font-weight: 800; }
.search-result time{ color: var(--jn-muted); font-size: 12px; }
.search-result{ display: grid; grid-template-columns: 240px 1fr; gap: 22px; padding: 22px 0; border-bottom: 1px solid var(--jn-line); }
.search-result__image{ aspect-ratio: 16/9; overflow: hidden; }
.search-result h2{ margin: 4px 0 8px; font-size: 22px; line-height: 1.38; }
.advanced-search{ display: grid; grid-template-columns: minmax(260px, 1fr) 180px 170px auto; align-items: end; gap: 10px; margin-bottom: 32px; padding: 20px; background: var(--jn-paper); }
.advanced-search label{ display: grid; gap: 5px; color: var(--jn-muted); font-size: 12px; font-weight: 800; }
.advanced-search input, .advanced-search select{ min-height: 40px; padding: 0 .75rem; background: #fff; border: 1px solid #9ca3af; }
.advanced-search button{ min-height: 40px; padding: 0 22px; color: #fff; background: var(--jn-ink); border: 0; font-weight: 900; }
.product-stat{ display: grid; flex: 0 0 180px; text-align: right; }
.product-stat strong{ color: var(--jn-red); font-size: 56px; line-height: 1; }
.product-stat span{ color: var(--jn-muted); font-size: 12px; }
.product-filter{ display: grid; grid-template-columns: 1fr auto; gap: 8px; margin-bottom: 28px; }
.product-filter label{ display: grid; gap: 5px; color: var(--jn-muted); font-size: 12px; }
.product-filter input{ min-height: 48px; padding: 0 13px; border: 1px solid #9ca3af; }
.product-filter button{ min-width: 100px; color: #fff; background: var(--jn-ink); border: 0; }
.people-archive-grid{ display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 22px; }
.person-profile-card{ display: grid; grid-template-columns: 125px 1fr; gap: 18px; padding: 18px; background: #fff; border: 1px solid var(--jn-line); }
.person-profile-card__image{ aspect-ratio: 1; overflow: hidden; background: var(--jn-paper); }
.person-profile-card h2{ margin: 5px 0; font-size: 22px; }
.person-profile-card p{ margin-bottom: 4px; }
.person-profile-card small{ color: var(--jn-muted); }
.status-filter{ display: flex; flex-wrap: wrap; gap: 7px; margin-bottom: 26px; }
.bill-archive-list{ border-top: 2px solid var(--jn-ink); }
.bill-row{ display: grid; grid-template-columns: 170px 1fr 90px; gap: 26px; padding: 28px 0; border-bottom: 1px solid var(--jn-line); }
.bill-row__status{ display: grid; align-content: start; gap: 7px; }
.bill-row__status span{ width: fit-content; padding: 5px 9px; color: #fff; background: var(--jn-blue); font-size: 12px; font-weight: 900; }
.bill-row__status small, .bill-row > time{ color: var(--jn-muted); font-size: 11px; }
.bill-row h2{ margin: 5px 0 7px; font-size: 23px; }
.bill-row p{ color: var(--jn-muted); }
.bill-row > time{ display: grid; align-content: start; text-align: right; }
.poll-archive-grid{ display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; }
.poll-profile-card{ padding: 22px; background: #fff; border: 1px solid var(--jn-line); border-top: 4px solid var(--jn-blue); }
.poll-profile-card__head{ display: flex; justify-content: space-between; }
.poll-profile-card h2, .poll-profile-card h3{ margin: 14px 0 10px; font-size: 21px; line-height: 1.38; }
.poll-profile-card > p{ color: #475569; }
.poll-profile-card dl{ display: grid; grid-template-columns: 1fr 1fr; gap: 1px; margin-block: 18px; background: var(--jn-line); }
.poll-profile-card dl div{ padding: 9px; background: var(--jn-paper); }
.poll-profile-card dt{ color: var(--jn-muted); font-size: 10px; }
.poll-profile-card dd{ margin: 0; font-size: 12px; font-weight: 800; }
.poll-hidden{ padding: 14px; color: #92400e !important; background: #fffbeb; font-weight: 900; }
.agenda-archive-list{ border-top: 2px solid var(--jn-ink); }
.agenda-archive-row{ display: grid; grid-template-columns: 130px 1fr; gap: 24px; padding: 24px 0; border-bottom: 1px solid var(--jn-line); }
.agenda-archive-row > time{ color: var(--jn-red); font-size: 22px; font-weight: 900; }
.agenda-archive-row h2{ margin: 8px 0 4px; font-size: 22px; }
/* Article and product singles */
.article-page{ padding-top: 56px; }
.profile-page, .bill-page, .poll-page, .agenda-single{ padding: 54px 0 82px; }
.profile-hero{ display: grid; grid-template-columns: 280px 1fr; gap: 42px; align-items: center; padding: 34px; background: var(--jn-paper); border-top: 7px solid var(--jn-red); }
.profile-hero__image{ aspect-ratio: 1; overflow: hidden; }
.profile-hero h1, .bill-hero h1, .poll-hero h1{ margin: 6px 0 8px; font-size: clamp(42px, 6vw, 66px); line-height: 1.05; }
.profile-role{ color: #4b5563; font-size: 21px; }
.profile-tags{ display: flex; flex-wrap: wrap; gap: 7px; margin-bottom: 18px; }
.profile-tags a, .profile-tags span{ padding: 5px 9px; background: #fff; border: 1px solid var(--jn-line); font-size: 12px; font-weight: 800; }
.profile-facts, .detail-list{ display: grid; gap: 1px; margin-bottom: 20px; background: var(--jn-line); }
.profile-facts{ grid-template-columns: 1fr 1fr; }
.profile-facts div, .detail-list div{ padding: 12px; background: #fff; }
.profile-facts dt, .detail-list dt{ color: var(--jn-muted); font-size: 11px; }
.profile-facts dd, .detail-list dd{ margin: 2px 0 0; font-weight: 800; }
.profile-layout, .bill-detail-grid, .poll-detail-grid{ display: grid; grid-template-columns: minmax(0, 760px) minmax(260px, 1fr); gap: 44px; margin-top: 42px; }
.bill-hero{ padding: 38px; background: var(--jn-soft); border-top: 7px solid var(--jn-blue); }
.bill-hero__meta{ display: flex; gap: 10px; }
.bill-hero__meta strong{ padding: 4px 9px; color: #fff; background: var(--jn-blue); }
.bill-hero > p{ max-width: 860px; color: #475569; font-size: 18px; }
.source-caution{ margin-top: 16px; color: var(--jn-muted); font-size: 12px; }
.poll-hero{ padding-bottom: 22px; border-bottom: 2px solid var(--jn-ink); }
.poll-result{ margin: 28px 0; padding: 24px; color: #fff; background: var(--jn-blue); }
.poll-result span{ font-size: 12px; font-weight: 900; }
.poll-result p{ margin: 8px 0 0; font-size: 20px; }
.agenda-single header{ margin-bottom: 22px; }
.detail-list--wide{ grid-template-columns: repeat(3, 1fr); }
.timeline-dot{ z-index: 2; width: 12px; height: 12px; margin-top: 5px; background: var(--jn-red); border: 3px solid #fff; border-radius: 50%; box-shadow: 0 0 0 2px var(--jn-red); }
/* Election */
.election-mast{ padding: 64px 0; color: #fff; background: linear-gradient(125deg,#111827 0%,#111827 58%,#8f1320 58%,#d51e2b 100%); }
.election-mast h1{ margin: 6px 0 10px; font-size: clamp(48px, 8vw, 78px); }
.election-mast p{ max-width: 720px; color: #d1d5db; font-size: 18px; }
.election-countdown{ display: grid; max-width: 620px; margin-top: 28px; padding: 18px; background: rgba(255,255,255,.1); border: 1px solid rgba(255,255,255,.3); }
.election-countdown span{ color: #fca5a5; font-size: 12px; font-weight: 900; }
.election-countdown a{ margin-top: 6px; font-size: 12px; text-decoration: underline; }
.district-grid{ display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 14px; }
.district-grid a, .district-grid > div{ display: grid; gap: 5px; min-height: 120px; padding: 20px; background: var(--jn-paper); border-top: 4px solid var(--jn-red); }
.district-grid strong{ font-size: 22px; }
.district-grid span{ color: var(--jn-muted); font-size: 12px; }
.election-news-layout{ display: grid; grid-template-columns: minmax(0, 8fr) minmax(250px, 3fr); gap: 34px; }
.election-guide{ align-self: start; padding: 24px; color: #fff; background: var(--jn-ink); }
.election-guide p{ color: #cbd5e1; }
@media (max-width: 1080px) {
  .card-grid--four{grid-template-columns: repeat(2, minmax(0,1fr));}
}
@media (max-width: 1080px) {
  .people-archive-grid{grid-template-columns: repeat(2, minmax(0,1fr));}
}
@media (max-width: 820px) {
  .profile-layout, .bill-detail-grid, .poll-detail-grid, .election-news-layout{grid-template-columns: 1fr;}
}
@media (max-width: 820px) {
  .poll-archive-grid, .district-grid{grid-template-columns: repeat(2, minmax(0,1fr));}
}
@media (max-width: 820px) {
  .people-archive-grid{grid-template-columns: 1fr;}
}
@media (max-width: 820px) {
  .advanced-search{grid-template-columns: 1fr 1fr;}
}
@media (max-width: 820px) {
  .advanced-search__query{grid-column: 1/-1;}
}
@media (max-width: 820px) {
  .profile-hero{grid-template-columns: 220px 1fr; gap: 26px;}
}
@media (max-width: 560px) {
  .poll-archive-grid, .district-grid, .card-grid--four, .card-grid--three{grid-template-columns: 1fr;}
}
@media (max-width: 560px) {
  .search-result{grid-template-columns: 1fr;}
}
@media (max-width: 560px) {
  .search-result{grid-template-columns: 120px 1fr; gap: 13px;}
}
@media (max-width: 560px) {
  .search-result p{display: none;}
}
@media (max-width: 560px) {
  .advanced-search{grid-template-columns: 1fr;}
}
@media (max-width: 560px) {
  .advanced-search__query{grid-column: auto;}
}
@media (max-width: 560px) {
  .product-stat{margin-top: 22px; text-align: left;}
}
@media (max-width: 560px) {
  .bill-row{grid-template-columns: 1fr; gap: 12px;}
}
@media (max-width: 560px) {
  .bill-row > time{text-align: left;}
}
@media (max-width: 560px) {
  .profile-hero{grid-template-columns: 1fr; padding: 22px;}
}
@media (max-width: 560px) {
  .profile-hero__image{max-width: 220px;}
}
@media (max-width: 560px) {
  .detail-list--wide, .profile-facts{grid-template-columns: 1fr;}
}
@media (max-width: 560px) {
  .timeline-dot{grid-column: 1; grid-row: 1/3;}
}
@media (max-width: 560px) {
  .election-mast{padding: 46px 0; background: linear-gradient(145deg,#111827 0%,#111827 72%,#d51e2b 72%);}
}

/* R18 补遗（产品抽查发现，jn- 体系 authoring——原两套 css 均无定义） */
.demo-hero{display:grid;grid-template-columns:minmax(0,360px) 1fr;gap:2rem;align-items:center;padding:3rem;background:var(--jn-paper);border:1px solid var(--jn-line);border-top:5px solid var(--jn-red)}
.demo-hero__media img{display:block;width:100%;aspect-ratio:16/9;object-fit:cover}
.demo-hero__body .eyebrow{color:var(--jn-red)}
.demo-hero__body h1{margin:.6rem 0 .8rem;font-family:var(--jn-serif);font-size:clamp(1.6rem,3vw,2.6rem);line-height:1.25}
.demo-hero__body p{margin:0;color:var(--jn-muted);max-width:640px}
.bill-code{display:inline-block;margin-bottom:.35rem;color:var(--jn-blue);font-size:.72rem;font-weight:900;letter-spacing:.08em;text-transform:uppercase}
@media (max-width: 820px) {
  .demo-hero{grid-template-columns:1fr;padding:2rem}
}
global-breaking time{font-variant-numeric: tabular-nums; white-space: nowrap;}
.channel-brief time{color: var(--jn-muted); font-size: 12px;}
.section-heading > a{color: var(--jn-muted); font-size: 13px; font-weight: 800;}
.section-heading > div + a{color: var(--jn-muted); font-size: 13px; font-weight: 800;}
.agenda-panel a{color: inherit;}
.agenda-panel__head > a{color: #cbd5e1; font-size: 12px;}
.agenda-item span{display: grid; gap: 3px;}
.bill-card__meta strong{padding: 3px 7px; color: #fff; background: var(--jn-blue);}
.bill-card p{color: #475569; font-size: 13px;}
.bill-card .bill-progress{margin-top: auto;}
.election-feature .eyebrow{color: #ffd3d6;}
.district-links a{padding: 7px 10px; border: 1px solid rgba(255,255,255,.5); font-size: 12px; font-weight: 800;}
.embargo-notice p{margin-bottom: 0;}
.channel-lead p{color: var(--jn-muted);}
.channel-brief > a{aspect-ratio: 16/9; overflow: hidden;}
.person-card span:last-child{display: grid;}
.person-card strong{font-size: 18px;}
.depth-row > a{aspect-ratio: 16/9; overflow: hidden;}
.depth-row h3{margin: 4px 0 7px; font-size: 20px;}
.depth-row p{margin: 0; color: #cbd5e1; font-size: 13px;}
.video-row h3{margin-top: 10px; font-size: 18px;}
.archive-lead p{color: var(--jn-muted);}
.stream-card p{color: var(--jn-muted);}
.archive-lead time{color: var(--jn-muted); font-size: 12px;}
.stream-card time{color: var(--jn-muted); font-size: 12px;}
.archive-aside h2{font-size: 18px;}
.article-byline a{color: var(--jn-ink); font-weight: 800;}
.correction-alert p{margin: 5px 0 0;}
.share-rail a:hover{color: #fff; background: var(--jn-red);}
.share-rail button:hover{color: #fff; background: var(--jn-red);}
.entry-content > *{max-width: 100%;}
.entry-content p{margin-bottom: 1.45em;}
.article-toc ol{margin-bottom: 0; padding-left: 20px;}
.article-toc a{color: var(--jn-ink); text-decoration: none;}
.source-note p{margin: 8px 0 0;}
.disclosure-note p{margin: 8px 0 0;}
.tag-list span{font-weight: 900;}
.context-group strong{width: 100%;}
.timeline-item > time{color: var(--jn-muted); font-size: 12px; text-align: right;}
.timeline-item h2{margin: 3px 0 7px; font-size: 23px;}
.newsletter-band .section-kicker{color: #ffd1d5;}
.footer-links a{display: block; padding: 6px 0; font-size: 13px;}

/* R35：行動端觸控目標 ≥44px（本檔在 responsive.css 之後載入，故斷點覆寫必須寫在此處） */
/* R36（H8）：行動端輸入框字號 16px —— 避免 iOS 聚焦時自動縮放（<16px 觸發）。
   放在本檔而非 responsive.css：本檔載入順序最後、且是 .advanced-search 規則的所有者，
   可完全避免「後載入者勝」的覆寫風險（R35 已踩過同類坑）。*/
@media(max-width:760px){ .advanced-search input, .advanced-search select, .advanced-search button{ min-height: 44px; } .advanced-search input, .advanced-search select{ font-size: 1rem; } }
