.login-page[data-v-d9c60eca]{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#1f2d42,#294875 55%,#3c5c86);padding:24px}.login-card[data-v-d9c60eca]{width:380px;background:#fff;border-radius:14px;padding:40px 34px 34px;box-shadow:0 24px 60px #101c2c47}.brand[data-v-d9c60eca]{display:flex;align-items:center;gap:14px;margin-bottom:30px}.brand-mark[data-v-d9c60eca]{display:flex;align-items:flex-end;gap:4px;height:30px}.brand-mark i[data-v-d9c60eca]{width:6px;background:var(--gold);border-radius:3px 3px 0 0}.brand-mark i[data-v-d9c60eca]:nth-child(1){height:18px}.brand-mark i[data-v-d9c60eca]:nth-child(2){height:30px}.brand-mark i[data-v-d9c60eca]:nth-child(3){height:24px}.brand-copy h1[data-v-d9c60eca]{margin:0;font-size:21px;font-weight:700}.brand-copy p[data-v-d9c60eca]{margin:5px 0 0;font-size:12px;color:var(--muted)}.remember[data-v-d9c60eca]{display:flex;align-items:center;gap:8px;margin:14px 0 4px;font-size:13px;color:var(--secondary);cursor:pointer}.remember input[data-v-d9c60eca]{width:15px;height:15px;accent-color:var(--primary)}.submit[data-v-d9c60eca]{width:100%;height:42px;margin-top:10px;font-weight:600;letter-spacing:2px}.layout[data-v-3bcf6012]{display:flex;min-height:100vh}.sidebar[data-v-3bcf6012]{width:208px;background:#1f2d42;color:#cdd7e3;display:flex;flex-direction:column}.logo[data-v-3bcf6012]{display:flex;align-items:center;gap:10px;padding:22px 20px;border-bottom:1px solid rgba(255,255,255,.08)}.logo-mark[data-v-3bcf6012]{width:4px;height:26px;background:var(--gold);border-radius:2px}.logo strong[data-v-3bcf6012]{display:block;color:#fff;font-size:15px}.logo small[data-v-3bcf6012]{display:block;font-size:11px;opacity:.6;margin-top:3px}nav[data-v-3bcf6012]{padding:12px 0}.menu-item[data-v-3bcf6012]{display:flex;align-items:center;gap:10px;padding:12px 22px;color:#cdd7e3;text-decoration:none;font-size:14px}.menu-item .dot[data-v-3bcf6012]{width:5px;height:5px;border-radius:50%;background:#ffffff40}.menu-item[data-v-3bcf6012]:hover{background:#ffffff0f;color:#fff}.menu-item.router-link-active[data-v-3bcf6012]{background:#ffffff1a;color:#fff;font-weight:600}.menu-item.router-link-active .dot[data-v-3bcf6012]{background:var(--gold)}.main[data-v-3bcf6012]{flex:1;min-width:0;display:flex;flex-direction:column}.topbar[data-v-3bcf6012]{height:60px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 26px}.crumb[data-v-3bcf6012]{font-size:15px;font-weight:600}.user[data-v-3bcf6012]{display:flex;align-items:center;gap:14px;font-size:13px;color:var(--secondary)}.content[data-v-3bcf6012]{flex:1;padding:24px 26px 40px;overflow:auto}.stat-grid[data-v-2c35410f]{display:grid;grid-template-columns:repeat(5,1fr);gap:16px}.stat-card[data-v-2c35410f]{background:#fff;border-radius:10px;padding:20px 22px}.stat-label[data-v-2c35410f]{display:block;font-size:13px;color:var(--muted)}.stat-value[data-v-2c35410f]{display:inline-block;font-size:28px;font-weight:700;margin-top:10px}.stat-unit[data-v-2c35410f]{font-size:12px;color:var(--muted);margin-left:6px}.switch[data-v-f4609568]{display:flex;align-items:center;gap:8px;margin-top:16px;font-size:13px;color:var(--secondary)}.switch input[data-v-f4609568]{width:15px;height:15px;accent-color:var(--primary)}.uploader[data-v-f4609568]{border:1px dashed var(--line);border-radius:6px;padding:8px;min-height:80px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;background:#f9f9f9}.uploader input[type=file][data-v-f4609568]{width:100%;font-size:12px}.preview-img[data-v-f4609568]{max-width:100%;max-height:140px;border-radius:4px;object-fit:contain;border:1px solid #eee}.upload-tip[data-v-f4609568]{color:var(--muted);font-size:12px}.list-thumb[data-v-f4609568]{width:64px;height:48px;object-fit:cover;border-radius:4px;border:1px solid #eee;background:#f5f5f5}.multi-uploader[data-v-f4609568]{display:flex;flex-wrap:wrap;gap:12px;margin-top:8px}.add-image[data-v-f4609568]{border:1px dashed var(--line);border-radius:6px;width:100px;height:100px;display:flex;align-items:center;justify-content:center;cursor:pointer;background:#f9f9f9;font-size:13px;color:var(--secondary)}.add-image input[data-v-f4609568]{display:none}.thumb-card[data-v-f4609568]{display:flex;flex-direction:column;gap:6px;width:120px}.thumb-card .preview-img[data-v-f4609568]{width:120px;height:80px;object-fit:cover;border-radius:4px;border:1px solid #eee}.thumb-card input[data-v-f4609568]{font-size:12px;padding:4px}.head-actions[data-v-43354ed9]{display:flex;gap:10px;align-items:center}.estate-select[data-v-43354ed9]{height:36px;padding:0 10px;border:1px solid var(--line);border-radius:6px;background:#fff;min-width:160px}.upload-tip[data-v-43354ed9]{color:var(--muted);font-size:12px}.plan-uploader[data-v-43354ed9]{border:1px dashed var(--line);border-radius:6px;padding:10px;background:#f9f9f9}.plan-list[data-v-43354ed9]{display:flex;flex-wrap:wrap;gap:10px}.plan-item[data-v-43354ed9]{position:relative;width:96px;height:72px;border-radius:6px;overflow:hidden;border:1px solid #e6e6e6;background:#fff}.plan-img[data-v-43354ed9]{width:100%;height:100%;object-fit:cover;display:block}.plan-del[data-v-43354ed9]{position:absolute;right:2px;top:2px;width:20px;height:20px;line-height:18px;padding:0;border:none;border-radius:50%;background:#0000008c;color:#fff;font-size:14px;cursor:pointer}.plan-add[data-v-43354ed9]{width:96px;height:72px;border:1px dashed #c9ced6;border-radius:6px;display:flex;align-items:center;justify-content:center;color:#8a919b;font-size:12px;background:#fff;cursor:pointer;position:relative}.plan-add input[type=file][data-v-43354ed9]{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;cursor:pointer}.plan-add.disabled[data-v-43354ed9]{pointer-events:none;opacity:.6}.plan-thumb[data-v-43354ed9]{width:92px;height:68px;object-fit:cover;border-radius:6px;border:1px solid #e6e6e6;background:#fafafa;display:block}.img-count[data-v-43354ed9]{margin-top:4px;font-size:11px;color:#9aa1ab}.no-img[data-v-43354ed9]{color:#bbb;font-size:12px}.head-actions[data-v-9de4ed61]{display:flex;gap:10px;align-items:center}.estate-select[data-v-9de4ed61]{height:36px;padding:0 10px;border:1px solid var(--line);border-radius:6px;background:#fff;min-width:160px}.thumb[data-v-9de4ed61]{width:84px;height:56px;object-fit:cover;border-radius:6px;display:block;background:#f1f3f5}.ellipsis[data-v-9de4ed61]{max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--secondary)}.src-row[data-v-9de4ed61]{display:flex;gap:10px}.preview[data-v-9de4ed61]{margin-top:14px}.preview img[data-v-9de4ed61]{max-width:100%;max-height:220px;border-radius:8px;border:1px solid var(--line)}.head-actions[data-v-0a9c16f9]{display:flex;gap:10px;align-items:center}.estate-select[data-v-0a9c16f9]{height:36px;padding:0 10px;border:1px solid var(--line);border-radius:6px;background:#fff;min-width:160px}.switch[data-v-0a9c16f9]{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--secondary)}.switch input[data-v-0a9c16f9]{width:15px;height:15px;accent-color:var(--primary)}:root{--primary: #294875;--primary-soft: #eaf0f8;--gold: #d5a16d;--ink: #1a1f24;--secondary: #5a6572;--muted: #8e96a1;--line: #e6e9ec;--bg: #f3f5f7;--danger: #d1582f}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei,Noto Sans SC,sans-serif;font-size:14px}button,input,select,textarea{font-family:inherit;font-size:14px}.btn{height:36px;padding:0 18px;border:1px solid var(--line);border-radius:6px;background:#fff;color:var(--ink);cursor:pointer;transition:all .15s;white-space:nowrap}.btn:hover{border-color:var(--primary);color:var(--primary)}.btn-primary{background:var(--primary);border-color:var(--primary);color:#fff}.btn-primary:hover{background:#1f3a60;color:#fff}.btn-danger{color:var(--danger);border-color:#f0d5cd}.btn-danger:hover{background:#fdf2ef;border-color:var(--danger);color:var(--danger)}.btn-sm{height:30px;padding:0 12px;font-size:13px}.btn:disabled{opacity:.6;cursor:not-allowed}.field{display:flex;flex-direction:column;gap:6px}.field>label{font-size:13px;color:var(--secondary)}.field input,.field select,.field textarea{height:38px;padding:0 12px;border:1px solid var(--line);border-radius:6px;outline:none;background:#fff;color:var(--ink);width:100%}.field textarea{height:auto;min-height:82px;padding:10px 12px;line-height:1.7;resize:vertical}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--primary)}.panel{background:#fff;border-radius:10px;padding:22px}.panel+.panel{margin-top:18px}.table{width:100%;border-collapse:collapse}.table th,.table td{padding:12px 14px;text-align:left;border-bottom:1px solid var(--line);vertical-align:middle}.table th{font-size:13px;color:var(--muted);font-weight:500;background:#fafbfc}.table tbody tr:hover{background:#fafbfc}.table td .btn+.btn{margin-left:8px}.page-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px;gap:12px;flex-wrap:wrap}.page-title{font-size:20px;font-weight:700}.page-desc{font-size:13px;color:var(--muted);margin-top:6px}.mask{position:fixed;top:0;right:0;bottom:0;left:0;background:#12191f7a;display:flex;align-items:center;justify-content:center;z-index:50;padding:24px}.dialog{background:#fff;border-radius:12px;width:720px;max-width:100%;max-height:88vh;overflow:auto}.dialog-head{display:flex;align-items:center;justify-content:space-between;padding:18px 22px;border-bottom:1px solid var(--line)}.dialog-title{font-size:16px;font-weight:600}.dialog-body{padding:22px}.dialog-foot{display:flex;justify-content:flex-end;gap:10px;padding:16px 22px;border-top:1px solid var(--line)}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px}.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.close-btn{border:0;background:transparent;font-size:22px;color:var(--muted);cursor:pointer;line-height:1}.empty{padding:46px 0;text-align:center;color:var(--muted)}.tag{display:inline-block;padding:3px 10px;border-radius:4px;background:var(--primary-soft);color:var(--primary);font-size:12px}.tag-gray{background:#f1f3f5;color:var(--secondary)}.tip{font-size:12px;color:var(--muted);margin-top:6px}.error-tip{color:var(--danger);font-size:13px;min-height:18px}
