:root{--bg:#f6f4ef;--surface:#fff;--surface-alt:#efebe2;--ink:#1e2a30;--ink-soft:#5c6b72;--ink-faint:#8a968e;--ink-ghost:#b7ada0;--line:#ded8c9;--primary:#0b4f6c;--primary-dark:#08394d;--primary-soft:#e4eef1;--accent:#c1652f;--accent-soft:#f5e3d6;--accent-ink:#8a4a1e;--success:#2e7d4f;--success-soft:#e4f2e9;--warning:#b07c1e;--warning-soft:#fbf0dd;--info:#2f6fa8;--info-soft:#e4eef6}*{box-sizing:border-box}body{background:var(--bg);color:var(--ink);margin:0;font-family:Be Vietnam Pro,sans-serif}a{color:var(--primary);text-decoration:none}button{cursor:pointer;font-family:inherit}input{font-family:inherit}.app{width:100%;min-height:100vh;display:flex}.sidebar{background:var(--primary-dark);color:#eaf1f3;flex-direction:column;flex-shrink:0;gap:18px;width:264px;height:100vh;padding:22px 16px;display:flex;position:sticky;top:0;overflow-y:auto}.brand{border-bottom:1px solid #ffffff24;padding:0 6px 14px}.brand .eyebrow{letter-spacing:.06em;text-transform:uppercase;color:#9fc2ce;font-size:11px;font-weight:600}.brand .sub{color:#7fa3af;font-size:11px}.brand .title{color:#fff;letter-spacing:.02em;font-size:14px;font-weight:700;line-height:1.4}.brand .mod{color:#c7dee4;font-size:12px;line-height:1.4}.nav{flex-direction:column;gap:2px;display:flex}.nav a{color:#c7dee4;text-align:left;background:0 0;border:none;border-radius:8px;align-items:center;gap:10px;width:100%;padding:9px 10px;font-size:13.5px;font-weight:500;display:flex}.nav a .ic{flex-shrink:0;justify-content:center;align-items:center;width:22px;height:22px;display:flex}.nav a.active{background:var(--primary);color:#fff;font-weight:600}.nav a:hover:not(.active){background:#ffffff0f}.refbox{background:#ffffff0f;border-radius:10px;flex-direction:column;gap:6px;margin-top:auto;padding:14px 10px;display:flex}.refbox .lbl{letter-spacing:.04em;text-transform:uppercase;color:#e39a5c;font-size:11px;font-weight:700}.refbox .name{color:#eaf1f3;font-size:12.5px;line-height:1.45}.refbox .note{color:#7fa3af;margin-top:2px;font-size:11px;line-height:1.4}main{flex:auto;min-width:0}.panel{flex-direction:column;gap:20px;padding:32px 40px 60px;display:flex}.eyebrow{letter-spacing:.08em;text-transform:uppercase;color:var(--accent);font-size:12px;font-weight:700}h1{color:var(--ink);margin:4px 0 6px;font-size:24px;font-weight:800}.lede{color:var(--ink-soft);max-width:800px;font-size:13.5px;line-height:1.55}.card{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:22px 24px}.card-pad-lg{padding:28px 30px}.grid4{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;display:grid}.grid2{grid-template-columns:1fr 1fr;gap:20px;display:grid}.kpi{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:18px}.kpi .lbl{color:var(--ink-soft);font-size:12px;font-weight:600}.kpi .val{color:var(--ink);margin-top:6px;font-size:21px;font-weight:800}.kpi .sub{color:var(--ink-faint);margin-top:4px;font-size:12px}.kpi .src{color:var(--ink-ghost);border-top:1px dashed var(--surface-alt);margin-top:6px;padding-top:6px;font-size:10.5px}.badge{border-radius:999px;padding:4px 10px;font-size:11.5px;font-weight:700;display:inline-block}.badge-ok{background:var(--success-soft);color:var(--success)}.badge-warn{background:var(--warning-soft);color:var(--warning)}.badge-ref{background:var(--surface-alt);color:var(--ink-soft)}.badge-info{background:var(--info-soft);color:var(--info)}.src-line{color:var(--ink-ghost);margin-top:3px;font-size:11px}.status-banner{background:var(--success-soft);text-align:right;border:1px solid #bfe0cc;border-radius:10px;flex-shrink:0;padding:10px 16px}.status-banner .lbl{color:var(--success);text-transform:uppercase;letter-spacing:.04em;font-size:11px;font-weight:700}.status-banner .val{color:var(--ink);margin-top:2px;font-size:14px;font-weight:700}.status-banner .sub{color:var(--ink-soft);font-size:11.5px}table.tbl{border-collapse:collapse;width:100%}table.tbl th{color:var(--ink-soft);text-align:left;border-bottom:1px solid var(--line);padding:0 10px 10px;font-size:12px;font-weight:700}table.tbl td{border-bottom:1px solid var(--surface-alt);vertical-align:top;padding:12px 10px;font-size:12.5px}table.tbl tr:last-child td{border-bottom:none}.automation-banner{background:var(--accent-soft);border:1px solid #e9c9a8;border-radius:12px;align-items:center;gap:14px;padding:14px 18px;display:flex}.automation-banner .txt{color:var(--accent-ink);flex:1;font-size:12.5px;line-height:1.55}.btn{background:var(--accent);color:#fff;border:none;border-radius:8px;flex-shrink:0;padding:9px 16px;font-size:12.5px;font-weight:700}.btn-outline{border:1px solid var(--line);color:var(--ink-soft);background:#fff}.btn-primary-dark{background:var(--primary);color:#fff}.timeline-item{grid-template-columns:96px 24px 1fr;display:grid}.timeline-date{color:var(--ink-soft);text-align:right;padding-top:2px;padding-right:14px;font-size:12px;font-weight:600}.timeline-rail{flex-direction:column;align-items:center;display:flex}.timeline-dot{background:var(--primary);width:11px;height:11px;box-shadow:0 0 0 2px var(--line);border:2px solid #fff;border-radius:50%;flex-shrink:0;margin-top:2px}.timeline-line{background:var(--line);flex:1;width:2px;margin-top:2px}.timeline-body{padding:0 0 22px 16px}.timeline-title{color:var(--ink);font-size:13.5px;font-weight:700}.timeline-desc{color:var(--ink-soft);margin-top:3px;font-size:12.5px}.timeline-org{color:var(--ink-faint);margin-top:3px;font-size:11.5px}.n5-layout{grid-template-columns:380px 1fr;align-items:flex-start;gap:20px;display:grid}.pkg-list{flex-direction:column;gap:8px;display:flex}.pkg-card{text-align:left;border:1px solid var(--line);background:#fff;border-radius:12px;width:100%;padding:14px 16px}.pkg-card.selected{border-color:var(--primary);background:var(--primary-soft)}.pkg-card .row1{justify-content:space-between;align-items:center;gap:10px;display:flex}.pkg-card .no{color:var(--primary);font-size:12.5px;font-weight:800}.pkg-card .name{color:var(--ink);text-align:left;margin-top:4px;font-size:13px;font-weight:700;line-height:1.35}.pkg-card .row3{justify-content:space-between;align-items:center;margin-top:8px;display:flex}.pkg-card .price{color:var(--ink-faint);font-size:11.5px}.tpl-chip{border-radius:999px;padding:2px 8px;font-size:10.5px;font-weight:700}.tpl-P3{background:var(--accent-soft);color:var(--accent-ink)}.tpl-P4{background:var(--info-soft);color:var(--info)}.checklist-row{background:var(--bg);border-radius:10px;align-items:flex-start;gap:12px;padding:12px 14px;display:flex}.checklist-row.warn{background:var(--warning-soft)}.cl-icon{color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:22px;height:22px;font-size:12px;font-weight:800;display:flex}.cl-icon.done{background:var(--success)}.cl-icon.warn{background:var(--warning)}.cl-icon.pending{background:var(--line);color:var(--ink-soft)}.cl-tag{border-radius:999px;flex-shrink:0;padding:4px 10px;font-size:11px;font-weight:700}.steps{align-items:center;margin-top:4px;display:flex}.step{flex:1;align-items:center;display:flex}.step:last-child{flex:none}.step-circle{color:#fff;background:var(--surface-alt);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:30px;height:30px;font-size:13px;font-weight:800;display:flex}.step-circle.done{background:var(--success)}.step-circle.active{background:var(--primary)}.step-circle.todo{background:var(--surface-alt);color:var(--ink-faint)}.step-label{text-transform:uppercase;letter-spacing:.04em;color:var(--ink-faint);font-size:10px;font-weight:700}.step-label.active{color:var(--accent)}.step-title{color:var(--ink-faint);font-size:12.5px;font-weight:700}.step-title.on{color:var(--ink)}.step-connector{background:var(--line);flex:1;height:2px;margin:0 16px}.step-connector.done{background:var(--success)}.dropzone{text-align:center;background:var(--bg);border:2px dashed #c7c0ae;border-radius:12px;padding:26px}.filelist{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 24px;max-height:260px;margin-top:18px;display:grid;overflow:hidden}.filerow{border-bottom:1px solid var(--surface-alt);color:var(--ink-soft);white-space:nowrap;text-overflow:ellipsis;align-items:center;gap:8px;padding:6px 0;font-size:11.5px;display:flex;overflow:hidden}.scanrow{background:var(--bg);color:var(--ink-soft);border-radius:8px;align-items:center;gap:12px;padding:9px 12px;font-size:12px;display:flex}.scanrow .fname{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.khuon-chip{border-radius:999px;flex-shrink:0;padding:3px 9px;font-size:10.5px;font-weight:700}.status-chip{text-align:center;border-radius:999px;flex-shrink:0;width:110px;padding:3px 9px;font-size:10.5px;font-weight:700}input[type=text]{width:100%;color:var(--ink);border:1px solid #c7c0ae;border-radius:9px;padding:13px 16px;font-size:14.5px;font-weight:600}.accordion-head{text-align:left;border:none;border-bottom:1px solid var(--surface-alt);background:0 0;align-items:center;gap:14px;width:100%;padding:12px 10px;display:flex}.accordion-body{background:var(--bg);flex-direction:column;gap:10px;padding:14px 14px 16px 48px;display:none}.accordion-body.open{display:flex}.sample-field{color:var(--ink);font-size:12px;font-weight:700}.sample-field .val{color:var(--primary);font-weight:600}.sample-src{color:var(--ink-faint);margin-top:2px;font-size:11px}.nav a{text-decoration:none}.row-link{cursor:pointer;border-radius:8px;grid-template-columns:250px 70px 1fr 130px;align-items:center;gap:14px;padding:10px 12px;text-decoration:none;display:grid}.row-link:hover{background:var(--bg)}.bar{background:var(--surface-alt);border-radius:5px;height:8px;overflow:hidden}.bar>div{border-radius:5px;height:100%}.section-title{color:var(--ink);font-size:15px;font-weight:700}.alert{border-radius:10px;gap:12px;padding:12px 14px;display:flex}.alert-warn{background:var(--warning-soft);border:1px solid #e9ce98}.alert-info{background:var(--info-soft);border:1px solid #bbd6e8}.alert-ok{background:var(--success-soft);border:1px solid #bfe0cc}.link-btn{background:0 0;border:none;margin-top:6px;padding:0;font-size:12.5px;font-weight:600;display:inline-block}.flow-chip{background:var(--info-soft);color:var(--info);border-radius:8px;padding:8px 14px;font-size:12.5px;font-weight:700}.mini-kpi{padding:12px 18px}.mini-kpi .lbl{color:var(--ink-soft);font-size:11px;font-weight:600}.mini-kpi .val{color:var(--ink);font-size:18px;font-weight:800}.grid3{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;display:grid}.list-row{border-bottom:1px solid var(--surface-alt);align-items:center;gap:12px;padding:11px 4px;display:flex}.detail-grid{border-bottom:1px solid var(--surface-alt);grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;padding:20px 0;display:grid}.detail-grid .k{color:var(--ink-faint);font-size:11px;font-weight:600}.detail-grid .v{color:var(--ink);margin-top:3px;font-size:14px;font-weight:700}@media (width<=1200px){.grid4{grid-template-columns:repeat(2,minmax(0,1fr))}.n5-layout{grid-template-columns:1fr}}@media (width<=900px){.app{flex-direction:column}.sidebar{width:100%;height:auto;position:static}.panel{padding:20px 16px 40px}.grid2,.grid3,.grid4,.detail-grid{grid-template-columns:1fr}.row-link{grid-template-columns:1fr;gap:6px}.filelist{grid-template-columns:1fr}}.muted{color:var(--ink-faint);font-size:12.5px}.page-loading{color:var(--ink-soft);padding:40px}.field-label{color:var(--ink-soft);margin-bottom:6px;font-size:11.5px;font-weight:700;display:block}input[type=password]{width:100%;color:var(--ink);border:1px solid #c7c0ae;border-radius:9px;padding:13px 16px;font-family:inherit;font-size:14.5px;font-weight:600}.input-sm{border:1px solid #c7c0ae;border-radius:8px;font-family:inherit;padding:8px 12px!important;font-size:13px!important;font-weight:500!important}select.input-sm{background:#fff}.form-error{color:#9a3412;background:var(--warning-soft);border-radius:8px;margin-top:12px;padding:8px 12px;font-size:12.5px}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-sm{padding:6px 12px;font-size:12px}.link-btn{color:var(--primary);cursor:pointer}.link-btn.danger{color:#b42318}.link-btn:disabled{opacity:.5}.project-group-picker{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;display:grid}.group-option{border:1px solid var(--line);height:42px;color:var(--ink-soft);background:#fff;border-radius:8px;font-size:13px;font-weight:800}.group-option:hover{border-color:var(--primary);color:var(--primary)}.group-option.active{background:var(--primary);border-color:var(--primary);color:#fff}.login-wrap{background:var(--primary-dark);justify-content:center;align-items:center;min-height:100vh;padding:16px;display:flex}.login-card{width:100%;max-width:420px}.grid5{grid-template-columns:repeat(5,minmax(0,1fr))}.bucket{text-align:left;background:0 0;border:1px solid #0000;border-radius:10px;width:100%;padding:8px 10px;display:block}.bucket:hover:not(:disabled){background:var(--bg)}.bucket.active{border-color:var(--primary);background:var(--primary-soft)}.bucket:disabled{cursor:default;opacity:.55}.bucket-row{justify-content:space-between;gap:10px;margin-bottom:6px;display:flex}.bucket-label{color:var(--ink);font-size:13px;font-weight:700}.bucket-count{color:var(--ink-soft);white-space:nowrap;font-size:12px}.bucket-sub{color:var(--ink-faint);margin-top:4px;font-size:11px}.table-wrap{overflow-x:auto}.row-click{cursor:pointer}.row-click:hover td{background:var(--bg)}.project-list-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:16px;display:flex}.project-search{align-items:center;gap:8px;min-width:min(100%,460px);display:flex}.project-search.procurement-filter{flex-wrap:wrap;justify-content:flex-end;min-width:min(100%,760px)}.project-search.procurement-filter .input-sm{min-width:180px}.project-search.procurement-filter input.input-sm{min-width:240px}.project-table-wrap{border:1px solid var(--surface-alt);border-radius:10px}.project-table{min-width:1180px}.procurement-table{min-width:1380px}.project-table th{white-space:nowrap;background:var(--bg);padding-top:12px!important}.project-table td{line-height:1.45}.project-name-cell{min-width:260px}.project-name{color:var(--ink);font-size:13.5px;font-weight:800}.project-progress-cell{min-width:190px}.project-progress-head{justify-content:space-between;align-items:center;gap:8px;margin-bottom:7px;display:flex}.project-progress-head strong{color:var(--ink);font-size:13px}.action-col{text-align:center;white-space:nowrap;width:118px;min-width:118px}.detail-head{border-bottom:1px solid var(--surface-alt);grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-bottom:18px;padding-bottom:18px;display:grid}.detail-head strong{color:var(--ink);font-size:14px}.procurement-detail-grid{border-bottom:none;padding:0}.raw-field-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px 20px;margin-top:16px;display:grid}.modal-backdrop{z-index:50;background:#1e2a306b;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.modal-panel{background:var(--surface);border:1px solid var(--line);border-radius:12px;width:min(980px,100%);max-height:min(86vh,860px);padding:22px 24px;overflow:auto;box-shadow:0 24px 80px #08394d38}.procurement-modal{flex-direction:column;gap:18px;display:flex}.modal-head{border-bottom:1px solid var(--surface-alt);justify-content:space-between;align-items:flex-start;gap:18px;padding-bottom:14px;display:flex}.modal-head h2{color:var(--ink);margin:4px 0 6px;font-size:21px;line-height:1.3}.modal-close{border:1px solid var(--line);width:34px;height:34px;color:var(--ink-soft);background:#fff;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;font-size:24px;line-height:1;display:flex}.modal-close:hover{border-color:var(--primary);color:var(--primary)}.modal-loading{text-align:center;padding:30px}.modal-section{border-top:1px solid var(--surface-alt);padding-top:18px}.tpl-grid{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px;display:grid}.tpl-card{text-align:left;border:1px solid var(--line);background:#fff;border-radius:12px;padding:18px}.tpl-card.selected{border-color:var(--primary);background:var(--primary-soft);box-shadow:0 0 0 2px var(--primary-soft)}.tpl-card .row1{align-items:flex-start;gap:10px;display:flex}.tpl-card .name{color:var(--ink);font-size:14.5px;font-weight:800}.tpl-radio{color:var(--primary);font-size:16px;line-height:1.2}.tpl-card .desc{color:var(--ink-soft);margin-top:6px;font-size:12.5px;line-height:1.5}.tpl-card .meta{color:var(--ink-faint);margin-top:10px;font-size:11.5px;font-weight:600}.tpl-preview{flex-direction:column;gap:14px;display:flex}.tpl-overview{background:var(--bg);border:1px solid var(--surface-alt);border-radius:10px;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 12px;display:flex}.tpl-total{border:1px solid var(--surface-alt);color:var(--ink-soft);background:#fff;border-radius:8px;align-items:baseline;gap:5px;padding:5px 9px;font-size:12px;display:flex}.tpl-total strong{color:var(--ink);font-size:16px}.tpl-stage-strip{flex-wrap:wrap;gap:8px;display:flex}.tpl-stage-chip{color:var(--ink-soft);align-items:center;gap:6px;font-size:12px;font-weight:700;display:flex}.tpl-stage-stack{flex-direction:column;gap:10px;display:flex}.tpl-stage{background:var(--bg);border:1px solid var(--surface-alt);border-radius:10px;overflow:hidden}.tpl-stage-head{cursor:pointer;align-items:center;gap:10px;padding:12px 14px;list-style:none;display:flex}.tpl-stage-head::-webkit-details-marker{display:none}.tpl-stage-head:after{content:"+";color:var(--ink-faint);font-weight:800}.tpl-stage[open] .tpl-stage-head:after{content:"−"}.tpl-stage-meta{color:var(--ink-faint);margin-left:auto;font-size:12px;font-weight:700}.tpl-substage-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:10px;padding:0 12px 12px;display:grid}.tpl-flat-steps{padding:0 12px 12px}.tpl-substage-card{border:1px solid var(--surface-alt);background:#fff;border-radius:9px;min-width:0;padding:10px 12px}.tpl-substage-card.flat{padding-top:12px}.tpl-substage{color:var(--ink);align-items:center;gap:7px;margin-bottom:8px;font-size:12px;font-weight:800;display:flex}.tpl-substage-count{color:var(--ink-faint);margin-left:auto;font-size:11px}.tpl-step-list{scrollbar-width:thin;flex-direction:column;gap:6px;max-height:240px;margin:0;padding-left:0;list-style:none;display:flex;overflow:auto}.tpl-step-list li{color:var(--ink);grid-template-columns:auto minmax(0,1fr) auto auto;align-items:start;gap:6px;font-size:12.5px;line-height:1.45;display:grid}.tpl-step-name{min-width:0}.stage-code{color:#fff;background:var(--primary);border-radius:6px;padding:2px 7px;font-size:12px;font-weight:800}.stage-name{color:var(--ink);font-size:13px;font-weight:700}.step-code{color:var(--primary);font-weight:700}.tag-req,.tag-ms,.tag-ai{white-space:nowrap;border-radius:999px;margin-left:6px;padding:1px 7px;font-size:10px;font-weight:700}.tag-req{background:var(--accent-soft);color:var(--accent-ink)}.tag-ms{background:var(--success-soft);color:var(--success)}.tag-ai{background:var(--info-soft);color:var(--info)}.info-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px 20px;display:grid}.info-item.wide{grid-column:span 2}.info-item .k{align-items:center;gap:6px;font-size:12px;font-weight:500;display:flex}.info-item .v{color:var(--ink);margin-top:3px;font-size:14px;font-weight:700}.info-item .v.muted{font-weight:500}.edit-btn{background:0 0;border:none;padding:0;font-size:14px}.edit-btn:hover{color:var(--primary)}.stage-head{background:0 0;border:none;align-items:center;gap:12px;width:100%;padding:0;display:flex}.step-list{flex-direction:column;gap:10px;margin-top:14px;display:flex}.step-subgroup{flex-direction:column;gap:10px;display:flex}.step-subgroup-head{color:var(--ink-soft);align-items:center;gap:8px;margin-top:6px;font-size:12px;font-weight:800;display:flex}.workflow-board{background:var(--surface);border:1px solid var(--line);border-radius:12px;flex-direction:column;gap:12px;padding:18px 20px;display:flex}.workflow-main-title,.workflow-next-title{letter-spacing:.01em;color:var(--ink);font-size:18px;font-weight:900}.workflow-main-title span{color:var(--primary)}.workflow-next-title{margin-top:12px;font-size:15px}.flow-group{border:1px solid var(--line);background:var(--bg);border-radius:9px;overflow:hidden}.flow-group-head{cursor:pointer;align-items:center;gap:10px;padding:14px 16px;list-style:none;display:flex}.flow-group-head::-webkit-details-marker{display:none}.flow-group-head:before{content:"+";border:1px solid var(--line);width:18px;height:18px;color:var(--primary);background:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:13px;font-weight:900;display:flex}.flow-group[open] .flow-group-head:before{content:"−"}.flow-title{color:var(--ink);flex:1;min-width:0;font-size:15px;font-weight:900}.flow-title span{color:var(--ink)}.flow-chip-warn{background:var(--warning-soft);color:var(--warning);white-space:nowrap;border-radius:999px;padding:3px 9px;font-size:12px;font-weight:800}.flow-progress{color:var(--ink-soft);align-items:center;gap:12px;min-width:190px;margin-left:auto;font-size:12px;font-weight:800;display:flex}.flow-progress-bar{background:var(--surface-alt);border-radius:999px;flex:1;height:8px;overflow:hidden}.flow-progress-bar div{background:var(--success);border-radius:999px;height:100%}.flow-steps{border-top:1px solid var(--line)}.workflow-board .step-row{border:none;border-top:1px solid var(--surface-alt);background:#fff;border-radius:0;padding:14px 16px}.workflow-board .step-row:first-child{border-top:none}.workflow-board .step-row.drag{background:var(--primary-soft)}.workflow-board .step-row.step-done{border-color:var(--surface-alt);background:#fff}.workflow-board .step-row.step-review{background:var(--warning-soft)}.workflow-board .step-name{color:var(--ink);font-size:14px}.workflow-board .step-code{color:var(--primary)}.workflow-board .step-desc,.workflow-board .step-status-text,.workflow-board .drop-hint{color:var(--ink-soft)}.workflow-board .tag-req{display:none}.workflow-board .step-side .btn,.workflow-board .btn-sm{color:var(--primary);border:1px solid var(--line);background:#fff;border-radius:7px}.workflow-board .doc-list{margin-left:48px}.workflow-board .doc-item{background:var(--bg);border:1px solid var(--surface-alt);border-left:4px solid var(--warning);color:var(--ink);padding:14px 16px}.workflow-board .doc-item.doc-confirmed,.workflow-board .doc-item.doc-done{border-left-color:var(--success)}.workflow-board .doc-file-pill{color:#259981;background:#d8eee8}.workflow-board .doc-meta,.workflow-board .doc-summary{color:var(--ink)}.workflow-board .doc-warn{color:var(--warning)}.workflow-board .link-btn{color:var(--primary)}.workflow-board .link-btn.danger{color:#b42318}.step-row{border:1px solid var(--surface-alt);background:#fff;border-radius:10px;padding:12px 14px}.step-row.drag{border-color:var(--primary);background:var(--primary-soft)}.step-row.step-review{background:#fffaf0;border-color:#f0ddb5}.step-row.step-done{border-color:#cfe6d8}.step-head{align-items:flex-start;gap:12px;display:flex}.step-name{color:var(--ink);font-size:13.5px;font-weight:700}.step-desc{color:var(--ink-soft);margin-top:2px;font-size:12px}.step-side{flex-shrink:0;align-items:center;gap:10px;display:flex}.step-status-text{color:var(--ink-faint);font-size:11.5px;font-weight:600}.cl-icon.processing{background:var(--info);animation:1.2s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.drop-hint{color:var(--ink-ghost);margin:8px 0 0 34px;font-size:11.5px}.doc-list{flex-direction:column;gap:8px;margin:10px 0 0 34px;display:flex}.doc-item{background:var(--bg);border-radius:9px;padding:10px 12px}.doc-item.doc-review,.doc-item.doc-error{background:var(--warning-soft)}.doc-card-top{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.doc-file-pill{text-overflow:ellipsis;white-space:nowrap;text-align:left;background:var(--primary-soft);max-width:min(680px,100%);color:var(--primary);border:none;border-radius:5px;padding:4px 10px;font-size:12.5px;font-weight:800;overflow:hidden}.doc-confidence{color:var(--ink-soft);white-space:nowrap;font-size:12px;font-weight:700}.doc-card-actions{flex-wrap:wrap;align-items:center;gap:8px;margin-left:auto;display:flex}.doc-action-btn{border:1px solid var(--line);height:34px;color:var(--primary);background:#fff;border-radius:7px;padding:0 13px;font-size:12.5px;font-weight:800}.doc-action-btn.primary{color:#073f3a;background:#58c9ad;border-color:#58c9ad}.doc-action-btn.danger{color:#b42318}.doc-action-btn:disabled{opacity:.55;cursor:not-allowed}.doc-main-fields{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin-top:12px;display:grid}.doc-main-fields span,.doc-summary span{color:var(--ink-soft);margin-bottom:3px;font-size:12px;font-weight:700;display:block}.doc-main-fields strong,.doc-summary strong{color:var(--ink);font-size:13.5px;display:block}.doc-edit-grid{border:1px solid var(--surface-alt);background:#fff;border-radius:8px;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:12px;padding:12px;display:grid}.doc-edit-grid label{color:var(--ink-soft);flex-direction:column;gap:5px;font-size:11.5px;font-weight:800;display:flex}.doc-edit-grid .wide{grid-column:span 3}.doc-edit-fields{flex-direction:column;grid-column:1/-1;gap:8px;padding-top:4px;display:flex}.doc-edit-fields-head{color:var(--ink-soft);justify-content:space-between;align-items:center;gap:10px;font-size:12px;font-weight:800;display:flex}.doc-edit-field-row{grid-template-columns:minmax(150px,1fr) minmax(220px,2fr) 90px auto;align-items:center;gap:8px;display:grid}.doc-edit-actions{justify-content:flex-start;align-items:flex-end;gap:8px;display:flex}.doc-extra-fields{margin-top:12px}.doc-extra-title{color:var(--ink-soft);margin-bottom:6px;font-size:12px;font-weight:800}.doc-head{align-items:flex-start;gap:10px;display:flex}.doc-name{color:var(--ink);text-overflow:ellipsis;white-space:nowrap;font-size:12.5px;font-weight:700;overflow:hidden}.doc-meta{color:var(--ink-soft);margin-top:2px;font-size:12px}.doc-summary{color:var(--ink);margin:10px 0 0;font-size:12px;line-height:1.5}.doc-warn{color:#8a5a00;margin:6px 0 0 28px;font-size:11.5px}.doc-actions{flex-wrap:wrap;align-items:center;gap:14px;margin:8px 0 0 28px;display:flex}.doc-actions .link-btn{margin-top:0;font-size:12px}.fields-tbl{background:#fff;border-radius:8px;width:100%;margin:12px 0 0}.fields-tbl td{padding:7px 10px;font-size:12px}.project-overview-page{background:var(--bg);min-height:100vh;color:var(--ink);flex-direction:column;gap:18px;padding:28px 36px 56px;font-size:13px;display:flex}.overview-top-links{flex-wrap:wrap;align-items:center;gap:12px;font-size:12px;display:flex}.overview-top-links a{color:var(--primary);font-weight:700}.overview-kpi-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;display:grid}.overview-kpi,.overview-dark-card{background:var(--surface);border:1px solid var(--line);border-radius:8px}.overview-kpi{flex-direction:column;justify-content:center;min-height:96px;padding:16px 18px;display:flex}.overview-kpi strong{color:var(--ink);font-size:28px;font-weight:900;line-height:1}.overview-kpi span{color:var(--ink-soft);margin-top:8px;font-size:13px;font-weight:700}.overview-dashboard-grid{grid-template-columns:minmax(0,1.06fr) minmax(420px,.9fr);align-items:start;gap:22px;display:grid}.overview-left-col,.overview-right-col{flex-direction:column;gap:18px;display:flex}.overview-dark-card{padding:18px 20px}.overview-card-head{justify-content:space-between;align-items:center;gap:14px;margin-bottom:8px;display:flex}.overview-card-head h2{color:var(--ink);margin:0;font-size:18px;font-weight:900;line-height:1.25}.overview-ghost-btn{border:1px solid var(--line);height:34px;color:var(--primary);background:#fff;border-radius:8px;padding:0 11px;font-size:13px;font-weight:800}.overview-info-list{flex-direction:column;display:flex}.overview-info-row{border-top:1px solid var(--surface-alt);grid-template-columns:180px minmax(0,1fr);gap:14px;padding:12px 0;line-height:1.4;display:grid}.overview-info-row:first-child{border-top:none}.overview-info-row span{color:var(--ink-soft);font-size:13px}.overview-info-row strong{color:var(--ink);font-size:14px;font-weight:900}.overview-component-table{flex-direction:column;display:flex}.overview-component-head,.overview-component-row{border-bottom:1px solid var(--surface-alt);grid-template-columns:minmax(0,2.3fr) minmax(110px,.9fr) minmax(90px,.7fr) minmax(80px,.65fr);align-items:start;gap:18px;padding:12px 14px;display:grid}.overview-component-head{color:var(--ink-soft);font-size:12px;font-weight:900}.overview-component-row strong{color:var(--ink);font-size:14px;line-height:1.35}.overview-component-row small{color:var(--ink-soft);margin-top:4px;font-size:12px;line-height:1.35;display:block}.overview-component-row.total{align-items:center}.overview-delta{background:var(--success-soft);width:max-content;color:var(--success);border-radius:10px;padding:6px 10px;font-size:12px;font-weight:900;display:inline-flex}.overview-stage-list{flex-direction:column;gap:12px;display:flex}.overview-stage div:first-child{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.overview-stage strong{color:var(--ink);text-transform:uppercase;font-size:13px;line-height:1.25}.overview-stage span{color:var(--ink-soft);font-size:13px;font-weight:800}.overview-dark-bar{background:var(--surface-alt);border-radius:999px;height:11px;margin-top:5px;overflow:hidden}.overview-dark-bar div{background:var(--success);border-radius:999px;height:100%}.overview-proc-list{flex-direction:column;display:flex}.overview-proc-row{border-bottom:1px solid var(--surface-alt);grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:14px;padding:11px 0;display:grid}.overview-proc-row:last-child{border-bottom:none}.overview-proc-row strong{color:var(--ink);font-size:14px;line-height:1.35}.overview-proc-row .badge{border-radius:12px;padding:6px 10px;font-size:12px}.overview-empty{color:var(--ink-soft);padding-top:8px;font-size:13px}.overview-main-grid{align-items:stretch}.overview-progress-ring{background:conic-gradient(var(--success) calc(var(--pct) * 1%), var(--surface-alt) 0);border-radius:50%;place-items:center;width:174px;height:174px;margin:0 auto 18px;display:grid}.overview-progress-ring>div{border:1px solid var(--line);background:#fff;border-radius:50%;flex-direction:column;justify-content:center;align-items:center;width:124px;height:124px;display:flex}@media (width<=900px){.detail-head,.raw-field-grid{grid-template-columns:1fr}.modal-backdrop{align-items:flex-start;padding:14px}.modal-panel{max-height:calc(100vh - 28px);padding:18px}.modal-head h2{font-size:18px}}.overview-progress-ring strong{color:var(--ink);font-size:28px;font-weight:900}.overview-progress-ring span{color:var(--ink-soft);font-size:11.5px;font-weight:700}.overview-stat-stack,.overview-doc-status,.overview-group-list{flex-direction:column;gap:12px;display:flex}.overview-statbar-top{color:var(--ink-soft);justify-content:space-between;gap:12px;margin-bottom:6px;font-size:12.5px;display:flex}.overview-statbar-top span{font-weight:700}.overview-statbar-top strong{color:var(--ink)}.overview-fields{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px 20px;display:grid}.overview-fields .wide{grid-column:span 2}.overview-fields .k{color:var(--ink-soft);font-size:12px;font-weight:700}.overview-fields .v{color:var(--ink);margin-top:3px;font-size:14px;font-weight:800;line-height:1.45}.overview-fields .v.muted{font-weight:500}.overview-group{background:var(--bg);border:1px solid var(--surface-alt);border-radius:10px;grid-template-columns:minmax(0,1fr) auto minmax(220px,32%);align-items:center;gap:14px;padding:12px 14px;display:grid}.overview-group-title{color:var(--ink);font-size:13.5px;font-weight:900;line-height:1.35}.overview-group-progress{color:var(--ink-soft);grid-template-columns:auto minmax(110px,1fr) auto;align-items:center;gap:9px;font-size:12px;font-weight:800;display:grid}.overview-step-table{min-width:1040px}.overview-step-table th{white-space:nowrap}@media (width<=1200px){.grid5{grid-template-columns:repeat(3,minmax(0,1fr))}.info-grid,.overview-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.overview-dashboard-grid{grid-template-columns:1fr}.overview-fields{grid-template-columns:repeat(2,minmax(0,1fr))}.overview-group{grid-template-columns:1fr}.overview-group-progress{grid-template-columns:auto 1fr auto}}@media (width<=900px){.project-overview-page{padding:16px}.overview-kpi-grid{grid-template-columns:1fr}.overview-info-row{grid-template-columns:1fr;gap:4px}.overview-component-head{display:none}.overview-component-row{grid-template-columns:1fr;gap:8px}.overview-proc-row,.grid5,.info-grid,.overview-fields{grid-template-columns:1fr}.info-item.wide,.overview-fields .wide{grid-column:auto}.step-head{flex-wrap:wrap}.doc-list,.drop-hint{margin-left:0}.doc-main-fields,.doc-edit-grid{grid-template-columns:1fr}.doc-edit-grid .wide{grid-column:auto}.doc-edit-field-row{grid-template-columns:1fr}.doc-edit-actions{justify-content:flex-start}.doc-card-actions{width:100%;margin-left:0}}.account{margin-top:auto;position:relative}.account-btn{color:#eaf1f3;cursor:pointer;text-align:left;background:#ffffff0f;border:1px solid #0000;border-radius:10px;align-items:center;gap:10px;width:100%;padding:10px;display:flex}.account-btn:hover,.account-btn[aria-expanded=true]{background:#ffffff1f;border-color:#ffffff24}.avatar{background:var(--accent);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:34px;height:34px;font-size:12.5px;font-weight:700;display:flex}.account-meta{flex-direction:column;flex:auto;min-width:0;line-height:1.3;display:flex}.account-name{color:#fff;white-space:nowrap;text-overflow:ellipsis;font-size:12.5px;font-weight:700;overflow:hidden}.account-email{color:#9fc2ce;white-space:nowrap;text-overflow:ellipsis;font-size:11px;overflow:hidden}.caret{color:#c7dee4;flex-shrink:0;transition:transform .15s}.account-btn[aria-expanded=true] .caret{transform:rotate(180deg)}.account-dropdown{z-index:30;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:6px;position:absolute;bottom:calc(100% + 8px);left:0;right:0;box-shadow:0 -8px 24px #00000040}.account-dropdown-head{border-bottom:1px solid var(--line);margin-bottom:6px;padding:10px 10px 12px}.account-dropdown-name{color:var(--ink);font-size:13px;font-weight:700}.account-dropdown-email{color:var(--ink-faint);word-break:break-all;margin-top:2px;font-size:12px}.account-role-badge{background:var(--primary-soft);color:var(--primary);border-radius:999px;margin-top:8px;padding:2px 8px;font-size:11px;font-weight:700;display:inline-block}.account-dropdown-item{text-align:left;width:100%;color:var(--accent-ink);cursor:pointer;background:0 0;border:none;border-radius:7px;padding:9px 10px;font-size:13px;font-weight:600}.account-dropdown-item:hover{background:var(--accent-soft)}
