:root{--navy:#102a43;--blue:#2563eb;--cyan:#0ea5e9;--ink:#172033;--muted:#65758b;--line:#e4eaf2;--bg:#f4f7fb;--card:#fff;--green:#059669;--amber:#d97706;--red:#dc2626;--shadow:0 18px 50px rgba(20,43,77,.1);font-family:Inter,"Microsoft YaHei",system-ui,sans-serif;color:var(--ink);background:var(--bg)}*{box-sizing:border-box}body{margin:0;min-height:100vh}button,input,select,textarea{font:inherit}button{cursor:pointer}.hidden{display:none!important}.brand{display:flex;align-items:center;gap:12px;font-weight:800}.brand-mark{display:grid;place-items:center;width:42px;height:42px;border-radius:14px;background:linear-gradient(135deg,var(--blue),var(--cyan));color:#fff;box-shadow:0 8px 22px rgba(37,99,235,.3)}.muted{color:var(--muted)}.eyebrow{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--blue);font-weight:800}.btn{border:0;border-radius:10px;padding:11px 16px;background:#e8eef7;color:var(--ink);font-weight:700}.btn.primary{background:linear-gradient(135deg,var(--blue),#1d4ed8);color:#fff}.btn.danger{background:#fee2e2;color:#991b1b}.btn.success{background:#dcfce7;color:#166534}.btn.small{padding:7px 10px;font-size:13px}.field{display:grid;gap:7px}.field label{font-size:13px;font-weight:700;color:#40536d}.field input,.field select,.field textarea{width:100%;border:1px solid var(--line);border-radius:10px;padding:11px 12px;background:#fff;outline:none}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(37,99,235,.1)}.field textarea{min-height:86px;resize:vertical}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.full{grid-column:1/-1}.card{background:var(--card);border:1px solid rgba(228,234,242,.85);border-radius:18px;box-shadow:var(--shadow)}.toast{position:fixed;right:22px;bottom:22px;padding:13px 18px;border-radius:12px;background:#172033;color:#fff;box-shadow:var(--shadow);z-index:100}.toast.error{background:#991b1b}.status{display:inline-flex;align-items:center;padding:4px 9px;border-radius:999px;font-size:12px;font-weight:800}.status.pending{background:#fff7ed;color:#9a3412}.status.overdue,.status.rejected{background:#fef2f2;color:#991b1b}.status.settled,.status.approved{background:#ecfdf5;color:#065f46}.money{font-variant-numeric:tabular-nums}.empty{padding:40px;text-align:center;color:var(--muted)}
/* Portal */
.portal-shell{min-height:100vh;background:radial-gradient(circle at 20% 0%,rgba(14,165,233,.16),transparent 35%),linear-gradient(160deg,#eff6ff,#f8fafc 55%,#eef2ff)}.portal-header{max-width:1160px;margin:auto;padding:24px 26px;display:flex;justify-content:space-between;align-items:center}.portal-header .secure{font-size:13px;color:var(--muted)}.login-wrap{max-width:1160px;margin:28px auto 0;padding:0 26px;display:grid;grid-template-columns:1.15fr .85fr;gap:48px;align-items:center}.hero h1{font-size:clamp(38px,5vw,66px);line-height:1.05;margin:18px 0;color:var(--navy);letter-spacing:-.04em}.hero p{font-size:18px;line-height:1.8;color:var(--muted);max-width:620px}.feature-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;margin-top:30px}.feature{padding:18px;border:1px solid rgba(255,255,255,.8);background:rgba(255,255,255,.72);border-radius:16px;backdrop-filter:blur(10px)}.feature b{display:block;margin-bottom:5px}.login-card{padding:32px}.login-card h2{margin:8px 0 5px}.login-card form{display:grid;gap:16px;margin-top:24px}.login-card .btn{width:100%;padding:13px}.privacy-note{font-size:12px;line-height:1.7;color:var(--muted);margin-top:15px}.portal-app{max-width:1160px;margin:20px auto;padding:0 26px 50px}.account-hero{padding:30px;background:linear-gradient(135deg,var(--navy),#1d4ed8);color:#fff;border-radius:24px;display:flex;justify-content:space-between;gap:20px;align-items:center}.account-hero h1{margin:6px 0}.account-hero .btn{background:rgba(255,255,255,.14);color:#fff}.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin:18px 0}.metric{padding:21px}.metric span{display:block;color:var(--muted);font-size:13px}.metric strong{display:block;font-size:25px;margin-top:8px}.portal-grid{display:grid;grid-template-columns:1.25fr .75fr;gap:18px}.panel{padding:24px}.panel h3{margin:0 0 18px}.timeline{display:grid;gap:12px}.timeline-row{display:flex;justify-content:space-between;gap:15px;padding:13px 0;border-bottom:1px solid var(--line)}.channel{padding:14px;border:1px dashed #b8c5d8;border-radius:12px;margin-bottom:10px}.channel strong{display:block}.chat-box{height:260px;overflow:auto;background:#f8fafc;border-radius:12px;padding:12px;display:flex;flex-direction:column;gap:9px}.bubble{max-width:82%;padding:10px 12px;border-radius:12px;background:#fff;border:1px solid var(--line)}.bubble.customer{align-self:flex-end;background:#dbeafe;border-color:#bfdbfe}.bubble small{display:block;color:var(--muted);margin-top:5px}.chat-form{display:flex;gap:8px;margin-top:10px}.chat-form input{flex:1;border:1px solid var(--line);border-radius:10px;padding:10px}
/* Admin */
.admin-login{min-height:100vh;display:grid;place-items:center;padding:25px;background:linear-gradient(145deg,#081a2f,#15345c)}.admin-login .card{width:min(430px,100%);padding:34px}.admin-login h1{font-size:25px;margin:18px 0 5px}.admin-login form{display:grid;gap:15px;margin-top:25px}.admin-shell{min-height:100vh;display:grid;grid-template-columns:260px 1fr}.sidebar{background:#0c213a;color:#d7e4f4;padding:24px 18px;position:sticky;top:0;height:100vh}.sidebar .brand{padding:0 10px 25px;color:#fff}.nav{display:grid;gap:5px}.nav button{border:0;background:transparent;color:#b9c9dc;text-align:left;border-radius:10px;padding:12px 13px;font-weight:700}.nav button:hover,.nav button.active{background:#1a395e;color:#fff}.sidebar-foot{position:absolute;bottom:22px;left:18px;right:18px;border-top:1px solid #27405f;padding-top:15px;font-size:13px}.admin-main{min-width:0}.topbar{height:74px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 30px;position:sticky;top:0;z-index:5}.topbar h2{font-size:19px}.content{padding:28px 30px}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}.stat-card{padding:20px}.stat-card span{font-size:13px;color:var(--muted)}.stat-card strong{font-size:26px;display:block;margin:8px 0}.section-card{padding:22px}.section-head{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-bottom:18px}.section-head h3{margin:0}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;font-size:14px}th{text-align:left;color:var(--muted);font-size:12px;padding:11px;border-bottom:1px solid var(--line);white-space:nowrap}td{padding:13px 11px;border-bottom:1px solid #edf1f6;white-space:nowrap}.search-row{display:flex;gap:10px}.search-row input{border:1px solid var(--line);border-radius:10px;padding:9px 12px;min-width:260px}.modal-backdrop{position:fixed;inset:0;background:rgba(5,17,31,.64);display:grid;place-items:center;padding:20px;z-index:20}.modal{background:#fff;border-radius:18px;width:min(760px,100%);max-height:92vh;overflow:auto;padding:24px}.modal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.modal-head h3{margin:0}.modal-head button{border:0;background:transparent;font-size:24px}.conversation{display:grid;grid-template-columns:280px 1fr;min-height:530px}.thread-list{border-right:1px solid var(--line);padding-right:14px}.thread-item{padding:12px;border-radius:10px;cursor:pointer}.thread-item:hover,.thread-item.active{background:#eef4ff}.thread-pane{padding-left:18px;display:flex;flex-direction:column}.thread-pane .chat-box{flex:1;height:auto}
@media(max-width:900px){.login-wrap{grid-template-columns:1fr}.hero{display:none}.metrics,.stats{grid-template-columns:repeat(2,1fr)}.portal-grid{grid-template-columns:1fr}.admin-shell{grid-template-columns:82px 1fr}.sidebar{padding:18px 9px}.sidebar .brand span,.nav button span,.sidebar-foot{display:none}.nav button{text-align:center}.content{padding:20px 16px}.topbar{padding:0 18px}.conversation{grid-template-columns:1fr}.thread-list{border-right:0;border-bottom:1px solid var(--line);padding:0 0 12px;display:flex;overflow:auto}.thread-item{min-width:170px}.thread-pane{padding:16px 0 0}}
@media(max-width:600px){.portal-header,.portal-app,.login-wrap{padding-left:16px;padding-right:16px}.feature-grid,.form-grid{grid-template-columns:1fr}.metrics,.stats{grid-template-columns:1fr 1fr}.account-hero{align-items:flex-start;flex-direction:column}.login-card{padding:24px}.search-row{flex-wrap:wrap}.search-row input{min-width:0;width:100%}}
.customer-editor .modal{width:min(640px,100%);max-height:min(92vh,820px);padding:0;border-radius:14px;overflow:hidden;display:flex;flex-direction:column}.customer-editor .modal-head{flex:none;padding:19px 20px;margin:0;background:#f8fafc;border-bottom:1px solid #dfe6ee}.customer-editor .modal-head h3{font-size:16px}.customer-editor .modal-head button{font-size:23px;line-height:1}.customer-editor #modalBody{overflow:auto;min-height:0}.customer-primary-fields,.customer-advanced-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 14px}.customer-primary-fields{padding:22px 20px 10px}.customer-editor .field{gap:6px}.customer-editor .field label{font-size:12px;color:#495a70}.customer-editor .field input:not([type=checkbox]),.customer-editor .field select,.customer-editor .field textarea{border-color:#cdd9e5;border-radius:5px;padding:9px 10px;font-size:13px;min-height:38px}.customer-editor .field input[readonly]{background:#f7f8fa;color:#6b7280}.customer-editor .field input[type=checkbox]{width:auto}.customer-advanced{margin:0 20px 12px;border-top:1px solid #edf1f5;color:#58697e;font-size:13px}.customer-advanced summary{padding:12px 0;cursor:pointer}.customer-advanced-fields{padding:0 0 12px}.customer-delete{padding-top:8px}.customer-editor-footer{position:sticky;bottom:0;display:flex;justify-content:flex-end;gap:10px;padding:14px 20px;background:#f8fafc;border-top:1px solid #dfe6ee}.customer-editor-footer .btn{border-radius:6px;font-size:13px;padding:10px 16px}.customer-cancel{background:#fff;border:1px solid #cdd9e5;font-weight:500}@media(max-width:560px){.customer-primary-fields,.customer-advanced-fields{grid-template-columns:1fr}.customer-editor .modal{max-height:94vh}}
.bulk-import{font-size:13px;color:#35445c}.bulk-import .import-account,.bulk-import .import-help{padding:14px;border:1px solid #dbe4ef;border-radius:10px;margin-bottom:14px}.bulk-import .import-account{background:#edf5ff;border-color:#b9d5ff;color:#204b9f}.bulk-import p{margin:4px 0 12px}.bulk-import .import-account input{width:110px;padding:8px;border:1px solid #ccd8e5;border-radius:6px}.bulk-import .import-help{background:#f7f9fc;line-height:1.7}.bulk-import .import-help span{color:#009962;font-weight:700}.bulk-import .import-label{display:block;font-weight:700;margin:16px 0 7px}.bulk-import textarea{width:100%;min-height:125px;padding:12px;border:1px solid #cbd6e3;border-radius:8px;resize:vertical}.bulk-import input[type=file]{width:100%;padding:22px;border:1px dashed #a4b5cd;border-radius:9px;background:#f8fafc}.import-footer{display:flex;align-items:center;gap:10px;margin-top:20px;padding-top:14px;border-top:1px solid #e1e8ef}.import-footer span{flex:1}
.customer-list-wrap{border-radius:6px}.customer-list{min-width:1050px;table-layout:auto;font-size:12px}.customer-list thead{background:#f5f8fb}.customer-list th{white-space:normal;font-size:12px;color:#42546b;line-height:1.5;padding:13px 8px}.customer-list td{vertical-align:middle;padding:16px 8px;white-space:normal;line-height:1.45;overflow-wrap:anywhere}.customer-list small{display:block;color:#65758b;font-size:11px;margin-top:4px}.customer-list .customer-phone{color:#1d4ed8;font-weight:700;font-size:12px}.customer-due{color:#e32636}.customer-agent{display:inline-block;padding:6px;border-radius:5px;background:#e5efff;color:#1556d2;font-size:11px}.customer-online{display:inline-block;border-radius:10px;background:#edf1f7;color:#8492a6;padding:2px 7px;font-size:11px}.customer-online.is-online{background:#dbfce8;color:#168a4f}.customer-list .customer-actions{min-width:205px}.customer-actions .btn{padding:5px 7px;margin:2px 0;border-radius:5px;font-size:11px}.customer-actions .customer-im{background:#8b36e9;color:#fff}.customer-actions .edit-customer{background:#2563eb;color:#fff}
.customer-filter-card,.customer-list-card{border-radius:12px;box-shadow:none;margin-bottom:15px}.customer-filter-row,.customer-toolbar{display:flex;align-items:center;gap:9px;flex-wrap:wrap;padding:15px}.customer-filter-row{border-bottom:1px solid #eef1f5}.customer-filter-row input,.customer-filter-row select{height:36px;border:1px solid #ced9e5;border-radius:5px;padding:0 10px;font-size:12px;min-width:110px}.customer-filter-row #customerSearch{width:240px}.customer-filter-row #batchSearch{width:100px;min-width:80px}.customer-scope{background:#fff2bf;color:#a35b00;font-size:12px;font-weight:700;padding:10px 12px;border-radius:6px}.customer-toolbar{padding:12px 15px}.customer-toolbar .import-action{background:#17a34a;color:#fff}.customer-list-card{padding:16px}.customer-periods{color:#2563eb!important;background:#edf4ff!important}
.customer-action-buttons{min-width:265px}.customer-action-buttons>div{display:flex;gap:5px;margin:4px 0}.customer-action{border:0;border-radius:5px;padding:5px 8px;font-size:11px;font-weight:700;white-space:nowrap;line-height:1.35}.customer-action.customer-im{background:#9333ea;color:#fff}.customer-action.customer-detail{background:#2563eb;color:#fff}.customer-action.customer-periods{background:#edf4ff;color:#2563eb}.customer-action.customer-settlement{background:#16a34a;color:#fff}.customer-action.edit-customer{background:#edf1f7;color:#334155}.customer-action.customer-delete-row{background:#fee2e2;color:#dc2626}.customer-actions .customer-action.edit-customer{background:#edf1f7;color:#334155}.customer-detail-page .section-head{align-items:flex-start;margin-top:20px}.customer-detail-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.customer-detail-summary div{background:#f7f9fc;border-radius:8px;padding:12px;color:#64748b;font-size:12px}.customer-detail-summary b{display:block;color:#172033;margin-top:8px}@media(max-width:700px){.customer-detail-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.customer-detail-page .section-head{display:block}}
.customer-detail-page .detail-header,.customer-detail-page .detail-section{padding:18px;border-radius:12px;box-shadow:none;margin-bottom:15px}.detail-header{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.detail-header h3{font-size:15px;margin:0}.detail-header-actions{display:flex;gap:8px;margin-left:auto;flex-wrap:wrap}.detail-header-actions .customer-action{font-size:12px;padding:10px 14px}.customer-detail-settings{background:#2563eb;color:white}.detail-section h3{font-size:15px;margin:0 0 16px;padding-bottom:14px;border-bottom:1px solid #e8edf4}.detail-form-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:15px}.detail-form-grid .field{gap:5px}.detail-form-grid .field label{font-size:12px}.detail-form-grid .field input,.detail-form-grid .field select{height:37px;padding:7px 10px;border:1px solid #ccd8e6;border-radius:5px;font-size:12px}.detail-form-footer{display:flex;align-items:center;justify-content:space-between;gap:15px;border-top:1px solid #edf1f5;margin-top:18px;padding-top:14px;font-size:12px;color:#526178}.detail-form-footer .btn{font-size:12px;border-radius:6px}.detail-proofs{display:flex;flex-wrap:wrap;gap:12px}.detail-proofs img{max-width:140px;max-height:140px;object-fit:contain;border:1px solid #dce3ec;border-radius:6px}.detail-section>.muted{font-size:12px;padding:15px 0}@media(max-width:1050px){.detail-form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:550px){.detail-form-grid{grid-template-columns:1fr}.detail-form-footer{align-items:stretch;flex-direction:column}.detail-header-actions{margin-left:0}}

/* Compact contract document sent in chat. */
.contract-message-card{width:min(268px,100%);padding:10px 12px 12px;border:1px solid #dbe4ef;border-radius:0 0 15px 15px;background:#fff;color:#172033;box-shadow:0 5px 16px rgba(28,50,81,.12)}
.contract-message-document-link{display:block;width:100%;padding:0;border:0;background:#fff;color:inherit;text-align:left}
.contract-message-sheet{position:relative;display:block;height:500px;padding:9px 12px;overflow:hidden;border:1px solid #dbe4ef;border-radius:0 0 9px 9px;background:#fff}
.contract-message-sheet:after{content:"";position:absolute;z-index:3;left:0;right:0;bottom:0;height:28px;background:linear-gradient(transparent,#fff)}
.contract-message-content{position:relative;z-index:2;display:block;font-size:8px;line-height:1.55}
.contract-message-title,.contract-message-number{display:block;text-align:center}.contract-message-title{margin:1px 0 3px;font-size:14px;color:#132d4d}.contract-message-number{margin-bottom:9px;color:#8696aa;font-weight:400}
.contract-message-parties{display:block;margin-bottom:8px;padding:6px 8px;border:1px solid #e2e7ed;border-radius:6px;background:#f8fafc}.contract-message-parties>span,.contract-message-details>span{display:flex;justify-content:space-between;gap:8px}.contract-message-parties>span{padding:2px 0}
.contract-message-card i{color:#74849a;font-style:normal;font-weight:400}.contract-message-card b{color:#172033;text-align:right}
.contract-message-details{display:block;border:1px solid #e2e7ed;border-radius:6px;overflow:hidden}.contract-message-details>span{min-height:25px;border-bottom:1px solid #e8ecf1}.contract-message-details>span:last-child{border-bottom:0}.contract-message-details i{flex:0 0 42%;padding:6px;background:#f5f7fa}.contract-message-details b{flex:1;padding:6px;text-align:left}
.contract-message-terms{display:block;margin-top:11px}.contract-message-term{display:block;margin:0 0 10px}.contract-message-term strong{display:block;margin:0 0 3px;font-size:9px;text-align:left}.contract-message-term>span{display:block;white-space:pre-wrap}
.contract-message-watermark{position:absolute;z-index:1;inset:0;display:grid;grid-template-columns:repeat(2,1fr);grid-auto-rows:55px;overflow:hidden;opacity:.055;color:#66717a;pointer-events:none}.contract-message-watermark>span{align-self:center;white-space:nowrap;font-size:7px;transform:rotate(-24deg)}.contract-message-watermark small{display:block;font-size:6px}
.contract-message-actions{display:grid;gap:7px;margin-top:9px}.contract-message-actions button{width:100%;border:0;border-radius:999px;padding:10px 12px;color:#fff;font-size:12px;font-weight:700}.contract-message-open{background:#2e7df5}.contract-message-repay{background:#18bf70}.contract-message-document-link:hover,.contract-message-document-link:focus-visible{outline:2px solid #9ab8f1;outline-offset:2px}
