:root{--green:#42765b;--dark:#284b3b;--bg:#f3f5f2;--line:#dbe3dc;--muted:#67766b;--gold:#ccab57;--red:#a44138;font-family:'Segoe UI',Arial,sans-serif;color:var(--dark);font-size:14px;line-height:1.5;color-scheme:light}
*{box-sizing:border-box}body{margin:0;background:var(--bg)}[hidden]{display:none!important}button,input,select,textarea{font:inherit}button{cursor:pointer;border:1px solid var(--line);background:#fff;color:var(--dark);border-radius:8px;padding:9px 12px}button:hover{border-color:var(--green);background:#edf4ee}button:disabled{opacity:.55;cursor:wait}button.primary{background:var(--green);border-color:var(--green);color:#fff}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline:3px solid #8eaf99;outline-offset:2px}h1{font-size:29px;line-height:1.2;margin:8px 0}h2{font-size:18px;margin:0 0 6px}h3{font-size:14px;margin:0 0 8px}p{margin:0 0 12px}header{background:#304f40;color:#fff;padding:25px 4vw 0}header small{color:#bfcec3;letter-spacing:2px}header p{color:#dbe5dd;margin:0}.top,.brand-heading,.actions,.tools,.dialog-head{display:flex;gap:12px;align-items:center}.top{justify-content:space-between;gap:20px}.brand-heading{gap:18px}.brand-logo{width:86px;height:74px;object-fit:contain;background:#fff;border-radius:7px;padding:6px}.actions,.tools{flex-wrap:wrap;gap:8px}.role-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;color:#dbe5dd;font-size:12px;margin-top:18px}.role-bar button{background:transparent;color:#e1e9e3;border-color:#617668;font-size:12px;padding:5px 9px}.tabs{display:flex;gap:7px;padding-top:20px;overflow-x:auto}.tabs button{flex-shrink:0;border-bottom:0;border-radius:8px 8px 0 0;background:transparent;color:#e1e9e3;border-color:#617668;padding:12px 16px}.tabs button.active{background:var(--bg);color:var(--dark);border-color:var(--bg);font-weight:600}main{padding:18px 4vw 40px;max-width:1900px;margin:auto}.sync-row{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px;font-size:12px;color:var(--muted)}.text-button{border:0;background:transparent;font-size:12px;padding:4px 7px}.sync-row .error{margin:0}.filters{display:flex;gap:10px;flex-wrap:wrap;align-items:end;padding:16px;background:#fff;border:1px solid var(--line);border-radius:12px;margin-bottom:20px}.field{font-size:12px;color:var(--muted);display:flex;flex-direction:column;gap:5px}.field input,.field select,.field textarea{background:#fbfdfb;border:1px solid var(--line);border-radius:7px;padding:10px;max-width:290px;color:#183c2b;min-width:0}.field select{max-width:230px}.search{flex:1;min-width:220px}.search input{max-width:none}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:15px;margin-bottom:22px}.stat{background:#fff;padding:17px;border-radius:12px;border:1px solid var(--line)}.stat .num{font-size:31px;font-weight:700;line-height:1.3;margin:5px 0}.stat small,.muted{color:var(--muted);font-size:12px}.stat.green{background:#e2ece4;border-color:#c1d2c6}.stat.warning{background:#faf4e5;border-color:#e7d9b2}.stat-label{font-size:12px;font-weight:600}.bar{height:8px;background:#e7eee8;border-radius:10px;overflow:hidden;display:flex}.bar span{height:100%;display:block;flex-shrink:0}.accepted{background:var(--green)}.pending{background:var(--gold)}.open{background:#dbe3dc}.grid{display:grid;grid-template-columns:1.5fr 1fr;gap:20px}.panel{background:#fff;border:1px solid var(--line);border-radius:12px;padding:20px;margin-bottom:20px}.sub{font-size:12px;color:var(--muted);margin:0 0 18px}.floorline{display:grid;grid-template-columns:95px 1fr 80px;gap:12px;align-items:center;margin:12px 0}.floorline button{padding:4px 6px;font-size:12px;text-align:left}.floorline .bar{height:13px}.floorline .count{text-align:right;font-size:12px}.legend{display:flex;gap:16px;flex-wrap:wrap;font-size:12px;color:var(--muted);margin-bottom:16px}.dot{width:9px;height:9px;border-radius:50%;display:inline-block;margin-right:5px}.towercards{display:grid;grid-template-columns:1fr 1fr;gap:12px}.towercard{border:1px solid var(--line);padding:15px;border-radius:10px}.towercard>b{font-size:20px}.towercard p{margin:10px 0;font-size:13px}.percentage{font-size:30px;font-weight:700}.tablewrap{overflow:auto;border:1px solid var(--line);border-radius:10px;background:#fff}table{width:100%;border-collapse:collapse}th{background:#e8eee8;text-align:left;font-size:12px;padding:12px;white-space:nowrap}td{padding:12px;border-bottom:1px solid var(--line);vertical-align:top}tbody tr:last-child td{border-bottom:none}.report-table td,.report-table th{padding:10px;font-size:12px}.report-table .row-button{padding:0;border:0;background:transparent;text-align:left;color:var(--green);font-size:12px;font-weight:600}.detail-table{min-width:1160px;table-layout:fixed}.detail-table th:nth-child(1){width:135px}.detail-table th:nth-child(2){width:140px}.detail-table th:nth-child(3){width:250px}.detail-table th:nth-child(4){width:215px}.detail-table th:nth-child(5){width:225px}.detail-table th:nth-child(6){width:215px}.detail-table td{font-size:12px;overflow-wrap:anywhere}.id{font-weight:700;font-size:13px}.badge{display:inline-block;font-size:11px;border-radius:20px;padding:3px 8px;margin:6px 0;background:#edf0ed;color:#5b6c60}.badge.done{background:#dceee1;color:#266344}.badge.wait{background:#fff2cc;color:#856215}.thumb-button{border:0;padding:0;background:transparent;cursor:zoom-in}.thumb{display:block;width:113px;height:130px;object-fit:contain;background:#f2f5f2;border-radius:6px}.check{display:flex;gap:8px;align-items:flex-start;margin-bottom:10px;cursor:pointer}.check input{accent-color:var(--green);width:19px;height:19px;flex-shrink:0;cursor:pointer;margin:1px 0 0}.check input:disabled{cursor:not-allowed}.check span{font-size:12px}.check strong{display:block;font-weight:600}.vendor-check{padding:9px;background:#f5f8f5;border:1px solid #e1e8e2;border-radius:8px}.vendor-check.checked{background:#e9f3eb}.vendor-check small{display:block;margin-top:3px;font-size:11px;color:var(--muted)}.note{width:100%;border:1px solid var(--line);border-radius:6px;resize:vertical;padding:8px;font-size:12px;background:#fff;min-height:58px}.note-save{font-size:11px;padding:4px 8px;margin-top:5px}.reject{font-size:11px;padding:4px 7px;color:#995b1c;margin:3px 3px 0 0}.issue-proposal{white-space:pre-line;margin:8px 0}.cell-description{white-space:pre-line}.issue-caption{font-size:11px;color:var(--muted);margin-top:5px}.pager{display:flex;justify-content:space-between;align-items:center;margin:14px 0;gap:10px;font-size:12px}.pager .tools{justify-content:flex-end}.pager button{padding:7px 11px}.empty{padding:36px;text-align:center;color:var(--muted)}.list-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}.footer-hint{font-size:12px;color:var(--muted);margin-top:22px}details summary{cursor:pointer;color:var(--green);font-size:12px;margin:8px 0}.source-value{white-space:pre-wrap;overflow-wrap:anywhere}.handover-table{min-width:1180px;table-layout:fixed}.handover-table th:nth-child(1){width:170px}.handover-table th:nth-child(2){width:190px}.handover-table th:nth-child(3){width:180px}.handover-table th:nth-child(4){width:115px}.handover-table th:nth-child(5){width:180px}.handover-table th:nth-child(6){width:130px}.handover-table th:nth-child(7){width:215px}.handover-table td{font-size:12px;overflow-wrap:anywhere}.handover-table input[type=datetime-local]{width:100%;border:1px solid var(--line);border-radius:6px;padding:8px 5px;font-size:12px;color:var(--dark)}.h-detail-button{padding:4px 7px;font-size:11px;margin-top:6px}.h-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.h-detail-grid .field input{max-width:none;width:100%}.source-table{margin-bottom:20px}.source-table th{width:38%;white-space:normal}.source-table td{font-size:13px}.special-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.special-grid td{font-size:12px}.special-grid table{min-width:400px}.login-screen{min-height:100vh;display:grid;place-items:center;background:#e8eee8;padding:28px}.login-card{background:#fff;border:1px solid var(--line);border-radius:18px;padding:32px;width:100%;max-width:430px;box-shadow:0 18px 60px #304f4010}.login-card h1{font-size:25px;margin:10px 0}.login-card>small{letter-spacing:1.6px;color:#8b794d}.login-card p{color:var(--muted);font-size:13px}.login-card .field{margin:16px 0}.login-card input{width:100%;max-width:none;padding:12px}.login-card button{width:100%;padding:12px}.login-card .login-foot{font-size:11px;margin:20px 0 0}.login-logo{display:block;width:105px;height:82px;object-fit:contain;margin-bottom:20px}.error{color:var(--red)!important;font-size:13px;margin:10px 0}.login-card .error:empty{display:none}dialog{border:1px solid var(--line);border-radius:14px;max-width:94vw;max-height:90vh;padding:22px;color:var(--dark);width:480px}dialog::backdrop{background:#132c21b8}.dialog-head{justify-content:space-between;margin-bottom:18px;gap:20px}.dialog-head h2{margin:0}.dialog-head button{white-space:nowrap}.dialog-head+form .field,#passwordForm .field{margin-bottom:14px}#passwordForm input{max-width:none}#photoDialog{width:auto}#fullPhoto{display:block;max-width:85vw;max-height:74vh;margin:auto;object-fit:contain}#detailsDialog{width:780px}#accountsDialog{width:860px}#accountsBody table{min-width:600px}#accountResult:not(:empty){padding:15px;border:1px solid #b5cdbd;border-radius:8px;margin-top:16px;background:#edf5ef}#accountResult input{padding:9px;width:100%;margin-top:8px;border:1px solid var(--line);border-radius:6px;font-family:monospace}#toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);background:#203e2e;color:#fff;padding:12px 20px;border-radius:9px;z-index:100;max-width:90vw;box-shadow:0 4px 20px #203e2e30}#toast.error{background:#983f36;color:#fff!important}.save-error{border:2px solid #ae554b!important}.count-link{color:var(--green);text-decoration:underline}.no-photo{height:130px;display:grid;place-items:center;background:#f2f5f2;color:var(--muted);font-size:11px;border-radius:6px}
@media(max-width:1000px){header{padding:22px 22px 0}main{padding:18px 22px 35px}.top{align-items:flex-start}.actions{justify-content:flex-end}.grid{grid-template-columns:1fr}.special-grid{grid-template-columns:1fr}.panel{padding:16px}.stats{gap:10px}.stat{padding:14px}}
@media(max-width:650px){header{padding:18px 16px 0}main{padding:14px 12px 30px}h1{font-size:23px}.brand-logo{width:62px;height:62px}.brand-heading{gap:12px}.brand-heading small{font-size:10px}.brand-heading p{font-size:12px}.top{display:block}.actions{justify-content:flex-start;margin-top:16px}.actions button{font-size:12px;padding:7px 10px}.tabs{margin-left:-4px;margin-right:-4px;padding-top:14px}.tabs button{padding:11px 12px;font-size:12px}.role-bar{align-items:flex-start;font-size:11px}.role-bar .tools{justify-content:flex-end}.role-bar button{font-size:11px}.stats{grid-template-columns:1fr 1fr}.stat .num{font-size:28px}.stat-label{font-size:11px}.stat small{font-size:11px}.filters{padding:12px;gap:10px}.filters>.field:not(.search){width:calc(50% - 5px)}.filters .field select{width:100%;max-width:none}.search{min-width:100%;order:2}.filters>button{font-size:12px;width:100%;order:3}.filters input,.filters select{font-size:14px}.floorline{grid-template-columns:88px 1fr 63px;gap:8px}.legend{gap:10px;font-size:11px}.pager{align-items:flex-start}.pager .tools{gap:5px}.pager button{padding:7px 10px}.sync-row{font-size:11px}.h-detail-grid{grid-template-columns:1fr}.login-card{padding:26px}.login-screen{padding:20px}dialog{padding:17px}.detail-table{min-width:0;display:block;border-collapse:separate}.detail-table thead{display:none}.detail-table tbody{display:block}.detail-table tr{display:grid;grid-template-columns:118px 1fr;gap:0;border-bottom:8px solid var(--bg);padding:10px}.detail-table td{display:block;padding:8px;border:none}.detail-table td:nth-child(1){grid-column:2;grid-row:1}.detail-table td:nth-child(2){grid-column:1;grid-row:1 / span 2}.detail-table td:nth-child(3){grid-column:2;grid-row:2}.detail-table td:nth-child(4),.detail-table td:nth-child(5),.detail-table td:nth-child(6){grid-column:1 / -1}.detail-table td:nth-child(4)::before{content:'Đề xuất sửa chữa';font-weight:600}.detail-table td:nth-child(5)::before{content:'Xác nhận của nhà thầu';display:block;font-weight:600;margin-bottom:8px}.detail-table td:nth-child(6){border-top:1px solid var(--line)}.thumb{width:103px}.detail-table .vendor-check{min-height:50px;align-items:center}.detail-table .check input{width:23px;height:23px}.detail-table .check span{font-size:13px}.detail-table .note{font-size:14px}.detail-table .note-save{font-size:13px;padding:7px 11px}.detail-table .reject{padding:6px 9px}.tablewrap:has(.detail-table){border:0;background:transparent}.detail-table tr{background:#fff;border-radius:10px;margin-bottom:10px;border:1px solid var(--line)}.handover-table{min-width:1100px}.towercard{padding:12px}}
@media print{header .actions,.role-bar,.tabs,.filters,.sync-row,.footer-hint,.tools,.pager,#toast{display:none!important}body{background:#fff}header{background:#fff;color:var(--dark);padding:0}header p,header small{color:var(--dark)}main{padding:15px 0}.panel,.stat{break-inside:avoid}.grid,.special-grid{display:block}.stats{gap:6px}.stat{padding:10px}.tablewrap{overflow:visible}button{border:0}dialog{display:none!important}}
.panel,.grid>div,.special-grid>div{min-width:0}.space-top{margin-top:14px}.detail-table{min-width:1700px}.detail-table th:nth-child(1){width:150px}.detail-table th:nth-child(2){width:135px}.detail-table th:nth-child(3){width:235px}.detail-table th:nth-child(4){width:230px}.detail-table th:nth-child(5){width:255px}.detail-table th:nth-child(6){width:215px}.detail-table th:nth-child(7){width:205px}.detail-table th:nth-child(8){width:235px}.detail-table td{padding:12px 10px}.repair-work{padding:0 0 13px;margin:0 0 13px;border-bottom:1px solid var(--line)}.repair-work:last-child{margin:0;padding:0;border-bottom:0}.repair-work .check{margin-bottom:6px}.check small{display:block}.repair-date-label{display:block;margin:9px 0}.repair-date{display:block;width:100%;border:1px solid var(--line);border-radius:6px;padding:7px;margin-top:4px;color:var(--dark);background:white;font-size:12px}.badge.working{background:#e2edf5;color:#375e79}.inspector-check{margin-top:15px}.export-tools{display:flex;align-items:center;flex-wrap:wrap;gap:12px;margin:10px 0 14px}.export-tools .check{margin:0}.vendor-search{margin-bottom:14px;max-width:440px}.vendor-search input{max-width:none}.saving{box-shadow:0 0 0 2px #c1d7c8}.save-error{background:#fff1ef!important;border-color:#b35046!important}#issueDialog{width:820px}#vendorDialog{width:670px}#handoverInfoDialog{width:610px}#rejectDialog{width:470px}dialog .field{margin-bottom:13px}dialog .field input,dialog .field select,dialog .field textarea{width:100%;max-width:none}dialog .note{font-size:14px}.h-edit-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 15px}.vendor-choices{display:grid;grid-template-columns:1fr 1fr;gap:10px;max-height:205px;overflow:auto;padding:8px 0;margin:7px 0 12px}.vendor-choices .check{margin:0}.vendor-choices [hidden]{display:none!important}fieldset{border:1px solid var(--line);border-radius:8px;padding:12px;margin:14px 0}fieldset legend{padding:0 6px;font-size:13px;font-weight:600}fieldset>input[type=search]{width:100%;padding:8px;border:1px solid var(--line);border-radius:6px}.handover-table .h-edit{display:block;width:100%;min-width:0;background:white;border:1px solid var(--line);border-radius:6px;padding:8px 6px;margin-bottom:7px;color:var(--dark);font-size:12px}.h-owner{font-size:11px;margin-top:8px}.special-table{min-width:590px}.special-table td,.special-table th{padding:10px 8px;font-size:12px}.special-table td:first-child{width:38px}.special-table input:not([type=checkbox]),.special-table textarea{width:100%;min-width:90px;max-width:none;border:1px solid var(--line);border-radius:6px;padding:7px;font-size:12px;color:var(--dark);background:white}.special-table .check{min-width:100px}.special-table td:nth-child(2){min-width:135px}.special-table td:nth-last-child(2){min-width:180px}.special-table .design-green{background:#eaf3ec}#repairNotes td:nth-last-child(-n+3){min-width:190px}#contractorTable td:last-child{min-width:250px}.field [readonly]{background:#f4f6f3}#helpDialog li{margin:0 0 10px}
@media(max-width:1100px){.special-grid{grid-template-columns:1fr}.list-head{flex-wrap:wrap}.export-tools{align-items:flex-start}.actions{max-width:560px}}
@media(max-width:650px){.detail-table{min-width:0}.detail-table td:nth-child(n+4){grid-column:1/-1;grid-row:auto}.detail-table td:nth-child(4)::before{content:'Tiếp nhận thông tin'}.detail-table td:nth-child(5)::before{content:'Tiến độ sửa chữa'}.detail-table td:nth-child(6)::before{content:'Nhà thầu đã sửa xong'}.detail-table td:nth-child(7)::before{content:'Người kiểm tra / nghiệm thu'}.detail-table td:nth-child(8)::before{content:'Ghi chú / yêu cầu sửa lại'}.detail-table td:nth-child(n+4)::before{display:block;font-weight:600;margin-bottom:12px}.detail-table td.empty{grid-column:1/-1;grid-row:auto}.detail-table td:nth-child(n+4){border-top:1px solid var(--line);margin-top:5px;padding-top:12px}.repair-work .note{font-size:14px}.repair-date{font-size:14px;padding:10px}.repair-work{margin-bottom:15px;padding-bottom:15px}.h-edit-grid{grid-template-columns:1fr}.vendor-choices{grid-template-columns:1fr}.vendor-choices .check{padding:5px 0}.special-table{min-width:590px}.export-tools{gap:10px}.export-tools button{width:100%;font-size:12px}.export-tools>.muted{font-size:11px}#issueDialog .field input,#issueDialog .field select,dialog .field input,dialog .field select{font-size:15px}.list-head>.primary{width:100%}.actions{max-width:none}}
