:root {
  --ink:#172620;
  --forest:#183b31;
  --jade:#316654;
  --moss:#63856d;
  --paper:#f7f9f6;
  --paper-cool:#edf2ef;
  --deep:#e8dfc9;
  --gold:#b99456;
  --gold-soft:#e7d6b2;
  --line:rgba(24,59,49,.16);
  --serif:"Songti SC","STSong","Noto Serif CJK SC",serif;
  --sans:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;
}

* { box-sizing:border-box; }
html { scroll-behavior:smooth; }
body { margin:0; background:var(--paper); color:var(--ink); font-family:var(--sans); line-height:1.75; }
body:has(dialog[open]) { overflow:hidden; }
a { color:inherit; }
button { font:inherit; }

.site-header { display:flex; align-items:center; justify-content:space-between; height:72px; max-width:1180px; margin:auto; padding:0 32px; }
.brand { display:flex; align-items:center; gap:10px; color:var(--forest); font-family:var(--serif); font-size:20px; font-weight:700; text-decoration:none; }
.brand span { display:grid; place-items:center; width:34px; height:34px; border-radius:50%; background:var(--forest); color:#f5ead1; }
.site-header nav { display:flex; gap:26px; }
.site-header nav a { color:#486056; font-size:13px; text-decoration:none; }
.site-header nav a:hover { color:var(--gold); }
.menu-button { display:none; border:0; background:transparent; cursor:pointer; }
.menu-button span { display:block; width:22px; height:1px; margin:5px; background:var(--forest); }

.support-hero { padding:38px 24px 44px; background:linear-gradient(rgba(10,29,22,.76),rgba(10,29,22,.8)),url("../assets/hero-mountains.png") center 54%/cover; text-align:center; color:#fff9ed; }
.support-mark { display:grid; place-items:center; width:44px; height:44px; margin:0 auto 16px; border:1px solid #d2b477; color:#edd8aa; font-family:var(--serif); font-size:22px; }
.eyebrow { margin:0 0 10px; color:var(--jade); font-size:12px; font-weight:700; letter-spacing:0; }
.support-hero .eyebrow { color:#e8d4a5; }
.support-hero h1 { margin:0; color:#fff9ed; font-family:var(--serif); font-size:48px; letter-spacing:0; }
.support-hero>p:last-of-type { max-width:600px; margin:14px auto 0; color:#e5eee7; line-height:1.85; }
.hero-actions { display:flex; flex-wrap:wrap; justify-content:center; gap:12px; margin-top:24px; }
.hero-action { display:inline-flex; align-items:center; justify-content:center; gap:18px; min-height:46px; padding:10px 20px; border:1px solid #b9c7bb; border-radius:4px; color:#fff9ed; font-size:14px; text-decoration:none; }
.hero-action-primary { background:#e8d4a5; color:#142c21; border-color:#e8d4a5; font-weight:700; }
.hero-action:hover { border-color:#fff4d6; }
.support-trust { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); max-width:1040px; margin:auto; padding:0 32px; border-bottom:1px solid var(--line); }
.support-trust div { padding:22px 12px; text-align:center; }
.support-trust strong,.support-trust span { display:block; }
.support-trust strong { color:var(--forest); font-size:15px; }
.support-trust span { margin-top:4px; color:#52665b; font-size:12px; }

.support-article { max-width:1120px; margin:auto; padding:42px 32px 80px; }
.support-article>blockquote { max-width:836px; margin:0 auto 82px; padding:28px 32px; border-left:3px solid var(--gold); background:#ece5d7; }
.support-article blockquote p { margin:0; font-family:var(--serif); font-size:20px; }
.support-article blockquote cite { display:block; margin-top:8px; color:#718078; font-size:11px; font-style:normal; }
.support-article>section { margin-bottom:72px; scroll-margin-top:24px; }
.support-article h2 { margin:0 0 18px; color:var(--forest); font-family:var(--serif); font-size:33px; line-height:1.35; letter-spacing:0; }
.support-article section>p:not(.eyebrow) { color:#53665c; }

.purpose-section { max-width:836px; margin-left:auto; margin-right:auto; }
.purpose-list { margin:34px 0 0; padding:0; list-style:none; border-top:1px solid var(--forest); }
.purpose-list li { display:grid; grid-template-columns:160px 1fr; gap:24px; padding:18px 0; border-bottom:1px solid var(--line); }
.purpose-list strong { color:var(--forest); font-family:var(--serif); }
.purpose-list span { color:#607168; font-size:14px; }

.section-heading { display:grid; grid-template-columns:minmax(260px,.8fr) 1.2fr; gap:46px; align-items:end; margin-bottom:30px; }
.section-heading h2 { margin-bottom:0; }
.section-heading>p { margin:0; color:#5a6c62; font-size:14px; }
.support-options { padding-top:6px; }
.amount-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:12px; }
.amount-grid button { min-width:0; min-height:214px; padding:24px 18px 18px; border:1px solid var(--line); border-top:3px solid var(--gold); border-radius:6px; background:#fff; color:var(--forest); text-align:left; cursor:pointer; transition:transform .18s ease,border-color .18s ease,background .18s ease; }
.amount-grid button:hover,.amount-grid button:focus-visible { transform:translateY(-3px); border-color:var(--gold); background:#fffdf7; outline:none; }
.amount-grid .amount,.amount-grid strong,.amount-grid small { display:block; }
.amount-grid .amount { color:var(--ink); font-family:var(--serif); font-size:37px; line-height:1.2; }
.amount-grid strong { margin-top:26px; color:#9a6519; font-family:var(--serif); font-size:18px; }
.amount-grid small { margin-top:8px; color:#52665a; font-size:12px; line-height:1.6; }
.amount-action { display:flex; align-items:center; justify-content:space-between; gap:6px; margin-top:22px; padding-top:12px; border-top:1px solid var(--line); color:var(--jade); font-size:13px; font-weight:700; }
.amount-action b { font-size:18px; }
.custom-support { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:16px 0; }
.custom-support p { margin:0; color:#52665a; font-size:14px; }
.custom-support button { display:inline-flex; align-items:center; gap:20px; flex-shrink:0; min-height:44px; padding:8px 16px; border:1px solid var(--jade); border-radius:4px; background:white; color:var(--forest); cursor:pointer; font-size:14px; }
.support-repeat { display:flex; align-items:center; justify-content:space-between; gap:24px; padding:26px 0; }
.support-repeat strong,.support-repeat span { display:block; }
.support-repeat strong { font-size:16px; color:var(--forest); }
.support-repeat span { margin-top:4px; font-size:13px; color:#52665a; }
.support-repeat a { display:inline-flex; align-items:center; gap:20px; flex-shrink:0; min-height:46px; padding:8px 16px; border-radius:4px; background:var(--forest); color:white; font-size:14px; text-decoration:none; }
a:focus-visible,button:focus-visible,summary:focus-visible { outline:3px solid #658fa3; outline-offset:4px; }
.payment-notice { display:grid; grid-template-columns:180px 1fr; gap:24px; margin-top:18px; padding:20px 22px; background:var(--forest); color:#edf1e8; }
.payment-notice strong { color:#ead8ad; }
.payment-notice p { margin:0; color:#c5d1c7; font-size:12px; }

.principle-section { max-width:900px; margin-left:auto; margin-right:auto; }
.principles { display:grid; grid-template-columns:repeat(3,1fr); border-top:1px solid var(--forest); border-bottom:1px solid var(--line); }
.principles article { min-height:245px; padding:25px 22px; border-right:1px solid var(--line); }
.principles article:last-child { border:0; }
.principles span { color:var(--gold); font-size:11px; }
.principles h3 { margin:38px 0 10px; color:var(--forest); font-family:var(--serif); font-size:21px; }
.principles p { color:#63746b; font-size:13px; }

.merit-section { padding:68px 54px; background:var(--paper-cool); }
.merit-heading { margin-bottom:24px; }
.wall-summary { display:flex; align-items:baseline; gap:9px; padding:13px 0; border-top:1px solid var(--forest); border-bottom:1px solid var(--line); color:#65766d; font-size:12px; }
.wall-summary strong { color:var(--forest); font-family:var(--serif); font-size:26px; }
.wall-summary i { width:1px; height:16px; margin:0 8px; background:var(--line); }
.merit-list { display:grid; grid-template-columns:repeat(3,1fr); gap:12px; margin-top:24px; }
.merit-card { min-height:170px; padding:22px; border:1px solid var(--line); border-radius:4px; background:#f9f6ed; }
.merit-card header { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:16px; overflow-wrap:anywhere; }
.merit-card strong { color:var(--forest); font-family:var(--serif); font-size:18px; }
.merit-card b { color:#9a6519; font-weight:600; }
.merit-card time { display:block; margin-top:6px; color:#77877e; font-size:11px; }
.merit-card p { margin:28px 0 0; color:#52655b; font-family:var(--serif); font-size:15px; }
.wall-empty { grid-column:1/-1; padding:58px 20px; border-top:1px solid var(--line); border-bottom:1px solid var(--line); text-align:center; }
.wall-empty>span { display:grid; place-items:center; width:42px; height:42px; margin:auto; border:1px solid var(--gold); border-radius:50%; color:#987638; font-family:var(--serif); }
.wall-empty h3 { margin:18px 0 6px; color:var(--forest); font-family:var(--serif); font-size:20px; }
.wall-empty p { margin:0; color:#708078; font-size:12px; }
.wall-guide { margin-top:42px; padding-top:26px; border-top:1px solid var(--forest); }
.wall-guide h3 { margin:0; color:var(--forest); font-family:var(--serif); font-size:21px; }
.wall-guide ol { display:grid; grid-template-columns:repeat(3,1fr); gap:26px; margin:24px 0 0; padding:0; list-style:none; }
.wall-guide li { display:grid; grid-template-columns:30px 1fr; gap:10px; }
.wall-guide li span { color:var(--gold); font-family:var(--serif); font-size:20px; }
.wall-guide li p { margin:0; color:#65776d; font-size:12px; }

.support-faq { max-width:836px; margin-left:auto; margin-right:auto; }
.support-faq details { border-bottom:1px solid var(--line); }
.support-faq summary { padding:19px 0; color:var(--forest); font-family:var(--serif); font-size:18px; cursor:pointer; }
.support-faq details p { margin:0; padding:0 0 18px; color:#63746b; font-size:13px; }
.bottom-links { display:grid; grid-template-columns:1fr 1fr; border-top:1px solid var(--forest); }
.bottom-links a { display:flex; justify-content:space-between; padding:22px; border-bottom:1px solid var(--line); text-decoration:none; }
.bottom-links a:first-child { border-right:1px solid var(--line); }

.payment-dialog { width:min(940px,calc(100vw - 32px)); max-height:calc(100vh - 32px); padding:0; border:1px solid rgba(210,180,119,.5); border-radius:6px; background:#f8f4ea; color:var(--ink); box-shadow:0 26px 90px rgba(5,18,14,.42); overflow:auto; }
.payment-dialog[open] { display:grid; grid-template-columns:minmax(290px,.8fr) minmax(360px,1fr); }
.payment-dialog::backdrop { background:rgba(7,20,16,.78); backdrop-filter:blur(4px); }
.dialog-close { position:sticky; top:10px; grid-column:1/-1; justify-self:end; z-index:2; display:block; width:44px; height:44px; margin:10px 10px -54px auto; border:1px solid #718b78; border-radius:50%; background:#183b31; color:white; font-size:27px; line-height:1; cursor:pointer; }
.payment-copy { align-self:center; padding:54px 46px; }
.payment-copy h2 { margin:0; color:var(--forest); font-family:var(--serif); font-size:35px; line-height:1.3; }
.payment-copy>p:not(.eyebrow) { color:#53665c; font-size:14px; }
.payment-copy ul { margin:24px 0; padding-left:18px; color:#61736a; font-size:12px; }
.save-qr { display:inline-flex; padding:10px 16px; border:1px solid var(--gold); color:#765d2e; font-size:12px; text-decoration:none; }
.qr-panel { min-height:0; padding:24px; background:#e7f0ea; }
.payee-label { margin:0 40px 14px 0; color:#254e38; font-size:12px; }
.qr-panel img { display:block; width:100%; height:auto; max-height:calc(100dvh - 134px); object-fit:contain; }

footer { padding:42px max(28px,calc((100vw - 976px)/2)); background:var(--forest); color:#cbd5cc; font-size:11px; }
footer div { display:flex; align-items:center; gap:9px; color:#f3e5c5; font-family:var(--serif); font-size:17px; }
footer div span { display:grid; place-items:center; width:28px; height:28px; border:1px solid #d3b977; }
footer p { margin:8px 0 0; }

@media (max-width:800px) {
  .site-header { height:62px; padding:0 18px; position:relative; }
  .site-header nav { display:none; position:absolute; z-index:5; top:62px; left:0; right:0; padding:18px; background:var(--paper); border-bottom:1px solid var(--line); }
  .site-header.menu-open nav { display:grid; }
  .menu-button { display:block; }
  .support-hero { padding:28px 20px 34px; }
  .support-hero h1 { font-size:36px; }
  .support-hero>p:last-of-type { font-size:15px; }
  .support-trust { grid-template-columns:repeat(2,minmax(0,1fr)); padding:0 16px; }
  .support-trust div { padding:14px 8px; }
  .support-article { padding:30px 20px 56px; }
  .support-article h2 { font-size:28px; }
  .section-heading { grid-template-columns:1fr; gap:10px; }
  .amount-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .amount-grid button { min-height:208px; padding:20px 14px 16px; }
  .amount-grid .amount { font-size:32px; }
  .payment-notice { grid-template-columns:1fr; gap:5px; }
  .purpose-list li { grid-template-columns:1fr; gap:5px; }
  .principles { grid-template-columns:1fr; }
  .principles article { min-height:190px; border-right:0; border-bottom:1px solid var(--line); }
  .principles h3 { margin-top:24px; }
  .merit-section { margin-left:-22px; margin-right:-22px; padding:54px 22px; }
  .merit-list { grid-template-columns:1fr; }
  .wall-guide ol { grid-template-columns:1fr; }
  .bottom-links { grid-template-columns:1fr; }
  .bottom-links a:first-child { border-right:0; }
  .custom-support { flex-wrap:wrap; gap:10px; }
  .support-repeat { flex-direction:column; align-items:flex-start; }
  .payment-dialog[open] { display:block; }
  .payment-copy { padding:54px 22px 16px; }
  .payment-copy h2 { font-size:30px; }
  .payment-copy ul { display:none; }
  .qr-panel { min-height:0; padding:16px 22px 24px; }
  .qr-panel img { height:auto; max-height:460px; }
  .support-article>blockquote { margin-bottom:48px; padding:22px; }
  .merit-section { margin-left:-20px; margin-right:-20px; }
}

@media (max-width:360px) {
  .amount-grid { gap:8px; }
  .amount-grid button { padding-left:12px; padding-right:12px; }
  .amount-grid strong { font-size:17px; }
  .wall-summary { flex-wrap:wrap; }
}

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