:root { color-scheme: light; --font-small: 14px; --font-body: 16px; --font-heading: 24px; --font-display: 48px; --paper: #f5f3ed; --surface: #fffefa; --ink: #28392e; --muted: #69736c; --line: #dedfd4; --green: #355841; --soft: #e9eee3; --error: #a03128; font-family: "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", system-ui, sans-serif; }
* { box-sizing: border-box; }
html { min-width: 320px; background: var(--paper); }
body { margin: 0; color: var(--ink); font-size: var(--font-body); line-height: 1.65; }
a { color: var(--green); text-underline-offset: 4px; }
a:hover { color: #162d1d; }
button, input, select, textarea { font: inherit; }
button { font-size: var(--font-small); }
small { font-size: var(--font-small); }
fieldset { min-width: 0; margin: 0; padding: 0; border: 0; }
legend { font-size: var(--font-body); }
:focus-visible { outline: 3px solid #94ac79; outline-offset: 3px; }
.login-shell { min-height: 100vh; display: grid; place-items: center; padding: 24px; }
.login-shell .login-card { width: min(100%, 420px); min-width: 0; padding: 36px; border-radius: 12px; background: var(--surface); }
.login-shell .brand-mark { display: grid; width: 38px; height: 38px; place-items: center; margin-bottom: 28px; border-radius: 11px; color: white; background: var(--green); font-size: var(--font-heading); font-weight: 700; }
.login-shell .page-lead { color: var(--muted); }
.login-shell .content-stack { display: grid; gap: 20px; margin-top: 28px; }
.login-shell .form-field { display: grid; gap: 7px; }
.login-shell label { color: var(--muted); font-size: var(--font-small); }
.login-shell .notice-danger { padding: 16px; border: 1px solid #dca69c; border-radius: 6px; background: #fff2ee; color: var(--error); overflow-wrap: anywhere; }
.login-shell .notice-danger ul { padding-left: 20px; margin: 0; }
@media (max-width: 390px) { .login-shell { padding: 18px; } .login-shell .login-card { padding: 24px; } }
.skip-link { position: fixed; z-index: 10; padding: 10px 16px; top: 8px; left: 8px; background: white; transform: translateY(-150%); }
.skip-link:focus { transform: none; }
.site-header { display: flex; flex-wrap: wrap; gap: 20px 32px; align-items: center; padding: 22px 4vw; border-bottom: 1px solid var(--line); }
.brand { display: flex; align-items: baseline; gap: 14px; font-size: var(--font-heading); font-weight: 700; letter-spacing: .12em; text-decoration: none; white-space: nowrap; }
.brand span { font-size: var(--font-small); color: var(--muted); font-weight: 400; letter-spacing: .08em; }
.main-nav { display: flex; gap: 4px; margin: 0 auto; }
.main-nav a { padding: 7px 12px; border-radius: 6px; color: var(--muted); text-decoration: none; white-space: nowrap; font-size: var(--font-small); }
.main-nav a[aria-current], .main-nav a:hover { background: var(--soft); color: var(--green); }
.header-actions { display: flex; align-items: center; gap: 16px; font-size: var(--font-small); }
.header-actions a { text-decoration: none; }
.header-actions form { margin: 0; }
.text-button { padding: 4px 0; background: transparent; border: 0; color: var(--muted); cursor: pointer; }
.page { max-width: 1180px; margin: auto; padding: 44px 32px 64px; }
.page-heading { display: flex; align-items: end; justify-content: space-between; gap: 24px; margin-bottom: 34px; }
h1, h2, h3, h4, h5, h6, p { margin-top: 0; }
h1 { margin-block: 8px 10px; font-size: var(--font-heading); line-height: 1.4; font-weight: 600; letter-spacing: -.02em; overflow-wrap: anywhere; }
h2 { margin-bottom: 16px; font-size: var(--font-heading); font-weight: 600; }
h3, h4, h5, h6 { font-size: var(--font-body); margin-bottom: 8px; }
.lede, .muted { color: var(--muted); }
.lede { margin-bottom: 0; max-width: 700px; }
.eyebrow { margin-bottom: 8px; font-size: var(--font-small); letter-spacing: .08em; color: var(--muted); }
.button { display: inline-flex; justify-content: center; align-items: center; padding: 10px 20px; color: white; background: var(--green); border: 1px solid transparent; border-radius: 7px; cursor: pointer; text-decoration: none; white-space: normal; max-width: 100%; min-width: 0; overflow-wrap: anywhere; text-align: center; font-size: var(--font-small); }
.button:hover { background: #284832; color: white; }
.button:disabled { opacity: .65; cursor: wait; }
[data-allocation-review-filter] { margin-bottom: 16px; }
[data-allocation-review-filter] .button:not([aria-current]) { background: var(--soft); color: var(--green); }
[data-allocation-review-filter] .button:not([aria-current]):hover { background: var(--soft); }
.panel { min-width: 0; padding: 28px; border: 0; border-radius: 12px; background: var(--surface); margin-bottom: 24px; }
.overview-grid { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); gap: 24px; }
.two-columns, .detail-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; }
.detail-grid { grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); align-items: start; }
.section-heading { display: flex; justify-content: space-between; align-items: baseline; flex-wrap: wrap; gap: 8px 16px; margin-bottom: 8px; }
.section-heading h2, .section-heading h3 { margin-bottom: 8px; }
.badge { display: inline-block; background: var(--soft); border-radius: 4px; padding: 3px 9px; font-size: var(--font-small); color: var(--green); white-space: nowrap; }
.count { font-size: var(--font-heading); }
.metrics { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px 16px; margin-block: 24px; }
.metric span { display: block; font-size: var(--font-small); color: var(--muted); }
.metric strong { display: block; font-size: var(--font-heading); font-weight: 500; font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.capital-total { padding: 20px 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.capital-total span { font-size: var(--font-small); color: var(--muted); }
.capital-total strong { display: block; font-size: var(--font-heading); font-weight: 500; overflow-wrap: anywhere; }
.capital-total small { font-size: var(--font-small); }
.capital-total p { margin: 4px 0 0; font-size: var(--font-small); }
.facts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; margin-block: 24px; }
dt { font-size: var(--font-small); color: var(--muted); }
dd { margin: 5px 0 0; overflow-wrap: anywhere; }
.prose-facts { margin: 24px 0; }
.prose-facts > div { margin-bottom: 24px; }
.prose-facts dd, .prose { line-height: 1.85; overflow-wrap: anywhere; }
.help { font-size: var(--font-small); color: var(--muted); margin: 6px 0 0; }
.inline-link { display: inline-block; margin-top: 22px; font-size: var(--font-small); }
.record-list { list-style: none; padding: 0; margin: 0; }
.record-list li { display: flex; gap: 16px; justify-content: space-between; align-items: center; padding: 18px 0; border-bottom: 1px solid var(--line); }
.record-list li:last-child { border-bottom: 0; }
.record-list a { min-width: 0; text-decoration: none; }
.record-list strong { display: block; overflow-wrap: anywhere; font-weight: 500; }
.record-list a span { display: block; font-size: var(--font-small); color: var(--muted); margin-top: 4px; overflow-wrap: anywhere; }
.record-meta { display: flex; align-items: end; flex-direction: column; gap: 5px; flex-shrink: 0; max-width: 100%; }
.record-meta small { font-size: var(--font-small); color: var(--muted); }
.link-panel { display: block; padding: 28px; border-radius: 12px; background: #e9ede3; text-decoration: none; }
.link-panel p:last-child { margin: 0; color: var(--muted); font-size: var(--font-small); }
.entry-form { max-width: 840px; }
.form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 22px; }
.field-wide { grid-column: 1 / -1; }
.field { min-width: 0; }
.field label { display: block; font-size: var(--font-small); font-weight: 600; margin-bottom: 6px; }
.optional { margin-left: 8px; color: var(--muted); font-size: var(--font-small); font-weight: 400; }
input, select, textarea { width: 100%; min-width: 0; border: 1px solid #bec7b9; border-radius: 6px; padding: 10px 12px; background: white; color: var(--ink); }
textarea { resize: vertical; }
.form-actions { display: flex; flex-wrap: wrap; gap: 24px; align-items: center; margin-top: 28px; }
.form-errors { padding: 16px; border: 1px solid #dca69c; background: #fff2ee; border-radius: 6px; margin-bottom: 24px; color: var(--error); }
.errorlist { list-style: none; padding: 0; margin: 6px 0 0; color: var(--error); font-size: var(--font-small); }
input[aria-invalid], select[aria-invalid], textarea[aria-invalid] { border-color: var(--error); }
.messages p { padding: 14px 20px; background: var(--soft); border-radius: 7px; }
.review { padding: 22px 0; border-bottom: 1px solid var(--line); }
.review:last-child { border-bottom: none; padding-bottom: 0; }
.review .prose-facts { margin-bottom: 0; }
.method-context + .method-context { margin-top: 28px; padding-top: 28px; border-top: 1px solid var(--line); }
.method-context p, .evidence-links { overflow-wrap: anywhere; }
.prose-facts dd p { margin-bottom: 8px; }
.product-question { padding: 16px; margin-bottom: 20px; background: var(--soft); border-radius: 6px; }
.product-question p:last-child { margin-bottom: 0; }
.evidence-links { padding-left: 22px; font-size: var(--font-small); }
.evidence-links li { margin: 14px 0; }
.hash { overflow-wrap: anywhere; }
.demo-notice { padding: 10px 20px; background: #f4e8c5; color: #665016; text-align: center; font-size: var(--font-small); }
summary { cursor: pointer; font-size: var(--font-small); color: var(--green); }
#id_methods { display: grid; gap: 12px; }
#id_methods label { display: flex; align-items: start; gap: 10px; padding: 12px; background: var(--soft); border-radius: 6px; font-weight: 400; }
input[type="checkbox"] { width: 18px; height: 18px; flex-shrink: 0; margin-top: 4px; }
.pagination { display: flex; gap: 20px; flex-wrap: wrap; margin-top: 20px; font-size: var(--font-small); }
.decision-filters { display: grid; grid-template-columns: 2fr 1fr 1fr 1.5fr; gap: 18px; align-items: start; }
.decision-filters .filter-actions { display: flex; align-items: center; gap: 22px; grid-column: 1 / -1; }
.decision-filters .help { margin-top: 0; }
.review-shortcuts { display: flex; flex-direction: column; gap: 10px; margin-top: 22px; font-size: var(--font-small); }
.record-list li:target { background: var(--soft); outline: 2px solid #94ac79; outline-offset: 6px; border-radius: 4px; }
.focus-record { outline: 2px solid #94ac79; outline-offset: 2px; }
.record-list li[id] { scroll-margin-top: 24px; }
@media (max-width: 760px) { .decision-filters { grid-template-columns: repeat(2, minmax(0, 1fr)); } .decision-filters .field:first-child { grid-column: 1 / -1; } }
@media (max-width: 390px) { .decision-filters { grid-template-columns: minmax(0, 1fr); } }
.site-footer { border-top: 1px solid var(--line); color: var(--muted); padding: 24px 32px; text-align: center; font-size: var(--font-small); }
@media (max-width: 760px) { .main-nav { flex-wrap: wrap; } }
@media (max-width: 540px) { .main-nav { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 4px; } .main-nav a { text-align: center; } }
@media (max-width: 1050px) { .brand span { display: none; } .site-header { gap: 14px; padding-inline: 24px; } }
@media (max-width: 760px) { .site-header { padding: 14px 20px; } .main-nav { order: 3; width: 100%; justify-content: space-between; margin: 0; } .main-nav a { padding: 6px 10px; } .header-actions { margin-left: auto; } .page { padding: 28px 20px 40px; } .page-heading { align-items: start; flex-direction: column; gap: 18px; margin-bottom: 24px; } .panel, .link-panel { padding: 22px; } .overview-grid, .two-columns, .detail-grid { grid-template-columns: minmax(0, 1fr); gap: 0; } .link-panel { margin-bottom: 20px; } .form-grid { gap: 18px; } .record-list li { flex-wrap: wrap; } .record-meta { flex-direction: row; align-items: center; flex-wrap: wrap; } }
@media (max-width: 390px) { .page { padding-inline: 14px; } .site-header { padding-inline: 14px; } .main-nav a { padding-inline: 7px; } .header-actions { gap: 10px; } .panel, .link-panel { padding: 18px; } .facts, .form-grid { grid-template-columns: minmax(0, 1fr); } .field-wide { grid-column: auto; } }
@media (prefers-reduced-motion: reduce) { * { scroll-behavior: auto !important; } }

.reassessment-context { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:1rem; margin:1.5rem 0; }
.reassessment-context article { padding:1rem; background:var(--surface-soft, #f5f6f0); border-radius:.5rem; min-width:0; overflow-wrap:anywhere; }
.reassessment-context h3 { margin-top:0; }
.method-group { scroll-margin-top:1rem; }
@media (max-width:760px) { .reassessment-context { grid-template-columns:1fr; } }

.metric-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:1.5rem; margin-block:1.5rem; }
.metric-grid article { min-width:0; overflow-wrap:anywhere; }
.metric-grid .metric { font-size: var(--font-heading); font-variant-numeric:tabular-nums; margin-block:.75rem; }
.notice { padding:1rem; background:#edf2e9; border-radius:.5rem; }
@media (max-width:760px) { .metric-grid { grid-template-columns:1fr; } }

.record-list .latest-review { margin-top:.6rem; padding:.7rem .8rem; background:#f1f4ec; border-radius:.35rem; color:var(--ink); max-width:48rem; }
.latest-review b { display:block; font-size: var(--font-small); color:var(--muted); font-weight:500; margin-bottom:.25rem; }

.capital-recheck { border-top:1px solid var(--line); margin-top:1rem; padding-top:1rem; }
.capital-recheck h4 { margin-block:0 .5rem; }

.decision-section { border:0; border-top:1px solid var(--line); margin:2rem 0 0; padding:1.5rem 0 0; min-width:0; }
.decision-section legend { padding:0 .5rem 0 0; font-size: var(--font-heading); font-weight:500; }
.decision-section > .help { margin-top:0; margin-bottom:1.5rem; }
.decision-section [data-cash-cover-decision] { max-width:100%; white-space:normal; }
.decision-references { margin-block:2rem; }
.decision-references summary { font-size: var(--font-body); cursor:pointer; }
.decision-references[open] .form-grid { margin-top:1rem; }

.allocation-target { display:grid; grid-template-columns:minmax(0,2fr) minmax(0,1fr); gap:12px 20px; padding:18px 0; border-bottom:1px solid var(--line); }
.allocation-target[hidden], [data-add-target][hidden] { display:none; }
.allocation-target .target-remove { display:flex; align-items:center; gap:8px; grid-column:1 / -1; font-size: var(--font-small); color:var(--muted); }
.allocation-target .target-remove input { margin:0; }
.allocation-target input[readonly] { background:var(--soft); color:var(--muted); }
.target-total, .amount-total { position:sticky; top:12px; z-index:1; margin:12px 0; padding:10px 12px; border:1px solid var(--line); border-radius:6px; background:var(--paper); font-size: var(--font-small); color:var(--ink); }
.allocation-rows .facts { margin-bottom:0; }
.allocation-overview { list-style:none; margin:16px 0 0; padding:0; }
.allocation-overview li { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.5fr) minmax(0,1fr); align-items:center; gap:12px 24px; padding:18px 0; border-top:1px solid var(--line); }
.allocation-overview strong { font-weight:500; overflow-wrap:anywhere; }
.allocation-category span, .allocation-difference span { display:block; color:var(--muted); font-size: var(--font-small); margin-top:4px; overflow-wrap:anywhere; }
.allocation-proportion p { font-size: var(--font-small); margin:0 0 8px; }
.allocation-track { position:relative; height:10px; background:var(--soft); border-radius:3px; overflow:hidden; }
.allocation-fill { display:block; height:100%; background:var(--green); }
.allocation-marker { position:absolute; top:0; height:100%; width:2px; background:#b97a29; transform:translateX(-1px); }
.allocation-difference { text-align:right; font-size: var(--font-small); }
.allocation-numbers[open] summary { margin-bottom:20px; }
.allocation-numbers article { padding:18px 0; border-top:1px solid var(--line); }
.allocation-comparison[open] summary { margin-bottom:16px; }
.allocation-example > summary { color:var(--ink); }
.allocation-example > summary .eyebrow { display:inline; }
.allocation-example > summary strong { display:block; margin:8px 0; font-size: var(--font-body); line-height:1.5; text-wrap:balance; }
.allocation-example > summary .help { display:block; }
.allocation-example-body { margin-top:20px; }
.allocation-followups > summary { font-size: var(--font-body); font-weight:600; }
.allocation-status { margin:12px 0; font-size: var(--font-small); }
.allocation-status strong { display:block; font-size: var(--font-small); font-weight:500; }
.allocation-status span { display:block; font-size: var(--font-small); color:var(--muted); margin-top:4px; }
.overview-secondary > summary { padding:20px; margin-bottom:24px; border:0; border-radius:12px; background:var(--surface); font-size: var(--font-body); }
.overview-secondary > summary span { color:var(--muted); font-size: var(--font-small); }
.allocation-change-list { list-style:none; padding:0; }
.allocation-change-list li { padding:18px 0; border-top:1px solid var(--line); }
.allocation-change-list .facts { grid-template-columns:repeat(3,minmax(0,1fr)); margin-bottom:0; }
.allocation-change-list[data-with-budget] .facts { grid-template-columns:repeat(4,minmax(0,1fr)); }
.allocation-change-list[data-with-budget] .facts > div:last-child { grid-column:auto; }
@media (max-width:760px) { .allocation-change-list[data-with-budget] .facts { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:760px) { .allocation-overview li { grid-template-columns:minmax(0,1fr) minmax(0,1fr); } .allocation-proportion { grid-column:1 / -1; grid-row:2; } }
@media (max-width:390px) { .allocation-target { grid-template-columns:minmax(0,1fr); } .allocation-change-list .facts { grid-template-columns:repeat(2,minmax(0,1fr)); } .allocation-change-list .facts > div:last-child { grid-column:1 / -1; } }
