:root{--bg:#f6f7f9;--card:#fff;--text:#17212b;--muted:#667085;--line:#e6e8ee;--brand:#1f6feb;--brand2:#1557ba;--danger:#b42318;--ok:#067647;--warn:#b54708}
*{box-sizing:border-box}
body{margin:0;font-family:Inter,Arial,sans-serif;background:var(--bg);color:var(--text)}
.wrap{max-width:1240px;margin:28px auto;padding:0 18px}
.top{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;margin-bottom:18px}
h1{font-size:26px;margin:0 0 6px}
.sub{color:var(--muted);font-size:14px;line-height:1.45}
.card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:18px;box-shadow:0 8px 22px rgba(16,24,40,.04)}
h2{font-size:17px;margin:0 0 14px}
.row{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.row3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}
.field{margin-bottom:12px}
label{display:block;font-size:13px;color:#344054;margin-bottom:6px;font-weight:650}
input,textarea,select{width:100%;padding:11px 12px;border:1px solid #d0d5dd;border-radius:10px;font-size:14px;background:#fff;color:var(--text)}
.readOnlyField{background:#f9fafb;color:#475467;cursor:default;border-color:#eaecf0}
.readOnlyField:read-only{opacity:1}
textarea{min-height:68px;resize:vertical}
.btns{display:flex;gap:10px;flex-wrap:wrap}
.btn{border:0;border-radius:10px;padding:10px 12px;font-weight:750;cursor:pointer;background:#eef2f6;color:#1d2939;text-decoration:none;display:inline-block}
.btn.primary{background:var(--brand);color:#fff}
.btn.primary:hover{background:var(--brand2)}
.btn.danger{background:#fee4e2;color:var(--danger)}
.btn.ok{background:#dcfae6;color:var(--ok)}
.btn.warn{background:#fef0c7;color:var(--warn)}
.btn.xs{font-size:12px;padding:7px 9px}
.btn:disabled{opacity:.55;cursor:not-allowed}
table{width:100%;border-collapse:collapse;font-size:13px}
th,td{padding:10px 8px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
th{color:#475467;font-size:12px;background:#fafafa}
.dataTable th.colNum,.dataTable td.colNum{width:52px;text-align:center;white-space:nowrap}
.dataTable th.colStatus,.dataTable td.colStatus{width:76px}
.dataTable th.colActions,.dataTable td.colActions{width:1%;white-space:nowrap}
.dataTable td.colFirm{font-weight:600;line-height:1.4;min-width:180px}
.dataTable td.colPools{min-width:200px;max-width:320px}
.poolList{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}
.poolList li{font-size:11px;line-height:1.35;color:#475467;background:#f8fafc;border:1px solid #eaecf0;border-radius:6px;padding:5px 8px;word-break:break-word}
.countBadge{display:inline-flex;align-items:center;justify-content:center;min-width:28px;padding:4px 8px;border-radius:8px;background:#f2f4f7;font-weight:700;font-size:12px;color:#344054}
.rowActions{display:flex;gap:6px;flex-wrap:nowrap;justify-content:flex-end}
.pill{display:inline-block;padding:4px 8px;border-radius:999px;font-size:12px;font-weight:750;background:#eef4ff;color:#1849a9;margin:2px}
.pill.off{background:#f2f4f7;color:#667085}
.pill.bad{background:#fee4e2;color:#b42318}
.pill.db{background:#ecfdf3;color:#067647}
.pill.db.bad{background:#fee4e2;color:#b42318}
.small{font-size:12px;color:var(--muted)}
.result{border:1px dashed #98a2b3;border-radius:14px;padding:14px;background:#fbfcfe;margin-top:12px}
.result b{font-size:22px}
.notice{font-size:12px;color:#475467;background:#f2f4f7;border-radius:12px;padding:11px 12px;line-height:1.45}
.hidden{display:none}
.right{text-align:right}
.status{margin-top:10px;font-size:13px}
.err{color:var(--danger)}
.success{color:var(--ok)}
.muted{color:var(--muted)}
.poolBox{display:grid;grid-template-columns:1fr;gap:7px;background:#fafafa;border:1px solid var(--line);border-radius:12px;padding:10px}
.check{display:flex;align-items:center;gap:8px;font-size:13px;color:#344054}
.check input{width:auto}
.mini{font-size:11px;color:var(--muted);line-height:1.35}
.appHeader{margin-bottom:18px}
.appHeader .top{margin-bottom:14px}
.appHeader .nav{margin-bottom:0}
.nav{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 18px}
.nav a{padding:10px 14px;border-radius:10px;background:#fff;border:1px solid var(--line);color:#344054;font-weight:700;text-decoration:none;font-size:14px}
.nav a:hover{border-color:#98a2b3}
.nav a.active{background:var(--brand);border-color:var(--brand);color:#fff}
.pageHead{display:flex;justify-content:space-between;gap:10px;align-items:center;margin-bottom:14px;flex-wrap:wrap}
.importBar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:14px;padding:12px 14px;background:#f9fafb;border:1px solid var(--line);border-radius:12px}
.importBar .mini{margin:0;flex:1 1 220px}
.importBar b{font-weight:650;color:#344054}
.tableScroll{max-height:520px;overflow:auto}
.searchBar{margin-bottom:16px}
.searchBar input{font-size:15px;padding:12px 14px}
.filterRow{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px}
.filterRow .field{margin-bottom:0}
@media(max-width:700px){.filterRow{grid-template-columns:1fr}}
.modalOverlay{position:fixed;inset:0;background:rgba(16,24,40,.45);display:flex;align-items:center;justify-content:center;padding:18px;z-index:1000}
.modalOverlay.hidden{display:none}
.modal{background:#fff;border-radius:16px;border:1px solid var(--line);width:100%;max-width:480px;box-shadow:0 20px 48px rgba(16,24,40,.18);padding:22px;overflow:visible}
.modalWide{max-width:640px}
.poolBoxGrid{display:grid;grid-template-columns:1fr 1fr;gap:7px;max-height:280px;overflow:auto}
@media(max-width:700px){.poolBoxGrid{grid-template-columns:1fr}}
.firmPicker{position:relative}
.firmPickerInput{width:100%}
.firmPickerDropdown{position:absolute;top:calc(100% + 4px);left:0;right:0;max-height:240px;overflow:auto;border:1px solid var(--line);border-radius:10px;background:#fff;box-shadow:0 12px 28px rgba(16,24,40,.14);z-index:20}
.firmPickerOption{display:block;width:100%;border:0;background:#fff;text-align:left;padding:10px 12px;font-size:14px;color:var(--text);cursor:pointer}
.firmPickerOption:hover,.firmPickerOption.active{background:#f2f4f7}
.firmPickerSub{font-size:12px;color:var(--muted);margin-top:2px}
.firmPickerEmpty{padding:12px;font-size:13px;color:var(--muted)}
.firmPickerSelected{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:8px}
.firmPickerHint{font-size:11px;color:var(--muted);margin-top:6px}
.modalHead{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:16px}
.modalHead h3{margin:0;font-size:18px}
.modalClose{border:0;background:#f2f4f7;color:#344054;width:34px;height:34px;border-radius:10px;font-size:20px;line-height:1;cursor:pointer}
.modalClose:hover{background:#e4e7ec}
.userBar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.roleSelect{min-width:130px;padding:8px 10px;font-size:13px}
.passwordCard{max-width:520px}
.passwordForm .field:last-of-type{margin-bottom:16px}
.userName{font-size:13px;font-weight:700;color:#344054;background:#f2f4f7;border:1px solid var(--line);border-radius:999px;padding:6px 12px}
.publicPage{background:linear-gradient(180deg,#eef4ff 0%,var(--bg) 220px)}
.siteHeader{background:linear-gradient(135deg,#0f2f63 0%,#1f6feb 58%,#2f80ed 100%);color:#fff;border-bottom:1px solid rgba(255,255,255,.12);padding:18px 0 20px;margin-bottom:0;box-shadow:0 10px 28px rgba(15,47,99,.18)}
.siteHeaderInner{display:flex;align-items:center;justify-content:space-between;gap:16px}
.siteBrand{display:flex;align-items:center;gap:16px;text-decoration:none;color:inherit;min-width:0}
.siteLogoWrap{flex:0 0 auto;width:72px;height:72px;border-radius:18px;background:rgba(255,255,255,.96);display:flex;align-items:center;justify-content:center;padding:10px;box-shadow:0 8px 22px rgba(16,24,40,.16)}
.siteLogo{display:block;width:100%;height:100%;object-fit:contain}
.siteBrandText{display:flex;flex-direction:column;gap:3px;min-width:0}
.siteBrandOrg{font-size:12px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:rgba(255,255,255,.78)}
.siteBrandBranch{font-size:14px;font-weight:700;color:rgba(255,255,255,.92)}
.siteBrandApp{font-size:24px;line-height:1.15;font-weight:800;color:#fff;letter-spacing:-.02em}
.publicToolbar{background:#fff;border-bottom:1px solid var(--line);box-shadow:0 4px 14px rgba(16,24,40,.04);margin-bottom:20px}
.publicToolbarInner{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:10px 0;flex-wrap:wrap}
.publicSiteNav{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.publicSiteNavLink{padding:9px 14px;border-radius:10px;background:#f9fafb;border:1px solid var(--line);color:#344054;font-weight:700;text-decoration:none;font-size:14px;transition:background .15s,border-color .15s,color .15s}
.publicSiteNavLink:hover{border-color:#98a2b3;background:#fff}
.publicSiteNavLink.active{background:var(--brand);border-color:var(--brand);color:#fff}
.publicLoginBtn{white-space:nowrap}
.publicPageIntro{margin:0 0 18px;padding-top:2px}
.publicPageIntroTitle{margin:0 0 6px;font-size:28px;line-height:1.15}
.publicPageIntroText{margin:0;color:#475467;font-size:15px;line-height:1.5}
.publicPageCard{padding:20px}
.publicPageHead{display:flex;justify-content:flex-end;margin-bottom:12px}
.publicSearchBar{margin-bottom:16px}
.publicSearchBar label{display:block;margin-bottom:6px;font-weight:650;color:#344054}
.publicSearchBar input{font-size:15px;padding:12px 14px}
.publicSectionNote{margin:0 0 12px}
.publicFooterInner{padding:18px 0 28px;border-top:1px solid var(--line)}
.publicTop{background:#fff;border-bottom:1px solid var(--line);padding:14px 0;margin-bottom:24px}
.publicTopInner{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap}
.publicBrand{display:flex;flex-direction:column;gap:4px}
.publicBrand strong{font-size:18px}
.publicBadge{display:inline-block;width:fit-content;font-size:11px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:#1849a9;background:#eef4ff;border-radius:999px;padding:4px 10px}
.publicMain{display:grid;gap:18px;margin-bottom:28px}
.publicHero{padding:28px}
.publicEyebrow{margin:0 0 8px;font-size:12px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:#1849a9}
.publicHero h1,.publicHero h2{margin:0 0 12px;font-size:30px;line-height:1.2}
.publicLead{margin:0 0 18px;color:#475467;font-size:15px;line-height:1.6;max-width:760px}
.publicSection h2{margin-bottom:12px}
.publicHomeNotice{margin-top:0;line-height:1.6}
.publicAccessClosed{padding:28px}
.publicAccessClosedTitle{margin:0 0 12px;font-size:28px;line-height:1.2}
.publicAccessClosedText{margin:0;color:#475467;font-size:15px;line-height:1.65;max-width:760px}
.publicContactBody{display:grid;gap:10px}
.publicContactRow{display:grid;grid-template-columns:120px 1fr;gap:10px;padding:10px 12px;background:#f9fafb;border:1px solid var(--line);border-radius:10px}
.publicContactLabel{font-size:12px;font-weight:700;color:#475467}
.publicContactValue{font-size:14px;line-height:1.45;color:#344054}
.publicContactValue a{color:#1849a9;font-weight:700;text-decoration:none}
.publicContactValue a:hover{text-decoration:underline}
.publicStats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.publicStat{background:#f9fafb;border:1px solid var(--line);border-radius:14px;padding:16px;text-align:center}
.publicStatValue{font-size:28px;font-weight:800;color:var(--brand);line-height:1.1}
.publicStatLabel{margin-top:6px;font-size:12px;color:var(--muted);font-weight:700}
.publicRegionList{display:flex;flex-wrap:wrap;gap:8px}
.publicFooter{margin-top:8px}
.publicSettingsList{display:grid;gap:12px;margin-top:16px}
.publicSettingCard{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:14px 16px;border:1px solid var(--line);border-radius:12px;background:#fafafa}
.publicSettingHead{display:flex;align-items:flex-start;gap:12px;flex:1}
.publicSettingHead input{margin-top:4px;width:auto}
.listPager{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:14px;flex-wrap:wrap}
.listPagerBtns{display:flex;align-items:center;gap:8px}
.designerSettingsForm{margin-top:14px}
.logoSettingsPreview{display:flex;align-items:center;gap:16px;margin:0 0 14px;padding:14px 16px;border:1px solid var(--line);border-radius:12px;background:#fafafa}
.logoSettingsPreview img{width:72px;height:72px;object-fit:contain;border-radius:18px;background:#fff;border:1px solid var(--line);padding:10px;box-shadow:0 8px 22px rgba(16,24,40,.08)}
.logoSettingsMeta{min-width:0}
.designerEnableRow{margin-bottom:14px}
.designerCredit{position:fixed;right:16px;bottom:16px;z-index:900;font-size:12px;line-height:1.4;color:#667085;background:rgba(255,255,255,.94);border:1px solid var(--line);border-radius:999px;padding:8px 14px;box-shadow:0 6px 18px rgba(16,24,40,.08);pointer-events:auto}
.designerCredit a{color:#1849a9;text-decoration:none;font-weight:700}
.designerCredit a:hover{text-decoration:underline}
@media(max-width:900px){.designerCredit{right:10px;bottom:10px;max-width:calc(100vw - 20px)}.publicPageIntroTitle{font-size:24px}.publicToolbarInner{align-items:stretch}.publicSiteNav{width:100%}.publicContactRow{grid-template-columns:1fr}}
.errorPage{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(180deg,#eef4ff 0%,var(--bg) 45%)}
.errorShell{width:100%;max-width:520px;padding:18px}
.errorCard{padding:32px 28px;text-align:center}
.errorCode{font-size:72px;font-weight:800;line-height:1;color:#d0d5dd;letter-spacing:-.04em;margin-bottom:8px}
.errorCodeServer{color:#fecdca}
.errorEyebrow{margin:0 0 8px;font-size:12px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:#1849a9}
.errorCard h1{margin:0 0 12px;font-size:24px;line-height:1.25}
.errorText{margin:0 auto;color:#475467;font-size:15px;line-height:1.6;max-width:420px}
.errorActions{justify-content:center;margin-top:22px}
.errorFoot{margin:16px 0 0;text-align:center;font-size:12px}
.loginPage{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(180deg,#eef4ff 0%,var(--bg) 45%)}
.loginShell{width:100%;max-width:420px;padding:18px}
.loginCard{padding:28px}
.loginCard h1{margin:0 0 8px;font-size:24px}
.loginBack{display:inline-block;margin-bottom:14px;text-decoration:none;font-size:13px}
.loginForm{margin-top:18px}
@media(max-width:900px){.row,.row3{grid-template-columns:1fr}.top{display:block}.right{text-align:left;margin-top:10px}.publicStats{grid-template-columns:1fr 1fr}.publicHero h1{font-size:24px}.siteBrand{align-items:flex-start}.siteLogoWrap{width:58px;height:58px;border-radius:14px;padding:8px}.siteBrandApp{font-size:20px}.siteBrandBranch{font-size:13px}}
