*{box-sizing:border-box}body{margin:0;font:14px/1.45 Arial,sans-serif;background:#f5f7fa;color:#1f2937}a{color:#145ea8;text-decoration:none}.topbar{height:52px;background:#fff;border-bottom:1px solid #e5e7eb;display:flex;align-items:center;justify-content:space-between;padding:0 18px;position:sticky;top:0;z-index:20}.topbar nav{display:flex;align-items:center;gap:15px}.brand{font-weight:700}.icon{font-size:18px}.user-name{font-weight:600}.container{max-width:1400px;margin:auto;padding:16px}.page-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.page-head h1{font-size:22px;margin:0}.btn,button{border:0;background:#145ea8;color:#fff;padding:9px 13px;border-radius:6px;cursor:pointer}.btn-approve{background:#157347}.badge{background:#e8eef5;padding:4px 8px;border-radius:99px}.danger{background:#fee2e2;color:#991b1b}.muted,.meta{color:#64748b}.form-card,.card{background:#fff;border:1px solid #e5e7eb;border-radius:8px;padding:14px;margin-bottom:12px}.form-card label{display:block;margin-bottom:12px;font-weight:600}.form-card input,.form-card select,.form-card textarea{width:100%;padding:9px;border:1px solid #cbd5e1;border-radius:5px;margin-top:5px}.grid2{display:grid;grid-template-columns:1fr 2fr;gap:12px}.table-wrap{overflow:auto;background:#fff;border:1px solid #e5e7eb;border-radius:8px}table{width:100%;border-collapse:collapse}th,td{padding:10px;border-bottom:1px solid #edf0f3;text-align:left;white-space:nowrap}.project-layout{display:grid;grid-template-columns:235px minmax(0,1fr);gap:12px}.context-nav{background:#fff;border:1px solid #e5e7eb;border-radius:8px;padding:10px;align-self:start;position:sticky;top:64px;max-height:calc(100vh - 78px);overflow:auto}.context-nav a{display:flex;justify-content:space-between;padding:7px;border-radius:5px}.context-nav a:hover{background:#f1f5f9}.hidden-step{opacity:.55}.card h2{font-size:17px;margin:0 0 10px}.card h3{font-size:15px}.step-row,.approval-row{display:flex;justify-content:space-between;gap:12px;padding:9px 0;border-top:1px solid #edf0f3}.approval-row{justify-content:flex-start}.alert{padding:10px 12px;border-radius:6px;margin-bottom:12px}.alert.success{background:#dcfce7}.alert.danger{background:#fee2e2}.login-box{max-width:380px;margin:10vh auto;background:#fff;padding:20px;border-radius:8px;border:1px solid #e5e7eb}.login-box h1{font-size:22px}.login-box label{display:block;margin:12px 0}.login-box input{width:100%;padding:10px;margin-top:5px}.note{font-size:13px;color:#64748b}.content-html img{max-width:100%;height:auto}
@media(max-width:760px){.container{padding:10px}.topbar{padding:0 10px}.brand{max-width:120px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-name{display:none}.project-layout{display:block}.context-nav{position:static;max-height:none;margin-bottom:10px;display:flex;gap:5px;overflow:auto}.context-nav strong,.context-nav hr{display:none}.context-nav a{white-space:nowrap;background:#f8fafc;border:1px solid #e5e7eb}.grid2{grid-template-columns:1fr}.page-head h1{font-size:19px}th,td{padding:8px}.table-wrap table,.table-wrap thead,.table-wrap tbody,.table-wrap tr,.table-wrap td{display:block}.table-wrap thead{display:none}.table-wrap tr{padding:10px;border-bottom:1px solid #e5e7eb}.table-wrap td{border:0;padding:3px 0;white-space:normal}}
label{display:block;margin-bottom:12px;font-weight:600}input,select,textarea{width:100%;padding:9px;border:1px solid #cbd5e1;border-radius:5px;margin-top:5px;background:#fff}.narrow{max-width:900px}.admin-grid{grid-template-columns:1.3fr 1fr}.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.tree-row{padding-top:8px;padding-bottom:8px;border-bottom:1px solid #eef2f7}.settings-steps{display:grid;gap:5px}.setting-step,.field-row{display:flex;justify-content:space-between;align-items:center;padding:9px 10px;border:1px solid #e5e7eb;border-radius:6px}.field-row small{display:block;color:#64748b;margin-top:2px}.btn-light{background:#eef2f7;color:#334155}.check{display:flex;align-items:center;gap:8px}.check input{width:auto;margin:0}.context-nav a.active{background:#eaf2fb;font-weight:700}.section-head{display:flex;justify-content:space-between;align-items:center;gap:10px}.progress-pill{display:inline-flex;align-items:center;justify-content:center;min-width:54px;padding:6px 9px;border-radius:999px;background:#e8eef5;font-weight:700}.progress-pill.small{min-width:44px;padding:4px 7px}.approved-block{border-left:3px solid #157347;background:#f7fbf8;padding:10px 12px;margin:10px 0}.approved-head{font-weight:700;color:#157347;margin-bottom:7px}.history-field{padding:7px 0;border-top:1px solid #e4eee7}.approve-form{margin-top:12px;padding-top:12px;border-top:1px solid #e5e7eb}.task-card{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px 12px;padding:11px 0;border-top:1px solid #edf0f3}.task-main{display:flex;flex-direction:column;gap:4px}.progress-line{height:5px;background:#e5e7eb;border-radius:999px;overflow:hidden}.progress-line i{display:block;height:100%;background:#145ea8}.task-items{grid-column:1/-1;padding-left:8px}.task-items form{display:flex;align-items:center;gap:6px;margin:3px 0}.check-task{background:transparent;color:#334155;padding:1px 3px;font-size:17px}.check-task.done{color:#157347}.strike{text-decoration:line-through;color:#64748b}.add-task{margin-top:12px}.add-task summary{cursor:pointer;font-weight:700;color:#145ea8}.add-task form{margin-top:12px}.cke{margin-top:5px!important}
@media(max-width:760px){.grid3,.admin-grid{grid-template-columns:1fr}.topbar nav{gap:9px}.topbar nav a:not(.icon):last-child{font-size:12px}.task-card{grid-template-columns:minmax(0,1fr) auto}.section-head{align-items:flex-start}.cke_contents{min-height:180px!important}}
.head-actions{display:flex;gap:7px;align-items:center}.permission-grid{overflow:auto}.permission-head,.permission-row{display:grid;grid-template-columns:minmax(150px,1.7fr) repeat(5,minmax(62px,.55fr));align-items:center;min-width:560px}.permission-head>* , .permission-row>*{padding:8px;border-bottom:1px solid #edf0f3}.perm-check{text-align:center;margin:0}.perm-check input{width:auto;margin:0}@media(max-width:760px){.page-head{gap:8px;align-items:flex-start}.head-actions{flex-wrap:wrap;justify-content:flex-end}.head-actions .btn{padding:7px 9px}}
.file-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:7px 12px;padding:10px 0;border-top:1px solid #edf0f3}.file-row small{display:block;color:#64748b;margin-top:2px}.file-actions{display:flex;align-items:center;gap:6px}.file-actions form{margin:0}.approved-badge{background:#dcfce7;color:#166534}.file-approved-meta{grid-column:1/-1;color:#64748b;font-size:12px;overflow-wrap:anywhere}.file-approved-meta code{font-size:11px}@media(max-width:760px){.file-row{grid-template-columns:1fr}.file-actions{grid-column:1;flex-wrap:wrap}.file-approved-meta{grid-column:1}}
.compact-card{padding:10px}.step-choice-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px}.step-choice{padding:7px 8px;border:1px solid #e5e7eb;border-radius:6px;margin:0}.step-choice input{width:auto;margin:0}.inline-details,.add-task,details{margin-top:10px}summary{cursor:pointer;color:#145ea8;font-weight:700}.big{height:8px}.timeline-steps{display:flex;gap:8px;overflow:auto;padding:12px 0 2px}.timeline-step{min-width:100px;border:1px solid #e5e7eb;border-radius:7px;padding:8px;display:flex;align-items:center;gap:7px;background:#fff}.timeline-step small{display:block;color:#64748b}.step-dot{min-width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:#eef2f7;font-size:10px;font-weight:700}.step-dot.doing{background:#dbeafe}.step-dot.done{background:#dcfce7;color:#166534}.approval-check{display:flex;justify-content:space-between;gap:12px;padding:5px 0;border-top:1px solid #e5e7eb}.approval-buttons{display:flex;gap:7px;flex-wrap:wrap;margin-top:9px}.approval-buttons form{margin:0}.draft-block{border-left-color:#145ea8;background:#f8fbff}.extra-row,.directive-card{padding:10px 0;border-top:1px solid #edf0f3}.extra-row small,.block-meta{display:block;color:#64748b;margin-top:4px}.result-box{margin-top:8px;padding:8px;background:#f8fafc;border-radius:6px}.map-box{width:100%;height:360px;border:1px solid #e5e7eb;border-radius:7px;background:#f1f5f9;margin:8px 0}.map-large{height:calc(100vh - 145px);min-height:480px}.cost-summary,.dashboard-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:10px}.cost-summary>div,.dashboard-cards>div{border:1px solid #e5e7eb;border-radius:7px;padding:10px;background:#fff}.cost-summary small,.dashboard-cards small{display:block;color:#64748b}.cost-summary b,.dashboard-cards b{font-size:18px}.step-actions{display:flex;align-items:center;gap:8px}.step-actions form{margin:0}.search-bar{display:flex;gap:7px;margin-bottom:10px}.search-bar input{margin:0;max-width:420px}.pagination{display:flex;gap:5px;margin-top:10px}.pagination a{padding:6px 9px;border:1px solid #dbe2ea;border-radius:5px;background:#fff}.pagination a.active{background:#145ea8;color:#fff}.notify-icon{position:relative}.notify-icon em{position:absolute;top:-7px;right:-9px;background:#dc2626;color:#fff;border-radius:99px;padding:1px 4px;font:normal 10px Arial}.notification-row{display:grid;gap:3px;padding:10px;border-bottom:1px solid #edf0f3;color:#334155}.notification-row.unread{background:#eff6ff}.notification-row small{color:#64748b}
@media(max-width:760px){.step-choice-grid,.cost-summary,.dashboard-cards{grid-template-columns:1fr 1fr}.map-box{height:300px}.timeline-steps{padding-bottom:6px}.timeline-step{min-width:92px}.approval-check{display:block}.step-actions{flex-wrap:wrap}.search-bar{flex-wrap:wrap}.search-bar input{max-width:none}.map-large{height:65vh;min-height:380px}}
.cost-file-list{display:grid;gap:7px;margin-top:10px}.cost-file-card{padding:9px;border:1px solid #e5e7eb;border-radius:6px;background:#fafbfc}.mini-upload{display:flex;gap:7px;align-items:center;margin-top:7px}.mini-upload input[type=file]{margin:0;max-width:360px}.mini-upload button{white-space:nowrap}@media(max-width:760px){.mini-upload{display:block}.mini-upload input[type=file]{max-width:none;margin-bottom:6px}}

/* V1.3: sơ đồ tiến độ luôn nằm gọn 100% khung, tuyệt đối không scroll ngang */
.timeline-steps{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:6px;overflow:visible;padding:10px 0 2px;width:100%}
.timeline-step{min-width:0;width:100%;padding:7px 5px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:4px;overflow:hidden}
.timeline-step>span:last-child{min-width:0;width:100%}.timeline-step b,.timeline-step small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.timeline-step b{font-size:11px}.timeline-step small{font-size:11px}.timeline-step .step-name{font-size:10px;color:#64748b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:100%}.timeline-step .step-dot{min-width:26px;width:26px;height:26px}
@media(max-width:1100px){.timeline-steps{grid-template-columns:repeat(6,minmax(0,1fr))}}
@media(max-width:760px){.timeline-steps{grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}.timeline-step{padding:7px 4px}.timeline-step .step-name{font-size:9px}}
@media(max-width:380px){.timeline-steps{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* V1.3: thao tác gọn, không tạo khoảng trống lớn */
.row-actions{display:flex;gap:5px;align-items:center;flex-wrap:wrap}.row-actions form{margin:0}.btn-danger{background:#b42318}.compact-form{padding:10px;background:#f8fafc;border:1px solid #e5e7eb;border-radius:7px;margin-top:8px}.task-meta{display:flex;gap:8px;flex-wrap:wrap;color:#64748b;font-size:12px}.overdue{color:#b42318;font-weight:700}.done-text{color:#166534;font-weight:700}.audit-row{padding:9px 0;border-bottom:1px solid #edf0f3}.audit-row small{display:block;color:#64748b}.geometry-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;padding:8px 0;border-top:1px solid #edf0f3}

/* V1.4 Leaflet */
.leaflet-container{font:13px/1.4 Arial,sans-serif;z-index:1}.map-toolbar{display:flex;gap:8px;align-items:center;margin-bottom:8px}.map-toolbar input{margin:0;max-width:420px}.clickable-geometry{cursor:pointer}.clickable-geometry:hover{background:#f8fafc}.geometry-row small{display:block;margin-top:2px}.leaflet-control-layers{font-size:12px}@media(max-width:760px){.map-toolbar{display:block}.map-toolbar input{max-width:none;margin-bottom:6px}}

/* V1.4 quản trị & lọc */
.filter-panel{background:#fff;border:1px solid #e5e7eb;border-radius:8px;padding:10px;margin-bottom:10px}.filter-grid{display:grid;grid-template-columns:2fr repeat(3,1fr);gap:10px}.filter-grid label{margin:0;font-size:12px}.filter-grid input,.filter-grid select{margin-top:4px}.status-chip{display:inline-block;padding:4px 7px;border-radius:999px;background:#eef2f7;font-size:12px}.status-doing{background:#dbeafe;color:#1d4ed8}.status-pending{background:#fef3c7;color:#92400e}.status-done{background:#dcfce7;color:#166534}.status-draft{background:#f3f4f6;color:#374151}.mini-progress{height:6px;background:#e5e7eb;border-radius:99px;overflow:hidden;min-width:70px}.mini-progress i{display:block;height:100%;background:#145ea8}.member-list{display:grid;gap:0}.member-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;padding:9px 0;border-top:1px solid #edf0f3}.member-row small{display:block;color:#64748b;margin-top:2px}.my-task-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;padding:11px 0;border-top:1px solid #edf0f3}.my-task-side{display:flex;flex-direction:column;align-items:flex-end;gap:4px}.task-title a{font-weight:700;color:#0f172a}.task-list-page{padding-top:4px}@media(max-width:760px){.filter-grid{grid-template-columns:1fr 1fr}.filter-grid label:first-child{grid-column:1/-1}.member-row,.my-task-row{grid-template-columns:1fr}.my-task-side{align-items:flex-start;flex-direction:row;flex-wrap:wrap}}
.project-governance{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px;margin:0 0 14px;padding:12px;border:1px solid #dce6ef;border-radius:8px;background:#f8fbfd}.project-governance>div{min-width:0}.project-governance small{display:block;color:#64748b;margin-bottom:4px}.project-governance b{display:inline-block;margin-right:6px}.governance-edit{margin:0 0 14px}.notice-box{padding:10px 12px;border:1px solid #dce6ef;background:#f8fbfd;border-radius:7px;margin-bottom:12px}.notice-box b{display:block;margin-bottom:4px}.btn-sm{padding:5px 8px;font-size:12px}.tree-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.req{color:#b91c1c}@media(max-width:700px){.project-governance{grid-template-columns:1fr}.tree-row{align-items:flex-start}}

/* V1.6 - Coordinate editor */
.map-editor-box{min-height:460px}
.coordinate-editor{margin-top:14px;padding:14px;border:1px solid #dbe3ea;border-radius:12px;background:#f8fbfd}
.coordinate-editor-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}
.coordinate-editor-head h3{margin:0 0 4px;font-size:17px}
.coordinate-help{padding:9px 11px;border-radius:8px;background:#eef6ff;border:1px solid #d7e9ff;font-size:13px;margin:10px 0}
.coordinate-preview-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.geometry-coordinate-chips{display:flex;gap:5px;flex-wrap:wrap;margin-top:6px}
.geometry-coordinate-chips code{font-size:11px;padding:3px 6px;background:#f4f6f8;border-radius:5px}
.geometry-main{min-width:0;flex:1}
.geometry-edit-details{position:relative}
.geometry-edit-details>summary{list-style:none;cursor:pointer}
.geometry-edit-details>summary::-webkit-details-marker{display:none}
.geometry-edit-details[open] .geometry-update-form{position:absolute;right:0;top:38px;z-index:500;width:min(520px,82vw);background:#fff;border:1px solid #d9e1e7;border-radius:10px;padding:12px;box-shadow:0 12px 28px rgba(0,0,0,.12)}
.empty-state.compact{padding:12px;margin-top:10px;background:#f7f9fb;border-radius:8px;color:#607080}
@media(max-width:700px){.map-editor-box{min-height:360px}.coordinate-editor-head{display:block}.coordinate-editor-head .btn{margin-top:8px}.geometry-edit-details[open] .geometry-update-form{position:fixed;left:10px;right:10px;top:70px;width:auto;max-height:75vh;overflow:auto;z-index:1000}.coordinate-preview-row>*{flex:1 1 auto}}
.stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:0 0 16px}.stat-card{background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:14px;display:flex;flex-direction:column;gap:3px}.stat-card span,.stat-card small{color:#64748b}.stat-card strong{font-size:24px;line-height:1.2}.compact-list{display:flex;flex-direction:column}.compact-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid #eef2f7;text-decoration:none;color:inherit}.compact-row:last-child{border-bottom:0}.compact-row div{min-width:0}.compact-row small{display:block;color:#64748b;margin-top:3px}.row-actions{display:flex;align-items:center;flex-wrap:wrap;gap:6px}.row-actions form{margin:0}.btn-danger{background:#b42318!important;color:#fff!important;border-color:#b42318!important}.badge-muted{background:#eef2f6;color:#64748b}.badge-ok{background:#dcfce7;color:#166534}.badge-danger{background:#fee2e2;color:#991b1b}.tree-row-actions{display:flex;justify-content:space-between;align-items:center;gap:10px}.filter-bar{display:grid;grid-template-columns:minmax(180px,2fr) minmax(150px,1fr) minmax(180px,1.5fr) auto;gap:8px;align-items:end;margin-bottom:14px}.filter-bar input,.filter-bar select{margin:0}.row-overdue{background:#fff7f7}.danger-stat strong{color:#b42318}.compact-stats .stat-card{padding:10px 12px}.compact-stats .stat-card strong{font-size:20px}
@media(max-width:900px){.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.filter-bar{grid-template-columns:1fr 1fr}.tree-row-actions{align-items:flex-start;flex-direction:column}}
@media(max-width:560px){.stats-grid{grid-template-columns:1fr 1fr}.filter-bar{grid-template-columns:1fr}.topbar nav a{font-size:13px}.stat-card strong{font-size:20px}}

/* V1.7.2 Leaflet basemap fallback + permanent point labels */
.map-point-label{background:rgba(255,255,255,.96);border:1px solid #334155;color:#0f172a;font-weight:700;font-size:12px;padding:3px 6px;border-radius:4px;box-shadow:0 1px 3px rgba(15,23,42,.18)}.map-point-label:before{border-top-color:#334155!important}.map-tile-status{position:absolute;left:50%;top:10px;transform:translateX(-50%);z-index:1000;max-width:calc(100% - 90px);padding:7px 10px;border-radius:6px;font-size:12px;font-weight:600;box-shadow:0 2px 8px rgba(15,23,42,.18);pointer-events:none}.map-tile-status.success{background:#dcfce7;color:#166534}.map-tile-status.warning{background:#fef3c7;color:#92400e}.map-tile-status.danger{background:#fee2e2;color:#991b1b}

/* V1.8 - form runtime + checklist operations */
.checkbox-options{display:flex;flex-wrap:wrap;gap:7px 12px;margin-top:6px;padding:8px 10px;border:1px solid #e5e7eb;border-radius:6px;background:#fafcfe}.check-option{display:inline-flex;align-items:center;gap:6px;margin:0;font-weight:500}.check-option input{width:auto;margin:0}.task-item-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:6px;align-items:center;margin:3px 0}.task-item-row .inline-form{margin:0}.task-item-delete{background:transparent;color:#b42318;padding:1px 6px;font-size:18px;line-height:1}.task-item-add{display:flex!important;gap:6px!important;align-items:center;margin-top:7px!important}.task-item-add input{margin:0}.inline-delete{margin-top:8px}.filter-bar label{margin:0;font-size:12px}
@media(max-width:560px){.checkbox-options{display:grid;grid-template-columns:1fr}.task-item-add{align-items:stretch;flex-direction:column}.task-item-add button{width:100%}}

/* V1.8 settings/form-builder */
.inline-edit-form{display:grid;grid-template-columns:minmax(180px,2fr) minmax(120px,1fr) 90px auto;gap:8px;align-items:end;flex:1}.inline-edit-form label{margin:0}.cost-type-row{display:flex;gap:8px;align-items:flex-end}.template-field-editor{display:grid;gap:12px}.template-field-card{border:1px solid var(--line,#dfe5ea);border-radius:10px;padding:12px;background:#fff}.template-field-card>form+form{margin-top:8px}.template-field-card textarea{min-height:72px}@media(max-width:850px){.inline-edit-form{grid-template-columns:1fr 1fr}.cost-type-row{align-items:stretch;flex-direction:column}}@media(max-width:560px){.inline-edit-form{grid-template-columns:1fr}}
/* V1.9 completion, approvals and timeline */
.completion-card{padding:12px 14px}.completion-card .section-head{margin-bottom:8px}.completion-card .section-head h2{font-size:15px;margin:0}.completion-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}.completion-grid>div{border:1px solid #e5e9ed;border-radius:8px;padding:6px 8px;text-align:center;background:#fafcfd;min-width:0}.completion-grid b{display:inline;font-size:16px;line-height:1.15;margin-right:4px}.completion-grid small{display:inline;color:#667680;font-size:11px;line-height:1.15}.completion-card .issue-list{display:flex;flex-wrap:wrap;gap:4px 16px;margin:7px 0 0;padding:0;list-style:none;color:#8b4b20;font-size:11px}.completion-card .issue-list li:before{content:"• ";}.completion-card .note{margin:7px 0 0;font-size:11px}.issue-list{margin:10px 0 0;padding-left:20px;color:#8b4b20}.project-history{position:relative}.history-item{display:grid;grid-template-columns:18px 1fr;gap:10px;position:relative;padding:0 0 18px}.history-item:before{content:"";position:absolute;left:6px;top:13px;bottom:-3px;border-left:2px solid #e1e7eb}.history-item:last-child:before{display:none}.history-dot{width:14px;height:14px;border-radius:50%;background:#587d92;margin-top:4px;z-index:1}.history-body{border:1px solid #e2e8ec;border-radius:10px;padding:10px 12px;background:#fff;min-width:0}.history-body small{color:#687984}.history-body pre{white-space:pre-wrap;word-break:break-word;max-height:260px;overflow:auto;background:#f7f9fa;padding:8px;border-radius:6px;font-size:11px}.badge.success{background:#e8f6ed;color:#287a49}.badge.warning{background:#fff4df;color:#956218}.report-bars{display:grid;gap:10px}.report-bar-row{display:grid;grid-template-columns:minmax(120px,220px) 1fr 70px;gap:10px;align-items:center}.report-bar-track{height:12px;border-radius:12px;background:#eef2f4;overflow:hidden}.report-bar-track i{display:block;height:100%;background:#62879b;border-radius:12px}.user-name{text-decoration:none;color:inherit}@media(max-width:720px){.completion-grid{grid-template-columns:repeat(5,minmax(0,1fr))}.completion-grid>div{padding:5px 4px}.completion-grid b{display:block;font-size:14px;margin:0}.completion-grid small{display:block;font-size:9px}.completion-card .issue-list{font-size:10px}.report-bar-row{grid-template-columns:100px 1fr 55px}.history-body .grid2{grid-template-columns:1fr}}@media(max-width:480px){.completion-grid{grid-template-columns:repeat(5,minmax(0,1fr))}.completion-card{padding:10px}.completion-grid>div{padding:4px 2px;border-radius:6px}.completion-grid b{font-size:13px}.completion-grid small{font-size:8px}.report-bar-row{grid-template-columns:85px 1fr 48px}}
.status-inline{display:flex;gap:10px;align-items:end;flex-wrap:wrap;margin:12px 0;padding:10px;background:#f7f9fa;border:1px solid #e5eaed;border-radius:10px}.status-inline label{margin:0;min-width:210px}.status-inline select{margin-top:4px}
.report-filter{display:grid;grid-template-columns:repeat(5,minmax(120px,1fr));gap:10px;align-items:end}.report-filter label{margin:0}.report-filter .filter-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.health-summary{display:flex;justify-content:space-between;gap:12px;padding:12px 14px;border-radius:8px;margin-bottom:14px}.health-summary.ok{background:#edf9f1}.health-summary.bad{background:#fff1f1}@media(max-width:980px){.report-filter{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:600px){.report-filter{grid-template-columns:1fr}.health-summary{display:block}}
/* V2.0.4 - compact project-color legend for the global Leaflet map */
.global-map-legend-wrap{margin-top:10px;border-top:1px solid #e5e7eb;padding-top:9px}.global-map-legend-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:7px}.global-map-legend{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:6px}.global-map-legend-item{appearance:none;border:1px solid #e5e7eb;background:#fff;border-radius:8px;padding:6px 8px;display:flex;align-items:center;gap:8px;text-align:left;cursor:pointer;min-width:0}.global-map-legend-item:hover{background:#f8fafc;border-color:#cbd5e1}.global-map-legend-color{width:18px;height:18px;border-radius:5px;flex:0 0 18px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.10)}.global-map-legend-text{display:flex;gap:5px;align-items:baseline;min-width:0;font-size:12px}.global-map-legend-text b{white-space:nowrap}.global-map-legend-text span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#64748b}.global-project-tooltip{pointer-events:auto!important}.global-project-tooltip .leaflet-tooltip-content,.global-map-hover-card{line-height:1.45}.global-map-hover-card a{font-weight:700;text-decoration:underline}.leaflet-interactive{transition:stroke-width .12s ease,fill-opacity .12s ease}@media(max-width:760px){.global-map-legend{grid-template-columns:repeat(2,minmax(0,1fr))}.global-map-legend-head{align-items:flex-start;flex-direction:column;gap:2px}.global-map-legend-text{display:block}.global-map-legend-text span{display:block;margin-top:1px}}@media(max-width:430px){.global-map-legend{grid-template-columns:1fr}}

/* V2.1 notification POST rows */
.notification-form{margin:0;padding:0}.notification-button{width:100%;border:0;text-align:left;font:inherit;cursor:pointer;background:transparent}.notification-button:hover{background:#f7fafc}

/* V2.2.3 - compact project workspace UI */
body{background:#f3f6fa;color:#1e293b}
.container{max-width:1600px;padding:18px 22px}
.project-page-head{margin:2px 0 14px;padding:0 2px}.project-page-head h1{font-size:25px;line-height:1.2;letter-spacing:-.35px;color:#182235}.project-page-head .project-code{font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#7a8ba3;margin-bottom:3px}.project-page-head .head-actions{gap:6px;flex-wrap:wrap}.project-page-head .btn{padding:7px 10px;font-size:12px}
.project-layout-modern{grid-template-columns:224px minmax(0,1fr);gap:16px;align-items:start}
.project-context-nav{margin-left:4px;background:#fff;border:1px solid #dce4ee;border-radius:14px;padding:10px;box-shadow:0 3px 12px rgba(28,48,77,.045);top:70px;max-height:calc(100vh - 88px)}
.project-context-nav .context-title{display:block;padding:7px 10px 8px;color:#8090a6;font-size:11px;text-transform:uppercase;letter-spacing:.1em}
.project-context-nav>a{min-height:38px;display:flex;align-items:center;justify-content:flex-start;gap:10px;padding:8px 10px;margin:1px 0;border-radius:9px;color:#40516a;font-weight:500;transition:.15s ease}
.project-context-nav>a:hover{background:#f1f6fc;color:#145ea8}.project-context-nav>a:target,.project-context-nav>a.active{background:#e8f1fd;color:#145ea8;font-weight:700}
.project-context-nav .nav-line-icon{width:18px;height:18px;flex:0 0 18px;fill:none;stroke:#8294aa;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.project-context-nav>a:hover .nav-line-icon,.project-context-nav .directive-nav-link .nav-line-icon{stroke:#145ea8}
.project-context-nav .directive-nav-link{color:#145ea8;font-weight:700;background:#f7fbff}
.project-context-nav hr{border:0;border-top:1px solid #e5ebf2;margin:8px 4px}
.project-context-nav .step-nav-link{justify-content:space-between;min-height:32px;padding:5px 10px;color:#486079;font-weight:500}.project-context-nav .step-nav-link small{font-size:11px;color:#7890a9;background:#f0f4f8;padding:2px 6px;border-radius:999px}.project-context-nav .step-nav-link:hover small{background:#dfeafa;color:#145ea8}
.project-main-modern{min-width:0}.project-main-modern>.card{border:1px solid #dce4ee;border-radius:14px;padding:15px 16px;margin-bottom:14px;box-shadow:0 2px 8px rgba(28,48,77,.035)}.project-main-modern>.card h2{font-size:16px;color:#182235}.project-main-modern>.card h3{font-size:14px;color:#26364d}.project-main-modern .section-head{margin-bottom:10px}.project-main-modern .meta{font-size:12px}.project-main-modern .badge{font-size:11px;padding:3px 7px}
.project-governance{border-radius:11px!important;background:#f8fafc!important;border:1px solid #e2e9f1!important;padding:10px 12px!important;margin-bottom:10px!important}.project-governance small{font-size:11px;color:#71839a}.project-governance b{font-size:13px;color:#25364e}
.directive-highlight{margin:11px 0 10px;border:1px solid #bcd7fb;border-left:4px solid #2876d5;border-radius:12px;background:linear-gradient(135deg,#f7fbff 0%,#eef6ff 100%);padding:12px}.directive-highlight-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:7px}.directive-highlight-head small{display:block;color:#2b6cb5;font-size:9px;font-weight:800;letter-spacing:.12em;margin-bottom:2px}.directive-highlight-head h2{margin:0!important;font-size:16px!important;color:#134f96!important}.directive-count{white-space:nowrap;border:1px solid #c9ddf8;background:#fff;color:#37658f;padding:4px 8px;border-radius:999px;font-size:10px;font-weight:700}.directive-highlight .directive-card{background:#fff;border:1px solid #d9e7f6;border-radius:10px;padding:10px;margin-top:8px}.directive-highlight .directive-card:first-of-type{margin-top:0}.directive-highlight .result-box{background:#f7fafc;border-radius:8px;padding:8px}.directive-highlight>details{margin-top:8px}.directive-highlight>details>summary{color:#145ea8;font-weight:700;cursor:pointer}
.governance-edit{margin-top:8px!important;border-top:1px dashed #d8e0e9;padding-top:8px}.governance-edit>summary{font-size:12px;color:#145ea8;font-weight:700}
.project-main-modern .table-wrap{border-radius:11px;border-color:#e0e7ef}.project-main-modern th{background:#f8fafc;color:#52657d;font-size:11px;text-transform:uppercase;letter-spacing:.02em}.project-main-modern th,.project-main-modern td{padding:8px 9px}.project-main-modern .form-card{border-radius:11px;background:#fbfcfe}.project-main-modern details>summary{cursor:pointer}
@media(max-width:980px){.container{padding:12px}.project-layout-modern{grid-template-columns:190px minmax(0,1fr);gap:10px}.project-context-nav{margin-left:0}.project-context-nav>a{font-size:12px;padding:7px 8px}.project-context-nav .nav-line-icon{width:16px;height:16px;flex-basis:16px}}
@media(max-width:760px){.container{padding:10px}.project-page-head{align-items:flex-start;gap:8px}.project-page-head h1{font-size:20px}.project-layout-modern{display:block}.project-context-nav{position:static;display:flex;gap:5px;overflow-x:auto;max-height:none;margin:0 0 10px;border-radius:12px;padding:7px}.project-context-nav .context-title,.project-context-nav hr{display:none}.project-context-nav>a{white-space:nowrap;min-height:34px;background:#f8fafc;border:1px solid #e5ebf2;margin:0}.project-context-nav .step-nav-link{min-width:74px}.project-main-modern>.card{padding:12px;border-radius:12px}.directive-highlight-head{align-items:flex-start}.directive-count{font-size:9px}}

/* V2.2.3 r2 - square flush-left sidebar + project title inside main content */
.project-layout-modern{--project-sidebar-bleed:max(22px,calc((100vw - 1556px)/2));margin-left:calc(0px - var(--project-sidebar-bleed));grid-template-columns:calc(224px + var(--project-sidebar-bleed)) minmax(0,1fr);gap:16px;align-items:start}
.project-context-nav{margin-left:0;border-radius:0!important;border-left:0;padding-left:24px;box-shadow:none}
.project-main-modern .project-page-head{background:#fff;border:1px solid #dce4ee;border-radius:12px;padding:12px 14px;margin:0 0 14px;box-shadow:0 2px 8px rgba(28,48,77,.035)}
.project-main-modern .project-page-head h1{font-size:23px;margin:0}
.project-main-modern .project-page-head .project-code{margin-bottom:2px}
@media(max-width:980px){.project-layout-modern{--project-sidebar-bleed:12px;grid-template-columns:calc(190px + var(--project-sidebar-bleed)) minmax(0,1fr)}.project-context-nav{border-radius:0!important;padding-left:18px}}
@media(max-width:760px){.project-layout-modern{display:block;margin-left:0}.project-context-nav{border:1px solid #dce4ee;border-radius:0!important;padding:7px}.project-main-modern .project-page-head{border-radius:10px;padding:10px 12px}.project-main-modern .project-page-head h1{font-size:20px}}

/* V2.2.3 r3 - flat project header, single-level overview card, sidebar flush under topbar */
/* The project workspace itself reaches the top edge of the main container; only right content keeps top breathing room. */
.project-layout-modern{margin-top:-18px}
.project-main-modern{padding-top:18px}
.project-context-nav{top:52px;max-height:calc(100vh - 52px);border-top:0}

/* Project identity/actions are intentionally NOT a card. */
.project-main-modern .project-page-head{background:transparent;border:0;border-radius:0;padding:0 2px 10px;box-shadow:none;margin:0 0 4px}
.project-main-modern .project-page-head .head-actions{align-items:center}
.project-main-modern .project-page-head form{margin:0}

/* Information project is the only outer card: nested presentation blocks are flat. */
.project-main-modern #overview .project-governance,
.project-main-modern #overview .directive-highlight,
.project-main-modern #overview .directive-card,
.project-main-modern #overview .result-box,
.project-main-modern #overview .status-inline,
.project-main-modern #overview .form-card{
  background:transparent!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
}
.project-main-modern #overview .project-governance{padding:0 0 10px!important;margin:0 0 10px!important;border-bottom:1px solid #e6ebf1!important}
.project-main-modern #overview .directive-highlight{padding:4px 0 10px;margin:0 0 10px;border-bottom:1px solid #e6ebf1!important}
.project-main-modern #overview .directive-highlight .directive-card{padding:9px 0;margin:0;border-top:1px solid #edf1f5!important}
.project-main-modern #overview .directive-highlight .directive-card:first-of-type{border-top:0!important;padding-top:3px}
.project-main-modern #overview .directive-highlight .result-box{padding:7px 0}
.project-main-modern #overview .status-inline{padding:9px 0;margin:9px 0;border-top:1px solid #edf1f5!important;border-bottom:1px solid #edf1f5!important}
.project-main-modern #overview .form-card{padding:8px 0;margin:6px 0 10px}
.project-main-modern #overview .governance-edit{border-top:1px solid #edf1f5;padding-top:8px}

@media(max-width:980px){
  .project-layout-modern{margin-top:-12px}
  .project-main-modern{padding-top:12px}
  .project-context-nav{top:52px;max-height:calc(100vh - 52px)}
}
@media(max-width:760px){
  .project-layout-modern{margin-top:-10px}
  .project-main-modern{padding-top:10px}
  .project-context-nav{top:auto;max-height:none}
  .project-main-modern .project-page-head{padding:0 0 9px;border-radius:0}
}

/* V2.2.3 R4 — compact project header + top progress */
.project-main-modern .project-page-head{padding-bottom:7px;margin-bottom:2px}
.project-title-line{min-width:0}.project-title-line h1{white-space:normal}
.project-code-inline{font-size:.62em;font-weight:700;color:#6f8198;letter-spacing:0;white-space:nowrap}
.project-progress-top{margin:0 0 12px;padding:0 2px 10px;border-bottom:1px solid #e3e9f0}
.project-progress-title{font-size:12px;font-weight:800;color:#53657c;margin:0 0 5px}
.project-progress-top .timeline-steps{padding:0;gap:5px}
.project-progress-top .timeline-step{padding:6px 5px;border-radius:7px;min-width:0;box-shadow:none}
.project-progress-top .step-dot{min-width:24px;width:24px;height:24px;font-size:9px}
.project-progress-top .timeline-step>span:last-child{min-width:0}
.project-progress-top .timeline-step b{font-size:10px}.project-progress-top .timeline-step small{font-size:9px;display:inline;margin-left:3px}
.project-progress-top .step-name{font-size:9px;line-height:1.15;margin-top:2px;display:block;overflow:hidden;text-overflow:ellipsis}
.project-main-modern #overview .compact-governance-row{display:flex!important;align-items:center;flex-wrap:wrap;gap:5px 7px;padding:0 0 9px!important}
.project-main-modern #overview .compact-governance-row span{display:inline-flex;align-items:center;gap:4px;min-width:0}
.project-main-modern #overview .compact-governance-row small{display:inline;margin:0;font-size:11px;color:#71839a}
.project-main-modern #overview .compact-governance-row b{display:inline;margin:0;font-size:12px;color:#25364e}
.project-main-modern #overview .compact-governance-row em{font-style:normal;font-size:10px;color:#8291a5}
.project-main-modern #overview .compact-governance-row .governance-separator{color:#a4afbc;margin:0 2px}
@media(max-width:980px){.project-progress-top .timeline-steps{grid-template-columns:repeat(6,minmax(0,1fr))}}
@media(max-width:760px){.project-page-head{display:block}.project-page-head .head-actions{margin-top:6px}.project-progress-top{padding-left:0;padding-right:0}.project-progress-top .timeline-steps{grid-template-columns:repeat(3,minmax(0,1fr))}.project-main-modern #overview .compact-governance-row{align-items:flex-start}.project-main-modern #overview .compact-governance-row .governance-separator{display:none}.project-main-modern #overview .compact-governance-row>span:not(.governance-separator){flex-basis:100%}}
.project-progress-top .timeline-step-info{display:block;min-width:0}.project-progress-top .timeline-step-info small{display:block;margin:0 0 1px;font-size:9px;font-weight:800;color:#60758d}

/* V2.2.3 R5 - compact members above governance */
.project-members-compact{padding:0 0 12px;margin:0 0 10px;border-bottom:1px solid #e8edf3}
.project-members-compact .section-head{margin-bottom:7px}
.project-members-compact .section-head h2{font-size:15px;margin:0}
.project-members-compact .member-list{display:flex;flex-wrap:wrap;gap:6px 12px;margin:0}
.project-members-compact .member-row{display:flex;align-items:center;gap:6px;padding:3px 0;border:0;background:transparent;min-width:210px}
.project-members-compact .member-row>div{display:flex;align-items:center;gap:5px;flex-wrap:wrap}
.project-members-compact .member-row b{font-size:13px}
.project-members-compact .member-row small{font-size:11px;color:#77808d}
.project-members-compact details{margin-top:7px}
.project-members-compact details>summary{font-size:12px}
.project-governance.compact-governance-row{margin-top:0;padding-top:0}
.governance-divider{display:none}
@media(max-width:760px){.project-members-compact .member-list{display:block}.project-members-compact .member-row{min-width:0}.project-members-compact .member-row>div{display:block}}

/* V2.2.3 R6 - governance then members; creator pinned right */
.project-members-compact .member-list{display:flex;align-items:flex-start;gap:8px 16px;width:100%}
.project-members-compact .member-row{flex:0 1 auto;min-width:150px}
.project-members-compact .member-row>div{display:flex;flex-direction:column;align-items:flex-start;gap:1px}
.project-members-compact .member-row small{display:block}
.project-members-compact .member-row .member-role{font-size:10px;opacity:.72}
.project-members-compact .member-creator{margin-left:auto;text-align:right}
.project-members-compact .member-creator>div{align-items:flex-end}
.directive-highlight-head>div>h2{margin-top:0}
@media(max-width:760px){.project-members-compact .member-list{display:flex;flex-wrap:wrap}.project-members-compact .member-creator{margin-left:0}.project-members-compact .member-creator>div{align-items:flex-start}}

/* V2.2.3 R7 - no disclosure arrows on project action summaries */
.project-main-modern details>summary{list-style:none}
.project-main-modern details>summary::-webkit-details-marker{display:none}
.project-main-modern details>summary::marker{content:""}

/* V2.2.3 R8 - remove redundant horizontal separators */
.project-members-compact{border-bottom:0!important}
.project-progress-top{border-bottom:0!important}

/* V2.2.3 R9 - approval workflow */
.post-approval-additions{margin-top:12px;padding-top:12px;border-top:1px solid #e5ebf2}.post-approval-additions h3{margin:0;font-size:15px}.post-approval-actions{display:flex;flex-wrap:wrap;gap:8px 18px;align-items:flex-start}.post-approval-actions>details{margin-top:0;min-width:180px}.post-approval-actions>details[open]{flex:1 1 100%;min-width:100%}.locked-content{opacity:.94}.project-context-nav hr,.project-context-nav .step-nav-link{display:none!important}

/* V2.2.3 R11 - description and initial info before directives */
.project-primary-description{margin:0 0 14px}
.project-primary-description h3{margin:0 0 6px;font-size:15px}
.project-primary-description .content-html{margin:0 0 12px}
