:root{--brand:#1f6f4a;--brand-dark:#155338;--brand-soft:#eaf5ef;--accent:#e19033;--ink:#17231d;--muted:#657269;--line:#dce5df;--bg:#f4f7f5;--surface:#fff;--danger:#b53232;--warning:#a8610a;--success:#207246;--shadow:0 10px 35px rgba(24,51,37,.08);--radius:16px;--sidebar:248px}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;color:var(--ink);background:var(--bg);font:16px/1.55 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit}a{color:var(--brand);text-decoration:none}a:hover{text-decoration:none}img{max-width:100%}.app-shell{min-height:100vh}.sidebar{position:fixed;z-index:50;inset:0 auto 0 0;width:var(--sidebar);padding:20px 14px;background:#183b2a;color:#fff;display:flex;flex-direction:column;overflow-y:auto}.brand{display:flex;gap:11px;align-items:center;color:inherit}.brand-mark{display:grid;place-items:center;flex:0 0 42px;height:42px;border-radius:13px;background:linear-gradient(145deg,#44a874,#267c52);color:#fff;font-weight:800}.brand strong,.brand small{display:block}.brand strong{font-size:18px}.brand small{font-size:12px;opacity:.72;margin-top:1px}.sidebar-project{margin:22px 2px 12px;padding:13px;border-radius:12px;background:rgba(255,255,255,.08)}.sidebar-project small,.sidebar-project strong,.sidebar-project span{display:block}.sidebar-project small{opacity:.65;font-size:12px}.sidebar-project strong{margin:4px 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-project span{font-size:12px;opacity:.76}.side-nav{display:grid;gap:3px;margin-top:10px}.side-nav a{display:flex;align-items:center;gap:11px;min-height:44px;padding:0 13px;border-radius:10px;color:rgba(255,255,255,.78)}.side-nav a span{display:inline-grid;width:22px;text-align:center}.side-nav a:hover,.side-nav a.active{background:rgba(255,255,255,.12);color:#fff}.side-nav a.active{font-weight:700}.admin-link{margin:16px 3px 0;padding:10px 12px;color:#f8d7a8;border:1px solid rgba(248,215,168,.25);border-radius:10px;text-align:center}.sidebar-user{margin-top:auto;padding:16px 5px 0;border-top:1px solid rgba(255,255,255,.12);display:grid;grid-template-columns:1fr auto;align-items:center;gap:1px 8px}.sidebar-user span{font-weight:700}.sidebar-user small{grid-column:1;color:rgba(255,255,255,.65)}.sidebar-user a{grid-column:2;grid-row:1/3;color:#fff;font-size:14px}.app-main{margin-left:var(--sidebar);min-height:100vh;display:flex;flex-direction:column}.topbar{position:sticky;z-index:30;top:0;min-height:70px;padding:0 28px;background:rgba(244,247,245,.9);backdrop-filter:blur(14px);display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid rgba(220,229,223,.8)}.topbar>div{display:flex;align-items:center;gap:10px}.topbar h1{font-size:22px;margin:0}.avatar{display:grid;place-items:center;width:38px;height:38px;border-radius:50%;background:var(--brand);color:#fff;font-weight:800}.readonly-pill{padding:4px 9px;border-radius:99px;background:#fff3df;color:#8b5008;font-size:13px}.content{width:100%;max-width:1500px;margin:0 auto;padding:26px 28px 52px;flex:1}.site-footer{padding:20px 28px 85px;color:var(--muted);font-size:13px;display:flex;justify-content:space-between;gap:16px;border-top:1px solid var(--line)}.mobile-nav{display:none}.mobile-only{display:none}.sidebar-backdrop{display:none}.alert{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:18px;padding:12px 14px;border-radius:12px;border:1px solid}.alert button{border:0;background:none;font-size:20px;line-height:1;cursor:pointer}.alert-success{background:#eaf7ef;border-color:#b9dfc8;color:#185c38}.alert-warning{background:#fff6e8;border-color:#efd19f;color:#84500f}.alert-danger,.alert-error{background:#fff0f0;border-color:#efc2c2;color:#932727}.alert-info{background:#edf5ff;border-color:#bfd6ef;color:#245986}.section-heading{display:flex;align-items:end;justify-content:space-between;gap:18px;margin:2px 0 16px}.section-heading h2{margin:0;font-size:20px}.section-heading p{margin:5px 0 0;color:var(--muted);font-size:14px}.button,button.button{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:44px;padding:0 16px;border:0;border-radius:11px;background:var(--brand);color:#fff;font-weight:700;cursor:pointer}.button:hover{background:var(--brand-dark);color:#fff}.button.secondary{background:#fff;color:var(--ink);border:1px solid var(--line)}.button.ghost{background:transparent;color:var(--brand);border:1px solid #a8cab7}.button.danger{background:var(--danger)}.button.small{min-height:36px;padding:0 11px;font-size:14px}.icon-button{width:42px;height:42px;border:0;border-radius:10px;background:#fff;color:var(--ink);font-size:20px}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 5px 24px rgba(24,51,37,.04)}.card-pad{padding:20px}.grid{display:grid;gap:16px}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}.metric{padding:18px}.metric small{display:block;color:var(--muted)}.metric strong{display:block;margin-top:7px;font-size:26px;letter-spacing:-.02em}.metric span{display:block;margin-top:4px;font-size:13px;color:var(--muted)}.metric.danger strong{color:var(--danger)}.metric.success strong{color:var(--success)}.progress{height:9px;background:#edf1ee;border-radius:99px;overflow:hidden}.progress>span{display:block;height:100%;max-width:100%;background:linear-gradient(90deg,var(--brand),#55a87c);border-radius:inherit}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}.field{display:grid;gap:6px}.field.full{grid-column:1/-1}.field label{font-weight:650;font-size:14px}.field small{color:var(--muted)}input,select,textarea{width:100%;min-height:44px;padding:10px 12px;color:var(--ink);background:#fff;border:1px solid #bccac1;border-radius:10px;outline:none}textarea{min-height:96px;resize:vertical}input:focus,select:focus,textarea:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(31,111,74,.12)}input[type=checkbox],input[type=radio]{width:18px;min-height:18px;accent-color:var(--brand)}input[type=file]{padding:8px}.inline-fields{display:flex;align-items:end;gap:12px;flex-wrap:wrap}.inline-fields>.field{flex:1 1 160px}.form-actions{display:flex;gap:10px;align-items:center;margin-top:18px}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:14px;background:#fff}.data-table{width:100%;border-collapse:collapse;min-width:720px}.data-table th,.data-table td{padding:12px 13px;text-align:left;border-bottom:1px solid #e8eeea;vertical-align:top}.data-table th{background:#f8faf9;font-size:13px;color:var(--muted);white-space:nowrap}.data-table tr:last-child td{border-bottom:0}.data-table td.actions{white-space:nowrap}.badge{display:inline-flex;align-items:center;min-height:24px;padding:2px 8px;border-radius:99px;font-size:12px;white-space:nowrap}.badge-primary{background:#e5f2eb;color:#1a6040}.badge-success{background:#e8f5ed;color:#17613a}.badge-danger{background:#fdeaea;color:#9c2929}.badge-warning{background:#fff1da;color:#895008}.badge-muted{background:#edf0ee;color:#5f6b64}.tabs{display:flex;gap:7px;overflow:auto;margin-bottom:18px;padding-bottom:3px;scrollbar-width:none}.tabs a{flex:0 0 auto;padding:9px 13px;border-radius:10px;background:#fff;border:1px solid var(--line);color:var(--muted)}.tabs a.active{background:var(--brand);border-color:var(--brand);color:#fff;font-weight:700}.empty-state{text-align:center;padding:42px 20px;background:#fff;border:1px dashed #c6d4cb;border-radius:16px}.empty-icon{margin:auto;display:grid;place-items:center;width:52px;height:52px;border-radius:50%;background:var(--brand-soft);color:var(--brand);font-size:26px}.empty-state h3{margin:12px 0 5px}.empty-state p{margin:0 auto 16px;max-width:480px;color:var(--muted)}.project-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.project-card{padding:18px;color:inherit;transition:.18s}.project-card:hover{transform:translateY(-2px);box-shadow:var(--shadow)}.project-card .row{display:flex;justify-content:space-between;gap:10px}.project-card h3{margin:0 0 3px}.project-card p{margin:0;color:var(--muted);font-size:14px}.project-card .progress{margin:16px 0 8px}.project-card footer{display:flex;justify-content:space-between;color:var(--muted);font-size:13px}.stage-tree{position:relative;display:grid;gap:10px}.stage-tree:before{content:"";position:absolute;left:27px;top:25px;bottom:25px;width:2px;background:#cedbd3}.stage-card{position:relative;display:grid;grid-template-columns:56px 1fr auto;gap:13px;align-items:center;padding:14px 16px;background:#fff;border:1px solid var(--line);border-radius:14px}.stage-index{z-index:1;display:grid;place-items:center;width:40px;height:40px;margin-left:3px;border-radius:50%;background:#edf2ef;border:4px solid #fff;color:var(--muted);font-size:13px;font-weight:800}.stage-card.active{border-color:#8cbea2;background:#fbfefc}.stage-card.active .stage-index{background:var(--brand);color:#fff}.stage-card.done .stage-index{background:#65a984;color:#fff}.stage-card h3{margin:0;font-size:17px}.stage-card p{margin:3px 0 0;color:var(--muted);font-size:13px}.task-list{display:grid;gap:10px}.task-card{padding:15px 16px}.task-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.task-card h3{margin:0;font-size:16px}.task-card-meta{display:flex;gap:7px;align-items:center;flex-wrap:wrap;margin-top:6px;color:var(--muted);font-size:13px}.task-details{margin-top:12px;border-top:1px solid var(--line);padding-top:12px}.task-details summary{cursor:pointer;font-weight:700;color:var(--brand)}.task-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:12px}.detail-block{padding:12px;border-radius:10px;background:#f7f9f8}.detail-block strong{display:block;margin-bottom:5px;font-size:13px}.detail-block p{white-space:pre-line;margin:0;color:#445149;font-size:14px}.timeline-list{display:grid;gap:9px}.timeline-item{display:grid;grid-template-columns:110px 1fr auto;gap:12px;align-items:center;padding:13px 15px;border-bottom:1px solid var(--line)}.timeline-item:last-child{border-bottom:0}.risk-high{color:var(--danger)}.risk-medium{color:var(--warning)}.ai-disclaimer{padding:12px 14px;border-left:4px solid var(--accent);border-radius:8px;background:#fff7eb;color:#724812;font-size:14px}.analysis-result{display:grid;gap:10px}.finding{padding:13px;border:1px solid var(--line);border-radius:12px;background:#fff}.finding header{display:flex;justify-content:space-between;gap:10px}.finding h4{margin:0}.finding p{margin:7px 0 0;color:#455148}.finding small{color:var(--muted)}.camera-input::file-selector-button{border:0;border-radius:8px;background:var(--brand-soft);color:var(--brand);padding:7px 10px;font-weight:700}.photo-preview{display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:8px;margin-top:8px}.photo-preview img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:10px}.bottom-action{display:none}.public-body{min-height:100vh;background:radial-gradient(circle at 10% 10%,#e5f4eb,transparent 36%),var(--bg)}.auth-shell{min-height:100vh;display:grid;place-items:center;padding:24px 14px}.auth-card{width:min(100%,460px);padding:28px;background:#fff;border:1px solid var(--line);border-radius:20px;box-shadow:var(--shadow)}.auth-brand{margin-bottom:24px}.auth-card h1{font-size:24px;margin:0 0 6px}.auth-card>.lead{color:var(--muted);margin:0 0 18px}.auth-links{display:flex;justify-content:space-between;gap:10px;margin-top:18px;font-size:14px}.auth-foot{margin:24px 0 0;color:var(--muted);font-size:12px;text-align:center}.check-row{display:flex;align-items:flex-start;gap:8px}.check-row input{margin-top:3px}.callout{padding:15px;border-radius:12px;background:var(--brand-soft);color:#24583f}.stat-pair{display:flex;justify-content:space-between;align-items:end;gap:10px}.stat-pair strong{font-size:24px}.list-clean{list-style:none;margin:0;padding:0}.list-clean li{padding:11px 0;border-bottom:1px solid var(--line)}.list-clean li:last-child{border-bottom:0}.muted{color:var(--muted)}.nowrap{white-space:nowrap}.text-right{text-align:right}.mt-0{margin-top:0}.mt-1{margin-top:8px}.mt-2{margin-top:16px}.mb-0{margin-bottom:0}.hidden{display:none!important}
@media(max-width:1100px){.grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}.project-list{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:800px){:root{--radius:14px}.sidebar{transform:translateX(-102%);transition:transform .2s;box-shadow:18px 0 45px rgba(0,0,0,.18)}body.sidebar-open .sidebar{transform:translateX(0)}.sidebar-backdrop{position:fixed;z-index:40;inset:0;background:rgba(10,24,16,.38)}body.sidebar-open .sidebar-backdrop{display:block}.app-main{margin-left:0}.mobile-only{display:inline-grid;place-items:center}.topbar{min-height:60px;padding:0 14px}.topbar h1{font-size:19px}.content{padding:16px 12px 92px}.site-footer{padding:18px 14px 95px;display:block}.site-footer a{display:block;margin-top:6px}.mobile-nav{position:fixed;z-index:35;display:grid;grid-template-columns:repeat(5,1fr);left:0;right:0;bottom:0;padding:6px 6px max(6px,env(safe-area-inset-bottom));background:rgba(255,255,255,.96);border-top:1px solid var(--line);box-shadow:0 -7px 25px rgba(23,35,29,.08);backdrop-filter:blur(14px)}.mobile-nav a{display:grid;place-items:center;gap:0;color:#68756d;min-height:49px;border-radius:10px}.mobile-nav a>span{font-size:20px;line-height:1.1}.mobile-nav small{font-size:11px}.mobile-nav a.active{background:var(--brand-soft);color:var(--brand);font-weight:800}.form-grid,.grid-2,.grid-3,.grid-4,.project-list{grid-template-columns:1fr}.field.full{grid-column:auto}.section-heading{align-items:flex-start}.section-heading>.button{flex:0 0 auto}.task-detail-grid{grid-template-columns:1fr}.stage-card{grid-template-columns:48px 1fr;gap:7px;padding:12px 10px}.stage-card>.button,.stage-card>.badge{grid-column:2;justify-self:start}.stage-tree:before{left:30px}.timeline-item{grid-template-columns:1fr auto}.timeline-item>small{grid-column:1/-1;grid-row:2}.table-wrap.mobile-cards{overflow:visible;border:0;background:transparent}.mobile-cards .data-table{min-width:0;display:block}.mobile-cards thead{display:none}.mobile-cards tbody{display:grid;gap:10px}.mobile-cards tr{display:block;padding:13px;background:#fff;border:1px solid var(--line);border-radius:12px}.mobile-cards td{display:flex;justify-content:space-between;gap:12px;padding:7px 0;border:0;text-align:right}.mobile-cards td:before{content:attr(data-label);font-weight:650;color:var(--muted);text-align:left}.mobile-cards td.actions{justify-content:flex-end;padding-top:10px;border-top:1px solid var(--line);margin-top:4px}.mobile-cards td.actions:before{display:none}.bottom-action{position:fixed;z-index:34;display:flex;left:10px;right:10px;bottom:72px}.bottom-action .button{width:100%;box-shadow:0 7px 24px rgba(21,83,56,.25)}.auth-shell{align-items:start;padding-top:18px}.auth-card{padding:22px 18px;border-radius:16px}.top-actions .readonly-pill{display:none}}
@media(max-width:390px){.content{padding-left:10px;padding-right:10px}.metric{padding:15px}.metric strong{font-size:23px}.section-heading{display:block}.section-heading>.button{margin-top:10px}.form-actions{align-items:stretch;flex-direction:column}.form-actions .button{width:100%}.task-card-head{display:block}.task-card-head>.badge{margin-top:7px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
.flow-layout{grid-template-columns:minmax(280px,.72fr) minmax(0,1.6fr)}
.ai-layout{grid-template-columns:minmax(320px,.9fr) minmax(0,1.4fr)}
button:disabled,.button:disabled{opacity:.5;cursor:not-allowed}
.risk-low{color:var(--success)}
@media(max-width:800px){.flow-layout,.ai-layout{grid-template-columns:1fr}}
body,.card,.detail-block{overflow-wrap:anywhere}
.site-footer{display:block;padding-bottom:30px}.footer-summary{display:flex;gap:10px 18px;flex-wrap:wrap;justify-content:space-between}.friend-links{display:flex;align-items:center;gap:5px 12px;flex-wrap:wrap;margin-top:10px}.friend-links span{color:var(--muted)}.friend-links a{white-space:normal;overflow-wrap:anywhere}.analytics-note{display:block;margin-top:8px;color:var(--muted)}.public-site-footer{padding:18px 16px 26px;color:var(--muted);font-size:13px;text-align:center;border-top:1px solid var(--line)}.public-site-footer .footer-summary,.public-site-footer .friend-links{justify-content:center}.public-body .auth-shell{min-height:calc(100vh - 155px)}
@media(max-width:800px){.site-footer{padding-bottom:95px}.site-footer .friend-links a,.public-site-footer .friend-links a{display:inline-flex;align-items:center;min-height:44px;margin:0}.footer-summary{display:block}.public-site-footer{padding-bottom:28px}}
