:root{font-family:Microsoft YaHei UI,PingFang SC,system-ui,sans-serif;color:#18332a;background:#f4f7f3;font-synthesis:none;--green-900:#123d2d;--green-800:#174f3a;--green-700:#1f6549;--green-100:#dfece4;--paper:#fbfcf9;--line:#d5dfd7;--muted:#63756c;--danger:#a33a32;--warning:#996515;--radius:14px;--shadow:0 14px 40px rgba(23,79,58,.09)}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100dvh}button,input,select,textarea{font:inherit}button{min-height:46px;border:0;border-radius:10px;padding:0 18px;font-weight:700;cursor:pointer;transition:transform .15s,background .15s}button:active{transform:scale(.98)}button:disabled{opacity:.52;cursor:not-allowed}.primary{background:var(--green-800);color:#fff}.secondary{background:var(--green-100);color:var(--green-900)}input,select,textarea{width:100%;min-height:48px;border:1px solid var(--line);border-radius:10px;background:#fff;padding:11px 12px;color:#18332a}input:focus,select:focus,textarea:focus{outline:3px solid rgba(31,101,73,.18);border-color:var(--green-700)}.mobile-shell{max-width:560px;margin:0 auto;min-height:100dvh;background:var(--paper);box-shadow:var(--shadow)}.mobile-header{padding:20px 22px 14px;background:var(--green-900);color:#fff;display:flex;align-items:flex-start;justify-content:space-between;gap:18px}.mobile-header small{opacity:.72}.mobile-utility{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:6px}.mobile-utility a{color:#fff;text-decoration:none;font-size:12px;padding:7px 8px;border-radius:7px;background:#ffffff17}.mobile-utility a:hover{background:#ffffff2e}.mobile-utility a:focus-visible{outline:2px solid #fff;outline-offset:2px}.mobile-main{padding:24px 22px 38px}.eyebrow{font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--green-700);font-weight:800}.title{font-size:30px;line-height:1.15;margin:8px 0 10px}.lede{color:var(--muted);line-height:1.65;margin:0 0 24px}.field{margin:18px 0}.field label{display:block;font-size:14px;font-weight:700;margin-bottom:7px}.error{color:var(--danger);font-size:14px;margin-top:8px}.notice{padding:14px;border-radius:10px;background:#edf5ef;color:var(--green-900);line-height:1.55}.actions{display:flex;gap:10px;margin-top:24px}.actions>*{flex:1}.stepbar{display:grid;grid-template-columns:repeat(6,1fr);gap:5px;margin:0 0 24px}.stepbar span{height:5px;border-radius:3px;background:#dce4de}.stepbar span.done{background:var(--green-700)}.photo-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.photo-box{border:1px solid var(--line);border-radius:var(--radius);padding:12px;background:#fff}.photo-preview{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:9px;background:#e8eee9}.stage-card,.report-section,.guide-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:17px;margin:12px 0}.stage-name{font-size:28px;font-weight:800;color:var(--green-800)}.manual-notice{margin:16px 0}.reference-card p{margin:8px 0 0}.section-kicker{color:var(--green-700);font-size:12px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.sampling-card{background:#fff;border:1px solid #b9cdbd;border-radius:var(--radius);padding:18px;margin:16px 0 22px}.sampling-card h2,.workflow-heading h2{margin:5px 0 0;font-size:20px}.workflow-heading{display:flex;align-items:end;justify-content:space-between;gap:12px;margin:25px 2px 10px}.workflow-heading small{color:var(--muted);white-space:nowrap}.workflow-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);margin:10px 0;overflow:hidden}.workflow-card summary{display:flex;flex-direction:column;justify-content:center;min-height:60px;padding:12px 46px 12px 16px;cursor:pointer;position:relative;font-weight:800;color:var(--green-900);list-style:none}.workflow-card summary::-webkit-details-marker{display:none}.workflow-card summary:after{content:"＋";position:absolute;right:17px;top:50%;transform:translateY(-50%);font-size:22px;font-weight:500}.workflow-card[open] summary:after{content:"－"}.workflow-card summary:focus-visible{outline:3px solid #81a88a;outline-offset:-3px}.workflow-card summary small{font-weight:500;color:var(--muted);margin-top:4px}.workflow-steps{list-style:none;counter-reset:sop;padding:4px 16px 15px;margin:0}.workflow-steps li{counter-increment:sop;position:relative;padding:13px 0 13px 42px;border-top:1px solid #e4ebe5;line-height:1.65}.workflow-steps li:before{content:counter(sop);position:absolute;left:0;top:13px;width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:#e8f1ea;color:var(--green-800);font-size:13px;font-weight:800}.workflow-steps p{margin:4px 0 0;color:#425248}.guidance-complete{width:100%;margin-top:22px}.back-button{display:block;width:100%;margin-top:12px}@media(prefers-reduced-motion:reduce){.workflow-card summary:after{transition:none}}.measurement-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.measurement-grid .field{margin:0}.unit{font-size:12px;color:var(--muted);float:right}.score{font-size:64px;line-height:1;font-weight:850;color:var(--green-800)}.admin-shell{display:grid;grid-template-columns:230px 1fr;min-height:100dvh}.sidebar{background:var(--green-900);color:#fff;padding:24px 16px}.brand{font-size:23px;font-weight:850;margin:0 10px 28px}.navlink{display:block;color:#dfece4;text-decoration:none;padding:12px;border-radius:9px;margin:4px 0;transition:background .2s,transform .2s}.navlink:hover{background:#ffffff17;transform:translate(2px)}.navlink:focus-visible{outline:2px solid white;outline-offset:2px}.navlink.router-link-active{background:var(--green-700);color:#fff}.admin-logout{margin:34px 10px 0}.admin-main{padding:30px;overflow:auto}.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.metric{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:18px}.metric strong{display:block;font-size:30px;margin-top:8px}.table-wrap{overflow:auto;background:#fff;border:1px solid var(--line);border-radius:var(--radius);margin-top:18px}table{width:100%;border-collapse:collapse;min-width:720px}th,td{text-align:left;padding:14px;border-bottom:1px solid #e6ece7}th{font-size:13px;color:var(--muted);background:#f8faf8}.badge{display:inline-block;padding:5px 9px;border-radius:7px;background:#edf5ef;color:var(--green-800);font-weight:700;font-size:12px}.portal-page{min-height:100dvh;background:#eef3ee;color:var(--green-900);padding:0 clamp(22px,5vw,72px) 42px}.portal-header,.tech-header{max-width:1280px;margin:0 auto;min-height:82px;display:flex;align-items:center;justify-content:space-between;gap:24px;border-bottom:1px solid rgba(18,61,45,.18)}.portal-header>span{color:var(--muted);font-size:14px}.portal-brand{color:inherit;text-decoration:none;font-size:21px;font-weight:850;letter-spacing:-.04em}.portal-brand:focus-visible,.portal-index a:focus-visible,.portal-primary:focus-visible,.tech-header a:focus-visible,.tech-toc a:focus-visible{outline:3px solid rgba(31,101,73,.35);outline-offset:4px}.portal-hero{max-width:1280px;margin:0 auto;display:grid;grid-template-columns:minmax(0,1.25fr) minmax(320px,.75fr);min-height:calc(100dvh - 180px);align-items:center;gap:clamp(44px,8vw,120px);padding:74px 0 92px}.portal-copy{max-width:720px}.portal-copy h1{font-size:clamp(48px,7vw,92px);line-height:.98;letter-spacing:-.065em;margin:18px 0 30px;text-wrap:balance}.portal-copy>p:not(.section-kicker){font-size:18px;line-height:1.8;color:#50665c;max-width:38rem;text-wrap:pretty}.portal-primary{display:inline-flex;align-items:center;min-height:52px;margin-top:22px;padding:0 24px;border-radius:8px;background:var(--green-900);color:#fff;text-decoration:none;font-weight:750;transition:transform .2s,background .2s}.portal-primary:hover{background:var(--green-700);transform:translateY(-2px)}.portal-index{border-top:1px solid rgba(18,61,45,.22)}.portal-index a{display:grid;grid-template-columns:42px 1fr;gap:3px 14px;padding:23px 4px;border-bottom:1px solid rgba(18,61,45,.22);color:inherit;text-decoration:none;transition:padding .2s,background .2s}.portal-index a:hover{padding-left:12px;background:#ffffff70}.portal-index span{grid-row:1/3;color:var(--green-700);font:600 12px ui-monospace,monospace}.portal-index strong{font-size:20px}.portal-index small{color:var(--muted)}.portal-note{max-width:1280px;margin:0 auto;padding-top:24px;border-top:1px solid rgba(18,61,45,.18);display:flex;justify-content:space-between;gap:28px}.portal-note p{margin:0;color:var(--muted);max-width:620px;text-align:right;line-height:1.6}.tech-page{min-height:100dvh;background:#f4f7f3;color:#19352b}.tech-header{padding:0 clamp(22px,5vw,72px);max-width:none;background:#f4f7f3ed;position:sticky;top:0;z-index:10;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.tech-header nav{display:flex;gap:8px}.tech-header nav a{color:var(--green-900);text-decoration:none;font-weight:700;padding:10px 13px;border-radius:8px}.tech-header nav a:hover{background:var(--green-100)}.tech-hero{background:var(--green-900);color:#fff;padding:clamp(70px,10vw,128px) max(24px,calc((100vw - 1180px)/2));position:relative;overflow:hidden}.tech-hero:after{content:"06";position:absolute;right:-.04em;bottom:-.27em;font-size:clamp(240px,36vw,520px);font-weight:900;color:#ffffff09;letter-spacing:-.12em;pointer-events:none}.tech-hero .section-kicker{color:#91c3a2}.tech-hero h1{position:relative;z-index:1;font-size:clamp(46px,7vw,88px);line-height:1;letter-spacing:-.06em;margin:18px 0 26px;max-width:900px}.tech-hero>p:not(.section-kicker){position:relative;z-index:1;max-width:650px;color:#c8d8ce;font-size:18px;line-height:1.75}.tech-facts{position:relative;z-index:1;display:flex;gap:38px;margin-top:54px}.tech-facts span{display:flex;align-items:baseline;gap:8px;color:#b9cec0}.tech-facts b{font-size:34px;color:#fff;font-variant-numeric:tabular-nums}.tech-layout{max-width:1180px;margin:0 auto;display:grid;grid-template-columns:210px minmax(0,1fr);gap:clamp(42px,7vw,92px);padding:76px 24px 100px}.tech-toc{position:sticky;top:112px;align-self:start;display:flex;flex-direction:column;gap:2px}.tech-toc strong{font-size:12px;letter-spacing:.1em;color:var(--muted);margin-bottom:14px}.tech-toc a{color:#52665c;text-decoration:none;padding:8px 0;font-size:14px}.tech-toc a:hover{color:var(--green-700)}.tech-article{min-width:0}.tech-section{scroll-margin-top:110px;padding:0 0 84px;margin-bottom:76px;border-bottom:1px solid var(--line)}.tech-section h2{font-size:clamp(30px,4vw,48px);letter-spacing:-.045em;line-height:1.08;margin:8px 0 26px}.tech-section>p:not(.tech-number){max-width:65ch;line-height:1.8;color:#53675d}.tech-number{font:700 12px ui-monospace,monospace;letter-spacing:.1em;color:var(--green-700);margin:0}.tech-definition{margin:34px 0 0;border-top:1px solid var(--line)}.tech-definition div{display:grid;grid-template-columns:150px 1fr;padding:16px 0;border-bottom:1px solid var(--line)}.tech-definition dt{font-size:13px;color:var(--muted)}.tech-definition dd{margin:0;font-weight:650}.tech-flow{list-style:none;padding:0;margin:40px 0 0;border-top:1px solid var(--line)}.tech-flow li{display:grid;grid-template-columns:64px 1fr;gap:16px;padding:22px 0;border-bottom:1px solid var(--line)}.tech-flow>li>span{font:700 13px ui-monospace,monospace;color:var(--green-700)}.tech-flow h3{margin:0 0 7px;font-size:19px}.tech-flow p{margin:0;line-height:1.65;color:var(--muted)}.stage-doc-grid{display:grid;grid-template-columns:1fr 1fr;margin-top:38px;border-top:1px solid var(--line);border-left:1px solid var(--line)}.stage-doc-grid article{padding:26px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);min-height:210px}.stage-doc-grid article>span{font:700 12px ui-monospace,monospace;color:var(--green-700)}.stage-doc-grid h3{font-size:24px;margin:30px 0 10px}.stage-doc-grid p{line-height:1.6;margin:0 0 20px}.stage-doc-grid small{color:var(--muted);line-height:1.6}.tech-workflow{border-top:1px solid var(--line)}.tech-workflow:last-of-type{border-bottom:1px solid var(--line)}.tech-workflow summary{display:grid;grid-template-columns:52px 1fr;align-items:center;padding:20px 8px;cursor:pointer;list-style:none}.tech-workflow summary::-webkit-details-marker{display:none}.tech-workflow summary>span{font:700 12px ui-monospace,monospace;color:var(--green-700)}.tech-workflow summary div{display:flex;justify-content:space-between;gap:24px;align-items:center}.tech-workflow summary strong{font-size:18px}.tech-workflow summary small{color:var(--muted)}.tech-workflow ol{margin:0;padding:4px 28px 24px 74px}.tech-workflow li{padding:7px 0 7px 8px;line-height:1.65;color:#42564c}.tech-table-wrap{overflow:auto;margin-top:32px;border:1px solid var(--line);background:#fff}.tech-table-wrap table{min-width:780px}.tech-table-wrap code{font-weight:700;color:var(--green-700)}.tech-callout{margin-top:24px;background:#e7efe8;border-left:4px solid var(--green-700);padding:22px 24px}.tech-callout p{margin:8px 0 0;line-height:1.7;color:#42564c}.architecture-stack{margin:34px 0}.architecture-stack>div{display:grid;grid-template-columns:120px 1fr;gap:20px;padding:18px 0;border-top:1px solid var(--line)}.architecture-stack>div:last-child{border-bottom:1px solid var(--line)}.architecture-stack p{margin:0;color:var(--muted);line-height:1.6}.tech-code{overflow:auto;padding:24px;background:#173b2f;color:#d9e8de;border-radius:10px;font:14px/1.9 ui-monospace,SFMono-Regular,Consolas,monospace}.tech-list{padding:0;list-style:none;border-top:1px solid var(--line)}.tech-list li{position:relative;padding:18px 0 18px 34px;border-bottom:1px solid var(--line);line-height:1.7}.tech-list li:before{content:"✓";position:absolute;left:3px;color:var(--green-700);font-weight:850}.tech-footer{display:flex;justify-content:space-between;gap:24px;color:var(--muted)}.tech-footer a{color:var(--green-800);font-weight:750}@media(max-width:800px){.admin-shell{grid-template-columns:1fr}.sidebar{display:block;padding:14px 16px}.sidebar .brand{margin:0 0 10px}.sidebar nav{display:flex;overflow:auto;gap:4px}.sidebar .navlink{white-space:nowrap;margin:0;padding:9px 11px}.admin-logout{display:none}.admin-main{padding:20px}.metrics{grid-template-columns:1fr 1fr}.portal-hero{grid-template-columns:1fr;min-height:auto;padding:64px 0}.portal-note{display:block}.portal-note p{text-align:left;margin-top:8px}.tech-layout{grid-template-columns:1fr;padding-top:44px}.tech-toc{position:static;display:grid;grid-template-columns:repeat(2,1fr);padding-bottom:24px;border-bottom:1px solid var(--line)}.tech-toc strong{grid-column:1/-1}.tech-section{padding-bottom:62px;margin-bottom:58px}.stage-doc-grid{grid-template-columns:1fr}}@media(max-width:560px){.mobile-header{display:block}.mobile-utility{justify-content:flex-start;margin-top:14px}.portal-page{padding-inline:18px}.portal-header>span{display:none}.portal-copy h1{font-size:48px}.portal-hero{gap:48px}.tech-header{min-height:70px}.tech-header nav a{padding:9px 8px;font-size:13px}.tech-hero{padding-inline:22px}.tech-facts{gap:18px;flex-wrap:wrap}.tech-layout{padding-inline:18px}.tech-definition div{grid-template-columns:1fr;gap:5px}.tech-workflow summary div{display:block}.tech-workflow summary small{display:block;margin-top:5px}.tech-workflow ol{padding-left:42px}.tech-footer{display:block}.tech-footer span{display:block;margin-top:10px}}@media(max-width:420px){.mobile-main{padding:20px 16px}.photo-grid,.measurement-grid{grid-template-columns:1fr}.title{font-size:26px}}@media(prefers-reduced-motion:reduce){*{transition:none!important}}
