:root{--green:#123d31;--green2:#1e5b49;--sage:#9eaf91;--gold:#b99650;--cream:#f7f5ea;--ink:#1d2b26;--muted:#718078;--line:#e4e9e3;--paper:#fff;--yellow:#fff7d8;--shadow:0 16px 48px rgba(24,57,44,.08)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:#f4f6f1;color:var(--ink);font-family:Inter,"PingFang SC","Microsoft YaHei",Arial,sans-serif;font-size:14px;line-height:1.6}.ambient{position:fixed;inset:0;pointer-events:none;overflow:hidden;z-index:-1}.ambient i{position:absolute;border-radius:50%;filter:blur(60px);opacity:.12}.ambient i:nth-child(1){width:340px;height:340px;background:#a5b99a;top:10%;left:-120px}.ambient i:nth-child(2){width:420px;height:420px;background:#d8c49b;right:-150px;top:35%}.ambient i:nth-child(3){width:300px;height:300px;background:#7fa995;left:45%;bottom:-200px}.topbar{height:76px;padding:0 max(28px,calc((100vw - 1240px)/2));display:flex;align-items:center;justify-content:space-between;background:rgba(255,255,255,.92);border-bottom:1px solid var(--line);backdrop-filter:blur(14px)}.brand{display:flex;align-items:center;gap:13px}.seal{width:42px;height:42px;border-radius:50%;background:var(--green);color:#e8d5a6;display:grid;place-items:center;font-family:Georgia,serif;font-weight:bold;letter-spacing:-1px;border:2px solid #d8c28c;outline:1px solid var(--green)}.brand-cn{font-weight:750;letter-spacing:.04em;color:var(--green)}.brand-en{font:9px/1.4 Georgia,serif;letter-spacing:.18em;color:#8a9b8f}.top-right{display:flex;align-items:center;gap:22px}.privacy{font-size:12px;color:#718078}.privacy b,.live-pill i{display:inline-block;width:7px;height:7px;background:#49a17a;border-radius:50%;margin-right:7px;box-shadow:0 0 0 4px #e6f4eb}.shell{max-width:1240px;margin:0 auto;padding:28px 28px 60px}.hero{min-height:340px;background:linear-gradient(118deg,#123d31 0%,#1d5746 60%,#244b3c 100%);border-radius:24px;padding:42px 56px;color:#fff;display:flex;justify-content:space-between;position:relative;overflow:hidden;box-shadow:0 22px 55px rgba(18,61,49,.2)}.hero:after{content:"";position:absolute;inset:0;background:radial-gradient(circle at 70% 35%,rgba(205,185,133,.18),transparent 34%),linear-gradient(90deg,transparent 60%,rgba(255,255,255,.025));pointer-events:none}.hero-copy{position:relative;z-index:2;max-width:600px}.eyebrow{font-size:10px;letter-spacing:.23em;color:#cbb77e;font-weight:700}.eyebrow.dark{color:#a0874f}.hero h1{font-family:"Songti SC",Georgia,serif;font-size:42px;line-height:1.22;letter-spacing:.04em;margin:16px 0 12px;font-weight:600}.hero h1 em{font-style:normal;color:#d9c48e}.hero p{max-width:550px;color:#d4e0d8;font-size:13px;line-height:1.9}.hero-tags{display:flex;gap:9px;margin-top:23px}.hero-tags span{border:1px solid rgba(225,215,180,.36);border-radius:30px;padding:5px 12px;font-size:11px;color:#e8e2cc}.hero-art{width:390px;position:relative;z-index:1}.hero-core{position:absolute;right:92px;top:65px;width:174px;height:174px;border-radius:50%;background:linear-gradient(145deg,#f5edcf,#c7b77e);color:#194638;display:flex;flex-direction:column;align-items:center;justify-content:center;box-shadow:0 0 0 13px rgba(230,218,178,.08),0 0 0 28px rgba(230,218,178,.05),0 20px 50px rgba(0,0,0,.18);text-align:center}.core-leaf{font-size:32px;line-height:1}.hero-core strong{font:600 21px/1.35 "Songti SC",serif;margin:5px 0}.hero-core small{font-size:7px;letter-spacing:.1em}.orbit{position:absolute;border:1px solid rgba(220,204,154,.28);border-radius:50%;transform:rotate(-28deg)}.orbit-a{width:330px;height:190px;right:12px;top:52px}.orbit-b{width:260px;height:310px;right:45px;top:-15px;transform:rotate(48deg)}.float-card{position:absolute;background:rgba(255,255,255,.95);color:var(--green);border-radius:10px;padding:9px 15px;box-shadow:0 10px 25px #0b2c2340;min-width:88px}.float-card small,.float-card span{display:block;font-size:9px;color:#809086}.float-card b{font:700 20px Georgia}.fc-one{top:22px;right:6px}.fc-two{bottom:30px;right:25px}.tabs{display:flex;gap:6px;margin:22px 0 18px;padding:6px;background:#e8ede7;border-radius:13px;overflow:auto}.tab{border:0;background:transparent;color:#64746b;padding:11px 19px;border-radius:9px;white-space:nowrap;font-weight:650;cursor:pointer}.tab.active{background:#fff;color:var(--green);box-shadow:0 3px 12px #18392c12}.panel{display:none}.panel.active{display:block;animation:fade .35s ease}@keyframes fade{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none}}.section-head{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:32px 0 18px}.section-head h2,.result-top h2{font:600 25px/1.35 "Songti SC","Noto Serif SC",Georgia,serif;margin:5px 0;color:var(--green)}.section-head p{font-size:12px;color:var(--muted);margin:4px 0}.btn{border:1px solid transparent;border-radius:9px;padding:9px 15px;font-size:12px;font-weight:650;cursor:pointer;transition:.2s}.btn:hover{transform:translateY(-1px);filter:brightness(.98)}.btn-primary{background:var(--green);color:#fff}.btn-outline{background:#fff;border-color:#d8e0d8;color:var(--green)}.btn-ghost{background:transparent;border-color:#dce4dc;color:#4b6358}.form-layout{display:grid;grid-template-columns:1fr 1fr;gap:15px}.form-card,.result-card{background:#fff;border:1px solid #e6ebe5;border-radius:15px;padding:20px;box-shadow:0 6px 25px rgba(24,57,44,.035)}.card-title{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:17px}.card-title>div:first-child{display:flex;align-items:center;gap:12px}.card-title h3,.result-card h3{font-size:15px;color:var(--green);margin:0;font-weight:750}.card-title small{display:block;font-size:10px;color:#96a39b;letter-spacing:.04em}.step{width:30px;height:30px;border-radius:9px;background:#edf3ec;color:#8e7948;display:grid;place-items:center;font:700 12px Georgia}.fields{display:grid;grid-template-columns:1fr 1fr;gap:12px 14px}.fields label{font-size:11px;color:#617168;display:flex;flex-direction:column;gap:5px}.fields input,.fields select{width:100%;height:37px;border:1px solid #e3e8df;background:var(--yellow);border-radius:7px;padding:0 10px;color:#25382f;font:12px inherit;outline:none;min-width:0}.fields input:focus,.fields select:focus{border-color:#9ab29d;box-shadow:0 0 0 3px #dce9dd}.hint{margin-top:13px;padding:10px 12px;background:#f5f7f2;border-left:2px solid #c4b17a;color:#7b887e;font-size:10px;line-height:1.7}.results-wrap{margin-top:34px}.result-top{display:flex;align-items:center;justify-content:space-between;margin:0 0 16px}.live-pill{font-size:11px;color:#448268;background:#eaf4ed;padding:7px 12px;border-radius:30px}.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:15px 0}.kpi{padding:16px 18px;background:#fff;border:1px solid #e7ece6;border-radius:13px;position:relative;overflow:hidden}.kpi:after{content:"";position:absolute;width:70px;height:70px;border-radius:50%;background:#f0f4ec;right:-24px;top:-26px}.kpi small{display:block;color:#849188;font-size:10px}.kpi strong{display:block;color:var(--green);font:650 23px Georgia,serif;margin:5px 0}.kpi span{font-size:10px;color:#9a8760}.result-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:14px 0}.chart-box{height:260px;position:relative}.download-mini{border:1px solid #dfe8df;background:#f8faf6;color:#526f5e;padding:6px 10px;border-radius:7px;font-size:10px;cursor:pointer;white-space:nowrap}.detail-card{margin-top:14px}.export-row{display:flex;gap:7px;flex-wrap:wrap}.table-scroll{overflow:auto;width:100%}table{width:100%;border-collapse:collapse;font-size:11px;min-width:640px}th{background:#f0f4ee;color:#496354;font-weight:700;text-align:left;white-space:nowrap}th,td{padding:10px 11px;border-bottom:1px solid #edf0eb;vertical-align:top}td{color:#56675e}td.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.alerts{display:flex;flex-direction:column;gap:6px}.alert{padding:9px 12px;border-radius:8px;background:#fff7e7;color:#8a6b2f;font-size:11px;border:1px solid #f2e4c3}.alert.good{background:#edf6ef;color:#47765a;border-color:#dcecdf}.callout{padding:14px 16px;border-radius:11px;font-size:12px;margin:16px 0}.callout.warn{background:#fff8e8;border:1px solid #f0e3c6;color:#765f34;line-height:1.8}.note-list{display:grid;gap:10px;margin-top:14px}.note{padding:12px;border-radius:9px;background:#f6f8f3;border-left:3px solid #b69c5f;color:#68776e;font-size:11px}.guide-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:13px}.guide-card{background:#fff;border:1px solid #e5ebe4;border-radius:13px;padding:19px;min-height:200px}.guide-no{font:italic 25px Georgia;color:#b99c60}.guide-card h3{margin:8px 0;color:var(--green);font-size:15px}.guide-card p,.method li{font-size:11px;color:#66766c;line-height:1.9}.guide-card small{font-size:9px;color:#9a9f98}.method{margin-top:14px}.method ul{padding-left:18px}.method li{margin:6px 0}.empty{text-align:center;color:#9aa49c;padding:28px}footer{margin-top:45px;padding:22px 4px;border-top:1px solid #dfe6de;display:flex;gap:15px;align-items:center;flex-wrap:wrap;color:#607268;font-size:11px}footer div{font-weight:750;color:var(--green)}footer small{margin-left:auto;color:#9ba59e}.loading{position:fixed;inset:0;z-index:50;background:rgba(10,39,30,.91);backdrop-filter:blur(12px);display:flex;flex-direction:column;align-items:center;justify-content:center;color:#fff}.loading.hidden{display:none}.loader-ring{width:92px;height:92px;border:1px solid #d0bd80;border-radius:50%;display:grid;place-items:center;position:relative;animation:spin 3s linear infinite}.loader-ring:before,.loader-ring:after{content:"";position:absolute;inset:8px;border:1px dashed #d0bd80;border-radius:50%}.loader-ring:after{inset:-9px;border-color:#ffffff38;animation:spin 5s linear infinite reverse}.loader-ring span{font:700 18px Georgia;color:#ddc88d;animation:spin 3s linear infinite reverse}@keyframes spin{to{transform:rotate(360deg)}}.loading-title{font:600 20px "Songti SC",serif;margin:25px 0 4px}.loading-sub{font-size:9px;letter-spacing:.2em;color:#b7c7bc}.loading-bars{display:flex;gap:5px;margin-top:20px}.loading-bars i{height:3px;width:24px;background:#c8b477;border-radius:3px;animation:pulse .8s ease-in-out infinite alternate}.loading-bars i:nth-child(2){animation-delay:.15s}.loading-bars i:nth-child(3){animation-delay:.3s}.loading-bars i:nth-child(4){animation-delay:.45s}.loading-bars i:nth-child(5){animation-delay:.6s}@keyframes pulse{to{opacity:.25;transform:scaleX(.5)}}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%,20px);background:#183e31;color:#fff;padding:10px 18px;border-radius:30px;font-size:12px;opacity:0;transition:.25s;z-index:70;pointer-events:none}.toast.show{opacity:1;transform:translate(-50%,0)}@media(max-width:850px){.shell{padding:18px 16px 45px}.hero{padding:34px 30px;min-height:300px}.hero h1{font-size:35px}.hero-art{width:300px;opacity:.8}.hero-core{right:52px;top:65px;width:150px;height:150px}.orbit-a{right:-15px}.orbit-b{right:8px}.form-layout{grid-template-columns:1fr}.guide-grid{grid-template-columns:1fr 1fr}.topbar{padding:0 18px}.privacy{display:none}}@media(max-width:600px){.topbar{height:64px}.brand-cn{font-size:12px}.brand-en{font-size:8px}.seal{width:36px;height:36px}.top-right .btn{padding:7px 9px;font-size:10px}.shell{padding:13px 11px 35px}.hero{border-radius:17px;padding:27px 22px;min-height:290px}.hero h1{font-size:31px}.hero p{font-size:11px;max-width:100%}.hero-art{position:absolute;right:-35px;bottom:-30px;width:230px;opacity:.32}.hero-core{width:130px;height:130px;right:45px;top:55px}.float-card{display:none}.hero-tags{flex-wrap:wrap}.tabs{margin:14px 0;padding:4px}.tab{padding:9px 12px;font-size:11px}.section-head{align-items:flex-start;flex-direction:column;margin:23px 0 14px}.section-head h2,.result-top h2{font-size:22px}.section-head .btn{align-self:flex-end}.form-card,.result-card{padding:15px;border-radius:12px}.fields{gap:10px}.fields label{font-size:10px}.fields input,.fields select{height:35px;font-size:11px;padding:0 7px}.kpis{grid-template-columns:1fr 1fr;gap:8px}.kpi{padding:12px}.kpi strong{font-size:19px}.result-grid{grid-template-columns:1fr;gap:10px}.chart-box{height:230px}.card-title{align-items:flex-start}.card-title h3{font-size:13px}.card-title small{font-size:9px}.export-row .btn{font-size:10px;padding:7px 9px}.guide-grid{grid-template-columns:1fr}.guide-card{min-height:auto}.guide-card p{font-size:11px}footer{display:block;line-height:2}footer small{display:block;margin:4px 0}table{font-size:10px}th,td{padding:8px}.result-top{align-items:flex-end}}
@media print{.topbar,.tabs,.btn,.download-mini,.ambient,.hero-art{display:none!important}body{background:#fff}.shell{max-width:none;padding:0}.hero{min-height:auto;padding:25px;background:#123d31!important;print-color-adjust:exact}.panel{display:none!important}.panel.active{display:block!important}.form-layout{grid-template-columns:1fr 1fr}.form-card,.result-card{break-inside:avoid;box-shadow:none}.loading,.toast{display:none!important}}

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

/* v2.0 publication-oriented charts and manual controls */
.chart-box{background:#fff;border-radius:8px;padding:10px 8px}.result-card{background:#fff}.compute-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.auto-toggle{display:inline-flex;align-items:center;gap:6px;color:#607168;font-size:12px;white-space:nowrap}.auto-toggle input{accent-color:#1d5a47;width:15px;height:15px}.result-sub{margin:3px 0 0;color:#78867d;font-size:11px}.chart-export{display:flex;align-items:center;justify-content:space-between;border-top:1px solid #edf1ec;padding-top:9px;margin-top:8px;color:#839087;font-size:10px}.visit-counter{font-size:11px;color:#78877e;white-space:nowrap}@media(max-width:700px){.compute-actions{width:100%;justify-content:flex-start}.visit-counter{display:none}.chart-export{font-size:9px}.chart-box{padding:5px 0}}@media print{body,.result-card,.chart-box{background:#fff!important;color:#111!important}.ambient{display:none}.topbar,.tabs,.form-layout,.loading,.toast{display:none!important}.shell{max-width:none;padding:0}.hero{background:#fff!important;color:#111!important;box-shadow:none;border:1px solid #ddd}.hero p,.hero h1,.hero h1 em{color:#111!important}.panel{display:block!important}.chart-box{break-inside:avoid}.result-card{box-shadow:none;break-inside:avoid}}

/* V3.0 responsive refinement */
:root{color-scheme:light}
input,select,button{font:inherit}
input[type=number]{font-variant-numeric:tabular-nums}
input:focus,select:focus{outline:3px solid rgba(30,91,73,.16);border-color:#1e5b49}
.btn{transition:transform .18s ease,box-shadow .18s ease,background .18s ease}
.btn:active{transform:translateY(1px) scale(.985)}
.form-card,.result-card{min-width:0}
.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
table{border-collapse:collapse;min-width:640px}
@media(max-width:760px){
 .topbar{height:auto;min-height:62px;padding:10px 14px;gap:8px;flex-wrap:wrap}
 .top-right{gap:8px;flex-wrap:wrap}
 .shell{padding:14px 12px 36px}
 .hero{min-height:unset;padding:22px 18px}
 .hero h1{font-size:clamp(28px,8vw,42px)}
 .fields{grid-template-columns:1fr!important}
 .form-card{padding:16px}
 .result-top{align-items:flex-start;gap:10px;flex-direction:column}
 .compute-actions{width:100%;display:flex;flex-wrap:wrap}
 .chart-box{height:300px!important;min-width:0}
 .export-row{display:flex;flex-wrap:wrap;gap:7px}
 .export-row .btn{flex:1 1 140px}
 .table-scroll table{font-size:11px}
}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}

.project-input-wrap{grid-column:1/-1;min-width:0}
.project-ledger-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:7px 0;color:#78867d}
.project-rows{display:grid;gap:7px}
.project-entry{display:grid;grid-template-columns:minmax(0,2fr) minmax(110px,1fr) auto;gap:7px;align-items:center}
.project-entry input{min-width:0;width:100%;padding:9px 10px;border:1px solid #dfe6df;border-radius:9px;background:#fff}
.remove-project{border:1px solid #e4d7d3;background:#fff;color:#9a5949;border-radius:8px;padding:8px 10px;cursor:pointer}
@media(max-width:640px){.project-entry{grid-template-columns:1fr 1fr auto}.project-ledger-head{align-items:flex-start;flex-direction:column}}

.required-missing input{border:1.5px solid #b7791f!important;background:#fff9e9!important;box-shadow:0 0 0 3px rgba(183,121,31,.12)}
.required-missing::after{content:'需要填写';display:inline-block;color:#9a681a;font-size:11px;margin:4px 0 0 4px}

/* V4.0 typography and mobile-first usability */
:root{--ink:#1b2b23;--green:#153f32;--green2:#24634e;--gold:#c4a15d}
body{font-size:15px;line-height:1.68}
.brand-cn{font-size:15px}.brand-en{font-size:10px}
.hero h1{font-size:clamp(34px,4vw,52px);line-height:1.18;letter-spacing:-.025em}
.hero p{font-size:15px;max-width:62ch}
.section-head h2,.result-top h2{font-size:clamp(24px,3vw,32px)}
.form-card h3,.result-card h3{font-size:18px}
label{font-size:14px}
input,select{font-size:16px!important;min-height:46px}
.btn,.download-mini{min-height:42px;font-size:14px}
.kpi strong{font-size:clamp(20px,2vw,27px)}
.table-scroll th,.table-scroll td{font-size:13px;padding:10px 11px}
.chart-box{background:#fff!important;border-radius:12px;min-height:310px}
.chart-export{padding-top:12px}
@media(max-width:760px){
 body{font-size:15px}
 .topbar{padding:12px 14px}
 .brand-cn{font-size:13px}
 .shell{padding:14px 12px 38px}
 .hero{padding:24px 18px}
 .hero h1{font-size:34px}
 .hero p{font-size:14px}
 .section-head h2{font-size:25px}
 .form-card{padding:17px 14px}
 .fields{gap:12px}
 .chart-box{height:310px!important;min-height:310px}
 .kpis{grid-template-columns:1fr 1fr!important}
 .kpi{padding:13px}
 .kpi strong{font-size:19px}
 .table-scroll{border-radius:10px}
}
@media(prefers-reduced-motion:no-preference){
 .ambient i{animation:floatGlow 18s ease-in-out infinite alternate}
 .ambient i:nth-child(2){animation-delay:-6s}
 .ambient i:nth-child(3){animation-delay:-11s}
 .form-card,.result-card{transition:transform .22s ease,box-shadow .22s ease}
 .form-card:hover,.result-card:hover{transform:translateY(-2px);box-shadow:0 18px 42px rgba(24,57,44,.10)}
}
@keyframes floatGlow{from{transform:translate3d(0,0,0) scale(1)}to{transform:translate3d(20px,-18px,0) scale(1.08)}}

.advanced-settings{margin-top:14px;border:1px solid #e5ebe5;border-radius:12px;background:#fbfcfa;padding:0 14px}
.advanced-settings summary{cursor:pointer;list-style:none;padding:12px 2px;color:#52665a;font-weight:650;font-size:14px}
.advanced-settings summary::-webkit-details-marker{display:none}
.advanced-settings summary:after{content:'＋';float:right;color:#9a875e}
.advanced-settings[open] summary:after{content:'−'}
.advanced-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:4px 0 14px}
.advanced-grid label{min-width:0}
button:disabled{opacity:.58;cursor:wait;transform:none!important}
@media(max-width:640px){.advanced-grid{grid-template-columns:1fr}}

.matplotlib-preview{display:block;width:100%;height:100%;max-height:460px;object-fit:contain;margin:0 auto;background:#fff;border-radius:8px}
.matplotlib-preview.chart-loading{opacity:.35;filter:saturate(.65);transition:opacity .25s ease}
