:root{--ink:#1f2621;--muted:#6d756f;--line:#dfe4df;--paper:#f7f8f5;--panel:#ffffff;--moss:#355d4a;--moss-dark:#244437;--moss-soft:#e6eee9;--clay:#a45f3e;--amber:#9a6a10;--red:#a03939;--shadow:0 12px 36px rgba(28,44,34,0.07);--radius:16px}*{box-sizing:border-box}html{background:var(--paper);color:var(--ink);font-family:Inter,PingFang SC,Microsoft YaHei,Noto Sans CJK SC,system-ui,sans-serif}body{margin:0}button,input,select,textarea{font:inherit}:focus-visible{outline:2px solid var(--moss);outline-offset:2px;border-radius:6px}.visually-hidden{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}button{border:0;border-radius:10px;background:var(--moss);color:white;cursor:pointer;font-weight:650;min-height:42px;padding:10px 16px}button:hover{background:var(--moss-dark)}button:disabled{cursor:not-allowed;opacity:.5}button.secondary{background:var(--moss-soft);color:var(--moss-dark)}button.secondary:hover{background:#d8e5dd}button.danger-quiet,button.privacy-toggle,button.quiet{background:transparent;border:1px solid var(--line);color:var(--ink)}button.danger-quiet:hover,button.privacy-toggle:hover,button.quiet:hover{background:#f0f2ef}button.danger-quiet{color:var(--red)}button.danger-button{background:var(--red)}button.danger-button:hover{background:#8f2e2a}button.privacy-toggle{color:var(--amber)}button.privacy-toggle.allowed{background:var(--moss-soft);border-color:#bcd0c3;color:var(--moss)}button.full{width:100%}button.icon-button{font-size:1.2rem;line-height:1;min-height:36px;padding:4px 12px}input,select,textarea{background:white;border:1px solid var(--line);border-radius:9px;color:var(--ink);min-height:42px;padding:10px 12px;width:100%}input[aria-invalid=true],textarea[aria-invalid=true]{border-color:var(--red)}textarea{min-height:88px;resize:vertical}label{color:var(--muted);display:grid;font-size:.84rem;font-weight:650;gap:7px}.field-error{color:var(--red);font-size:.76rem;font-weight:550}.field-hint{color:var(--muted);font-size:.74rem;font-weight:450}.checkbox-label{align-items:center;display:flex;flex-direction:row;gap:9px}.checkbox-label input{accent-color:var(--moss);height:18px;min-height:0;width:18px}h1,h2,h3,h4,p{margin-top:0}h1{font-size:1.1rem;margin-bottom:0}h2{font-size:clamp(1.5rem,3vw,2.2rem);letter-spacing:-.03em}h3{font-size:1rem;line-height:1.45;margin-bottom:8px}p{line-height:1.65}.app-shell{min-height:100vh}.topbar{background:rgba(255,255,255,.95);border-bottom:1px solid var(--line);justify-content:space-between;min-height:76px;padding:12px clamp(20px,4vw,56px);position:sticky;top:0;z-index:20}.brand-lockup,.topbar{align-items:center;display:flex}.brand-lockup{gap:12px}.brand-mark{align-items:center;background:var(--moss);border-radius:12px;color:white;display:flex;font-family:serif;font-size:1.45rem;height:44px;justify-content:center;width:44px}.eyebrow,.mini-label{color:var(--moss);font-size:.72rem;font-weight:750;letter-spacing:.08em;margin-bottom:3px;text-transform:uppercase}.topbar-status{align-items:flex-end;display:flex;flex-direction:column;gap:5px}.mode-badge{background:#fff1d7;border:1px solid #e8c98e;border-radius:999px;color:#76520f;font-size:.76rem;font-weight:750;padding:6px 10px}.save-state{color:var(--muted);font-size:.74rem}.boundary-banner{background:#27362e;color:#edf3ef;font-size:.78rem;line-height:1.5;padding:10px clamp(20px,4vw,56px);text-align:center}.confirm-backdrop{align-items:center;background:rgba(31,38,33,.48);display:flex;inset:0;justify-content:center;padding:20px;position:fixed;z-index:90}.confirm-dialog{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 24px 70px rgba(22,34,26,.24);max-width:460px;padding:24px;width:100%}.confirm-dialog h2{font-size:1.2rem;margin-bottom:10px}.confirm-dialog p{color:var(--muted)}.confirm-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:20px}.toast{align-items:center;animation:toast-in .18s ease-out;border-radius:12px;bottom:22px;box-shadow:0 14px 40px rgba(28,44,34,.22);display:flex;font-size:.88rem;gap:8px;left:50%;max-width:min(620px,calc(100vw - 32px));padding:12px 14px 12px 18px;position:fixed;transform:translateX(-50%);z-index:60}.toast.info{background:#27362e;color:#edf3ef}.toast.success{background:#e3f0e8;border:1px solid #bcd0c3;color:#1d4a33}.toast.error{background:#f7dddd;border:1px solid #e3b6b6;color:#7c2525}.toast button{background:transparent;color:inherit;flex:0 0 auto;font-size:1.2rem;min-height:auto;padding:0 2px}.toast button:hover{background:transparent;opacity:.7}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%)}}.workspace{display:grid;grid-template-columns:264px minmax(0,1fr);margin:0 auto;max-width:1500px;min-height:calc(100vh - 112px)}.sidebar{border-right:1px solid var(--line);display:flex;flex-direction:column;gap:22px;padding:28px 20px}.project-mini{background:var(--panel);border:1px solid var(--line);border-radius:13px;display:grid;gap:6px;padding:15px}.project-mini span:last-child{color:var(--muted);font-size:.74rem}.sidebar nav{display:grid;gap:6px}.nav-item{background:transparent;color:var(--ink);flex-direction:row;font-weight:650;gap:11px;min-height:55px;padding:9px 11px;text-align:left}.nav-item,.step-index{align-items:center;display:flex}.step-index{background:var(--paper);border:1px solid var(--line);border-radius:99px;color:var(--muted);flex:0 0 auto;font-size:.7rem;font-weight:750;height:28px;justify-content:center;width:28px}.step-index.done{background:var(--moss-soft);border-color:#bcd0c3;color:var(--moss)}.step-text{display:grid;gap:1px}.step-text small{color:var(--muted);font-size:.7rem;font-weight:500}.nav-item.active,.nav-item:hover{background:var(--moss-soft);color:var(--moss-dark)}.nav-item.active .step-index{background:var(--moss);border-color:var(--moss);color:white}.sidebar-actions{display:grid;gap:8px;margin-top:auto}.content{min-width:0;padding:42px clamp(24px,5vw,72px) 80px}.section-stack{display:grid;gap:22px}.section-header{max-width:780px}.section-header h2{margin-bottom:10px}.section-header>p:last-child{color:var(--muted);margin-bottom:0}.constraint-row,.diagnosis-card,.empty-state,.error-panel,.export-summary article,.loading-panel,.material-card,.panel,.route-card,.timeline article{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.panel{padding:20px}.form-grid{display:grid;gap:16px;grid-template-columns:2fr 1fr 1fr}.upload-panel{align-items:center;display:flex;flex-wrap:wrap;gap:16px;justify-content:space-between}.upload-panel.drag-over{border-color:var(--moss);border-style:dashed;background:var(--moss-soft)}.upload-panel h3,.upload-panel p{margin-bottom:4px}.upload-panel p{color:var(--muted);font-size:.82rem;max-width:460px}.upload-controls input{max-width:440px}.upload-failures{border-left:3px solid var(--red);color:var(--red);flex-basis:100%;font-size:.8rem;list-style:none;margin:0;padding:4px 0 4px 12px}.annotation-list,.constraint-list,.material-list,.timeline{display:grid;gap:12px}.material-card{display:grid;gap:16px;padding:18px}.material-main{display:grid;gap:14px;grid-template-columns:48px 1fr}.material-title{align-items:center;display:flex;flex-wrap:wrap;gap:8px}.material-title h3{margin-bottom:0}.parse-badge{background:#f0f2ef;border:1px solid var(--line);border-radius:999px;color:var(--muted);font-size:.68rem;font-weight:700;padding:3px 8px;white-space:nowrap}.parse-badge.parsed{border-color:#bcd0c3}.file-icon,.parse-badge.parsed{background:var(--moss-soft);color:var(--moss)}.file-icon{align-items:center;border-radius:9px;display:flex;font-size:.68rem;font-weight:800;height:48px;justify-content:center}.material-card blockquote,.material-card p{color:var(--muted);font-size:.82rem;margin-bottom:0}.material-card blockquote{border-left:3px solid #cbd9cf;line-height:1.6;margin:10px 0 0;padding-left:12px}.material-controls{align-items:end;display:flex;flex-wrap:wrap;gap:8px}.inline-select{font-size:.72rem;gap:4px}.material-controls select{min-height:40px;width:auto}.material-controls button{min-height:40px}.constraint-form{align-items:start;display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.constraint-form .constraint-value{grid-column:span 2}.constraint-form textarea{min-height:42px}.constraint-form button{margin-top:26px}.constraint-row{align-items:start;display:grid;gap:16px;grid-template-columns:130px 1fr auto;padding:16px}.constraint-row p{color:var(--muted);margin-bottom:0}.confirm-note{font-size:.76rem;margin-top:4px}.evidence,.rank,.risk{border-radius:999px;display:inline-flex;font-size:.7rem;font-weight:750;padding:5px 8px;width:fit-content}.evidence.confirmed_fact,.evidence.professional_confirmed{background:#e3f0e8;color:#276243}.evidence.user_preference{background:#e7eef7;color:#345d83}.evidence.ai_inference{background:#fff1d7;color:#76520f}.evidence.site_pending{background:#f1e8f4;color:#6e4378}.mode-strip{display:flex;flex-wrap:wrap;gap:8px}.mode-item{border-radius:999px;font-size:.74rem;font-weight:700;padding:6px 12px}.mode-item.available{background:#e3f0e8;color:#276243}.mode-item.unavailable{background:#f0f2ef;border:1px dashed #c6ccc7;color:var(--muted)}.space-toolbar{align-items:center;display:flex;flex-wrap:wrap;gap:16px;justify-content:space-between}.space-tabs,.toolbar-actions{display:flex;flex-wrap:wrap;gap:8px}.space-tab{align-items:center;background:transparent;border:1px solid var(--line);color:var(--ink);display:inline-flex;gap:7px}.space-tab.active{background:var(--moss);border-color:var(--moss);color:white}.tab-state{font-size:.68rem;font-weight:650;opacity:.85}.tab-state.pending{color:var(--muted)}.space-tab.active .tab-state.pending{color:rgba(255,255,255,.75)}.tab-state.done{color:var(--moss)}.space-tab.active .tab-state.done{color:white}.error-panel{align-items:center;border-left:4px solid var(--red);display:flex;flex-wrap:wrap;gap:16px;justify-content:space-between;padding:18px 20px}.error-panel h3{margin-bottom:6px}.error-panel p{color:var(--muted);font-size:.84rem;margin-bottom:0;max-width:620px}.error-code{color:var(--red);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.72rem;font-weight:750;letter-spacing:.06em;margin-bottom:4px}.error-actions{display:flex;flex:0 0 auto;gap:8px}.loading-panel{align-items:center;color:var(--muted);display:flex;gap:12px;justify-content:center;min-height:140px;padding:30px}.spinner{animation:spin .9s linear infinite;border-radius:99px;border:3px solid var(--moss-soft);border-top-color:var(--moss);display:inline-block;height:22px;width:22px}@keyframes spin{to{transform:rotate(1turn)}}.run-meta{color:var(--muted);display:flex;flex-wrap:wrap;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.72rem;gap:12px}.warning-list{background:#fff8e8;border:1px solid #ead9b2;border-radius:12px;color:#654c1b;padding:12px 16px}.warning-list p{font-size:.8rem;margin-bottom:3px}.warning-list p:last-child{margin-bottom:0}.subheading{font-size:1.2rem;margin:10px 0 -5px}.diagnosis-grid{display:grid;gap:14px;grid-template-columns:repeat(auto-fill,minmax(290px,1fr))}.route-grid{display:grid;gap:14px;grid-template-columns:repeat(3,minmax(0,1fr))}.diagnosis-card,.route-card{padding:18px}.route-card{display:flex;flex-direction:column}.route-card>button{margin-top:auto}.diagnosis-card dd,.diagnosis-card p,.route-card dd,.route-card p{color:var(--muted);font-size:.82rem}.card-topline{align-items:center;color:var(--muted);display:flex;flex-wrap:wrap;font-size:.72rem;gap:8px;justify-content:space-between;margin-bottom:12px}.evidence-mini{font-size:.7rem}.rank,.risk.low{background:#e3f0e8;color:#276243}.risk.medium{background:#fff1d7;color:#76520f}.risk.high{background:#f8e4dc;color:#8c452a}.risk.critical{background:#f7dddd;color:#982d2d}dl{display:grid;gap:10px;margin:16px 0}dl div{border-top:1px solid var(--line);padding-top:9px}dt{color:var(--ink);font-size:.72rem;font-weight:750;margin-bottom:3px}dd{line-height:1.55;margin:0}.review-route{background:#f1e8f4;border-radius:8px;color:#6e4378!important;padding:8px 10px}.route-goal{color:var(--ink)!important;font-weight:650}.score-list{display:grid;gap:7px;margin:16px 0}.score-list>div{align-items:center;display:grid;font-size:.7rem;gap:7px;grid-template-columns:34px 1fr 26px}.score-track{background:#edf0ed;border-radius:99px;height:6px;overflow:hidden}.score-track i{background:var(--moss);display:block;height:100%}.risk-list{background:#faf6f2;border-radius:10px;padding:10px}.risk-list p{margin-bottom:5px}.risk-list p:last-child{margin-bottom:0}.boundary-note{border-left:3px solid #e8c98e;font-size:.72rem!important;padding-left:9px}.cost-basis{background:#f0f2ef;border-radius:999px;font-size:.66rem;font-weight:700;margin-left:6px;padding:2px 7px}.cost-disclaimer{color:var(--muted);display:block;font-size:.72rem;margin-top:3px}.source-chips{display:inline-flex;flex-wrap:wrap;gap:6px}.source-chip{background:#e7eef7;border:0;border-radius:999px;color:#345d83;cursor:pointer;font-size:.72rem;font-weight:650;min-height:0;padding:4px 10px;text-align:left}.source-chip:hover{background:#d8e4f2;color:#274a6b}.source-chip.missing{background:#f0f2ef;color:var(--muted);cursor:default}.routes-head{align-items:center;display:flex;flex-wrap:wrap;gap:12px;justify-content:space-between}.routes-head .subheading{margin:10px 0 0}.view-toggle{background:#f0f2ef;border-radius:10px;display:inline-flex;gap:3px;padding:3px}.view-toggle .toggle{background:transparent;border-radius:8px;color:var(--muted);font-size:.8rem;min-height:34px;padding:5px 14px}.view-toggle .toggle:hover{color:var(--ink)}.view-toggle .toggle.active{background:white;box-shadow:0 2px 8px rgba(28,44,34,.1);color:var(--moss-dark)}.compare-scroll{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow-x:auto}.compare-table{border-collapse:collapse;font-size:.82rem;min-width:760px;width:100%}.compare-table td,.compare-table th{border-bottom:1px solid var(--line);padding:12px 14px;text-align:left;vertical-align:top}.compare-table thead th{background:#fbfcfa;position:sticky;top:0}.compare-table thead th .compare-title{display:block;font-size:.92rem;margin-top:6px}.compare-table tbody th{color:var(--muted);font-size:.72rem;font-weight:750;letter-spacing:.04em;white-space:nowrap;width:96px}.compare-table td{color:var(--ink);line-height:1.6}.compare-table tr:last-child td,.compare-table tr:last-child th{border-bottom:0}.table-score{align-items:center;display:grid;gap:8px;grid-template-columns:1fr 28px;max-width:220px}.table-risk{color:var(--muted);font-size:.78rem;margin-bottom:4px}.table-risk:last-child{margin-bottom:0}.drawer-root{inset:0;position:fixed;z-index:70}.drawer-backdrop{background:rgba(31,38,33,.35);inset:0;position:absolute}.drawer{animation:drawer-in .2s ease-out;background:var(--panel);box-shadow:-18px 0 48px rgba(28,44,34,.18);display:flex;flex-direction:column;height:100%;max-width:min(420px,92vw);position:absolute;right:0;top:0;width:100%}@keyframes drawer-in{0%{transform:translateX(24px);opacity:0}to{transform:translateX(0);opacity:1}}.drawer-head{align-items:center;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;padding:18px 20px}.drawer-head h3{margin-bottom:0}.drawer-body{overflow-y:auto;padding:20px}.source-detail .mini-label{letter-spacing:.02em;text-transform:none}.source-detail h4{font-size:1.02rem;margin:12px 0 4px}.source-detail blockquote{border-left:3px solid #cbd9cf;color:var(--ink);line-height:1.7;margin:14px 0;padding-left:12px}.drawer-note{color:var(--muted);font-size:.78rem}.decision-form{display:grid;gap:14px;grid-template-columns:1fr 1fr}.decision-form .wide,.decision-form>button{grid-column:1/-1}.constraint-linker{border:1px solid var(--line);border-radius:10px;margin:0;padding:12px 14px}.constraint-linker legend{color:var(--muted);font-size:.84rem;font-weight:650;padding:0 6px}.constraint-link-options{display:grid;gap:8px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.route-context{background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:12px 14px}.route-context p{color:var(--ink);font-size:.86rem;font-weight:600;margin-bottom:0}.timeline article{margin-left:10px;padding:18px 18px 18px 26px;position:relative}.timeline article.timeline-new{animation:highlight 1.6s ease-out}@keyframes highlight{0%{background:var(--moss-soft)}to{background:var(--panel)}}.timeline-dot{background:var(--moss);border:4px solid var(--paper);border-radius:99px;height:16px;left:-8px;position:absolute;top:20px;width:16px}.timeline article p{color:var(--muted);margin-bottom:6px}.action-tag{border-radius:999px;font-size:.74rem;padding:4px 10px}.action-tag.accepted{background:#e3f0e8;color:#276243}.action-tag.rejected{background:#f7dddd;color:#982d2d}.action-tag.changed{background:#e7eef7;color:#345d83}.action-tag.pending{background:#f1e8f4;color:#6e4378}.export-actions{align-items:center;display:flex;flex-wrap:wrap;gap:10px}.export-summary{display:grid;gap:14px;grid-template-columns:repeat(3,1fr)}.export-summary article{display:grid;gap:4px;padding:20px}.export-summary strong{color:var(--moss);font-size:2rem}.export-summary span{color:var(--muted);font-size:.8rem}.export-preview{background:#202722;border-radius:var(--radius);color:#edf3ef;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.78rem;line-height:1.65;margin:0;max-height:620px;overflow:auto;padding:22px;white-space:pre-wrap}.annotation-banner{background:#f1e8f4;border:1px solid #ddc9e3;border-radius:12px;color:#6e4378;font-size:.82rem;font-weight:650;padding:12px 16px}.empty-state{color:var(--muted);flex-direction:column;min-height:180px;padding:30px;text-align:center}.empty-state,.empty-state>span{align-items:center;display:flex;justify-content:center}.empty-state>span{background:var(--moss-soft);border-radius:99px;color:var(--moss);font-size:1.4rem;height:44px;margin-bottom:12px;width:44px}.empty-state h3{color:var(--ink)}.empty-state p{font-size:.83rem;margin-bottom:0;max-width:540px}@media (max-width:1050px){.workspace{grid-template-columns:220px minmax(0,1fr)}.form-grid{grid-template-columns:1fr 1fr}.diagnosis-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}.route-grid{grid-template-columns:1fr}.constraint-form{grid-template-columns:1fr 1fr}.constraint-form .constraint-value,.constraint-form button{grid-column:1/-1}.constraint-form button{margin-top:0}}@media (max-width:760px){.topbar{align-items:flex-start;position:static}.topbar-status{align-items:flex-end}.workspace{display:block}.sidebar{border-bottom:1px solid var(--line);border-right:0;gap:10px;padding:10px 12px;position:sticky;top:0;background:rgba(247,248,245,.97);z-index:15}.project-mini{display:none}.sidebar nav{-webkit-overflow-scrolling:touch;display:flex;gap:6px;overflow-x:auto;padding-bottom:2px}.nav-item{flex:0 0 auto;gap:7px;min-height:46px;padding:6px 10px;white-space:nowrap}.step-index{height:22px;width:22px}.step-text small{display:none}.sidebar-actions{display:flex;gap:8px}.sidebar-actions button{flex:1;font-size:.8rem;min-height:38px}.content{padding:24px 16px 60px}.decision-form,.diagnosis-grid,.export-summary,.form-grid,.route-grid{grid-template-columns:1fr}.space-toolbar,.upload-panel{align-items:stretch;flex-direction:column}.upload-controls input{max-width:none}.toolbar-actions button{flex:1}.material-controls{align-items:stretch;flex-direction:column}.material-controls select{width:100%}.constraint-row{grid-template-columns:1fr}.error-panel{align-items:stretch;flex-direction:column}.drawer{max-width:100vw}}@media (max-width:520px){.brand-lockup h1,.save-state{display:none}.mode-badge{max-width:150px;text-align:center}.constraint-form,.form-grid{grid-template-columns:1fr}.constraint-form .constraint-value,.constraint-form button{grid-column:auto}.material-main{grid-template-columns:1fr}}@media print{.boundary-banner,.export-actions,.sidebar,.toast,.topbar,.view-toggle{display:none!important}.workspace{display:block}.content{padding:0}.export-preview{background:white;color:black;max-height:none;overflow:visible}}