:root{color:#19211c;font-synthesis:none;background:#f4f7f5;font-family:Inter,PingFang SC,Microsoft YaHei,sans-serif}*{box-sizing:border-box}body{min-width:320px;margin:0}.dev-role-switcher{color:#624711;background:#fff3cc;border-bottom:2px solid #b78b2e;flex-wrap:wrap;align-items:center;gap:12px;padding:12px 24px;display:flex}.dev-role-switcher [role=group]{flex-wrap:wrap;gap:6px;display:flex}.dev-role-switcher button{min-height:36px;color:inherit;cursor:pointer;background:#fffdf6;border:1px solid #b78b2e;border-radius:8px;padding:6px 12px}.dev-role-switcher button[aria-pressed=true]{color:#fff;background:#624711}.dev-role-switcher button:disabled{cursor:wait;opacity:.6}button,input,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible{outline-offset:2px;outline:3px solid #75b58f}.app-shell{grid-template-columns:190px minmax(0,1fr);min-height:100vh;display:grid}.sidebar{color:#f1f7f3;background:#173d2a;padding:24px 14px}.brand{letter-spacing:.06em;margin:0 8px 28px;font-size:13px;font-weight:600}.nav-link{color:#dce9e0;border-radius:9px;padding:10px 12px;text-decoration:none;display:block}.nav-link--active{color:#fff;background:#ffffff21}.page-content,.detail-page{width:min(1200px,100%);margin:0 auto;padding:28px}.page-heading,.detail-heading{justify-content:space-between;align-items:flex-start;gap:20px;display:flex}.eyebrow,.muted,.current-stage{color:#68766d}.eyebrow{margin:0 0 4px;font-size:12px}h1,h2,p{margin-top:0}h1{letter-spacing:-.02em;margin-bottom:0;font-size:clamp(24px,3vw,32px);font-weight:560}h2{font-size:16px;font-weight:600}.status-pill,.tag,.unavailable{border-radius:999px;align-items:center;width:max-content;padding:5px 9px;font-size:12px;display:inline-flex}.status-pill{color:#245b3c;background:#e4eee7}.unavailable{color:#68766d;background:#edf1ee}.filters{flex-wrap:wrap;gap:8px;margin:22px 0 16px;display:flex}.filters button,.dialog-actions button,.notice button{min-height:38px;color:inherit;cursor:pointer;background:#fff;border:1px solid #cbd6ce;border-radius:9px;padding:7px 11px}.filters button[aria-pressed=true]{color:#fff;background:#1f5638;border-color:#1f5638}.filters button:disabled{cursor:not-allowed;color:#7d8a82;background:#eef1ef}.project-table-wrap,.panel,.notice,.empty-state{background:#fff;border:1px solid #dce5df;border-radius:14px;overflow:hidden}.project-table{border-collapse:collapse;text-align:left;width:100%}.project-table th,.project-table td{vertical-align:middle;border-bottom:1px solid #e6ece8;padding:13px 14px}.project-table th{color:#68766d;background:#f7f9f8;font-size:12px;font-weight:500}.project-table tr:last-child td{border-bottom:0}.project-link{color:inherit;gap:4px;text-decoration:none;display:grid}.project-link strong{font-weight:600}.project-link span{color:#68766d;font-size:13px}.project-link:hover strong{color:#1f5638;text-decoration:underline}.notice,.empty-state{padding:24px}.notice--error{color:#803d27;background:#fff7f3;border-color:#efc7ba}.notice button{margin-top:6px}.back-link{color:#245b3c;margin-bottom:20px;font-weight:600;text-decoration:none;display:inline-block}.back-link:hover{text-decoration:underline}.detail-heading{border-bottom:1px solid #dce5df;padding-bottom:23px}.current-stage{margin:9px 0 0}.primary-button{color:#fff;cursor:pointer;background:#1f5638;border:0;border-radius:10px;min-height:40px;padding:9px 14px;font-weight:600}.primary-button:disabled{cursor:wait;background:#96a99c}.capability-note{color:#68766d;margin:7px 0}.detail-grid{grid-template-columns:minmax(0,1.65fr) minmax(280px,1fr);gap:16px;margin-top:20px;display:grid}.panel{padding:18px}.panel--wide{grid-row:span 2}.panel h2{margin-bottom:15px}.stage-track{gap:0;margin:0;padding:0;list-style:none;display:grid}.stage-track__item{color:#6e7c73;grid-template-columns:28px 1fr;align-items:center;gap:10px;min-height:42px;display:grid;position:relative}.stage-track__item:not(:last-child):after{content:"";background:#dce5df;width:2px;height:20px;position:absolute;top:32px;left:13px}.stage-track__number{z-index:1;color:#5d6d63;background:#edf1ee;border-radius:999px;place-items:center;width:27px;height:27px;font-size:12px;display:grid}.stage-track__item--done{color:#245b3c}.stage-track__item--done .stage-track__number{color:#1f5638;background:#dceee2}.stage-track__item--done:not(:last-child):after{background:#7fbd97}.stage-track__item--current{color:#19211c;font-weight:700}.stage-track__item--current .stage-track__number{color:#fff;background:#1f5638;box-shadow:0 0 0 4px #e4eee7}.action-list{gap:10px;margin:0;padding:0;list-style:none;display:grid}.action-list__item{border-bottom:1px solid #e6ece8;justify-content:space-between;align-items:center;gap:12px;padding-bottom:10px;display:flex}.action-list__item:last-child{border-bottom:0;padding-bottom:0}.tag{color:#245b3c;white-space:nowrap;background:#e4eee7}.empty-copy{color:#68766d;margin:0;line-height:1.6}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.member-list{gap:10px;margin:0;padding:0;list-style:none;display:grid}.member-list li{border-bottom:1px solid #e6ece8;justify-content:space-between;align-items:center;gap:12px;padding-bottom:10px;display:flex}.member-list li:last-child{border-bottom:0;padding-bottom:0}.dialog-backdrop{z-index:10;background:#1123196b;place-items:center;padding:18px;display:grid;position:fixed;inset:0}.dialog{background:#fff;border-radius:16px;width:min(520px,100%);max-height:calc(100vh - 36px);overflow:auto;box-shadow:0 18px 44px #122b1c3d}.dialog header,.dialog form{padding:20px}.dialog header{padding-bottom:0}.dialog header p{color:#68766d;font-size:14px;line-height:1.55}.dialog label{margin:14px 0 7px;font-size:14px;font-weight:600;display:block}.dialog textarea,.dialog input:not([type=checkbox]){border:1px solid #bfcac2;border-radius:8px;width:100%;padding:9px}.dialog textarea{resize:vertical;min-height:78px}.checkbox-label{align-items:center;gap:8px;display:flex!important}.exception-fields{border-left:3px solid #d7e4db;padding-left:12px}.form-error{color:#a33f25;margin:14px 0 0;font-size:14px}.dialog-actions{justify-content:flex-end;gap:10px;margin-top:20px;display:flex}@media (width<=820px){.app-shell{grid-template-columns:1fr}.sidebar{display:none}.page-content,.detail-page{padding:18px}.detail-grid{grid-template-columns:1fr}.panel--wide{grid-row:auto}}@media (width<=620px){.page-heading,.detail-heading{flex-direction:column}.project-table thead{display:none}.project-table,.project-table tbody,.project-table tr,.project-table td{width:100%;display:block}.project-table tr{border-bottom:1px solid #e6ece8;padding:12px 14px}.project-table td{border:0;padding:4px 0}.project-table td:not(:first-child):before{color:#68766d;margin-right:8px;font-size:12px}.project-table td:nth-child(2):before{content:"下一里程碑"}.project-table td:nth-child(3):before{content:"项目负责人"}.project-table td:nth-child(4):before{content:"待确认"}.project-table td:nth-child(5):before{content:"风险"}}.archive-workspace{gap:24px;margin-top:24px;display:grid}.review-workspace{grid-template-columns:minmax(0,1.45fr) minmax(320px,1fr);align-items:start;gap:22px;display:grid}.review-workspace>*,.review-workspace aside{min-width:0}.review-file-tabs{flex-wrap:wrap;gap:8px;margin:20px 0;display:flex}.package-review-page{overflow-wrap:anywhere}.package-review-page button,.package-review-page select{font:inherit;color:#245b3c;cursor:pointer;background:#fff;border:1px solid #bdcdc2;border-radius:8px;min-height:40px;padding:8px 12px}.package-review-page button[aria-pressed=true]{color:#fff;background:#1f5638}.package-review-page button:disabled{opacity:.55;cursor:not-allowed}.package-review-page fieldset{border:0;min-width:0;margin:0;padding:0}.package-review-page label{margin:12px 0 6px;font-size:14px;font-weight:600;display:block}.package-review-page textarea,.package-review-page input{width:100%;font:inherit;color:inherit;background:#fff;border:1px solid #bfcac2;border-radius:8px;padding:9px;display:block}.package-review-page textarea{resize:vertical;min-height:78px;margin-bottom:10px}.review-thread,.review-form,.confirmation-card{margin-bottom:16px}.review-thread header,.confirmation-card header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-bottom:12px;display:flex}.confirmation-card h3{margin:0;font-size:16px}.review-thread .muted,.comment-messages small{color:#68766d;font-size:12px;line-height:1.6}.comment-messages{padding:0;list-style:none}.comment-messages li{border-bottom:1px solid #dce5df;padding:12px 0}.comment-messages p{white-space:pre-wrap;margin-bottom:6px}.comment-badge{border-radius:6px;padding:5px 8px;font-size:12px;font-weight:600;display:inline-flex}.comment-badge--internal{color:#614c23;background:#f4ecda;border:1px dashed #b39a67}.comment-badge--owner{color:#245b3c;background:#e4eee7;border:1px solid #98b5a2}.review-anchor-controls{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:14px;display:flex}.review-anchor-controls label{margin:0}.review-anchor-controls input{width:90px}.preview-image-surface{max-width:100%;line-height:0;display:inline-block;position:relative}.preview-image-surface img{max-width:100%;height:auto;display:block}.preview-region-overlay{touch-action:none;cursor:crosshair;position:absolute;inset:0}.preview-selection{pointer-events:none;background:#75b58f4d;border:2px solid #245b3c;display:block;position:absolute}.preview-document{background:#edf1ee;border:1px solid #dce5df;width:100%;min-height:65vh}.review-preview>.back-link{margin:16px 0 0;display:block}.package-review-page .archive-dialog{padding:20px}.package-review-page .archive-dialog form{padding:0}.package-review-page .danger-button{color:#fff;background:#893c27;border-color:#893c27}.confirmation--voided,.confirmation--superseded{color:#695949;background:#f1ebe5}.hash-text{word-break:break-all}.confirmation-card details{margin-bottom:14px}@media (width<=820px){.review-workspace{grid-template-columns:1fr}.preview-document{min-height:50vh}}.archive-page{overflow-wrap:anywhere}.archive-page button,.archive-page select,.archive-page input{min-height:40px;font:inherit}.archive-page button{color:#245b3c;cursor:pointer;background:#fff;border:1px solid #bdcdc2;border-radius:9px;padding:8px 12px}.archive-page button.primary-button{color:#fff;background:#1f5638}.archive-page button:disabled{opacity:.55;cursor:not-allowed}.archive-page fieldset{border:0;min-width:0;margin:0;padding:0}.archive-page label{margin:12px 0 6px;font-size:14px;font-weight:600;display:block}.archive-page input:not([type=checkbox]),.archive-page select{color:#19211c;background:#fff;border:1px solid #bfcac2;border-radius:8px;width:100%;padding:8px}.archive-page select:focus-visible,.archive-page [tabindex="-1"]:focus-visible{outline-offset:3px;outline:3px solid #75b58f}.archive-page input[type=checkbox]{accent-color:#1f5638;min-width:20px;min-height:20px}.archive-page .checkbox-label{min-height:40px}.archive-page h3{margin:4px 0 12px;font-size:18px}.archive-page h4{margin:0}.archive-section{gap:14px;display:grid}.archive-section>h2{margin:0}.archive-card>header,.section-heading,.version-heading{justify-content:space-between;align-items:center;gap:12px;display:flex}.section-heading h2{margin:0}.archive-card>header{align-items:flex-start}.archive-actions{flex-wrap:wrap;gap:8px;margin-top:14px;display:flex}.upload-type{margin:2px 6px 2px 0;display:inline-block}.upload-panel progress{accent-color:#245b3c;width:100%;margin-top:10px;display:block}.upload-panel [role=status]{color:#245b3c;margin-top:16px}.version-history{gap:10px;margin:0;padding:0;list-style:none;display:grid}.file-state{background:#f7f9f8;border:1px solid #dce5df;border-left:4px solid #a3b2a7;border-radius:10px;padding:13px}.file-state p{margin:8px 0 0;font-size:13px}.file-state--available{border-left-color:#6eaa83}.file-state--received,.file-state--validating,.file-state--previewing{background:#fcfaf4;border-left-color:#c49b54}.file-state--rejected{background:#fff5f0;border-color:#e6b8a7 #e6b8a7 #e6b8a7 #a9472c}.file-state--rejected .status-pill{color:#8b321d;background:#f8ded3}.failure-code,.archive-dialog .publication-warning{color:#8b321d}.package-version{border-top:1px solid #dce5df;margin-top:12px;padding-top:14px}.package-version li,.archive-dialog li{line-height:1.7}.package-editor .version-options{border:1px solid #dce5df;border-radius:10px;margin:20px 0 14px;padding:10px 14px}.ordered-files{padding-left:24px}.ordered-files li{border-bottom:1px solid #e6ece8;padding:10px 0}.ordered-files .archive-actions{margin:0 0 0 12px;display:inline-flex}@media (width<=620px){.archive-card>header,.section-heading,.version-heading{flex-direction:column;align-items:flex-start}.archive-actions{flex-direction:column}.archive-actions button{width:100%}.ordered-files .archive-actions{flex-direction:row;margin:8px 0 0;display:flex}.archive-page .dialog-actions{flex-wrap:wrap}}.operations-nav{background:#fff;border:1px solid #dce5df;border-radius:14px;flex-wrap:wrap;align-items:center;gap:12px;margin:24px 0;padding:18px;display:flex}.operations-nav a{border-radius:8px;padding:10px 16px;font-weight:600;text-decoration:none}.operations-nav .primary-button{margin-left:auto}.project-home{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:0 0 20px;display:grid}.home-progress,.home-card{background:#fff;border:1px solid #dce5df;border-radius:14px;padding:18px}.home-progress{grid-column:1/-1;grid-template-columns:1fr minmax(180px,1fr);align-items:center;gap:10px 24px;display:grid}.home-progress h2,.home-card h2{margin-bottom:10px}.home-progress strong{color:#1f5638;margin-bottom:6px;font-size:24px;display:block}.home-progress progress{accent-color:#1f5638;width:100%}.home-progress .muted{grid-column:1/-1;margin:0;font-size:12px}.home-card ul{gap:10px;margin:0;padding:0;list-style:none;display:grid}.home-card li{border-bottom:1px solid #e6ece8;gap:3px;padding-bottom:9px;display:grid}.home-card li:last-child{border:0;padding-bottom:0}.home-card small{color:#68766d}.workflow-grid{grid-template-columns:minmax(320px,1fr) minmax(320px,1.2fr);align-items:start;gap:24px;display:grid}.workflow-page label{margin:12px 0 8px;font-weight:600;display:block}.workflow-page input,.workflow-page select,.workflow-page textarea{color:#203c2c;max-width:100%;font:inherit;background:#fff;border:1px solid #b7c9bd;border-radius:8px;padding:10px 12px}.workflow-page textarea{resize:vertical;min-height:90px}.workflow-form input,.workflow-form select,.workflow-form textarea{width:100%}.workflow-form fieldset{border:0;min-width:0;margin:0;padding:0}.workflow-page button:disabled{opacity:.55;cursor:not-allowed}.workflow-page :focus-visible,.operations-nav a:focus-visible,#upload-project-file:focus-visible{outline-offset:3px;outline:3px solid #668777}.construction-calendar{grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;display:grid}.calendar-day{color:#203c2c;background:#fafcf9;border:1px solid #dce5df;border-radius:8px;flex-direction:column;gap:8px;min-height:76px;padding:10px 2px;display:flex}.calendar-day span,.calendar-day small{font-size:11px}.calendar-day--submitted{background:#fff4da;border-color:#d9bb76}.calendar-day--needs_revision{background:#fff0e9;border-color:#dcaa93}.calendar-day--reviewed{background:#e6f1e9;border-color:#a1c5aa}.calendar-day[aria-pressed=true]{outline-offset:1px;outline:2px solid #315c43}.workflow-fields{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.workflow-fields dt{color:#65776c;font-size:13px}.workflow-fields dd{white-space:pre-wrap;overflow-wrap:anywhere;margin:5px 0 0}.workflow-photos{flex-wrap:wrap;gap:10px;margin:18px 0;display:flex}.workflow-photo{max-width:160px;margin:0}.workflow-photo img{object-fit:cover;border:1px solid #dce5df;border-radius:8px;width:160px;height:120px}.workflow-form{margin-top:20px}.rectification-list{gap:24px;margin-top:24px;display:grid}@media (width<=900px){.workflow-grid{grid-template-columns:1fr}}@media (width<=620px){.operations-nav{gap:8px;padding:10px}.operations-nav a{text-align:center;flex:40%}.operations-nav .primary-button{margin-left:0}.workflow-fields{grid-template-columns:1fr}.calendar-day{min-height:68px}.workflow-page .detail-heading{flex-direction:column;align-items:flex-start;gap:16px}}@media (width<=700px){.project-home{grid-template-columns:1fr}.home-progress{grid-column:auto;grid-template-columns:1fr}.home-progress .muted{grid-column:auto}}.desktop-login{color:#292e29;background:#f7f5f0;grid-template-columns:1.1fr 1fr;align-items:center;gap:72px;min-height:100vh;padding:64px max(32px,7vw);display:grid}.desktop-login-intro{max-width:580px}.desktop-login-intro h1{letter-spacing:-.035em;margin:56px 0 32px;font-size:clamp(30px,3.4vw,54px);line-height:1.5}.desktop-login-intro>p:last-child{color:#747a72;line-height:2}.desktop-login-card{text-align:center;background:#fffefa;border:1px solid #e0e3d9;border-radius:18px;width:100%;max-width:470px;padding:40px 36px;box-shadow:0 16px 60px #24342108}.desktop-login-card h2{margin:12px 0;font-size:28px}.desktop-login-card p,.desktop-login-card small{line-height:1.8}.desktop-login-card>p{color:#697168}.desktop-login-code{object-fit:contain;background:#fff;place-items:center;width:230px;max-width:100%;height:230px;margin:24px auto 16px;display:grid}.desktop-login-match strong{color:#244832;letter-spacing:.18em;margin-left:10px;font-size:25px}.desktop-login-footnote{border-top:1px solid #e5e6df;margin-top:28px;padding-top:22px;font-size:13px}.desktop-login-retry{min-height:240px;padding:40px 0}.desktop-login-retry button{color:#fff;background:#244832;border-radius:8px;padding:12px 20px}.desktop-session-tools{z-index:20;position:fixed;bottom:18px;left:18px}.desktop-session-tools button{color:#244832;background:#fffefa;padding:8px 12px;font-size:13px}@media (width<=760px){.desktop-login{grid-template-columns:1fr;gap:28px;padding:28px 20px}.desktop-login-intro h1{margin:16px 0;font-size:26px}.desktop-login-intro>p:last-child{display:none}.desktop-login-card{margin:auto;padding:28px 20px}}
