/* 参考 127.0.0.4 的浅蓝管理主题；保持原生多页 MVC 和 Bootstrap Modal。 */
:root {
 --primary:#397cea; --ink:#26313e; --muted:#71839a; --line:#e5edf7; --surface:#eaf3ff;
 --bs-primary:#397cea; --bs-body-color:#42556d; --bs-border-color:#e0e8f3; --bs-secondary-color:#71839a;
 --bs-body-font-family:"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;
}
* { box-sizing:border-box; }
body { margin:0; background:var(--surface); color:var(--ink); font-size:14px; line-height:1.6; -webkit-font-smoothing:antialiased; }
a { color:var(--primary); text-decoration:none; }
button,input,select,textarea { font:inherit; }
button,a,input,select,textarea { -webkit-tap-highlight-color:transparent; }
:focus-visible { outline:3px solid #91b9fa; outline-offset:3px; }
::selection { background:#d7e8ff; color:#234c83; }
.ui-icon { width:20px; height:20px; fill:none; stroke:currentColor; stroke-width:1.65; stroke-linecap:round; stroke-linejoin:round; flex-shrink:0; vertical-align:middle; }
.btn { display:inline-flex; align-items:center; justify-content:center; gap:7px; padding:9px 16px; border-radius:8px; font-size:13px; font-weight:500; white-space:nowrap; transition:background .18s,box-shadow .18s; }
.btn .ui-icon { width:16px; height:16px; }
.btn-primary { --bs-btn-bg:var(--primary); --bs-btn-border-color:var(--primary); --bs-btn-hover-bg:var(--primary); --bs-btn-hover-border-color:var(--primary); --bs-btn-active-bg:var(--primary); --bs-btn-active-border-color:var(--primary); --bs-btn-disabled-bg:var(--primary); --bs-btn-disabled-border-color:var(--primary); box-shadow:0 4px 10px #397cea14; }
.btn-primary:hover { filter:brightness(.95); box-shadow:0 6px 14px #397cea24; }
.btn-light { background:#fff; border:1px solid #dfe8f4; color:#53677f; }
.btn-light:hover { background:#f3f7fd; border-color:#c8daf3; color:#306bd4; }
.btn-text { background:transparent; color:#71839a; }.btn-text:hover { background:#f0f6ff; color:var(--primary); }
.btn-outline-danger { --bs-btn-color:#c76173; --bs-btn-border-color:#efd6df; --bs-btn-hover-bg:#c76173; --bs-btn-hover-border-color:#c76173; }
.btn-sm { padding:5px 10px; font-size:12px; border-radius:6px; }
.form-control,.form-select { min-height:40px; padding:9px 12px; border:1px solid #dfe7f2; border-radius:8px; background-color:#fff; color:#42556d; font-size:13px; transition:box-shadow .18s,border .18s; }
.form-control:hover,.form-select:hover { border-color:#b9cee9; }
.form-control:focus,.form-select:focus { border-color:var(--primary); box-shadow:0 0 0 3px #397cea12; }
.form-control::placeholder { color:#91a1b6; }
.form-label { color:#53677f; font-size:13px; font-weight:500; margin-bottom:8px; }
.form-text { color:var(--muted); font-size:12px; margin-top:7px; }
.form-control[type="color"] { width:100%; max-width:155px; height:42px; padding:5px; }
textarea.form-control { min-height:92px; resize:vertical; line-height:1.8; }
.form-check-input { border-color:#cad8e9; cursor:pointer; }
.form-check-input:checked { background-color:var(--primary); border-color:var(--primary); }
.form-check-input:focus { box-shadow:0 0 0 3px #397cea17; border-color:var(--primary); }
.required-mark { color:#c76173; }
/* 固定侧栏：工作空间、唯一码与六个一级菜单。 */
.sidebar { width:224px; position:fixed; inset:0 auto 0 0; z-index:1030; padding:24px 14px 18px; display:flex; flex-direction:column; background:linear-gradient(170deg,#edf5ff 0%,#dceeff 55%,#c3dfff 100%); border-right:1px solid #d5e6fa; overflow-y:auto;   }
.brand-lockup { display:flex; align-items:center; gap:10px; padding:0 7px 23px; color:var(--ink); font-size:18px; font-weight:700; }
.brand-lockup>span:last-child { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.brand-lockup small { display:block; color:#7288a5; font-size:10px; font-weight:400; letter-spacing:.5px; margin-top:4px; }
.brand-symbol { width:35px; height:35px; border-radius:11px; color:white; background:linear-gradient(145deg,#8db4ff,#397cea); display:inline-flex; align-items:center; justify-content:center; flex-shrink:0; box-shadow:0 5px 12px #397cea1c; }
.brand-symbol .ui-icon { width:25px; height:25px; stroke-width:1.45; }
.brand-image { background:white; object-fit:contain; border:1px solid var(--line); box-shadow:none; }
.workspace { display:flex; align-items:center; gap:9px; background:#ffffff80; border:1px solid #ffffffc4; padding:12px 10px; border-radius:11px; margin-bottom:25px; }
.workspace-avatar { width:31px; height:31px; border:1px solid #d1e3fb; background:#e6f0ff; color:#4e82cc; border-radius:8px; display:grid; place-items:center; flex-shrink:0; font-size:12px; font-weight:600; }
.workspace strong { display:block; max-width:117px; color:#435a78; font-size:12px; font-weight:600; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.workspace small { color:#7d91ac; font-size:10px; }.workspace-dot { width:5px; height:5px; border-radius:50%; background:#77b5ad; margin-left:auto; flex-shrink:0; }
.tenant-identity { margin:-13px 0 21px; padding:10px 11px; border:1px solid #ffffffd9; border-radius:10px; background:#ffffff70; }
.tenant-identity-heading { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom:6px; color:#607c9c; font-size:10px; }
.tenant-code-value { display:block; color:#496b9b; font-family:Consolas,"SFMono-Regular",monospace; font-size:11px; line-height:1.6; user-select:all; }
.tenant-code-cell { display:inline-flex; align-items:center; gap:7px; padding:5px 7px; border:1px solid #e1eafa; border-radius:7px; background:#f4f8ff; }
.copy-button { display:inline-flex; align-items:center; justify-content:center; gap:4px; padding:3px 5px; border:0; border-radius:5px; color:var(--primary); background:transparent; font-size:10px; line-height:1.6; white-space:nowrap; }
.copy-button:hover { background:#e1ecff; }.copy-button:disabled { opacity:.5; }.copy-button .ui-icon { width:13px; height:13px; }
.nav-caption { padding:0 12px 8px; color:#849ab5; font-size:10px; letter-spacing:1px; }
.nav-item { position:relative; display:flex; align-items:center; gap:11px; min-height:44px; margin:5px 0; padding:10px 13px; border-radius:10px; color:#536d8a; font-size:13px; font-weight:400; transition:background .18s,color .18s; }
.nav-item:hover { background:#ffffff80; color:var(--primary); }
.nav-item.active { background:linear-gradient(100deg,#c4dcff,#d5e6ff); color:var(--primary); box-shadow:inset 0 0 0 1px #b8d3ff60; font-weight:600; }
.nav-icon { width:18px; height:18px; fill:none; stroke:currentColor; stroke-width:1.65; stroke-linecap:round; stroke-linejoin:round; }
.nav-active-arrow { width:14px; height:14px; margin-left:auto; }
.sidebar-bottom { margin-top:auto; padding-top:32px; }
.security-card { display:flex; align-items:center; gap:8px; border:1px solid #ffffffb0; background:#ffffff60; border-radius:11px; padding:12px 10px; }
.security-icon { display:flex; color:#7198cf; }.security-icon .ui-icon { width:21px; height:21px; }
.security-card strong { color:#536d8a; font-size:12px; font-weight:500; }.security-card p { margin:2px 0 0; color:#7d95b2; font-size:10px; }
.security-link { margin-left:auto; display:grid; place-items:center; border:0; width:28px; height:30px; border-radius:7px; color:#648ac1; background:#dceaff; transition:background .18s; }
.security-link:hover { background:#c6dcff; color:var(--primary); }.security-link .ui-icon { width:15px; height:15px; }
.workspace-footnote { margin-top:15px; color:#7c98ba; display:flex; justify-content:center; align-items:center; gap:7px; font-size:10px; }
.online-dot { width:5px; height:5px; display:inline-block; border-radius:50%; background:#69b6a5; flex-shrink:0; }
/* 顶栏和页面标题卡片。 */
.main-shell { margin-left:224px; min-height:100vh; }
.topbar { height:64px; padding:0 25px; display:flex; align-items:center; justify-content:space-between; background:#edf5ff; border-bottom:1px solid #e2ecfa; }
.topbar-left,.topbar-right { display:flex; align-items:center; gap:16px; min-width:0; }
.breadcrumb-label { display:flex; gap:11px; align-items:center; color:#7489a4; font-size:12px; }
.breadcrumb-label:before { content:""; width:3px; height:15px; border-radius:2px; background:var(--primary); }
.breadcrumb-label strong { font-weight:500; color:#526a89; }.breadcrumb-label>span { color:#acbed6; }
.environment-tag { display:inline-flex; align-items:center; gap:7px; font-size:10px; color:#6782a7; padding:5px 10px; border:1px solid #dfeafa; background:#ffffffa6; border-radius:7px; }
.topbar-divider { width:1px; height:22px; background:#dce6f5; }
.account-button { display:flex; align-items:center; gap:9px; color:#536d8a; font-size:12px; border:0; background:transparent; padding:3px 0; }
.account-avatar { display:grid; place-items:center; width:31px; height:31px; background:linear-gradient(135deg,#cdddff,#e9f2ff); color:#5b82be; border-radius:9px; text-transform:uppercase; font-weight:600; }
.chevron { color:#8ca4c3; margin-left:2px; }
.main-content { max-width:1680px; padding:20px 24px 22px; margin:0 auto; min-width:0; }
.page-heading { position:relative; display:flex; align-items:center; justify-content:space-between; gap:20px; padding:21px 24px; margin-bottom:20px; background:#fff; border:1px solid var(--line); border-radius:14px; box-shadow:0 4px 18px #5279aa05; }
.page-heading>div { min-width:0; position:relative; z-index:1; }
.eyebrow { color:#7f9bc2; font-size:9px; letter-spacing:1.4px; font-weight:500; margin-bottom:5px; }
h1 { color:var(--ink); font-size:22px; font-weight:600; line-height:1.4; margin:0 0 7px; }
.page-heading p { margin:0; color:var(--muted); font-size:12px; }
.date-label { display:flex; align-items:center; gap:8px; white-space:nowrap; color:#7890af; font-size:11px; padding:8px 10px; border:1px solid #e2ebf8; background:#f8fbff; border-radius:8px; }
.date-label .ui-icon { width:14px; height:14px; color:#8aa4c7; }
.dashboard-heading { min-height:178px; padding:27px 30px; overflow:hidden; background:linear-gradient(115deg,#fff 0%,#e6f4ff 49%,#afd1ff 100%); border-color:#d9eaff; }
.dashboard-heading>div { max-width:calc(100% - 190px); }.dashboard-heading h1 { font-size:26px; color:#397cea; font-weight:650; }.dashboard-heading p { color:#687f9d; line-height:1.9; }
.dashboard-heading .date-label { display:none; }
.dashboard-hero-art { position:absolute; right:25px; top:-7px; width:240px; height:190px; object-fit:contain; pointer-events:none; }
.page-footer { display:flex; justify-content:space-between; color:#7f96b2; padding-top:17px; margin-top:24px; border-top:1px solid #dbe7f7; font-size:10px; }
/* 真实业务概览与快捷入口。 */
.section-heading { display:flex; align-items:center; justify-content:space-between; gap:12px; margin:0 0 13px; }.section-heading>div { display:flex; align-items:center; gap:8px; }
.section-dot { width:4px; height:13px; border-radius:3px; background:#83a9e5; }
.section-heading h2 { margin:0; color:#435e80; font-size:14px; font-weight:600; }.section-heading>span { color:#8297b2; font-size:10px; }
.stats-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:17px; margin-bottom:21px; }
.stat-card,.panel { min-width:0; background:#fff; border:1px solid var(--line); border-radius:14px; box-shadow:0 4px 18px #5279aa05; }
.stat-card { padding:20px 21px 17px; position:relative; overflow:hidden; transition:box-shadow .18s; }.stat-card:hover { box-shadow:0 7px 22px #5379bc12; }
.stat-top { display:flex; align-items:center; justify-content:space-between; gap:8px; font-size:13px; color:#6a7d96; }
.stat-icon { display:grid; place-items:center; width:34px; height:34px; border-radius:11px; }.stat-icon .ui-icon { width:19px; height:19px; }
.stat-icon-1 { background:linear-gradient(145deg,#c1d6fc,#edf4ff); color:#5c87d1; }.stat-icon-2 { background:linear-gradient(145deg,#99e7de,#e5faf8); color:#469b97; }.stat-icon-3 { background:linear-gradient(145deg,#ddd0fc,#f4eeff); color:#9774cf; }.stat-icon-4 { background:linear-gradient(145deg,#b2f0d1,#effcf5); color:#57a581; }
.stat-number { font-size:30px; color:#2b3d55; font-weight:650; line-height:1.35; letter-spacing:-.5px; font-variant-numeric:tabular-nums; margin:10px 0 11px; }.stat-number>span { color:#8b9db4; font-size:11px; letter-spacing:0; font-weight:400; margin-left:7px; }
.stat-card p { margin:0; padding-top:11px; border-top:1px dashed #e5edf7; color:#7c8fa8; font-size:11px; white-space:normal; }
.dashboard-columns { display:grid; grid-template-columns:minmax(0,1.8fr) minmax(280px,1fr); align-items:start; gap:20px; }
.panel-heading { display:flex; align-items:center; justify-content:space-between; gap:10px; padding:22px 22px 18px; }
.panel-kicker { display:block; color:#91a7c4; font-size:9px; letter-spacing:1.4px; margin-bottom:4px; }.panel-heading h3 { margin:0; color:#3e5877; font-size:15px; font-weight:600; }.panel-heading p { margin:5px 0 0; color:#8096b1; font-size:11px; }
.quiet-badge { display:inline-flex; align-items:center; gap:6px; padding:4px 9px; background:#f4f8ff; border:1px solid #e5edf9; border-radius:7px; color:#7b95b7; font-size:10px; }
.overview-mark { display:grid; place-items:center; width:34px; height:34px; border-radius:10px; background:#edf4ff; color:#8baad7; }
.overview-items { padding:0 22px; }.overview-items>div { display:flex; justify-content:space-between; align-items:center; gap:15px; padding:12px 0; border-bottom:1px dashed #e5edf7; color:#6c829e; font-size:12px; }.overview-items>div:last-child { border-bottom:0; }.overview-items strong { color:#415f85; font-size:14px; font-weight:500; text-align:right; }
.notice-box { display:flex; align-items:flex-start; gap:9px; margin:17px 20px 20px; padding:13px 12px; border:1px solid #e1ecfa; border-radius:10px; background:#f2f7ff; }.notice-box>.ui-icon { color:#8aa9d2; width:18px; height:18px; margin-top:2px; }.notice-box strong { color:#6385b3; font-size:12px; font-weight:500; }.notice-box p { margin:4px 0 0; color:#8199b8; font-size:11px; line-height:1.8; }
.quick-section { margin-top:24px; }.quick-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; }
.quick-card { display:flex; align-items:center; gap:12px; padding:19px; border:1px solid #ffffffc4; border-radius:12px; background:linear-gradient(145deg,#b4eee7,#ecfaf8); color:#355f67; transition:box-shadow .18s; }.quick-card:nth-child(2) { background:linear-gradient(145deg,#c5dcff,#eef5ff); color:#3b5f8b; }.quick-card:nth-child(3) { background:linear-gradient(145deg,#dfd4fb,#f5f0ff); color:#68588a; }.quick-card:hover { border-color:#bad3f4; box-shadow:0 8px 20px #5379bc18; }
.quick-icon { display:grid; place-items:center; width:37px; height:37px; border-radius:10px; background:#ffffff80; color:inherit; flex-shrink:0; }.quick-card strong { font-size:13px; font-weight:600; }.quick-card p { margin:4px 0 0; color:#6f89a2; font-size:11px; }.quick-arrow { width:16px; height:16px; color:#769dcb; margin-left:auto; }
/* 资源列表：操作与筛选分层，表格在自身容器内滚动。 */
.configuration-tabs { display:flex; align-items:center; gap:25px; padding:0 19px; margin-bottom:17px; border-bottom:1px solid #d8e5f7; overflow-x:auto; }
.configuration-tab { position:relative; display:inline-flex; align-items:center; gap:8px; padding:12px 2px 14px; color:#7089a9; font-size:14px; white-space:nowrap; }
.configuration-tab .ui-icon { width:18px; height:18px; }.configuration-tab:hover { color:var(--primary); }
.configuration-tab.active { color:var(--primary); font-weight:600; }.configuration-tab.active:after { content:""; position:absolute; bottom:0; left:0; right:0; height:3px; background:var(--primary); border-radius:3px 3px 0 0; }
.card-status-tabs { display:flex; gap:26px; overflow-x:auto; padding:0 22px; border-bottom:1px solid #e7eef9;  }
.card-status-tab { position:relative; flex-shrink:0; padding:0 2px 15px; border:0; background:transparent; color:#7d94b0; font-size:13px; line-height:22px; white-space:nowrap; transition:color .15s; }
.card-status-tab:hover,.card-status-tab.active { color:var(--primary); }.card-status-tab.active { font-weight:600; }
.card-status-tab.active:after { content:""; position:absolute; bottom:0; left:0; right:0; height:3px; border-radius:3px 3px 0 0; background:var(--primary); }
.card-status-tab:focus-visible { outline:2px solid var(--primary); outline-offset:-2px; border-radius:5px; }
@media(max-width:767px) { .card-status-tabs { gap:22px; padding:0 16px; }.card-status-tab { font-size:12px; } }
.configuration-caption { color:#8097b4; font-size:12px; }.configuration-empty { padding:65px 20px; }
.generation-record-panel { display:flex; flex-direction:column; height:calc(100dvh - 280px); min-height:460px; overflow:hidden; }
.generation-record-panel>.resource-toolbar,.generation-record-panel>.filter-bar,.generation-record-panel>.pagination-bar { flex-shrink:0; }
.generation-record-filters { flex-wrap:wrap; }.generation-record-filters>.form-select { width:160px; }
.generation-record-table { flex:1; min-height:0; overflow:auto; }.generation-record-table thead { position:sticky; top:0; z-index:1; }
.generation-user-filter { padding:0 22px 14px; color:#7a93b2; font-size:12px; }
.generation-detail-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; padding:18px; border-radius:12px; background:#f4f8ff; }
.generation-detail-grid span,.generation-input-item>span { display:block; color:#8196b1; font-size:12px; margin-bottom:5px; }
.generation-detail-grid strong { color:#4a6688; font-size:13px; font-weight:500; overflow-wrap:anywhere; }
.generation-detail-heading { margin:24px 0 14px; font-size:14px; color:#405b7b; }
.generation-input-item p,.generation-result-text { white-space:pre-wrap; overflow-wrap:anywhere; font-size:13px; color:#536d8a; }
.generation-result-text { padding:16px; border:1px solid #e2ebf8; border-radius:10px; }
.generation-output { display:flex; flex-direction:column; align-items:flex-start; gap:8px; margin:12px 0; }
.generation-output video,.generation-output img { width:100%; max-height:360px; object-fit:contain; border-radius:10px; background:#f1f5fb; }.generation-output audio { width:100%; }
.generation-step-list { display:flex; flex-wrap:wrap; gap:8px; margin-top:16px; }.generation-step-list span { padding:5px 9px; background:#f3f7fd; border-radius:6px; font-size:12px; color:#7089a9; }
@media(max-width:767px) { .generation-record-panel { min-height:440px; height:calc(100dvh - 245px); }.generation-record-filters>.form-select { width:calc(50% - 5px); }.generation-detail-grid { gap:13px; padding:14px; }.generation-record-panel .pagination-bar { flex-wrap:nowrap; align-items:flex-start; }.generation-record-panel .pagination-bar nav { flex-wrap:wrap; justify-content:flex-end; } }
@media(max-width:767px) { .configuration-tabs { padding:0 6px; gap:22px; margin-bottom:14px; }.configuration-tab { font-size:13px; gap:6px; }.configuration-caption { display:none; } }
.resource-panel { overflow:hidden; }.resource-toolbar { display:flex; justify-content:space-between; align-items:center; gap:16px; padding:21px 22px; }.resource-title { display:flex; align-items:center; gap:9px; flex-shrink:0; }.resource-title h2 { color:#3e5877; font-size:15px; font-weight:600; margin:0; }
.section-indicator { width:4px; height:14px; border-radius:3px; background:#8cb2eb; }.count-badge { padding:0 7px; border:1px solid #dfebfc; border-radius:5px; background:#edf4ff; color:#7299cf; font-size:10px; }
.toolbar-actions { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:8px; }.filter-bar { display:flex; align-items:center; gap:9px; padding:0 22px 20px; }.search-input { position:relative; width:260px; }.search-input>.ui-icon { position:absolute; left:12px; top:12px; width:16px; height:16px; color:#8ba3c3; }.search-input .form-control { padding-left:37px; background:#fbfdff; }.status-filter { width:145px; }
.table { --bs-table-bg:transparent; --bs-table-border-color:#eaf0f8; color:#536d8a; font-size:13px; margin-bottom:0; }.table thead th { padding:13px 17px; border-top:1px solid #e7eef8; border-bottom:1px solid #e7eef8; background:#f3f7fd; color:#7186a2; font-size:12px; font-weight:500; white-space:nowrap; }.table tbody td { padding:13px 17px; color:#596f8b; white-space:nowrap; vertical-align:middle; }.table tr:last-child td { border-bottom:0; }.table tbody tr:hover { --bs-table-bg:#f4f8ff; }
.resource-table tbody td:first-child:not(.checkbox-cell) { font-weight:500; color:#405b7b; }.resource-table .actions-cell { text-align:right; min-width:165px; }.resource-table tbody .actions-cell { white-space:normal; width:280px; max-width:280px; min-width:245px; line-height:1.8; }
.action-link { border:0; background:transparent; border-radius:5px; padding:3px 6px; color:var(--primary); font-size:12px; white-space:nowrap; transition:background .15s; }.action-link:hover { background:#eaf2ff; }.action-link.danger { color:#c97082; }.action-link.danger:hover { background:#fcf0f4; }
.checkbox-cell { width:40px; padding-right:0!important; }.status-badge { display:inline-flex; align-items:center; gap:5px; padding:3px 8px; border:1px solid #e4eaf2; border-radius:6px; background:#f4f7fb; color:#8394aa; font-size:11px; line-height:1.5; white-space:nowrap; }.status-badge:before { content:""; width:4px; height:4px; border-radius:50%; background:currentColor; }.status-badge.good { background:#eff9f5; border-color:#ddefe7; color:#539e85; }.status-badge.wait { background:#fff8ef; border-color:#f5e9d9; color:#b89160; }.status-badge.bad { background:#fcf2f5; border-color:#f3e3eb; color:#be7a8e; }
.pagination-bar { display:flex; justify-content:space-between; align-items:center; gap:12px; padding:17px 22px; border-top:1px solid #eaf0f8; color:#7d94b0; font-size:12px; }.page-number { min-width:26px; padding:4px 7px; border-radius:6px; background:#eaf2ff; color:#6f96ce; text-align:center; }
.number-cell { font-variant-numeric:tabular-nums; }.table td.positive { color:#58a28e; }.table td.negative { color:#c17c8e; }.activity-panel .table tbody td { font-size:12px; }.activity-panel .table td:first-child { max-width:240px; overflow:hidden; text-overflow:ellipsis; }.activity-dot { width:5px; height:5px; border-radius:50%; background:#a0bce5; display:inline-block; margin-right:8px; }
.empty-state { padding:45px 20px; text-align:center; color:#849bb8; font-weight:400; white-space:normal; }.empty-icon { display:grid; place-items:center; width:52px; height:52px; margin:0 auto 14px; border:1px solid #e0eafa; border-radius:14px; background:#f2f7ff; color:#a0bce2; font-size:29px; }.empty-icon .ui-icon { width:25px; height:25px; }.empty-state strong { display:block; color:#6885ab; font-size:13px; font-weight:500; }.empty-state p { margin:8px 0 0; color:#879fbd; font-size:12px; }
/* 真正的 Modal；长表单仅滚动正文，标题和操作区固定。 */
.modal-dialog { --bs-modal-width:520px; }.modal-lg { --bs-modal-width:800px; }.modal-content { border:1px solid #e8eff9; border-radius:14px; overflow:hidden; box-shadow:0 24px 80px #41669b26; }.modal-content>form { display:flex; flex-direction:column; flex:1 1 auto; min-height:0; overflow:hidden; }.modal-content>form>.modal-body { overflow-y:auto; min-height:0; }
/* 指南编辑独立加宽，避免全局520px覆盖Bootstrap的modal-xl。 */
#projectGuideModal .modal-dialog{--bs-modal-width:1020px;max-width:min(1020px,calc(100% - 32px))}
#projectGuideModal .modal-content{border-radius:20px}#projectGuideModal .modal-body{background:#fafbfe}#projectGuideModal .modal-header,#projectGuideModal .modal-footer{background:#fff}
.guide-admin-step{padding:20px;border:1px solid #e4eaf4;border-radius:14px;background:#fff}.guide-admin-step>header{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:18px}.guide-admin-step>header>strong{display:flex;align-items:center;gap:10px;font-size:13px}.guide-admin-step>header>strong>span{display:grid;place-items:center;width:28px;height:28px;background:#f0f3fd;color:#7c8fbe;font-size:10px;border-radius:9px}.guide-admin-step-body{display:grid;grid-template-columns:210px minmax(0,1fr);gap:24px}.guide-admin-preview{position:relative;aspect-ratio:1.5;background:#f2f4f9;border:1px solid #edf0f7;border-radius:11px;overflow:hidden}.guide-admin-preview img,.guide-admin-preview video{width:100%;height:100%;display:block;object-fit:contain}.guide-admin-preview:has(video){background:#20232e}.guide-admin-video-mark{position:absolute;right:8px;bottom:8px;border:1px solid #ffffff30;background:#222530a6;padding:3px 7px;border-radius:20px;color:white;font-size:9px;pointer-events:none}.guide-admin-media-column{min-width:0}.guide-admin-upload{display:block;margin-top:12px;width:100%;position:relative}.guide-admin-upload:focus-within{outline:2px solid #839fe1;outline-offset:2px}.guide-admin-copy-column .form-label{display:block;width:100%;font-size:12px}.guide-admin-copy-column input,.guide-admin-copy-column textarea{margin-top:7px;width:100%}
@media(max-width:767px){#projectGuideModal .modal-dialog{max-width:calc(100% - 24px)}.guide-admin-step{padding:14px}.guide-admin-step-body{grid-template-columns:minmax(0,1fr);gap:16px}.guide-admin-preview{aspect-ratio:1.8;max-height:220px}.guide-admin-step>header .btn{font-size:10px;padding:5px 7px}}
.modal-header { gap:11px; padding:23px 24px 20px; border-bottom:1px solid var(--line); flex-shrink:0; }.modal-title { color:#375271; font-size:18px; font-weight:600; }.modal-heading-icon { display:grid; place-items:center; width:34px; height:34px; border-radius:10px; background:#edf4ff; color:#87a9d8; }.modal-heading-icon .ui-icon { width:19px; height:19px; }.modal-description { margin-top:6px; color:#7a93b2; font-size:12px; }
.modal-body { padding:23px 24px; }.modal-footer { padding:15px 24px; border-top:1px solid var(--line); background:#fbfdff; flex-shrink:0; gap:6px; }
.modal-backdrop { --bs-backdrop-opacity:.28; background:#233d61; }.btn-close { font-size:11px; opacity:.45; margin-left:auto; }.btn-close:hover { opacity:.75; }
.points-target { margin-bottom:21px; padding:13px; border:1px solid #dfeafa; border-radius:9px; background:#f2f7ff; color:#5e86bc; font-size:12px; }.alert { font-size:12px; border-radius:8px; }.alert-danger { background:#fff3f6; color:#b5637e; border-color:#f1dae3; }
.upload-preview { display:flex; align-items:center; gap:12px; margin-top:12px; }.upload-preview img { width:60px; height:60px; object-fit:contain; border:1px solid #dfebfa; border-radius:10px; }
.info-list { display:grid; gap:17px; }.info-item label { display:block; color:#7b97ba; font-size:12px; margin-bottom:5px; }.info-item span,.info-item a { font-size:13px; color:#5379aa; word-break:break-all; }.info-table { font-size:12px; }
.toast { border:1px solid #dfebfa; border-radius:10px; background:white; box-shadow:0 8px 28px #41669b15; font-size:12px; color:#536d8a; }.toast-success { border-left:3px solid #89beab; }.toast-error { border-left:3px solid #d49bac; }
.dropdown-menu { padding:6px; min-width:175px; border:1px solid #dfebf9; border-radius:11px; box-shadow:0 10px 35px #41669b14; font-size:12px; }.dropdown-item { display:flex; align-items:center; gap:9px; border-radius:7px; color:#5e7da5; padding:10px 12px; }.dropdown-item .ui-icon { width:15px; height:15px; }.dropdown-item:hover { background:#f0f6ff; color:#397cea; }.dropdown-caption { padding:6px 12px; color:#91a8c5; font-size:10px; }
.icon-button { background:#ffffffa6; border:1px solid #d9e7fa; border-radius:8px; padding:7px; color:#7198cc; display:inline-flex; align-items:center; justify-content:center; }.mobile-menu,.sidebar-mask { display:none; }
/* 登录页参考同一站点的居中双栏卡片与火箭插画。 */
.login-page { min-height:100vh; min-height:100svh; padding:36px; display:grid; place-items:center; background:radial-gradient(ellipse at 12% 10%,#d3e5ff 0%,transparent 48%),radial-gradient(ellipse at 90% 95%,#d5defd 0%,transparent 45%),linear-gradient(135deg,#eef6ff,#e8f0fc); }
.login-shell { display:grid; grid-template-columns:minmax(0,1.18fr) minmax(380px,.82fr); width:min(1200px,100%); min-height:650px; border:1px solid #ffffffd9; border-radius:26px; background:#fff; box-shadow:0 32px 90px #41669b14; overflow:hidden; }
.login-visual { position:relative; display:flex; flex-direction:column; justify-content:space-between; min-width:0; padding:32px 40px 27px; background:linear-gradient(145deg,#f8fbff 0%,#e1efff 55%,#c7dcff 100%); overflow:hidden; }
.login-visual:before { content:""; position:absolute; right:-290px; top:230px; width:750px; height:260px; border:1px solid #ffffffc4; border-radius:50%; transform:rotate(-25deg); box-shadow:0 0 0 35px #ffffff25,0 0 0 70px #ffffff1a; pointer-events:none; }
.login-wordmark { position:relative; display:flex; align-items:center; gap:11px; color:#345476; font-size:16px; font-weight:600; }.login-wordmark>span:last-child { min-width:0; overflow-wrap:anywhere; }.login-brand-content { position:relative; margin:26px 0 20px; }.login-kicker { display:flex; align-items:center; gap:9px; margin-bottom:14px; color:#6b91c4; font-size:10px; font-weight:600; letter-spacing:1.7px; }.login-kicker:before { content:""; width:22px; height:2px; border-radius:2px; background:var(--primary); }
.login-visual h1 { color:#2d4667; font-size:35px; font-weight:650; line-height:1.45; letter-spacing:-.6px; margin:0; }.login-visual h1 span { display:block; color:var(--primary); }.login-brand-description { color:#7088a7; font-size:12px; line-height:1.9; margin:15px 0 0; }
.login-scene { position:relative; height:176px; max-width:440px; margin:8px 0 12px; }.login-scene-orbit { position:absolute; left:35px; top:28px; width:250px; height:125px; border:1px solid #ffffffd9; border-radius:50%; transform:rotate(-22deg); }.login-scene img { position:absolute; right:33px; top:-11px; width:235px; height:195px; object-fit:contain; filter:drop-shadow(0 12px 12px #7495cd14); }.login-scene-chip { position:absolute; left:8px; bottom:21px; display:flex; align-items:center; gap:7px; padding:10px 13px; border:1px solid #ffffffc4; border-radius:10px; background:#ffffff99; color:#6486af; font-size:11px; transform:rotate(-5deg); }.login-scene-chip .ui-icon { width:16px; height:16px; color:#6aa89e; }
.login-features { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; }.login-features>div { min-width:0; padding:12px 10px; border:1px solid #ffffffb3; border-radius:10px; background:#ffffff70; }.login-features strong { display:block; color:#536f94; font-size:12px; font-weight:600; }.login-features span { display:block; margin-top:5px; color:#8297b3; font-size:10px; }.login-copyright { position:relative; color:#7e99bb; font-size:10px; letter-spacing:.5px; }
.login-panel { display:flex; align-items:center; justify-content:center; min-width:0; padding:40px; background:#fff; }.login-form-wrap { width:100%; max-width:350px; }.login-badge { display:inline-flex; align-items:center; gap:7px; padding:6px 10px; border-radius:8px; background:#edf4ff; color:#5d89cc; font-size:11px; }.login-badge:before { content:""; width:5px; height:5px; border-radius:50%; background:currentColor; }.login-form-wrap h2 { font-size:29px; font-weight:650; color:#2c4565; margin:20px 0 9px; }.login-subtitle { color:#7c91ad; font-size:12px; line-height:1.8; margin-bottom:28px; }
.login-input { position:relative; }.login-input>.ui-icon { position:absolute; left:14px; top:15px; width:18px; height:18px; color:#8ba5c8; }.login-form-wrap .form-control { height:49px; padding-left:42px; background:#f7faff; border-color:#e2eaf5; color:#425d7e; }.login-form-wrap .form-control:focus { background:#fff; }.login-form-wrap .form-label { color:#566e8c; font-size:12px; }.login-submit { height:48px; margin-top:4px; gap:13px; box-shadow:0 10px 20px #397cea24; font-size:14px; }.login-support { display:flex; justify-content:space-between; gap:10px; margin-top:28px; color:#8a9db6; font-size:11px; }.login-support>span:first-child { display:flex; align-items:center; gap:6px; }.login-support .ui-icon { width:14px; height:14px; }.login-note { color:#7d94b3; font-size:11px; margin:15px 0 0; }
.error-page { min-height:100vh; display:grid; place-items:center; padding:24px; }.error-card { width:100%; max-width:500px; padding:40px; border:1px solid var(--line); border-radius:14px; background:#fff; text-align:center; }.error-card h1 { margin:25px 0 15px; font-size:23px; }.error-card p { color:#7f98b9; font-size:13px; margin-bottom:25px; }
/* 响应式：保留手机抽屉导航，避免表格撑宽整个页面。 */
@media(max-width:1200px) { .main-content { padding:18px; }.topbar { padding:0 20px; }.stats-grid { gap:12px; }.stat-card { padding:18px 16px; }.dashboard-columns { grid-template-columns:minmax(0,1.6fr) minmax(270px,1fr); gap:16px; }.quick-card { padding:17px 14px; gap:9px; }.login-visual { padding:30px; }.login-visual h1 { font-size:30px; }.login-panel { padding:32px; } }
@media(max-width:1050px) { .stats-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }.dashboard-columns { grid-template-columns:minmax(0,1fr); }.quick-grid { grid-template-columns:minmax(0,1fr); gap:10px; }.overview-items { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); column-gap:28px; }.date-label { display:none; }.filter-bar { flex-wrap:wrap; }.login-page { padding:24px; }.login-shell { grid-template-columns:minmax(0,1fr) minmax(340px,1fr); }.login-visual { padding:26px; }.login-visual h1 { font-size:28px; }.login-features { gap:6px; }.login-features>div { padding:10px 7px; } }
@media(max-width:767px) { .sidebar { width:246px; transform:translateX(-100%); transition:transform .22s; box-shadow:15px 0 45px #41669b18; }.menu-open .sidebar { transform:translateX(0); }.menu-open .sidebar-mask { display:block; position:fixed; inset:0; background:#233d6138; backdrop-filter:blur(3px); z-index:1029; }.main-shell { margin-left:0; }.topbar { height:62px; padding:0 16px; }.topbar-left,.topbar-right { gap:10px; }.mobile-menu { display:inline-flex; }.environment-tag,.topbar-divider { display:none; }.breadcrumb-label { font-size:11px; gap:8px; }.breadcrumb-label:before { display:none; }.account-button>span:not(.account-avatar) { display:none; }.main-content { padding:16px 12px; }.page-heading { padding:18px; margin-bottom:17px; }h1 { font-size:20px; }.eyebrow { font-size:8px; }.page-heading p { font-size:11px; }.dashboard-heading { min-height:164px; padding:21px; }.dashboard-heading>div { max-width:calc(100% - 75px); }.dashboard-heading h1 { font-size:23px; }.dashboard-hero-art { right:-31px; top:14px; width:160px; height:140px; opacity:.85; }.stats-grid { gap:10px; }.stat-card { padding:15px 13px; border-radius:12px; }.stat-top { font-size:11px; gap:4px; }.stat-icon { width:27px; height:27px; border-radius:8px; }.stat-icon .ui-icon { width:16px; height:16px; }.stat-number { font-size:27px; }.stat-card p { font-size:10px; line-height:1.8; }.section-heading>span { font-size:9px; }.section-heading h2 { font-size:13px; }.panel-heading { padding:19px; }.panel-heading h3 { font-size:14px; }.overview-items { padding:0 19px; gap:0 16px; }.overview-items>div { font-size:10px; gap:8px; }.overview-items strong { font-size:12px; }.resource-toolbar { align-items:flex-start; padding:18px 16px; gap:10px; }.resource-title { padding-top:6px; gap:6px; }.resource-title h2 { font-size:14px; }.toolbar-actions { gap:6px; }.toolbar-actions .btn { font-size:11px; padding:8px 10px; }.filter-bar { padding:0 16px 17px; gap:7px; }.search-input { width:100%; }.status-filter { flex:1; width:auto; }.filter-bar>.btn { font-size:11px; padding:8px 11px; }.table thead th { padding:12px 15px; }.table tbody td { padding:13px 15px; }.pagination-bar { padding:15px 16px; gap:10px; flex-wrap:wrap; font-size:10px; }.pagination-bar .btn { font-size:10px; }.resource-table tbody .actions-cell { min-width:190px; }.page-footer { font-size:9px; }.page-footer>span:last-child { display:none; }.modal-dialog { margin:12px; }.modal-header { padding:20px; }.modal-body { padding:20px; }.modal-footer { padding:14px 20px; }.modal-title { font-size:16px; }.modal-dialog-centered { min-height:calc(100% - 24px); }.modal-dialog-scrollable { height:calc(100% - 24px); }.login-page { padding:22px 16px; }.login-shell { display:block; min-height:0; max-width:430px; border-radius:20px; }.login-visual { padding:23px 24px; background:linear-gradient(135deg,#f3f9ff,#d9e9ff); }.login-wordmark { font-size:14px; }.login-brand-content { margin:23px 0 0; }.login-kicker { display:none; }.login-visual h1 { font-size:23px; }.login-visual h1 span { display:block; margin-left:0; }.login-brand-description,.login-scene,.login-features,.login-copyright { display:none; }.login-panel { padding:29px 24px 33px; }.login-form-wrap h2 { font-size:25px; margin-top:15px; }.login-subtitle { margin-bottom:23px; }.login-badge { font-size:10px; }.login-support { margin-top:22px; }.error-card { padding:30px; } }
@media(max-width:380px) { .login-page { padding:14px 10px; }.login-visual { padding:20px; }.login-panel { padding:25px 20px; }.login-visual h1 { font-size:20px; }.login-visual h1 span { margin-left:0; }.resource-toolbar { flex-wrap:wrap; }.toolbar-actions { margin-left:auto; } }
@media(prefers-reduced-motion:reduce) { *,*:before,*:after { scroll-behavior:auto!important; animation:none!important; transition:none!important; } }


/* 租户前台快捷入口常驻顶部，窄屏优先保证入口与账号按钮可见。 */
.tenant-frontend-link { white-space:nowrap; }
@media(max-width:767px) {
 body[data-scope="tenant"] .topbar { gap:8px; }
 body[data-scope="tenant"] .topbar-right { flex-shrink:0; }
 body[data-scope="tenant"] .breadcrumb-label { min-width:0; }
 body[data-scope="tenant"] .breadcrumb-label strong { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
 body[data-scope="tenant"] .tenant-frontend-link { padding:7px 10px; font-size:11px; }
}

/* 网站图标与Logo独立展示，使用紧凑方形预览。 */
.site-icon-editor{display:flex;align-items:center;gap:14px;padding:14px;border:1px solid var(--line);border-radius:14px;background:#f8fafc}.site-icon-sample{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:64px;height:64px;border-radius:14px;background:#fff;border:1px solid var(--line)}.site-icon-sample img{width:40px;height:40px;object-fit:contain}.site-icon-editor .flex-grow-1{min-width:0}
