:root{
  --paper:#efebe3; --paper-2:#e3ded2; --card:#f7f5f0;
  --ink:#22221f; --muted:#6c685f; --faint:#a39e92;
  --line:rgba(34,34,31,.16); --line-strong:#22221f;
  --accent:#1f3d2f; --accent-ink:#f4f1ea; --accent-soft:rgba(31,61,47,.10);
  --serif:"Noto Serif TC","Songti TC",serif; --sans:"Noto Sans TC","PingFang TC",system-ui,sans-serif;
  --gutter:clamp(16px,4vw,56px);
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){color-scheme:dark;
  --paper:#171714;--paper-2:#2a2924;--card:#1f1e1a;--ink:#ece8df;--muted:#a8a397;--faint:#6f6b62;
  --line:rgba(236,232,223,.15);--line-strong:#cfcabe;--accent:#2f5a45;--accent-soft:rgba(95,150,120,.18)}}
:root[data-theme="dark"]{color-scheme:dark;
  --paper:#171714;--paper-2:#2a2924;--card:#1f1e1a;--ink:#ece8df;--muted:#a8a397;--faint:#6f6b62;
  --line:rgba(236,232,223,.15);--line-strong:#cfcabe;--accent:#2f5a45;--accent-soft:rgba(95,150,120,.18)}

[hidden]{display:none!important}
*{box-sizing:border-box;margin:0;padding:0}
body{background:var(--paper);color:var(--ink);font:400 16px/1.7 var(--sans);-webkit-font-smoothing:antialiased;overflow-x:hidden}
img{display:block;width:100%;height:100%;object-fit:cover;max-width:100%}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;cursor:pointer;background:none;border:0}
.wrap{padding-inline:var(--gutter);max-width:1320px;margin:0 auto}
.label{font:500 12px/1 var(--sans);letter-spacing:.18em;color:var(--muted)}
.serif{font-family:var(--serif)}
.num{font-variant-numeric:tabular-nums}
.sample{display:none;font:500 10px/1 var(--sans);letter-spacing:.06em;padding:3px 5px;border:1px dashed currentColor;border-radius:3px;opacity:.6;vertical-align:middle;margin-left:6px}
h1,h2,h3{text-wrap:balance}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

/* 頂列 */
.top{position:sticky;top:env(safe-area-inset-top,0px);z-index:10;background:var(--paper);border-bottom:1px solid var(--line)}
.top .wrap{display:flex;align-items:center;gap:24px;height:68px}
.brand{display:flex;align-items:center;gap:10px}
.brand-logo{width:48px;height:48px;flex:none;object-fit:contain;mix-blend-mode:multiply}
.brand>span{display:grid;justify-items:center;gap:1px;white-space:nowrap}
.brand b{display:block;font:500 16px/1.15 var(--serif);letter-spacing:.1em;padding-left:.1em}
.top .brand>span{transform:translateY(3px)}
.brand small{display:block;font:500 10px/1.15 var(--sans);letter-spacing:.2em;padding-left:.2em;color:var(--muted)}
.tabs{display:flex;gap:4px;margin-left:auto;background:var(--paper-2);border-radius:999px;padding:4px}
.tabs a{height:36px;padding:0 18px;border-radius:999px;display:flex;align-items:center;font-size:14px;letter-spacing:.06em;color:var(--muted);white-space:nowrap}
.tabs a.on{background:var(--card);color:var(--ink);box-shadow:0 1px 2px rgba(0,0,0,.08)}
@media (max-width:640px){
  .top .wrap{height:auto;flex-wrap:wrap;padding-block:12px;gap:10px}
  .tabs{margin-left:0;width:100%}.tabs a{flex:1;justify-content:center;padding:0 8px}
}

.page{display:none}
.page.on{display:block}

.pill{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:46px;padding:0 24px;border-radius:999px;font:500 14px/1 var(--sans);letter-spacing:.08em;transition:transform .2s}
.pill.dark{background:var(--accent);color:var(--accent-ink)}
.pill.line{border:1px solid var(--line-strong)}
.pill:hover{transform:translateY(-1px)}
.bar{height:8px;background:var(--paper-2);border-radius:999px;overflow:hidden}
.bar i{display:block;height:100%;background:var(--accent);border-radius:999px}

/* ── 首頁 ── */
.hero{display:grid;grid-template-columns:1fr 1fr;gap:0;min-height:520px;border-bottom:1px solid var(--line)}
.hero .txt{display:flex;flex-direction:column;justify-content:center;gap:22px;padding-block:56px;padding-right:40px}
.status{display:inline-flex;align-items:center;gap:8px;align-self:flex-start;height:30px;padding:0 14px;border-radius:999px;background:var(--accent-soft);color:var(--accent);font:500 13px/1 var(--sans);letter-spacing:.1em}
.status i{width:7px;height:7px;border-radius:50%;background:var(--accent);animation:pulse 2s infinite}
@keyframes pulse{50%{opacity:.3}}
.hero h1{font:700 clamp(44px,6vw,88px)/1.1 var(--serif);letter-spacing:.04em}
.hero .sub{font:500 clamp(16px,1.5vw,19px)/1.6 var(--serif);color:var(--muted);letter-spacing:.1em}
.dates{display:flex;gap:0;border-top:1px solid var(--line);margin-top:8px}
.dates div{flex:1;padding:16px 0 0}
.dates div+div{padding-left:20px;border-left:1px solid var(--line);margin-left:20px}
.dates b{display:block;font:500 clamp(20px,2vw,26px)/1.2 var(--serif);letter-spacing:.02em;margin-top:8px}
.hero figure{position:relative;overflow:hidden;min-height:420px;margin-right:calc(var(--gutter)*-1)}
.hero figure img{position:absolute;inset:0;object-position:center 62%}
.wrap.hero-w{max-width:none;padding-right:var(--gutter);padding-left:max(var(--gutter),calc((100vw - 1320px)/2 + var(--gutter)))}
@media (max-width:860px){
  .hero{grid-template-columns:1fr}.hero .txt{padding:36px 0 32px}
  .hero figure{min-height:0;aspect-ratio:4/3;margin-inline:calc(var(--gutter)*-1)}
}

.ways{display:grid;grid-template-columns:1fr 1fr;gap:20px;padding-block:40px 20px}
.way{background:var(--card);border:1px solid var(--line);border-radius:20px;padding:clamp(22px,3vw,36px);display:grid;grid-template-rows:auto auto 1fr auto;gap:18px;cursor:pointer;transition:border-color .2s,transform .2s}
.way:hover{border-color:var(--line-strong);transform:translateY(-2px)}
.way .hd{display:flex;justify-content:space-between;align-items:baseline;gap:12px}
.way h3{font:700 clamp(26px,2.6vw,34px)/1.2 var(--serif);letter-spacing:.06em}
.way .goal{font:500 clamp(30px,3.4vw,44px)/1 var(--serif);color:var(--accent)}
.way .goal small{font-size:.42em;margin-left:4px;color:var(--muted);font-family:var(--sans)}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chips span{font-size:13px;padding:5px 12px;border-radius:999px;border:1px solid var(--line);color:var(--muted)}
.icons{display:grid;grid-template-columns:repeat(6,1fr);gap:8px;align-self:center}
.icons div{aspect-ratio:1;border-radius:6px;background:var(--paper);display:grid;place-items:center;color:var(--muted)}
.icons svg{width:46%;height:46%}
.mini-bricks{display:grid;grid-template-columns:repeat(10,1fr);gap:5px;align-self:center}
.mini-bricks i{aspect-ratio:2/1;border-radius:2px;border:1px solid var(--line)}
.mini-bricks i.t{background:var(--paper-2);border-color:transparent}

.way .foot{display:flex;align-items:center;justify-content:space-between;gap:16px;border-top:1px solid var(--line);padding-top:18px}
.way .foot .pbar{flex:1;max-width:220px}
.way .foot .pbar span{font-size:12px;color:var(--muted);display:block;margin-bottom:6px}
.extra{display:flex;align-items:center;gap:10px;font-size:14px;color:var(--muted);padding-bottom:56px}
.extra svg{flex:none;color:var(--accent)}
@media (max-width:860px){.ways{grid-template-columns:1fr}}

/* ── 募款進度 ── */
.pg-head{padding-block:48px 32px;display:grid;grid-template-columns:1.3fr 1fr;gap:40px;align-items:end;border-bottom:1px solid var(--line)}
.big{font:700 clamp(56px,8vw,112px)/1 var(--serif);letter-spacing:.01em}
.big small{font:500 .28em/1 var(--sans);color:var(--muted);margin-left:8px;letter-spacing:.04em}
.pg-head .bar{height:12px;margin-top:22px}
.kpis{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line-strong)}
.kpis div{padding:16px 0}
.kpis div+div{padding-left:16px;border-left:1px solid var(--line)}
.kpis b{display:block;font:500 clamp(22px,2.4vw,30px)/1.2 var(--serif);margin-top:8px}
@media (max-width:860px){.pg-head{grid-template-columns:1fr;gap:28px}}

.boards{display:grid;grid-template-columns:1.25fr 1fr;gap:20px;padding-block:32px 56px}
.board{background:var(--card);border:1px solid var(--line);border-radius:20px;padding:clamp(20px,2.6vw,32px)}
.board .bh{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px;gap:12px}
.board h3{font:700 22px/1.3 var(--serif);letter-spacing:.06em}
.plist{list-style:none}
.plist li{display:grid;grid-template-columns:1fr 110px 64px;gap:14px;align-items:center;padding:11px 0;border-top:1px solid var(--line);font-size:15px}
.plist .bar{height:6px}
.plist .st{font-size:13px;color:var(--muted);text-align:right}
.plist li.full .st{color:var(--accent);font-weight:500}
.plist li.tbd{color:var(--faint)}
.bricks{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}
.brick{aspect-ratio:2/1;border:1px solid var(--line);border-radius:3px;display:grid;place-items:center;font:500 11px/1 var(--sans);color:var(--faint)}
.brick.t{background:var(--paper-2);border-color:transparent}
.brick.m{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.legend{display:flex;gap:16px;font-size:12px;color:var(--muted);margin-top:16px;flex-wrap:wrap}
.legend i{display:inline-block;width:14px;height:8px;border-radius:2px;margin-right:6px;vertical-align:middle;border:1px solid var(--line)}
.legend .t{background:var(--paper-2);border-color:transparent}.legend .m{background:var(--accent);border-color:var(--accent)}
.bank{margin-top:24px;border-top:1px solid var(--line-strong)}
.bank div{display:grid;grid-template-columns:52px 1fr;gap:10px;padding:10px 0;border-bottom:1px solid var(--line);font-size:14px;align-items:center}
.bank dt{color:var(--muted)}
.bank .acct{font:500 20px/1.3 var(--serif);letter-spacing:.04em;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.copy{font:500 12px/1 var(--sans);border:1px solid var(--line-strong);border-radius:999px;padding:6px 12px;letter-spacing:.06em}
@media (max-width:860px){.boards{grid-template-columns:1fr}.plist li{grid-template-columns:1fr 70px 56px}}

/* ── 紀錄 ── */
.rec-head{display:flex;justify-content:space-between;align-items:end;gap:20px;padding-block:48px 28px;flex-wrap:wrap}
.rec-head h2{font:700 clamp(32px,4.4vw,54px)/1.15 var(--serif);letter-spacing:.04em}
.seg{display:flex;background:var(--paper-2);border-radius:999px;padding:4px}
.seg button{height:36px;padding:0 18px;border-radius:999px;font-size:14px;color:var(--muted)}
.seg button.on{background:var(--card);color:var(--ink);box-shadow:0 1px 2px rgba(0,0,0,.08)}
.track{position:relative;display:grid;grid-template-columns:repeat(4,1fr);gap:20px;padding-bottom:64px}
.ev figure{aspect-ratio:4/5;overflow:hidden;background:var(--paper-2);position:relative}
.ev .d{position:absolute;left:0;top:0;background:var(--paper);font:500 13px/1 var(--serif);letter-spacing:.08em;padding:9px 12px}
.ev h4{font:500 17px/1.4 var(--serif);letter-spacing:.04em;margin-top:12px}
.ev.now figure{outline:2px solid var(--accent);outline-offset:4px}
.ev.now .d{background:var(--accent);color:var(--accent-ink)}
@media (max-width:1000px){.track{grid-template-columns:repeat(2,1fr)}}
.empty{border:1px dashed var(--line-strong);padding:64px 24px;text-align:center;margin-bottom:64px;color:var(--muted);display:grid;gap:14px;justify-items:center}
.empty b{font:700 24px/1.3 var(--serif);color:var(--ink);letter-spacing:.06em}
.quote{position:relative;color:#fff;padding-block:clamp(72px,10vw,128px);overflow:hidden;background:#111;text-align:center}
.quote img{position:absolute;inset:0;opacity:.45}
.quote blockquote{position:relative;font:500 clamp(22px,3vw,36px)/1.7 var(--serif);letter-spacing:.08em;padding-inline:var(--gutter)}
.quote span{display:inline-block}

/* 頁尾 */
footer{background:#e5ede6;color:#1f3d2f;padding-block:36px calc(96px + env(safe-area-inset-bottom,0px))}
footer .wrap{display:flex;justify-content:space-between;gap:20px 40px;flex-wrap:wrap;align-items:center;font-size:14px}
footer .brand small{color:inherit;opacity:.7}
footer .meta{display:flex;gap:28px;flex-wrap:wrap;opacity:.9}

/* 底部總計 */
.tray{position:fixed;left:50%;bottom:calc(16px + env(safe-area-inset-bottom,0px));transform:translate(-50%,160%);z-index:20;width:min(680px,calc(100% - 24px));background:var(--ink);color:var(--paper);border-radius:999px;display:flex;align-items:center;gap:16px;padding:8px 8px 8px 24px;transition:transform .35s cubic-bezier(.2,.8,.2,1);box-shadow:0 10px 30px rgba(0,0,0,.2)}
.tray.show{transform:translate(-50%,0)}
.tray b{flex:1;font:500 15px/1.3 var(--sans);font-variant-numeric:tabular-nums;min-width:0}
.tray .pill{background:var(--paper);color:var(--ink);height:42px}

/* 抽屜 */
.scrim{position:fixed;inset:0;background:rgba(20,20,18,.45);opacity:0;pointer-events:none;transition:.3s;z-index:30}
.drawer{position:fixed;top:0;right:0;height:100%;width:min(500px,100%);background:var(--paper);z-index:31;transform:translateX(100%);transition:transform .4s cubic-bezier(.2,.8,.2,1);display:flex;flex-direction:column}
.open .scrim{opacity:1;pointer-events:auto}.open .drawer{transform:none}
.drawer header{display:flex;justify-content:space-between;align-items:center;padding:calc(20px + env(safe-area-inset-top,0px)) 24px 16px;border-bottom:1px solid var(--line)}
.drawer h3{font:700 24px/1.3 var(--serif);letter-spacing:.06em}
.drawer .body{flex:1;overflow-y:auto;padding:8px 24px 24px}
.drawer .ft{padding:16px 24px calc(16px + env(safe-area-inset-bottom,0px));border-top:1px solid var(--line);display:flex;gap:12px;align-items:center}
.drawer .ft .pill{flex:1}
.x{width:40px;height:40px;border:1px solid var(--line);border-radius:999px;font-size:18px}
.it{display:grid;grid-template-columns:1fr auto;gap:4px 12px;padding:14px 0;border-bottom:1px solid var(--line);align-items:center}
.it .n{font:500 16px/1.4 var(--serif);letter-spacing:.03em}
.it .m{font-size:12px;color:var(--muted)}
.it .p{font:500 15px/1 var(--sans);font-variant-numeric:tabular-nums;text-align:right}
.it.off{color:var(--faint)}.it.off .n{color:var(--faint)}
.it.pick{background:var(--accent-soft);margin-inline:-12px;padding-inline:12px;border-radius:4px}
.step{display:flex;align-items:center;gap:0;justify-content:flex-end}
.step button{width:34px;height:34px;border:1px solid var(--line-strong);border-radius:999px;font-size:17px;line-height:1;display:grid;place-items:center}
.step button:disabled{opacity:.25;cursor:default}
.step output{min-width:34px;text-align:center;font:500 15px/1 var(--sans)}
.step .add{width:auto;padding:0 16px;font-size:13px}
.free{display:flex;gap:10px;align-items:center;padding:16px 0}
.free label{font:500 15px var(--serif);flex:none}
input.amt,.field input{height:44px;border:1px solid var(--line-strong);border-radius:4px;background:transparent;padding:0 14px;font:500 16px var(--sans);width:100%;color:var(--ink)}
input.amt{text-align:right}
.loanbox{padding:20px 0;display:grid;gap:22px}
.remain{display:grid;gap:10px}
.remain .row{display:flex;justify-content:space-between;align-items:baseline;font-size:14px;color:var(--muted)}
.remain .row b{font:700 22px/1 var(--serif);color:var(--ink)}
.q{font:700 20px/1.3 var(--serif);letter-spacing:.06em}
.big-step{display:flex;align-items:center;justify-content:space-between;gap:12px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:20px}
.big-step button{width:64px;height:64px;border-radius:999px;border:1.5px solid var(--line-strong);font-size:28px;line-height:1;display:grid;place-items:center;flex:none}
.big-step button.plus{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.big-step button:disabled{opacity:.25;cursor:default}
.big-step .v{text-align:center;display:grid;gap:6px}
.big-step .v b{font:700 clamp(40px,9vw,52px)/1 var(--serif)}
.big-step .v span{font-size:13px;color:var(--muted)}

.facts{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:20px}
.facts div{background:var(--card);border:1px solid var(--line);padding:12px;text-align:center;font-size:12px;color:var(--muted)}
.facts b{display:block;font:500 16px/1.3 var(--sans);color:var(--ink);margin-bottom:2px}
.lines div{display:flex;justify-content:space-between;gap:12px;padding:11px 0;border-bottom:1px solid var(--line);font-size:15px}
.lines .tot{font-weight:500}
.field{display:grid;gap:6px;margin-top:14px}
.field label{font-size:13px;color:var(--muted)}
.check{display:flex;gap:10px;font-size:14px;color:var(--muted);margin-top:14px;align-items:center}
.ok{margin-top:16px;padding:14px 16px;background:var(--accent-soft);border-left:3px solid var(--accent);font-size:14px}


@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

.show-sample .sample{display:inline-block}
.thanks{display:grid;gap:14px;padding:12px 0}
.thanks h4{font:700 22px/1.3 var(--serif);letter-spacing:.06em}
.thanks pre{white-space:pre-wrap;font:400 14px/1.8 var(--sans);background:var(--card);border:1px solid var(--line);padding:14px 16px;border-radius:6px}
.field input.err{border-color:#b3261e}
.hint{font-size:12px;color:#b3261e}
.kpis b.v,b.v{display:inline;font:inherit;color:inherit;letter-spacing:inherit;margin:0}
