:root{color:#1f2933;background:#f6f7f8;font-family:Inter,PingFang SC,Microsoft YaHei,system-ui,sans-serif;font-size:13px;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{margin:0;min-width:1280px;min-height:100vh;background:#f6f7f8}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled,input:disabled{cursor:not-allowed;opacity:.58}a{color:inherit;text-decoration:none}.app-shell{display:grid;min-height:100vh;grid-template-columns:216px minmax(0,1fr)}.sidebar{position:sticky;top:0;display:flex;height:100vh;flex-direction:column;gap:18px;border-right:1px solid #e5e7eb;background:#fff;padding:18px 14px}.brand{display:flex;align-items:center;gap:10px;min-height:44px;padding:0 6px 10px;border-bottom:1px solid #eef0f2}.brand strong{display:block;color:#111827;font-size:15px;font-weight:700}.brand small,.page-toolbar p,.form-hint,.summary-card span,td small{color:#6b7280}.brand-mark{display:grid;width:32px;height:32px;place-items:center;border-radius:6px;background:#111827;color:#fff;font-weight:700}.side-nav{display:grid;gap:4px}.nav-link,.logout-button{display:flex;align-items:center;gap:9px;min-height:34px;border-radius:6px;padding:0 10px;color:#4b5563}.nav-link.router-link-exact-active{background:#f0f3f6;color:#111827;font-weight:650}.nav-link:hover,.logout-button:hover{background:#f6f7f8;color:#111827}.logout-button{width:100%;margin-top:auto;border:0;background:transparent}.content{min-width:0;padding:22px 24px;overflow:hidden}.page-toolbar{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:14px}.page-toolbar h1,.source-panel h2,.modal-header h2{margin:0;color:#111827;font-size:18px;font-weight:700}.page-toolbar p,.source-panel p{margin:4px 0 0}.toolbar-actions,.form-actions,.row-actions,.filter-actions,.modal-header,.source-panel{display:flex;align-items:center;justify-content:space-between;gap:10px}.toolbar-search{width:180px}.primary-button,.secondary-button,.icon-button,.danger-icon-button,.file-button{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:32px;border-radius:6px;border:1px solid #d1d5db;padding:0 11px;background:#fff;color:#1f2937}.primary-button,.file-button{border-color:#111827;background:#111827;color:#fff}.secondary-button{background:#fff}.icon-button,.danger-icon-button{width:32px;padding:0}.danger-icon-button{border-color:#f0c7c5;color:#b42318}.full{width:100%}.fit{width:fit-content}.tabs{display:flex;gap:6px;margin-bottom:12px}.tabs button{min-height:32px;border:1px solid #d1d5db;border-radius:6px;padding:0 12px;background:#fff;color:#4b5563}.tabs .active{border-color:#111827;color:#111827;font-weight:650}.filter-panel,.table-wrap,.form-panel,.source-panel,.json-view{border:1px solid #e5e7eb;border-radius:6px;background:#fff}.filter-panel{display:flex;align-items:end;flex-wrap:wrap;gap:10px;margin-bottom:14px;padding:12px}.filter-panel label{flex:0 0 108px}.filter-panel .filter-keyword,.filter-panel .filter-project-select{flex-basis:168px}.filter-actions{justify-content:flex-end;align-self:end;flex:0 0 auto;min-width:74px}.table-wrap{max-width:100%;overflow-x:hidden}.pagination-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:12px;padding:10px 12px;border:1px solid #e5e7eb;border-radius:6px;background:#fff}.pagination-summary{color:#667085;font-size:12px}.pagination-actions{display:flex;align-items:center;gap:6px}.pagination-page{display:inline-flex;align-items:center;justify-content:center;width:32px;min-height:32px;border:1px solid #d1d5db;border-radius:6px;background:#fff;color:#344054}.pagination-page.active{border-color:#111827;background:#111827;color:#fff;font-weight:650}table{width:100%;min-width:0;border-collapse:collapse;table-layout:fixed}.listings-table th:nth-child(1),.listings-table td:nth-child(1){width:22%}.commercial-table th:nth-child(1),.commercial-table td:nth-child(1){width:12%}.listings-table th:nth-child(2),.listings-table td:nth-child(2){width:22%}.commercial-table th:nth-child(3),.commercial-table td:nth-child(3){width:14%}.listings-table th:nth-child(3),.listings-table td:nth-child(3){width:15%}.listings-table th:nth-child(4),.listings-table td:nth-child(4){width:9%}.commercial-table th:nth-child(2),.commercial-table td:nth-child(2),.commercial-table th:nth-child(4),.commercial-table td:nth-child(4),.commercial-table th:nth-child(5),.commercial-table td:nth-child(5){width:10%}.listings-table th:nth-child(5),.listings-table td:nth-child(5){width:14%}.listings-table th:nth-child(6),.listings-table td:nth-child(6){width:18%}.listings-table.with-owner-contact th:nth-child(1),.listings-table.with-owner-contact td:nth-child(1){width:15.5%}.listings-table.with-owner-contact th:nth-child(2),.listings-table.with-owner-contact td:nth-child(2){width:15.5%}.listings-table.with-owner-contact th:nth-child(3),.listings-table.with-owner-contact td:nth-child(3){width:13%}.listings-table.with-owner-contact th:nth-child(4),.listings-table.with-owner-contact td:nth-child(4){width:13%}.listings-table.with-owner-contact th:nth-child(5),.listings-table.with-owner-contact td:nth-child(5){width:9%}.listings-table.with-owner-contact th:nth-child(6),.listings-table.with-owner-contact td:nth-child(6){width:18%}.listings-table.with-owner-contact th:nth-child(7),.listings-table.with-owner-contact td:nth-child(7){width:16%}.agents-table th:nth-child(1),.agents-table td:nth-child(1){width:18%}.agents-table th:nth-child(2),.agents-table td:nth-child(2),.agents-table th:nth-child(4),.agents-table td:nth-child(4){width:12%}.agents-table th:nth-child(3),.agents-table td:nth-child(3){width:46%}.projects-table th:nth-child(1),.projects-table td:nth-child(1){width:34%}.projects-table th:nth-child(2),.projects-table td:nth-child(2),.projects-table th:nth-child(3),.projects-table td:nth-child(3){width:16%}.projects-table th:nth-child(4),.projects-table td:nth-child(4){width:24%}.house-types-table th:nth-child(1),.house-types-table td:nth-child(1),.house-types-table th:nth-child(2),.house-types-table td:nth-child(2){width:28%}.house-types-table th:nth-child(3),.house-types-table td:nth-child(3),.house-types-table th:nth-child(4),.house-types-table td:nth-child(4),.house-types-table th:nth-child(5),.house-types-table td:nth-child(5),.house-types-table th:nth-child(6),.house-types-table td:nth-child(6){width:8%}.articles-table th:nth-child(1),.articles-table td:nth-child(1){width:25%}.articles-table th:nth-child(2),.articles-table td:nth-child(2){width:43%}.articles-table th:nth-child(3),.articles-table td:nth-child(3){width:8%}.articles-table th:nth-child(4),.articles-table td:nth-child(4){width:12%}.users-table th:nth-child(1),.users-table td:nth-child(1){width:20%}.users-table th:nth-child(2),.users-table td:nth-child(2),.users-table th:nth-child(4),.users-table td:nth-child(4),.users-table th:nth-child(5),.users-table td:nth-child(5){width:18%}.users-table th:nth-child(3),.users-table td:nth-child(3){width:10%}th,td{overflow:hidden;padding:10px 12px;border-bottom:1px solid #edf0f2;text-align:left;text-overflow:ellipsis;vertical-align:middle}th{color:#667085;font-size:12px;font-weight:650;white-space:nowrap}td{color:#1f2937}td strong,td small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.house-type-cell{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.actions-cell{width:96px;text-align:right}.row-actions{justify-content:flex-end;gap:6px}.sell-requests-table th:nth-child(1),.sell-requests-table td:nth-child(1){width:30%}.sell-requests-table th:nth-child(2),.sell-requests-table td:nth-child(2){width:20%}.sell-requests-table th:nth-child(3),.sell-requests-table td:nth-child(3){width:22%}.sell-requests-table th:last-child,.sell-requests-table td:last-child{width:132px}.sell-request-detail{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;margin:0;overflow:hidden;border:1px solid #e5e7eb;border-radius:6px;background:#e5e7eb}.pending-update-panel{margin-bottom:16px;overflow:hidden;border:1px solid #f0c36d;border-radius:8px;background:#fffcf5}.pending-update-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:12px 14px;border-bottom:1px solid #f5dfb3}.pending-update-header strong{color:#7a4b00}.pending-update-header p{margin:3px 0 0;color:#7a6848;font-size:12px}.pending-change-table-wrap{overflow-x:auto}.pending-change-table{min-width:600px;table-layout:fixed}.pending-change-table th,.pending-change-table td{padding:9px 12px;border-bottom:1px solid #f3e8d0;text-align:left;vertical-align:top;overflow-wrap:anywhere;white-space:pre-wrap}.pending-change-table thead th{background:#fff8e8;color:#7a6848;font-size:12px}.pending-change-table th:first-child{width:20%}.pending-change-table tbody th{color:#667085;font-weight:500}.pending-change-after{background:#f0fdf4;color:#166534;font-weight:600}.pending-image-comparison{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;border-top:1px solid #f3e8d0;background:#f3e8d0}.pending-image-comparison>div{padding:12px;background:#fff}.pending-image-comparison>.pending-image-after{background:#f0fdf4}.pending-image-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(86px,1fr));gap:8px;margin-top:8px}.pending-image-grid a{display:block;height:72px;overflow:hidden;border:1px solid #e5e7eb;border-radius:6px;background:#f8fafc}.pending-image-grid img{width:100%;height:100%;object-fit:cover}.pending-image-empty,.pending-no-changes{margin:8px 0 0;color:#98a2b3;font-size:12px}.pending-no-changes{margin:0;padding:12px 14px}.sell-request-detail>div{min-width:0;padding:11px 12px;background:#fff}.sell-request-detail .detail-wide{grid-column:1 / -1}.sell-request-detail dt{margin-bottom:5px;color:#667085;font-size:12px}.sell-request-detail dd{margin:0;color:#1f2937;line-height:1.5;overflow-wrap:anywhere;white-space:pre-wrap}.sell-request-images{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px}.related-images-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.related-images-heading span{font:inherit;color:inherit}.download-images-button{min-height:28px;padding:0 9px;font-size:12px}.sell-request-images a{display:block;height:96px;overflow:hidden;border:1px solid #e5e7eb;border-radius:6px;background:#f8fafc}.sell-request-images img{width:100%;height:100%;object-fit:cover;transition:transform .2s ease}.sell-request-images a:hover img{transform:scale(1.04)}.badge{display:inline-flex;align-items:center;min-height:22px;border-radius:999px;padding:0 8px;background:#f2f4f7;color:#344054;font-size:12px}.form-panel{padding:0;border:0}.form-hint{margin:0 0 12px}.form-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px 12px}.form-section-divider{grid-column:1 / -1;height:0;margin:8px 0 2px;border-top:2px solid #c7cdd6}label span,.section-title{display:block;margin-bottom:5px;color:#4b5563;font-size:12px;font-weight:650}label.required>span:after{content:"*";margin-left:3px;color:#d92d20}input,select,textarea,.compact-select{width:100%;min-height:32px;border:1px solid #d1d5db;border-radius:6px;padding:6px 8px;background:#fff;color:#111827;outline:none}input:focus,select:focus,textarea:focus{border-color:#111827}textarea{resize:vertical}.searchable-select{position:relative}.searchable-select input{padding-right:30px}.searchable-select-toggle{position:absolute;top:1px;right:1px;display:grid;width:30px;height:30px;place-items:center;border:0;border-left:1px solid #e5e7eb;border-radius:0 6px 6px 0;background:transparent;color:#667085}.searchable-select-toggle:before{content:"";width:0;height:0;border-top:5px solid currentColor;border-right:4px solid transparent;border-left:4px solid transparent}.searchable-select-menu{position:absolute;top:calc(100% + 4px);right:0;left:0;z-index:35;max-height:220px;overflow-y:auto;border:1px solid #d1d5db;border-radius:6px;background:#fff;box-shadow:0 12px 30px #11182724}.searchable-select-option{display:block;width:100%;min-height:32px;border:0;border-radius:0;padding:7px 9px;background:#fff;color:#1f2937;overflow:hidden;text-align:left;text-overflow:ellipsis;white-space:nowrap}.searchable-select-option:hover,.searchable-select-option.selected{background:#f0f3f6;color:#111827}.searchable-select-empty{padding:8px 9px;color:#98a2b3}.wide{grid-column:span 2}.full-row{grid-column:1 / -1}.room-count-row{display:grid;grid-column:1 / -1;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px 12px}.plans-editor{display:grid;gap:10px;margin-top:14px;padding-top:14px;border-top:1px solid #eef0f2}.plan-row{display:grid;grid-template-columns:32px repeat(4,minmax(64px,.45fr)) 92px;align-items:end;gap:10px;padding-top:14px;border-top:1px solid #aeb6c2}.plan-display-button{display:grid;width:32px;height:32px;place-items:center;align-self:end;border:1px solid #d1d5db;border-radius:6px;background:#fff;color:#98a2b3}.plan-display-button:hover,.plan-display-button.selected{border-color:#d79b18;background:#fff8e1;color:#d79b18}.plan-row:first-of-type{padding-top:0;border-top:0}.plan-detail-row{display:grid;grid-column:1 / -1;grid-template-columns:repeat(3,minmax(150px,1fr)) 92px 32px;align-items:end;gap:10px}.plan-sample-row{display:grid;grid-column:1 / -1;gap:6px}.plan-sample-row .section-title{margin-bottom:0}.plan-sample-list{display:flex;flex-wrap:wrap;gap:8px}.sample-image-tile,.sample-image-upload{position:relative;display:grid;width:104px;height:72px;place-items:center;overflow:hidden;border:1px dashed #c7cdd6;border-radius:6px;background:#f8fafc;color:#667085}.sample-image-tile{border-style:solid;cursor:pointer}.sample-image-tile img{width:100%;height:100%;object-fit:cover}.sample-image-upload{gap:3px;cursor:pointer}.sample-image-upload span{margin:0;font-size:11px}.listing-sort-row{display:grid;grid-column:1 / -1;grid-template-columns:minmax(140px,.7fr) minmax(120px,.65fr) minmax(120px,.8fr) minmax(220px,1.5fr);align-items:end;gap:10px 12px}.plan-image-field{display:grid}.mini-image-wrap,.mini-image-empty{position:relative;display:grid;width:78px;height:52px;place-items:center;overflow:hidden;border:1px dashed #d1d5db;border-radius:6px;color:#98a2b3;cursor:pointer}.mini-image-wrap{border-style:solid;background:#f8fafc}.mini-image-wrap img{width:100%;height:100%;object-fit:cover}.checkline{display:flex;align-items:center;gap:8px}.checkline input{width:auto}.checkline span{margin:0}.amenity-fieldset{display:grid;grid-column:1 / -1;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px 10px;padding:10px 12px;border:1px solid #e5e7eb;border-radius:6px;background:#fafafa}.amenity-fieldset .section-title{grid-column:1 / -1;margin-bottom:0}.amenity-option{display:flex;align-items:center;gap:7px;min-height:28px;color:#1f2937}.amenity-option input{width:auto;min-height:auto}.amenity-option span{margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.form-actions{justify-content:flex-end;margin-top:14px;padding-top:14px;border-top:1px solid #eef0f2}.alert{border-radius:6px;padding:8px 10px}.error{background:#fff4f3;color:#9f1d14}.empty-state{display:grid;min-height:180px;place-items:center;align-content:center;gap:8px;color:#7b8794}.dashboard-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.summary-card{display:grid;gap:7px;min-height:104px;border:1px solid #e5e7eb;border-radius:6px;padding:16px;background:#fff}.summary-card svg{color:#475467}.login-page{display:grid;min-height:100vh;place-items:center;padding:24px;background:#f6f7f8}.login-panel{display:grid;width:min(780px,100%);grid-template-columns:1fr 340px;overflow:hidden;border:1px solid #e5e7eb;border-radius:6px;background:#fff}.login-copy{padding:36px;border-right:1px solid #e5e7eb}.login-copy p{color:#6b7280}.login-form{display:grid;align-content:center;gap:14px;padding:30px}.hidden-file-input{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;width:100%;height:100%;opacity:0;cursor:pointer}.toolbar-actions>.hidden-file-input{position:fixed;inset:auto;width:1px;height:1px;pointer-events:none}.link-button{border:0;padding:0;background:transparent;color:#111827;font-weight:650}.source-panel{margin-bottom:14px;padding:14px}.json-view{overflow:auto;padding:14px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30;display:grid;place-items:center;padding:28px;background:#1118275c}.modal-shell{display:grid;width:min(1180px,calc(100vw - 56px));max-height:min(900px,calc(100vh - 56px));grid-template-rows:auto minmax(0,1fr);overflow:hidden;border-radius:6px;background:#fff;box-shadow:0 20px 60px #1118272e}.modal-header{padding:14px 16px;border-bottom:1px solid #e5e7eb}.modal-header h2{font-size:16px}.modal-body{overflow:auto;padding:16px}.image-section{display:grid;gap:12px;margin-bottom:14px;padding-bottom:14px;border-bottom:1px solid #eef0f2}.image-group{display:grid;gap:6px}.image-strip{display:flex;max-width:100%;gap:10px;overflow-x:auto;padding-bottom:2px}.image-tile{position:relative;flex:0 0 96px;height:68px;overflow:hidden;border:1px solid #e5e7eb;border-radius:6px;background:#f8fafc;cursor:pointer}.image-tile img{width:100%;height:100%;object-fit:cover}.image-tile span{position:absolute;left:6px;bottom:5px;border-radius:4px;padding:2px 5px;background:#111827b8;color:#fff;font-size:11px}.image-delete-button{position:absolute;top:5px;right:5px;z-index:2;display:grid;width:22px;height:22px;place-items:center;border:1px solid rgba(255,255,255,.72);border-radius:999px;padding:0;background:#d92d20;color:#fff;box-shadow:0 4px 12px #91201847}.image-empty{position:relative;display:grid;width:96px;height:68px;place-items:center;border:1px dashed #d1d5db;border-radius:6px;color:#98a2b3}.image-upload-tile{align-content:center;gap:4px;cursor:pointer}.image-upload-tile span{font-size:12px}.image-note{color:#98a2b3;font-size:12px}.toast-host{position:fixed;top:46%;left:50%;z-index:80;display:grid;gap:8px;width:min(460px,calc(100vw - 48px));transform:translate(-50%,-50%);pointer-events:none}.error-toast{animation:toast-rise 2.6s ease forwards;border:1px solid #fecaca;border-radius:6px;background:#fff1f2;color:#b42318;padding:12px 14px;text-align:center;box-shadow:0 14px 42px #7f1d1d2e}@keyframes toast-rise{0%{opacity:0;transform:translateY(12px)}12%,76%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-28px)}}.article-preview{max-width:760px;margin:0 auto;color:#1f2937;font-size:15px;line-height:1.8}.article-preview img{max-width:100%;border-radius:6px}.article-preview h1,.article-preview h2,.article-preview h3{color:#111827;line-height:1.35}@media(max-width:1360px){body{min-width:1024px}.app-shell{grid-template-columns:196px minmax(0,1fr)}.filter-panel,.form-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}
