:root{--ink:#18201d;--muted:#68716d;--line:#dce2df;--surface:#fff;--soft:#f4f7f5;--green:#176b4b;--green-dark:#105039;--amber:#a75d13;--danger:#b63838;--shadow:0 12px 34px rgba(24,32,29,.1)}
*{box-sizing:border-box}html{background:#edf2ef;color:var(--ink);font-family:"Microsoft YaHei","PingFang SC",system-ui,sans-serif;letter-spacing:0}body{margin:0;min-height:100vh;overflow-x:hidden}button,input,select,textarea{font:inherit;letter-spacing:0;min-width:0}button{cursor:pointer}.hidden{display:none!important}.login-shell{min-height:100dvh;display:grid;place-items:center;padding:24px;background:#e5eee9}.login-panel{width:min(calc(100vw - 40px),390px);background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);padding:32px;border-radius:8px}.brand-mark{width:48px;height:48px;display:grid;place-items:center;background:var(--ink);color:#fff;font-size:24px;font-weight:800;border-radius:6px}.login-panel h1{font-size:24px;margin:20px 0 6px}.login-panel p{color:var(--muted);margin:0 0 28px}.login-panel label,.dispatch-form label{display:grid;gap:7px;font-size:14px;font-weight:650}.password-row{display:grid;grid-template-columns:minmax(0,1fr) 44px;gap:8px;margin:8px 0 18px}input,select,textarea{width:100%;min-height:44px;border:1px solid #bbc6c0;border-radius:6px;background:#fff;color:var(--ink);padding:10px 12px;outline:none}textarea{resize:vertical}input:focus,select:focus,textarea:focus{border-color:var(--green);box-shadow:0 0 0 3px rgba(23,107,75,.12)}button{border:0;border-radius:6px;min-height:42px;padding:9px 15px;font-weight:700}.primary{background:var(--green);color:#fff}.primary:hover{background:var(--green-dark)}.secondary{background:#e7eee9;color:#204b39}.text-button,.danger-link{background:transparent;color:var(--danger);padding-left:0}.full{width:100%}.icon-button{width:42px;padding:0;background:#edf1ef;color:var(--ink);font-size:18px}.form-error{color:var(--danger);font-size:13px;margin-top:12px;min-height:18px}.app-shell{min-height:100dvh;padding-bottom:calc(74px + env(safe-area-inset-bottom))}.topbar{height:62px;background:var(--ink);color:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 max(18px,calc((100vw - 1180px)/2));position:sticky;top:0;z-index:20}.topbar strong{font-size:19px}.topbar span{margin-left:8px;color:#b9c6c0;font-size:13px}.profile-button{background:#2d3934;color:#fff;min-height:36px}.workspace{max-width:1180px;margin:auto;padding:24px}.tab-page{display:none}.tab-page.active{display:block}.page-heading,.section-heading{display:flex;align-items:center;justify-content:space-between;gap:16px}.page-heading{margin-bottom:20px}.page-heading h1{font-size:24px;margin:0 0 5px}.page-heading p,.section-heading span{margin:0;color:var(--muted);font-size:13px}.status-chip{display:inline-flex;align-items:center;background:#e5eee9;color:var(--green-dark);border:1px solid #c9d8d0;border-radius:999px;padding:6px 10px;font-size:12px;white-space:nowrap}.dispatch-form{display:grid;gap:16px}.form-section,.progress-panel,.results-panel{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:20px}.form-section h2,.section-heading h2{font-size:16px;margin:0 0 18px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.span-2{grid-column:span 2}.field-hint{color:var(--muted);font-weight:400;line-height:1.5}.choice-group{display:flex;gap:8px;flex-wrap:wrap}.choice-group label{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:6px;padding:9px 11px;background:var(--soft);font-weight:600}.choice-group input{width:18px;min-height:18px;margin:0;accent-color:var(--green)}fieldset{border:0;padding:0;margin:0}legend{font-size:14px;font-weight:650;margin-bottom:7px}.form-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.submit-analysis{margin-left:auto;min-width:180px}.progress-panel{margin-top:16px}.progress-copy{display:flex;justify-content:space-between;gap:12px;margin-bottom:12px}.progress-track{height:8px;background:#e4e9e6;border-radius:8px;overflow:hidden}.progress-track div{height:100%;background:var(--green);width:0;transition:width .2s}.results-panel{margin-top:16px}.result-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.result-card{border:1px solid var(--line);border-left:4px solid var(--green);border-radius:6px;padding:16px}.result-card header{display:flex;align-items:center;gap:10px}.rank{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:var(--ink);color:#fff;font-weight:800}.result-card h3{font-size:16px;margin:0}.result-card dl{display:grid;grid-template-columns:auto minmax(0,1fr);gap:7px 12px;font-size:13px}.result-card dt{color:var(--muted)}.result-card dd{margin:0;overflow-wrap:anywhere}.recommendation{font-size:13px;color:var(--green-dark);line-height:1.65}.full-results{margin-top:18px}.full-results summary{font-weight:700;cursor:pointer}.full-row{display:grid;grid-template-columns:42px minmax(0,1fr) repeat(3,minmax(90px,auto));gap:12px;padding:12px 0;border-bottom:1px solid var(--line);font-size:13px}.archive-list,.history-list,.failure-list{display:grid;gap:10px}.archive-item,.history-item,.failure-item{background:var(--surface);border:1px solid var(--line);padding:16px;border-radius:7px}.archive-item header{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.archive-item h3{font-size:16px;margin:0}.archive-item p,.history-item p,.failure-item p{color:var(--muted);font-size:13px;line-height:1.55;margin:6px 0 0}.archive-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.metric-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin-bottom:24px}.metric{background:var(--surface);border:1px solid var(--line);padding:16px;border-radius:7px}.metric strong{display:block;font-size:24px}.metric span{font-size:13px;color:var(--muted)}.sync-actions{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:14px}.sync-message{padding:14px 16px;border-left:4px solid var(--amber);background:#fff8eb;margin-bottom:16px;font-size:14px}.bottom-nav{position:fixed;bottom:0;left:0;right:0;height:64px;background:#fff;border-top:1px solid var(--line);display:flex;z-index:30;padding-bottom:env(safe-area-inset-bottom)}.bottom-nav button{flex:1;background:#fff;color:var(--muted);border-radius:0;font-size:12px;padding:6px}.bottom-nav button span{display:block;margin:0;font-size:20px;line-height:22px}.bottom-nav button.active{color:var(--green)}.toast{position:fixed;left:50%;top:78px;transform:translate(-50%,-18px);background:var(--ink);color:#fff;padding:11px 16px;border-radius:6px;z-index:100;opacity:0;pointer-events:none;transition:.2s;max-width:calc(100vw - 32px)}.toast.show{opacity:1;transform:translate(-50%,0)}
@media(max-width:820px){.workspace{padding:18px 14px}.topbar{padding:0 14px}.result-list{grid-template-columns:1fr}.full-row{grid-template-columns:34px minmax(0,1fr) 80px}.full-row span:nth-child(4),.full-row span:nth-child(5){display:none}.form-grid{grid-template-columns:1fr}.span-2{grid-column:auto}.form-section{padding:16px}.submit-analysis{width:100%;margin-left:0}.form-actions{display:grid;grid-template-columns:1fr 1fr}.form-actions .submit-analysis{grid-column:span 2}.page-heading{align-items:flex-start}.page-heading h1{font-size:21px}.archive-item header{display:block}.archive-actions{justify-content:flex-start;margin-top:12px}.login-panel{padding:28px 24px}}
@media(min-width:900px){.bottom-nav{left:0;top:62px;bottom:0;width:90px;height:auto;display:grid;align-content:start;padding:20px 0;border-top:0;border-right:1px solid var(--line)}.bottom-nav button{flex:0;height:68px}.workspace{padding-left:114px}.app-shell{padding-bottom:0}}
.checkbox-line input{width:18px;min-height:18px;margin:0;accent-color:var(--green)}.dispatch-form label.checkbox-line{display:flex;align-items:center;align-self:end;min-height:44px;border:1px solid var(--line);border-radius:6px;padding:10px 12px;background:var(--soft)}
button:disabled{cursor:not-allowed;opacity:.68}.is-busy::before{content:"";display:inline-block;width:15px;height:15px;margin-right:8px;vertical-align:-2px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:busy-spin .75s linear infinite}.sync-message.is-busy{border-left-color:var(--green);background:#eef7f1;color:var(--green-dark);font-weight:650}.progress-panel[aria-busy="true"] .progress-track div{position:relative;min-width:8%;overflow:hidden}.progress-panel[aria-busy="true"] .progress-track div::after{content:"";position:absolute;inset:0;background:rgba(255,255,255,.35);transform:translateX(-100%);animation:progress-sweep 1.2s ease-in-out infinite}@keyframes busy-spin{to{transform:rotate(360deg)}}@keyframes progress-sweep{to{transform:translateX(100%)}}@media(prefers-reduced-motion:reduce){.is-busy::before,.progress-panel[aria-busy="true"] .progress-track div::after{animation:none}}
