:root {
  --ink:#17243b; --text:#43526b; --muted:#718096; --green:#315de7; --green-dark:#254dcc;
  --line:#e2e8f1; --paper:#f5f7fb; --blue:#315de7; --brand:#315de7; --side-width:220px; --top-height:72px;
}
* { box-sizing:border-box; }
body { margin:0; background:var(--paper); color:var(--ink); font:14px/1.6 -apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif; -webkit-font-smoothing:antialiased; }
a { color:var(--blue); text-decoration:none; }
a:hover { color:var(--green); }
button,input,select,textarea { font:inherit; }
button,a,input,select,textarea { -webkit-tap-highlight-color:transparent; }
button { cursor:pointer; }
:focus-visible { outline:2px solid #315de7; outline-offset:3px; }
::selection { background:#dce6ff; }
.skip-link { position:fixed; top:-60px; left:240px; z-index:99; padding:10px 20px; background:white; border:1px solid var(--green); border-radius:6px; }
.skip-link:focus { top:10px; }
.side { position:fixed; inset:0 auto 0 0; width:var(--side-width); z-index:40; display:flex; flex-direction:column; background:#fff; border-right:1px solid #e9f0f3; overflow:hidden; }
.brand { height:var(--top-height); padding:0 24px; display:flex; align-items:center; gap:10px; flex-shrink:0; color:#007f70; border-bottom:1px solid #edf3f5; }
.brand>span { font-size:23px; line-height:1.15; font-weight:800; letter-spacing:1.8px; }
.brand small { display:block; font-size:12px; color:#6b8994; letter-spacing:1px; font-weight:500; margin-top:4px; }
.brand-symbol { width:38px; height:42px; flex-shrink:0; }
.sidebar-pending .side-nav { visibility:hidden; }
.side-nav { flex:1 1 0; min-height:0; padding:15px 12px 8px; overflow-y:auto; overflow-x:hidden; overscroll-behavior-y:contain; scroll-behavior:auto; overflow-anchor:none; scrollbar-gutter:stable; scrollbar-width:thin; scrollbar-color:#d8e8e5 transparent; }
.nav-group { margin-bottom:15px; }
.nav-group:first-child { margin-bottom:12px; }
.nav-group-label { font-size:12px; color:#869cab; padding:1px 12px 9px; }
.nav-link { display:flex; align-items:center; gap:15px; height:43px; padding:0 18px; margin-bottom:2px; border-radius:6px; color:#455a7c; font-size:14px; }
.nav-link .layui-icon { font-size:19px; color:#7089a6; width:19px; text-align:center; }
.nav-link:hover { background:#f4faf9; color:var(--green); }
.nav-link.active { background:linear-gradient(100deg,#e6f5f1,#e9f7f5); color:#008675; font-weight:600; }
.nav-link.active .layui-icon { color:#008c7a; }
.nav-active-dot { display:none; }
.side-note { position:relative; min-height:120px; margin:auto 17px 23px; flex-shrink:0; padding:36px 15px 12px; border-radius:9px; overflow:hidden; background:linear-gradient(25deg,#edf9f7 40%,#f4fbfa 40%,#eff8f8 80%); color:#72939d; font-size:12px; }
.side-note small { display:block; font-size:12px; }
.side-note strong { display:block; margin-top:10px; letter-spacing:3px; color:#73bdb5; font-size:14px; }
.side-note>span { position:absolute; right:-18px; bottom:-52px; font-size:150px; font-weight:900; color:#d9f1ec; transform:rotate(35deg); line-height:1; }
.top { position:fixed; inset:0 0 auto var(--side-width); height:auto; min-height:72px; background:rgba(255,255,255,.97); border-bottom:1px solid #e8f0f4; display:flex; align-items:center; gap:18px; padding:11px 23px; z-index:35; }
.top-actions { margin-left:auto; display:flex; align-items:center; gap:17px; }
.icon-button { display:inline-flex; align-items:center; justify-content:center; background:none; color:#243451; border:0; width:29px; height:34px; padding:0; border-radius:5px; }
.icon-button .layui-icon { font-size:20px; }
.icon-button:hover { background:#eef8f6; color:var(--green); }
.logout-button .layui-icon { font-size:17px; color:#7188a5; }
.user-chip { display:flex; align-items:center; gap:12px; color:#152039; font-size:13px; font-weight:600; white-space:nowrap; }
.user-chip small { display:block; color:#91a1b4; font-size:11px; font-weight:400; margin-top:1px; }
.avatar { width:38px; height:38px; display:flex; align-items:center; justify-content:center; border-radius:50%; background:linear-gradient(155deg,#a8d8ff,#c2e8f3 55%,#649dac); color:#fff; }
.avatar .layui-icon { font-size:23px; }
.nav-toggle,.sidebar-backdrop { display:none; }
main { margin:var(--top-height) 0 0 var(--side-width); padding:18px 27px 12px; min-height:calc(100vh - var(--top-height)); background:linear-gradient(135deg,#f1f9fa,#f2f9f8); }
main:focus { outline:none; }
.page-head { display:flex; justify-content:space-between; align-items:center; gap:24px; min-height:56px; margin-bottom:17px; }
h1 { margin:0; font-size:28px; line-height:1.3; font-weight:700; letter-spacing:.2px; color:#111b32; }
h2 { font-size:16px; line-height:1.5; font-weight:600; margin:0 0 18px; }
h3 { font-size:14px; font-weight:600; }
.page-description,.page-subtitle { font-size:14px; margin:2px 0 0; color:#7d94ab; }
.page-head-actions,.page-actions,.action-group,.hero-actions { display:flex; align-items:center; gap:10px; flex-shrink:0; }
.page-actions .layui-btn+.layui-btn { margin-left:0; }
.scope-label { display:inline-flex; align-items:center; gap:6px; color:#6e8997; font-size:12px; max-width:190px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.scope-label .layui-icon { color:var(--green); }
.eyebrow { font-size:11px; letter-spacing:2px; color:#76a097; }
.panel,.card,.table-card,.filter-card { background:#fff; border:1px solid #edf2f5; border-radius:9px; padding:18px; margin-bottom:16px; min-width:0; box-shadow:0 5px 20px #326c7c03; }
.panel { overflow:auto; }
.panel-head,.card-head { display:flex; align-items:center; justify-content:space-between; gap:16px; margin-bottom:15px; }
.panel-head h2,.card-head h2 { margin:0; }
.panel-head p,.card-head p { color:var(--muted); font-size:12px; margin-top:3px; }
.panel-head>a { color:#7c92a7; font-size:12px; white-space:nowrap; }
.panel-heading { display:flex; align-items:center; gap:16px; padding-bottom:12px; margin-bottom:16px; border-bottom:1px solid #eff3f7; }
.panel-heading h2 { margin:0; }
.panel-heading .muted { margin:0; }
.toolbar { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:13px; margin-bottom:16px; }
.toolbar:last-child { margin-bottom:0; }
.filter-card { padding:15px 18px; }
.search-form,.filter-bar { display:flex; flex-wrap:wrap; align-items:flex-end; gap:12px; min-width:0; }
.search-form>label,.filter-bar>label,.filter-field { display:flex; flex-direction:column; gap:5px; color:#344462; font-size:13px; min-width:0; }
.search-form .layui-input { width:190px; }
.search-form .native-select,.filter-bar .native-select { width:175px; }
.search-form .site-filter,.filter-bar .site-filter { min-width:190px; }
.search-form input[type=date],.filter-bar input[type=date] { width:148px; }
.filter-actions { display:flex; align-items:center; gap:10px; margin-left:auto; }
.filter-actions .layui-btn+.layui-btn { margin-left:0; }
.filter-summary { color:var(--muted); font-size:12px; margin:12px 0 0; }
.filter-bar.inline-filter { align-items:center; }
.filter-bar.inline-filter>label { flex-direction:row; align-items:center; gap:16px; }
.layui-btn { background:linear-gradient(115deg,#008c7a,#009783); color:white; border-radius:5px; height:39px; line-height:37px; padding:0 19px; font-size:13px; font-weight:500; border:1px solid transparent; box-shadow:0 2px 5px #007e6f0a; }
.layui-btn:hover { opacity:1; color:white; background:linear-gradient(115deg,#007d6e,#008b78); }
.layui-btn .layui-icon { font-size:17px; margin-right:6px; }
.layui-btn-primary { background:#fff; color:#008a79; border-color:#a3d6d0; box-shadow:none; }
.layui-btn-primary:hover { background:#f0faf8; color:#007d70; border-color:#53b6a9; }
.layui-btn-normal { background:#2b77ef; }
.layui-btn-danger { color:#ef555c; border-color:#ffd6d9; background:#fff8f8; }
.layui-btn-danger:hover { color:#e33943; background:#fff0f1; }
.layui-btn-sm { height:33px; line-height:31px; padding:0 13px; font-size:12px; }
.layui-btn-xs { height:26px; line-height:24px; padding:0 8px; font-size:11px; }
.layui-btn[disabled],.layui-btn.disabled { color:#a3afbd; background:#f3f6f8; border-color:#f1f4f7; cursor:not-allowed; box-shadow:none; }
.layui-btn-secondary,.btn-neutral { color:#526581; border-color:#dce6ee; background:#fff; }
.layui-input,.layui-textarea,.native-select { color:#314260; border:1px solid #dfe7f0; border-radius:5px; background:#fff; font-size:13px; box-shadow:none; }
.layui-input { height:38px; padding:0 12px; }
.layui-textarea { padding:9px 12px; min-height:80px; line-height:1.7; }
.layui-input::placeholder,.layui-textarea::placeholder { color:#a1afc2; }
.native-select { display:block!important; height:38px; padding:0 31px 0 12px; width:100%; max-width:100%; appearance:none; background-image:url("data:image/svg+xml,%3Csvg width='12' height='8' viewBox='0 0 12 8' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m1 1 5 5 5-5' stroke='%23718BA9' stroke-width='1.5' fill='none'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-position:right 12px center; }
.layui-input:hover,.layui-textarea:hover,.native-select:hover { border-color:#b6cbd6; }
.layui-input:focus,.layui-textarea:focus,.native-select:focus { border-color:#29ad9d; box-shadow:0 0 0 2px #e5f5f1; }
input[type=checkbox],input[type=radio] { accent-color:var(--green); cursor:pointer; width:15px; height:15px; vertical-align:middle; }
.layui-form-label { color:#344866; width:115px; text-align:right; padding:9px 13px 9px 0; font-size:13px; }
.layui-input-block { margin-left:130px; min-height:38px; }
.layui-form-item { margin-bottom:19px; }
.form-actions { margin-left:130px; margin-top:24px; display:flex; align-items:center; gap:10px; }
.form-actions .layui-btn+.layui-btn { margin-left:0; }
.form-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; }
.form-grid .layui-form-item { margin-bottom:0; }
.form-grid .span-full,.form-grid .full-width { grid-column:1/-1; }
.form-section { margin-bottom:24px; }
.form-section>h2 { font-size:15px; color:#008e7e; border-bottom:1px solid #e5edf2; padding:0 0 9px; margin-bottom:18px; }
.form-section>h2:before { content:''; display:inline-block; width:3px; height:16px; background:#009983; margin-right:10px; vertical-align:-2px; }
.section-divider { border:0; border-top:1px solid var(--line); margin:24px 0; }
.hint,.muted { color:var(--muted); font-size:12px; margin:7px 0; line-height:1.7; }
.text-muted { color:var(--muted); }
.notice { padding:12px 16px; border:1px solid #e1edea; background:#f2f8f7; color:#537c73; border-radius:6px; margin-bottom:16px; font-size:13px; }
.notice .layui-icon { margin-right:8px; }
.notice.success { background:#edf9f3; color:#148358; border-color:#d9f0e4; }
.notice.error { background:#fff1f1; color:#c44653; border-color:#fbdadd; }
.notice.warning { background:#fff9ec; color:#a87819; border-color:#f8ecd0; }
.notice.info { background:#edf7fc; color:#507896; border-color:#dcecf7; }
.table-wrap { overflow-x:auto; width:100%; }
.layui-table { width:100%; border:1px solid #e8eef3; color:#4d5e7c; border-radius:5px; margin:0; font-size:12px; }
.layui-table thead tr { background:linear-gradient(#f4f8f9,#f4f8f9); }
.layui-table th { font-weight:500; color:#45526a; white-space:nowrap; }
.layui-table td,.layui-table th { border-color:#edf1f5; padding:9px 12px; line-height:1.65; font-size:12px; vertical-align:middle; }
.layui-table tbody tr:hover { background:#f6fbfb; }
.layui-table tbody tr.is-selected { background:#f0faf7; }
.layui-table a { color:#2474ff; }
.layui-table a:hover { color:var(--green); }
.layui-table td>img { border-radius:4px; }
.layui-table .check-cell { width:37px; text-align:center; }
.layui-table .title-cell { min-width:180px; max-width:280px; }
.layui-table .title-cell>a,.table-title { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; max-width:340px; }
.layui-table .url-cell { max-width:230px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.site-cell { min-width:125px; }
.site-cell strong { display:block; color:#3c5472; font-size:12px; font-weight:500; }
.site-cell small { display:block; color:#93a4b6; font-size:11px; }
.row-actions { white-space:nowrap; }
.row-actions>a,.row-actions>button { font-size:12px; margin-right:10px; }
.row-actions>a:last-child { margin-right:0; }
.row-actions form { display:inline; margin-right:9px; }
button.text-danger { border:0; background:none; color:#f05b65; cursor:pointer; padding:0; font-size:12px; }
button.text-danger:hover { color:#d83944; }
.badge { display:inline-flex; align-items:center; justify-content:center; gap:5px; line-height:21px; padding:1px 10px; font-size:11px; background:#e1f6eb; color:#07935c; border-radius:14px; white-space:nowrap; }
.badge.dim,.badge.gray { background:#edf1f6; color:#8192a7; }
.badge.info,.badge.blue { background:#e8f2ff; color:#3682da; }
.badge.warning,.badge.amber { background:#fff2d8; color:#e89418; }
.badge.error,.badge.danger { background:#ffebed; color:#e76771; }
.badge.violet { background:#eeebff; color:#8163dc; }
.status-dot:before { content:''; width:6px; height:6px; background:currentColor; border-radius:50%; }
.batch-toolbar { display:flex; align-items:center; flex-wrap:wrap; gap:9px; margin:0 0 12px; color:#5e7290; font-size:12px; }
.batch-toolbar .layui-btn { height:31px; line-height:29px; font-size:12px; padding:0 12px; }
.batch-toolbar .selected-label { margin-right:8px; }
.pagination { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:7px; align-items:center; color:#758ba6; margin-top:18px; font-size:12px; }
.pagination>span:first-child { margin-right:auto; }
.pagination .layui-btn { color:#5e7697; border-color:#dfe8f0; }
.pagination .layui-btn.active { color:white; border-color:var(--green); background:var(--green); }
.pagination input { width:55px; text-align:center; }
.pagination select { width:80px; }
.empty,.empty-state { text-align:center; color:#96a8b8; padding:42px 16px!important; font-size:13px; }
.empty-state .layui-icon { display:block; font-size:32px; color:#b0d5ce; margin-bottom:10px; }
.stat-grid,.metric-grid { display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:14px; margin-bottom:16px; }
.stat-grid.four,.metric-grid.four,.stat-grid-4 { grid-template-columns:repeat(4,minmax(0,1fr)); }
.stat-card,.metric-card { position:relative; min-width:0; padding:17px 19px 14px; background:#fff; border:1px solid #edf2f5; border-radius:10px; min-height:133px; }
.stat-card:after,.metric-card:after { content:''; position:absolute; right:23px; top:45px; width:20px; height:17px; opacity:.65; background:linear-gradient(to top,#21be9f 0 100%) 0 12px/3px 5px no-repeat,linear-gradient(to top,#21be9f 0 100%) 5px 8px/3px 9px no-repeat,linear-gradient(to top,#21be9f 0 100%) 10px 4px/3px 13px no-repeat,linear-gradient(to top,#21be9f 0 100%) 15px 0/3px 17px no-repeat; }
.stat-head,.metric-label { display:flex; align-items:center; gap:11px; color:#536887; font-size:13px; }
.stat-icon,.metric-icon { display:inline-flex; align-items:center; justify-content:center; width:40px; height:40px; border-radius:50%; color:#00a980; background:#e7f8f1; flex-shrink:0; }
.stat-icon .layui-icon,.metric-icon .layui-icon { font-size:20px; }
.stat-value,.metric-value { display:block; font-size:28px; line-height:1.25; font-weight:700; letter-spacing:.3px; color:#111932; margin:7px 0 2px; font-variant-numeric:tabular-nums; }
.stat-foot,.metric-foot { font-size:12px; color:#7a8da8; line-height:1.6; }
.stat-foot strong,.metric-foot strong { color:#00a45d; font-size:12px; font-weight:500; }
.stat-card:nth-child(2) .stat-icon,.metric-card:nth-child(2) .metric-icon,.tone-orange .metric-icon { color:#ff793c; background:#fff0e9; }
.stat-card:nth-child(3) .stat-icon,.metric-card:nth-child(3) .metric-icon,.tone-blue .metric-icon { color:#267dff; background:#e9f2ff; }
.stat-card:nth-child(4) .stat-icon,.metric-card:nth-child(4) .metric-icon,.tone-cyan .metric-icon { color:#00a6a4; background:#e6f8f7; }
.stat-card:nth-child(5) .stat-icon,.metric-card:nth-child(5) .metric-icon { color:#00aebc; background:#e3f8fc; }
.stat-card:nth-child(6) .stat-icon,.metric-card:nth-child(6) .metric-icon,.tone-violet .metric-icon { color:#7863ff; background:#eeedff; }
.stat-card:nth-child(2):after,.metric-card:nth-child(2):after { filter:hue-rotate(210deg); }
.stat-card:nth-child(3):after,.metric-card:nth-child(3):after { filter:hue-rotate(65deg); }
.stat-card:nth-child(6):after,.metric-card:nth-child(6):after { filter:hue-rotate(115deg); }
.dashboard-grid { display:grid; grid-template-columns:minmax(0,1.25fr) minmax(0,1fr); gap:16px; margin-bottom:0; align-items:stretch; }
.dashboard-grid.three-columns { grid-template-columns:minmax(0,2.2fr) minmax(0,1fr) minmax(0,1fr); }
.dashboard-grid .panel { margin-bottom:16px; }
.overview-hero { display:flex; align-items:center; justify-content:space-between; gap:20px; padding:17px 21px; background:linear-gradient(110deg,#e7f7f3,#fafffe); border:1px solid #dceee9; border-radius:9px; margin-bottom:16px; }
.overview-hero h2 { margin:0; font-size:19px; }
.hero-kicker { color:#008f7c; font-size:11px; letter-spacing:1px; }
.hero-copy p,.hero-meta { color:#779b95; font-size:12px; margin-top:4px; }
.chart-bars { min-height:185px; height:185px; display:flex; align-items:flex-end; gap:8px; padding:12px 5px 28px; border-bottom:1px solid #e5edf2; background:repeating-linear-gradient(to top,transparent 0,transparent 37px,#edf3f7 38px); }
.chart-bar-group { position:relative; flex:1; min-width:0; height:100%; display:flex; align-items:flex-end; justify-content:center; gap:3px; }
.chart-bar { width:13px; max-width:38%; height:var(--bar-height,0); border-radius:3px 3px 0 0; background:linear-gradient(#24b697,#83d2ba); min-height:0; }
.chart-bar.spider-bar { background:linear-gradient(#5a8ffa,#a5c5ff); }
.chart-label { position:absolute; bottom:-24px; font-size:10px; color:#8190a5; white-space:nowrap; }
.chart-legend { display:flex; align-items:center; flex-wrap:wrap; gap:15px; color:#7890a3; font-size:11px; }
.chart-legend i { display:inline-block; width:7px; height:7px; border-radius:50%; margin-right:5px; background:#0da78b; }
.chart-legend .blue,.chart-legend .spider-bar { background:#5792f9; }
.chart-note { margin-top:12px; font-size:11px; color:#91a3b4; }
.rank-list { display:flex; flex-direction:column; gap:12px; }
.rank-item { display:flex; align-items:center; gap:12px; font-size:12px; }
.rank-index { width:19px; color:#92a3b5; }
.rank-name { width:130px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:#617694; }
.rank-bar { flex:1; height:12px; background:#f2f6f8; border-radius:3px; overflow:hidden; }
.rank-bar>span { height:100%; display:block; background:linear-gradient(90deg,#71cdb8,#079e83); border-radius:3px; }
.rank-value { min-width:50px; text-align:right; color:#36556e; font-variant-numeric:tabular-nums; }
.site-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(320px,1fr)); gap:16px; }
.site-card { border:1px solid var(--line); border-radius:9px; padding:19px; background:#fff; }
.site-card-head { display:flex; justify-content:space-between; align-items:center; gap:10px; margin-bottom:10px; }
.site-card-head h2 { font-size:16px; margin:0; }
.site-domain { font-size:13px; color:#547593; }
.site-meta { display:flex; flex-wrap:wrap; gap:12px; color:#859bb0; font-size:12px; padding:14px 0; }
.site-card-actions { display:flex; gap:8px; padding-top:13px; border-top:1px solid #eef3f6; }
.category-workspace { display:grid; grid-template-columns:264px minmax(0,1fr); gap:15px; align-items:start; }
.category-tree { padding:15px 13px; font-size:13px; }
.category-tree h2 { margin-bottom:13px; font-size:14px; }
.category-tree ul { padding-left:18px; }
.category-tree>ul { padding-left:0; }
.category-tree li { margin:3px 0; }
.category-tree a,.category-tree summary { display:block; color:#526b89; padding:6px 8px; border-radius:4px; cursor:pointer; }
.category-tree a.active,.category-tree summary.active { background:#e7f6f1; color:#008a76; }
.category-tree .layui-icon { margin-right:8px; color:#7a94af; }
.category-tree .tree-site { color:#008d78; font-weight:600; }
.category-tree .tree-folder { color:#f8b83a; }
.category-list .panel-head { margin-bottom:12px; }
.category-list .layui-table td,.category-list .layui-table th { padding:9px 10px; }
.config-row { display:grid; grid-template-columns:165px minmax(0,1fr) 70px; gap:17px; padding:18px 0; border-bottom:1px solid var(--line); align-items:start; }
.config-row label { font-size:12px; padding-top:10px; word-break:break-word; color:#58718c; }
.config-row textarea { min-height:64px; }
.file-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(205px,1fr)); gap:16px; }
.file-grid article { border:1px solid var(--line); padding:11px; border-radius:7px; overflow:hidden; }
.file-grid img { width:100%; height:134px; object-fit:contain; background:#f4f8fa; border-radius:4px; }
.file-grid strong { font-size:12px; display:block; margin:9px 0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.file-grid button { margin-top:9px; }
.token { display:block; word-break:break-all; padding-top:12px; }
.editor-toolbar { display:flex; flex-wrap:wrap; gap:5px; background:#f4f8f9; padding:7px; border:1px solid #dfe8ef; border-radius:5px 5px 0 0; border-bottom:0; }
.editor-toolbar button { background:#fff; border:1px solid #dfe8ef; border-radius:3px; padding:4px 9px; cursor:pointer; color:#5d7390; font-size:12px; }
.editor-toolbar button:hover { color:var(--green); border-color:#9bd7ca; }
#rich-editor { width:100%; height:360px; border:1px solid #dfe8ef; background:#fff; display:block; }
.detail-source { height:360px; font-family:ui-monospace,monospace; display:none; }
.editor-drawer,.editor-modal { position:fixed; z-index:60; background:#fff; border:1px solid #e9f0f4; border-radius:12px; box-shadow:0 9px 35px #234f6429; overflow:hidden; display:flex; flex-direction:column; max-height:calc(100vh - 102px); }
.editor-drawer { right:16px; top:246px; bottom:18px; width:560px; }
.editor-modal { width:730px; right:8%; top:50%; transform:translateY(-45%); }
.editor-modal.category-modal { width:730px; top:auto; bottom:10px; right:8%; transform:none; max-height:calc(100vh - 160px); }
.editor-modal.banner-modal { width:500px; right:11%; top:126px; bottom:auto; max-height:calc(100vh - 148px); transform:none; }
.editor-modal[hidden],.editor-drawer[hidden] { display:none; }
.modal-header { display:flex; align-items:center; justify-content:space-between; gap:15px; flex-shrink:0; padding:17px 21px; border-bottom:1px solid #edf1f5; }
.modal-header h2,.modal-header h3 { margin:0; font-size:17px; font-weight:600; }
.modal-close,[data-modal-close] { color:#7790ab; }
button.modal-close,button[data-modal-close] { width:26px; height:26px; background:none; border:0; font-size:23px; line-height:1; }
.modal-body { padding:20px 22px; overflow-y:auto; min-height:0; }
.editor-drawer>form,.editor-modal>form { display:flex; flex-direction:column; flex:1; overflow:hidden; min-height:0; }
.modal-footer { flex-shrink:0; padding:14px 22px; border-top:1px solid #edf1f5; display:flex; justify-content:flex-end; align-items:center; gap:10px; background:#fff; }
.modal-footer .layui-btn+.layui-btn { margin-left:0; }
.modal-footer .layui-btn { min-width:78px; }
.modal-body .layui-form-label { width:88px; padding-right:12px; font-size:12px; }
.modal-body .layui-input-block { margin-left:93px; }
.modal-body .layui-form-item { margin-bottom:17px; }
.modal-body .form-actions { margin-left:93px; }
.modal-body .layui-input,.modal-body .native-select { height:36px; font-size:12px; }
.modal-body .form-grid { gap:15px 19px; }
.modal-body .form-grid .layui-form-label { width:100%; text-align:left; padding:0 0 6px; float:none; }
.modal-body .form-grid .layui-input-block { margin-left:0; }
.modal-body .form-grid .layui-form-item { margin:0; }
.modal-backdrop { position:fixed; inset:72px 0 0 220px; background:#2447560a; z-index:55; }
.upload-box { border:1px dashed #cadce5; border-radius:6px; background:#f9fbfd; display:flex; flex-direction:column; align-items:center; justify-content:center; padding:22px; color:#8b9cb3; min-height:104px; font-size:12px; }
.upload-box .layui-icon { font-size:28px; color:#7c91a8; margin-bottom:8px; }
.thumbnail-preview { width:130px; height:57px; object-fit:cover; border-radius:5px; }
.seo-tabs,.page-tabs { display:flex; flex-wrap:wrap; gap:2px; margin-bottom:14px; }
.seo-tabs a,.page-tabs a,.seo-tabs button { color:#4d6686; background:#fff; border:1px solid #ebf1f5; padding:10px 27px; border-radius:5px; font-size:13px; }
.seo-tabs .active,.page-tabs .active { color:#008d7c; border-color:#bce8de; box-shadow:0 2px 0 #009480; }
.seo-grid { display:grid; grid-template-columns:minmax(0,1.8fr) minmax(300px,1fr); gap:18px; align-items:start; }
.seo-preview { border:1px solid #edf1f6; padding:17px; border-radius:6px; }
.seo-preview-title { color:#2419c4; font-size:17px; margin:5px 0; }
.seo-preview-url { color:#436085; font-size:12px; overflow-wrap:anywhere; }
.seo-preview-description { font-size:12px; color:#8292a7; line-height:1.7; }
.segmented { display:inline-flex; align-items:center; border:1px solid #e1e9f0; border-radius:5px; overflow:hidden; }
.segmented a,.segmented button { padding:6px 14px; border:0; background:#fff; color:#6c82a0; font-size:12px; }
.segmented .active { background:linear-gradient(115deg,#008b79,#00a38b); color:white; border-radius:4px; }
.workspace-footer { display:flex; justify-content:space-between; color:#9cb0bc; font-size:11px; padding:5px 0 0; }
.layui-layer { border-radius:9px!important; overflow:hidden; }
.layui-layer-title { background:#f8fbfc!important; border-bottom-color:#e8f0f2!important; color:#28415b!important; }
.layui-layer-btn .layui-layer-btn0 { background:var(--green)!important; border-color:var(--green)!important; }
.layui-layer-btn a { border-radius:4px!important; }
.site-select-dialog { padding:20px; }
.site-select-dialog p { margin-bottom:12px; font-size:13px; color:#7a91a7; }
.login-shell { min-height:100vh; display:grid; grid-template-columns:1.1fr 1fr; background:#f5faf9; }
.login-intro { position:relative; overflow:hidden; min-height:100vh; background:linear-gradient(145deg,#e6f6f0,#ecf8f8 65%,#d9f0e9); padding:44px 11%; }
.login-brand { padding:0; border:0; height:auto; }
.login-intro-copy { position:relative; z-index:1; margin-top:21vh; }
.login-kicker { color:#62a394; font-size:11px; letter-spacing:2px; }
.login-intro-copy h1 { font-size:44px; line-height:1.4; margin:14px 0; color:#17554c; }
.login-intro-copy p { color:#719d93; font-size:15px; line-height:2; }
.login-capabilities { display:flex; gap:24px; margin-top:27px; font-size:12px; color:#598f81; }
.login-capabilities .layui-icon { margin-right:7px; }
.login-intro-footer { position:absolute; bottom:36px; font-size:12px; color:#8dafaa; }
.login-orbit { position:absolute; width:380px; height:380px; right:-80px; bottom:0; border:1px solid #caeae0; border-radius:50%; opacity:.7; }
.login-orbit span { position:absolute; inset:36px; border:1px solid #c9e9df; border-radius:50%; }
.login-orbit span:nth-child(2) { inset:72px; }
.login-orbit span:nth-child(3) { inset:108px; }
.login-orbit b { position:absolute; inset:0; display:flex; align-items:center; justify-content:center; color:#b9e0d3; font-size:64px; }
.login-card { align-self:center; justify-self:center; width:400px; max-width:calc(100% - 50px); padding:32px 20px; }
.login-card h2 { font-size:27px; color:#194338; margin:10px 0 5px; }
.login-card>.muted { margin-bottom:30px; }
.login-card label { display:block; margin:21px 0; color:#577a71; font-size:13px; }
.login-card input { margin-top:8px; height:45px; background:#fff; }
.login-submit { width:100%; height:44px; line-height:42px; margin-top:6px; }
.login-submit .layui-icon { margin-left:10px; }
.login-footnote { color:#97ada6; font-size:12px; text-align:center; margin-top:25px; }
.login-footnote .layui-icon { margin-right:5px; font-size:13px; }
@media (min-width:1800px) { main { padding-left:34px; padding-right:34px; } .editor-drawer { width:600px; } }
@media (max-height:850px) and (min-width:961px) { .nav-link { height:38px; } .nav-group { margin-bottom:10px; } .side-note { min-height:100px; margin-bottom:15px; padding-top:19px; } .editor-drawer { top:170px; } }
@media (max-height:720px) and (min-width:961px) { .side-note { display:none; } .editor-drawer { top:110px; } }
@media (max-width:1400px) { .top { gap:20px; } .top-actions { gap:11px; } .stat-card,.metric-card { padding:15px 13px 12px; } .stat-head,.metric-label { font-size:12px; gap:8px; } .stat-icon,.metric-icon { width:35px; height:35px; } .stat-value,.metric-value { font-size:26px; } .stat-card:after,.metric-card:after { right:14px; } .category-workspace { grid-template-columns:224px minmax(0,1fr); } .page-description { max-width:760px; font-size:13px; } }
@media (max-width:1180px) { :root { --side-width:200px; } .brand { padding:0 18px; } .brand>span { font-size:21px; } .top-actions { gap:8px; } .user-chip { gap:7px; } main { padding:18px; } .stat-grid,.metric-grid { grid-template-columns:repeat(3,minmax(0,1fr)); } .page-head { align-items:flex-start; } .page-actions { flex-wrap:wrap; justify-content:flex-end; } .scope-label { display:none; } .dashboard-grid { grid-template-columns:minmax(0,1.1fr) minmax(0,1fr); } .category-workspace { grid-template-columns:195px minmax(0,1fr); } .nav-link { padding:0 16px; } .editor-modal { right:3%; } .editor-modal.category-modal { right:3%; } .editor-modal.banner-modal { right:6%; } .seo-grid { grid-template-columns:minmax(0,1.5fr) minmax(280px,1fr); } }
@media (max-width:960px) { :root { --side-width:220px; --top-height:64px; } .side { transform:translateX(-100%); transition:transform .2s; } body.nav-open .side { transform:translateX(0); } .top { left:0; padding:0 16px; gap:15px; } .nav-toggle { display:inline-flex; flex-shrink:0; } body.nav-open .sidebar-backdrop { display:block; position:fixed; inset:0; border:0; background:#142b4138; z-index:38; } .top-actions .user-chip small { display:none; } .top-actions .user-chip>span:last-child { display:none; } .top-actions { gap:7px; } main { margin-left:0; padding:18px; } .dashboard-grid { grid-template-columns:1fr 1fr; } .dashboard-grid.three-columns { grid-template-columns:1fr 1fr; } .dashboard-grid.three-columns>.panel:first-child { grid-column:1/-1; } .editor-drawer { top:150px; } .modal-backdrop { inset:64px 0 0; } .login-intro { padding:34px 9%; } .login-intro-copy h1 { font-size:36px; } .login-capabilities { gap:12px; flex-wrap:wrap; } }
@media (max-width:720px) { h1 { font-size:24px; } .page-head { display:block; margin-bottom:15px; } .page-description { font-size:12px; margin-top:5px; } .page-head-actions { margin-top:12px; justify-content:flex-start; } .page-head-actions:empty { display:none; } .stat-grid,.metric-grid,.stat-grid.four,.metric-grid.four,.stat-grid-4 { grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; } .stat-card,.metric-card { min-height:121px; } .dashboard-grid,.dashboard-grid.three-columns,.seo-grid { grid-template-columns:1fr; gap:0; } .dashboard-grid.three-columns>.panel:first-child { grid-column:auto; } .category-workspace { grid-template-columns:1fr; } .category-tree { max-height:260px; overflow-y:auto; } .search-form,.filter-bar { gap:10px; } .search-form>label,.filter-bar>label { flex:1 1 145px; } .search-form .layui-input,.search-form .native-select,.filter-bar .layui-input,.filter-bar .native-select { width:100%; min-width:0; } .search-form>.layui-input,.search-form>.native-select { flex:1 1 150px; width:auto; } .filter-actions { margin-left:0; width:100%; } .form-grid { grid-template-columns:1fr; } .form-grid .span-full { grid-column:auto; } .layui-form-label { width:90px; } .layui-input-block { margin-left:100px; } .form-actions { margin-left:100px; } .editor-drawer,.editor-modal,.editor-modal.category-modal,.editor-modal.banner-modal { inset:80px 10px 10px; transform:none; width:auto; max-height:none; } .modal-header { padding:15px 17px; } .modal-body { padding:17px; } .modal-footer { padding:12px 17px; } .editor-drawer .layui-form-label,.editor-modal .layui-form-label { float:none; text-align:left; width:auto; padding:0 0 5px; } .editor-drawer .layui-input-block,.editor-modal .layui-input-block { margin-left:0; } .editor-drawer .form-actions,.editor-modal .form-actions { margin-left:0; } .config-row { grid-template-columns:1fr 65px; gap:10px; } .config-row label { grid-column:1/-1; padding-top:0; } .top-actions>a.icon-button { display:none; } .fullscreen-toggle { display:none; } .workspace-footer>span:last-child { display:none; } .overview-hero { flex-direction:column; align-items:flex-start; } .panel,.card,.table-card,.filter-card { padding:15px; } .site-grid { grid-template-columns:1fr; } .login-shell { grid-template-columns:1fr; } .login-intro { display:none; } .login-card { width:410px; padding:30px 10px; } .pagination { justify-content:flex-start; } .pagination>span:first-child { width:100%; } }
@media (prefers-reduced-motion:reduce) { *,*:before,*:after { transition:none!important; scroll-behavior:auto!important; } }
/* Shared content-list and editor details. */
.article-stats { grid-template-columns:repeat(4,minmax(0,1fr)); }
.stat-label { display:flex; align-items:center; gap:10px; color:#576d8b; font-size:13px; }
.stat-caption { color:#8298ad; font-size:12px; }
.mini-bars { margin-left:auto; color:#4aceb0; font-size:17px; letter-spacing:-1px; }
.stat-card:has(.mini-bars):after { display:none; }
.mini-bars.orange { color:#ff9a60; }
.mini-bars.blue { color:#7caffe; }
.mini-bars.amber { color:#ffb330; }
.stat-icon.orange { color:#ff763c!important; background:#fff0e8!important; }
.stat-icon.blue { color:#237bff!important; background:#e8f1ff!important; }
.stat-icon.amber { color:#eda517!important; background:#fff3d9!important; }
.date-range-input { display:flex; align-items:center; gap:7px; height:38px; border:1px solid #dfe7f0; padding:0 9px; border-radius:5px; background:#fff; }
.date-range-input input { min-width:0; border:0; color:#7389a4; background:transparent; width:115px!important; font-size:11px; }
.date-range-input b { font-size:11px; color:#506780; font-weight:400; }
.date-range-input input::-webkit-calendar-picker-indicator { opacity:.5; width:13px; }
.article-filters { gap:12px; }
.article-filters .filter-field:first-child .layui-input { width:180px; }
.article-filters .native-select { width:138px; }
.article-filters .site-filter { min-width:145px; width:145px; }
.article-filters .filter-actions { margin-left:auto; gap:9px; }
.article-filters .layui-btn { padding:0 15px; }
.sort-control { margin-left:auto; font-size:12px; color:#8298ad; }
.content-table .article-title { max-width:260px; min-width:180px; }
.content-table .article-title>a { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.text-ellipsis { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; max-width:170px; }
.nowrap { white-space:nowrap; }
.page-size { display:flex; align-items:center; gap:7px; margin-right:auto; }
.page-size .native-select { width:70px; height:34px; }
.page-links { display:flex; align-items:center; gap:6px; }
.page-number { display:inline-flex; height:34px; min-width:33px; padding:0 8px; align-items:center; justify-content:center; background:#fff; color:#657e9e; border:1px solid #e1eaf1; border-radius:5px; }
.page-number.active { background:linear-gradient(135deg,#009b85,#008877); color:#fff; border-color:transparent; }
.form-section-title { color:#009081; font-size:15px; padding:0 0 8px 12px; border-bottom:1px solid #e4ecf1; margin-bottom:17px; position:relative; }
.form-section-title:before { content:''; position:absolute; left:0; top:3px; width:3px; height:17px; background:#00a28c; border-radius:2px; }
.cover-upload { display:flex; align-items:center; gap:17px; margin-bottom:10px; }
.upload-placeholder { display:flex; align-items:center; justify-content:center; flex-direction:column; gap:5px; color:#7d94ad; width:126px; height:96px; flex-shrink:0; border:1px dashed #cddde7; background:#f9fbfc; border-radius:5px; font-size:12px; }
.upload-placeholder .layui-icon { font-size:27px; }
.radio-options { display:flex; flex-wrap:wrap; align-items:center; gap:14px; color:#4c6482; font-size:12px; }
.radio-options input { margin-right:3px; }
.layui-form-label em { color:#ef5e64; font-style:normal; margin-right:3px; }
.advanced-fields { margin-top:20px; border-top:1px solid #edf1f5; padding-top:12px; }
.advanced-fields summary { color:#6e87a0; font-size:12px; cursor:pointer; margin-bottom:15px; }
@media (max-width:720px) { .article-stats { grid-template-columns:repeat(2,minmax(0,1fr)); } .article-filters .filter-field:first-child .layui-input,.article-filters .native-select,.article-filters .site-filter { width:100%; min-width:0; } .article-filters .date-range { flex-basis:100%; } .date-range-input input { flex:1; } .page-size { margin-right:0; } }
.form-two-columns { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:20px; }
.form-two-columns .layui-form-label { width:auto; float:none; text-align:left; padding:0 0 5px; }
.form-two-columns .layui-input-block { margin-left:0; }
.form-two-columns .layui-form-item { margin-bottom:14px; }
.card-heading { display:flex; align-items:center; justify-content:space-between; gap:15px; margin-bottom:12px; }
.card-heading h2 { margin:0; font-size:14px; }
.card-heading h2 small { color:#879ab1; font-size:13px; font-weight:400; }
.card-heading>a { color:#859bb6; }
.card-heading .muted { margin:0; }
.inline-filters { align-items:center; gap:25px; }
.inline-filters>label { flex-direction:row; align-items:center; gap:17px; }
.inline-filters .layui-input { width:229px; }
.inline-filters .native-select { width:210px; }
.category-tree .tree-site { margin:3px 0 13px; }
.category-tree .tree-site>summary { background:#edf8f5; border-radius:4px; color:#008977; font-weight:600; }
.category-tree summary { display:list-item; list-style-position:outside; margin-left:11px; padding:4px 4px; font-weight:400; }
.category-tree summary a { display:inline; padding:0; font-size:13px; color:inherit; }
.category-tree summary>.layui-icon { color:#f8b132; margin-right:4px; }
.category-tree .tree-site>summary>.layui-icon { color:#009c81; }
.category-tree .tree-node { padding-left:17px; margin:2px 0; }
.category-tree .tree-leaf { font-size:13px; padding:4px 7px; }
.category-tree .tree-leaf .layui-icon { font-size:15px; margin-right:5px; }
.category-tree summary small { color:#8096af; font-size:12px; font-weight:400; }
.template-cell { max-width:160px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:11px!important; }
.table-note { font-size:11px; color:#95a8b8; margin:12px 0 0; }
.list-actions { display:flex; align-items:center; flex-wrap:wrap; gap:10px; margin:21px 0 16px; }
.list-actions .layui-btn+.layui-btn { margin-left:0; }
.list-actions .muted { margin-left:auto; }
.list-actions .layui-btn.text-danger { height:39px; line-height:37px; padding:0 18px; border:1px solid #ffd9dc; color:#ef5d62; background:#fffafb; }
.list-actions .layui-btn.text-danger[disabled] { color:#a3afbd; border-color:#e7edf2; background:#f6f9fa; }
.banner-thumb { display:block; width:128px; height:54px; object-fit:cover; border-radius:4px; }
.banner-table td { padding-top:9px; padding-bottom:9px; }
.banner-image-editor { display:flex; align-items:stretch; gap:12px; margin-bottom:13px; }
.banner-image-editor>img { width:calc(55% - 6px); height:135px; object-fit:cover; border-radius:5px; }
.banner-image-editor .upload-placeholder { flex:1; min-width:110px; height:135px; text-align:center; }
.banner-image-editor .upload-placeholder small { font-size:10px; }
.image-empty { width:128px; height:54px; background:#f4f8f9; border:1px dashed #dfe9ee; display:flex; align-items:center; justify-content:center; color:#a0b1c0; border-radius:4px; font-size:11px; }
@media (max-width:1400px) { .inline-filters { gap:15px; } .inline-filters .layui-input { width:170px; } .inline-filters .native-select { width:165px; } }
@media (max-width:720px) { .form-two-columns { grid-template-columns:1fr; gap:0; } .inline-filters>label { flex-direction:column; align-items:stretch; gap:5px; } .inline-filters .layui-input,.inline-filters .native-select { width:100%; } .list-actions { gap:7px; } .list-actions .muted { width:100%; margin:0; } }
/* Match the compact 1672px reference while keeping forms usable on small screens. */
.layui-table td,.layui-table th { font-size:13px; line-height:1.45; padding:8px 11px; }
.content-table td { padding:8px 10px; }
.content-table .site-cell strong { font-size:12px; line-height:1.45; }
.content-table .site-cell small { display:none; }
.site-cell { display:block; }
.stat-label { font-size:14px; }
.stat-card:has(.mini-bars),.metric-card:has(.metric-spark) { position:relative; }
.mini-bars,.analytics-page .metric-spark { position:absolute; right:18px; top:47px; width:22px; height:19px; overflow:hidden; font-size:0!important; letter-spacing:0!important; background:linear-gradient(currentColor,currentColor) 0 13px/3px 6px no-repeat,linear-gradient(currentColor,currentColor) 6px 9px/3px 10px no-repeat,linear-gradient(currentColor,currentColor) 12px 5px/3px 14px no-repeat,linear-gradient(currentColor,currentColor) 18px 0/3px 19px no-repeat; }
.analytics-page .metric-card:after { display:none; }
.analytics-page .metric-label { white-space:nowrap; font-size:13px; }
.analytics-page .metric-top { padding-right:4px; }
.editor-drawer .modal-header { padding-top:14px; padding-bottom:14px; }
.editor-drawer .modal-body { padding-top:15px; }
.editor-drawer .form-section-title { margin-bottom:12px; }
.editor-drawer .layui-form-item { margin-bottom:14px; }
.editor-drawer .hint { font-size:11px; margin-top:4px; }
@media (min-width:1100px) { main:has(.editor-drawer) .article-stats { max-width:850px; } .editor-modal.category-modal { height:min(400px,60vh); } }
.upload-placeholder { cursor:pointer; position:relative; }
.upload-placeholder .direct-image-upload { position:absolute; inset:0; width:100%; height:100%; opacity:0; cursor:pointer; }
.upload-placeholder.is-uploading { color:#079780; background:#effbf7; }
.upload-placeholder.is-uploading:after { content:'上传中…'; position:absolute; inset:0; display:grid; place-items:center; background:#f3fcf8ed; color:#079780; font-size:13px; }
.uploaded-cover { width:126px; height:96px; object-fit:cover; border-radius:5px; }
.banner-image-editor>.image-empty { height:135px; width:calc(55% - 6px); flex-shrink:0; }
.banner-image-editor .uploaded-cover { width:calc(55% - 6px); height:135px; }
.editor-drawer .form-two-columns .layui-form-item { margin-bottom:14px; }
.editor-drawer .form-two-columns { gap:14px; }
@media (max-width:720px) { .analytics-page .metric-label { white-space:normal; } .stat-label { font-size:13px; } .stat-icon { width:34px; height:34px; } }
.category-tree .tree-node { font-weight:400; }
[hidden] { display:none!important; }
.compact-site-category { display:grid; grid-template-columns:1.15fr 1fr; gap:14px; }
.compact-site-category>.layui-form-item:nth-child(2) .layui-form-label { width:44px; }
.compact-site-category>.layui-form-item:nth-child(2) .layui-input-block { margin-left:50px; }
.media-options { font-size:11px; color:#8297ae; margin-top:4px; }
.media-options summary { cursor:pointer; padding:3px 0; color:#4d9d90; }
.media-options .layui-input,.media-options .native-select { margin-top:7px; }
.editor-drawer .cover-upload { margin-bottom:4px; }
.editor-drawer .cover-upload .upload-placeholder,.editor-drawer .uploaded-cover { height:91px; }
@media (max-width:960px) { .side { transition:none; } body.nav-open .side { transition:transform .18s; } }
@media (max-width:720px) { .compact-site-category { grid-template-columns:1fr; gap:0; } .compact-site-category>.layui-form-item:nth-child(2) .layui-form-label { width:auto; } .compact-site-category>.layui-form-item:nth-child(2) .layui-input-block { margin-left:0; } }
.page-head { margin-bottom:11px; }
.article-stats .stat-card { min-height:134px; padding-top:16px; padding-bottom:12px; }
.stat-caption { display:block; }
.content-table td,.content-table th { padding:6px 10px; }

/* Shared metric tones and spider breakdown follow the reference palette. */
.analytics-page .tone-blue .metric-spark{color:#81aaff}.analytics-page .tone-amber .metric-spark{color:#ffad77}.analytics-page .tone-violet .metric-spark{color:#968bff}.analytics-page .tone-cyan .metric-spark{color:#51cbb9}.analytics-page .tone-red .metric-spark{color:#ffab67}
.analytics-page .spider-ranks{gap:12px;padding-top:7px}.spider-ranks .analytics-rank-row{grid-template-columns:95px 1fr 72px}.spider-ranks .analytics-rank-track{height:19px}.spider-ranks .analytics-rank-track i{height:19px}.analytics-page .layui-table{font-size:12px}

/* AJAX editor shells live inside Layui's type-1 layer; only the form body scrolls. */
.sitehub-editor-layer.layui-layer {
  max-width:calc(100vw - 20px);
  max-height:calc(100vh - 40px);
  border-radius:12px!important;
  overflow:hidden;
}
.sitehub-editor-layer > .layui-layer-content {
  display:flex;
  flex-direction:column;
  overflow:hidden!important;
  min-height:0;
}
.sitehub-editor-layer .editor-drawer,
.sitehub-editor-layer .editor-modal,
.sitehub-editor-layer .editor-modal.category-modal,
.sitehub-editor-layer .editor-modal.banner-modal {
  position:static!important;
  inset:auto!important;
  transform:none!important;
  display:flex;
  flex-direction:column;
  flex:1 1 auto;
  width:100%!important;
  height:100%!important;
  min-height:0;
  max-height:none!important;
  border:0;
  border-radius:0;
  box-shadow:none;
  margin:0;
  overflow:hidden;
}
.sitehub-editor-layer .modal-form,
.sitehub-editor-layer .editor-drawer > form,
.sitehub-editor-layer .editor-modal > form {
  display:flex;
  flex-direction:column;
  flex:1 1 auto;
  min-height:0;
  overflow:hidden;
}
.sitehub-editor-layer .modal-header,
.sitehub-editor-layer .modal-footer { flex:0 0 auto; }
.sitehub-editor-layer .modal-body {
  flex:1 1 auto;
  min-height:0;
  overflow-y:auto;
  overscroll-behavior:contain;
}
@media (max-width:760px) {
  .sitehub-editor-layer.layui-layer {
    width:calc(100vw - 20px)!important;
    height:calc(100vh - 40px)!important;
    height:calc(100dvh - 40px)!important;
    max-height:calc(100vh - 40px);
    max-height:calc(100dvh - 40px);
    left:10px!important;
    top:20px!important;
    margin:0!important;
  }
  .sitehub-editor-layer > .layui-layer-content { height:100%!important; }
}
.sitehub-editor-layer .sitehub-editor-host {
  display:flex;
  flex-direction:column;
  flex:1 1 auto;
  width:100%;
  height:100%;
  min-height:0;
  overflow:hidden;
}

/* Page identity and actions share the fixed header; its observed height offsets main. */
.side .brand { height:72px; }
.top > .page-head {
  display:flex;
  flex:1 1 auto;
  flex-wrap:wrap;
  align-items:center;
  justify-content:space-between;
  gap:8px 16px;
  min-width:0;
  min-height:0;
  margin:0;
}
.top .page-heading {
  flex:1 1 190px;
  min-width:150px;
  overflow:hidden;
}
.top .page-heading h1 {
  font-size:20px;
  line-height:27px;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.top .page-description {
  max-width:100%;
  margin:1px 0 0;
  font-size:11px;
  line-height:17px;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.top .page-head-actions {
  display:flex;
  flex:0 1 auto;
  flex-wrap:wrap;
  align-items:center;
  justify-content:flex-end;
  gap:7px;
  min-width:0;
  max-width:100%;
  margin:0;
}
.top [data-page-actions-slot] {
  display:flex;
  flex:0 1 auto;
  flex-wrap:wrap;
  align-items:center;
  justify-content:flex-end;
  gap:7px;
  min-width:0;
  max-width:100%;
}
.top [data-page-actions-slot]:empty { display:none; }
.top .page-head-actions .layui-btn {
  height:34px;
  line-height:32px;
  padding:0 12px;
  font-size:12px;
}
.top .page-head-actions .layui-btn .layui-icon { font-size:15px; margin-right:4px; }
.top .page-head-actions .scope-label { max-width:130px; font-size:11px; }
.top > .top-actions { flex:0 0 auto; margin-left:0; gap:12px; }
.top .analytics-operation-actions { min-width:0; max-width:100%; }
.top .analytics-operation-actions .analytics-filter {
  flex-wrap:wrap;
  justify-content:flex-end;
  gap:6px;
  max-width:100%;
  margin:0;
  padding:0;
}
.top .analytics-operation-actions .filter-field { flex:0 1 auto; min-width:0; }
.top .analytics-operation-actions input.layui-input { width:117px; }
.top .analytics-operation-actions .native-select,
.top .analytics-operation-actions .filter-field:nth-child(3) .native-select { width:145px; min-width:0; }
.top .analytics-operation-actions .layui-input,
.top .analytics-operation-actions .native-select { height:34px; min-height:34px; font-size:12px; }
.top .analytics-filter-popover { top:calc(100% + 10px); }
@media (min-width:961px) and (max-width:1250px) {
  .top { gap:13px; padding-left:18px; padding-right:18px; }
  .top .page-heading { flex-basis:160px; min-width:140px; }
  .top > .top-actions { gap:8px; }
  .top .user-chip { gap:7px; }
  .top .analytics-operation-actions input.layui-input { width:108px; }
  .top .analytics-operation-actions .native-select,
  .top .analytics-operation-actions .filter-field:nth-child(3) .native-select { width:130px; }
}
@media (max-width:960px) {
  .top {
    display:grid;
    grid-template-columns:28px minmax(0,1fr) auto;
    align-items:center;
    gap:8px 10px;
    min-height:64px;
    height:auto;
    padding:9px 16px;
  }
  .side .brand { height:64px; }
  .top > .nav-toggle { grid-column:1; grid-row:1; }
  .top > .page-head { display:contents; }
  .top .page-heading { grid-column:2; grid-row:1; min-width:0; }
  .top .page-heading h1 { font-size:18px; line-height:24px; }
  .top .page-description { font-size:10px; line-height:15px; max-width:100%; }
  .top > .top-actions { grid-column:3; grid-row:1; gap:5px; }
  .top .page-head-actions {
    grid-column:1 / -1;
    grid-row:2;
    justify-content:flex-start;
    gap:7px;
  }
  .top .page-head-actions:not(:has(.layui-btn)):not(:has(.analytics-operation-actions)) { display:none; }
  .top [data-page-actions-slot] { justify-content:flex-start; }
  .top .page-head-actions .layui-btn { height:32px; line-height:30px; padding:0 11px; }
  .top .analytics-operation-actions .analytics-filter { justify-content:flex-start; }
  .top .analytics-filter-popover {
    position:fixed;
    top:calc(var(--top-height) + 8px);
    left:16px;
    right:16px;
    width:auto;
    max-width:none;
  }
}
@media (max-width:520px) {
  .top { padding:8px 12px; gap:7px 9px; }
  .top .page-heading h1 { font-size:17px; }
  .top .page-head-actions { column-gap:6px; row-gap:6px; }
  .top [data-page-actions-slot] { gap:6px; }
  .top .page-head-actions .layui-btn { padding:0 10px; font-size:11px; }
  .top .avatar { width:31px; height:31px; }
  .top .icon-button { width:26px; height:31px; }
  .top .analytics-operation-actions { flex:1 1 100%; width:100%; }
  .top [data-page-actions-slot]:has(.analytics-operation-actions) { flex-basis:100%; width:100%; }
  .top .analytics-operation-actions .analytics-filter {
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:6px;
    width:100%;
    max-width:none;
  }
  .top .analytics-operation-actions .filter-field { min-width:0; width:100%; }
  .top .analytics-operation-actions .layui-input,
  .top .analytics-operation-actions .native-select,
  .top .analytics-operation-actions .filter-field:nth-child(3) .native-select {
    width:100%;
    min-width:0;
    height:31px;
    min-height:31px;
    font-size:11px;
  }
  .top .analytics-operation-actions .layui-btn { height:31px; line-height:29px; }
}
@media (max-width:720px) {
  .article-filters .filter-actions { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); width:100%; }
  .article-filters .filter-actions .layui-btn { min-width:0; width:100%; margin:0; }
}

/* Operations theme: neutral surfaces, navy type and one functional blue accent. */
.admin-shell { --primary:#315de7; --primary-hover:#254dcc; --primary-soft:#eef3ff; --surface:#fff; --surface-muted:#f5f7fb; }
.admin-shell main { background:var(--paper); padding-top:20px; }
.admin-shell .side,.admin-shell .top { background:#fff; border-color:var(--line); }
.admin-shell .brand { color:#17243b; }
.admin-shell .brand-symbol path { fill:var(--primary); }
.admin-shell .brand small { color:#75839a; }
.admin-shell .side-nav { scrollbar-color:#cbd5e5 transparent; }
.admin-shell .nav-group-label { color:#8b97a9; font-size:11px; }
.admin-shell .nav-link { color:#4b5b73; }
.admin-shell .nav-link .layui-icon { color:#7c8ba1; }
.admin-shell .nav-link:hover { background:#f5f7fc; color:var(--primary); }
.admin-shell .nav-link.active { background:var(--primary-soft); color:var(--primary); }
.admin-shell .nav-link.active .layui-icon { color:var(--primary); }
.admin-shell .side-note { background:#f5f7fb; color:#718198; border:1px solid #edf0f6; }
.admin-shell .side-note strong { color:#768dc8; }
.admin-shell .side-note>span { color:#e7edf8; }
.admin-shell .avatar { background:#ecf1ff; color:var(--primary); }
.admin-shell .avatar .layui-icon { font-size:22px; }
.admin-shell .icon-button { color:#4e5e76; }
.admin-shell .icon-button:hover { background:var(--primary-soft); color:var(--primary); }
.admin-shell .page-description,.admin-shell .page-subtitle { color:#718096; }
.admin-shell .top .page-description { font-size:12px; line-height:18px; }
.admin-shell .scope-label { color:#667892; }
.admin-shell .scope-label .layui-icon,.admin-shell .eyebrow { color:var(--primary); }
.admin-shell .panel,.admin-shell .card,.admin-shell .filter-card,.admin-shell .table-card,
.admin-shell .site-card,.admin-shell .analytics-panel {
  background:#fff; border:1px solid var(--line); border-radius:10px; box-shadow:0 2px 6px #18283f03;
}
.admin-shell .panel,.admin-shell .filter-card,.admin-shell .table-card { margin-bottom:18px; }
.admin-shell .filter-card { padding:18px; }
.admin-shell .panel-head h2,.admin-shell .card-heading h2,.admin-shell .analytics-panel h2 { color:#17243b; }
.admin-shell .panel-head>a:not(.layui-btn),.admin-shell .card-heading>a { color:#697a94; }
.admin-shell .hint,.admin-shell .muted,.admin-shell .text-muted { color:#728198; }
.admin-shell .filter-bar>label,.admin-shell .filter-field,.admin-shell .layui-form-label { color:#42526c; }
.admin-shell .filter-bar,.admin-shell .search-form { row-gap:14px; }
.admin-shell .filter-actions { flex-wrap:wrap; row-gap:8px; }
.admin-shell .layui-btn {
  background:var(--primary); color:#fff; border-color:var(--primary); border-radius:6px;
  font-weight:500; box-shadow:none; transition:background-color .12s ease,border-color .12s ease,box-shadow .12s ease;
}
/* Anchor rules inside headings/tables must never override a filled button's label. */
.admin-shell a.layui-btn:not(.layui-btn-primary):not(.layui-btn-danger),
.admin-shell .layui-table a.layui-btn:not(.layui-btn-primary):not(.layui-btn-danger),
.admin-shell .panel-head>a.layui-btn:not(.layui-btn-primary):not(.layui-btn-danger) { color:#fff; }
.admin-shell .layui-btn:hover,.admin-shell .layui-btn:focus-visible { background:var(--primary-hover); border-color:var(--primary-hover); color:#fff; }
.admin-shell .layui-btn-primary { color:#445570; border-color:#d5dfea; background:#fff; }
.admin-shell a.layui-btn-primary,.admin-shell .layui-table a.layui-btn-primary,
.admin-shell .panel-head>a.layui-btn-primary { color:#445570; }
.admin-shell .layui-btn-primary:hover,.admin-shell .layui-btn-primary:focus-visible,
.admin-shell a.layui-btn-primary:hover,.admin-shell .layui-table a.layui-btn-primary:hover,
.admin-shell .panel-head>a.layui-btn-primary:hover { background:#f2f5fd; border-color:#a3b9ef; color:#284dbc; }
.admin-shell .layui-btn-danger,.admin-shell .list-actions .layui-btn.text-danger { background:#fff5f5; color:#c94750; border-color:#f0cfd3; }
.admin-shell .layui-btn-danger:hover,.admin-shell .list-actions .layui-btn.text-danger:hover { background:#feecef; color:#b3303d; border-color:#e7b3ba; }
.admin-shell .layui-btn[disabled],.admin-shell .layui-btn.disabled,
.admin-shell .list-actions .layui-btn.text-danger[disabled] {
  background:#f2f4f8; border-color:#e6ebf2; color:#98a4b6!important; opacity:1; box-shadow:none; cursor:not-allowed;
}
.admin-shell .layui-input,.admin-shell .layui-textarea,.admin-shell .native-select { border-color:#d8e1ed; color:#33445f; background-color:#fff; border-radius:6px; }
.admin-shell .layui-input:hover,.admin-shell .layui-textarea:hover,.admin-shell .native-select:hover { border-color:#aebed3; }
.admin-shell .layui-input:focus,.admin-shell .layui-textarea:focus,.admin-shell .native-select:focus { border-color:var(--primary); box-shadow:0 0 0 3px #315de712; }
.admin-shell .layui-input::placeholder,.admin-shell .layui-textarea::placeholder { color:#98a5b8; }
.admin-shell input[type=checkbox],.admin-shell input[type=radio] { accent-color:var(--primary); }
.admin-shell .date-range-input { border-color:#d8e1ed; }
.admin-shell .layui-table { color:#455571; border-color:var(--line); }
.admin-shell .layui-table th { background:#f6f8fc; color:#53627a; font-weight:500; }
.admin-shell .layui-table thead tr { background:#f6f8fc; }
.admin-shell .layui-table td,.admin-shell .layui-table th { border-color:#e9eef5; }
.admin-shell .layui-table tbody tr:hover { background:#f7f9ff; }
.admin-shell .layui-table tbody tr.is-selected { background:#f0f4ff; }
.admin-shell .layui-table a:not(.layui-btn) { color:#315bd6; }
.admin-shell .layui-table a:not(.layui-btn):hover { color:#2047bb; text-decoration:underline; text-underline-offset:3px; }
.admin-shell .row-actions>a { font-weight:500; }
.admin-shell .site-cell strong { color:#33445e; }
.admin-shell .site-cell small,.admin-shell .site-meta { color:#7c8ba0; }
.admin-shell .site-domain { color:#566a86; }
.admin-shell button.text-danger { color:#cb4b57; }
.admin-shell .pagination { color:#728198; padding-top:2px; }
.admin-shell .page-number { color:#52637e; border-color:#dce4f0; background:#fff; }
.admin-shell .page-number:hover { background:#f3f6fe; color:var(--primary); border-color:#b3c4ef; }
.admin-shell .page-number.active,.admin-shell .pagination .layui-btn.active { background:var(--primary); color:#fff; border-color:var(--primary); }
.admin-shell .empty,.admin-shell .empty-state { color:#8695aa; }
.admin-shell .empty-state .layui-icon { color:#a9badb; }
.admin-shell .badge { background:#edf6f1; color:#2b855a; border-radius:5px; }
.admin-shell .badge.info,.admin-shell .badge.blue,.admin-shell .badge.violet { background:#edf2fd; color:#4b69ab; }
.admin-shell .badge.warning,.admin-shell .badge.amber { background:#fff4de; color:#a5731c; }
.admin-shell .badge.error,.admin-shell .badge.danger { background:#fff0f1; color:#bc4655; }
.admin-shell .badge.dim,.admin-shell .badge.gray { background:#eef1f6; color:#7a879b; }
.admin-shell .notice { border-color:#dfe7f4; background:#f3f6fc; color:#526888; }
.admin-shell .notice.info { background:#f1f5fe; color:#4a69a4; border-color:#dce6fa; }
.admin-shell .notice.success { background:#f1f8f4; color:#397a58; border-color:#deede4; }
.admin-shell .notice.warning { background:#fff9ed; color:#997329; border-color:#f2e7cd; }
.admin-shell .notice.error { background:#fff3f4; color:#bd4c59; border-color:#f2dce0; }
.admin-shell .stat-card,.admin-shell .analytics-page .metric-card { border-color:var(--line); box-shadow:none; }
.admin-shell .stat-card:after,.admin-shell .metric-card:after,
.admin-shell .mini-bars,.admin-shell .metric-spark { display:none!important; }
.admin-shell .stat-card .stat-icon,.admin-shell .metric-card .metric-icon {
  color:#4764a7!important; background:#f0f3fa!important; border-radius:10px;
}
.admin-shell .stat-label,.admin-shell .analytics-page .metric-label { color:#52627a; }
.admin-shell .stat-value,.admin-shell .analytics-page .metric-value { color:#17243b; font-weight:650; }
.admin-shell .stat-foot strong,.admin-shell .metric-foot strong { color:#526d99; }
.admin-shell .stat-caption,.admin-shell .analytics-page .metric-foot { color:#78879d; }
.admin-shell .analytics-page .metric-pending { color:#8090a6; }
.admin-shell .overview-hero { background:#f4f7fe; border-color:#e0e8f7; }
.admin-shell .hero-kicker { color:#4d6eb1; }
.admin-shell .hero-copy p,.admin-shell .hero-meta { color:#7b8da8; }
.admin-shell .analytics-periods { border-color:#dce5f2; }
.admin-shell .analytics-periods a { color:#657590; background:#fff; }
.admin-shell .analytics-periods a.active { color:#fff; background:var(--primary); }
.admin-shell .analytics-tabs a { background:#fff; border-color:#dce4ef; color:#667893; }
.admin-shell .analytics-tabs a.active { background:#edf2ff; border-color:#c7d5f6; color:#315bd6; }
.admin-shell .analytics-filter-popover { border-color:#dbe4f2; box-shadow:0 12px 36px #1527491c; }
.admin-shell .analytics-rank-track { background:#f0f3f9; }
.admin-shell .analytics-rank-track>i { background:#6688db!important; }
.admin-shell .analytics-rank-row:nth-child(2) .analytics-rank-track>i { background:#7b98df!important; }
.admin-shell .analytics-rank-row:nth-child(3) .analytics-rank-track>i { background:#90a8e5!important; }
.admin-shell .analytics-rank-row:nth-child(n+4) .analytics-rank-track>i { background:#aabcea!important; }
.admin-shell .analytics-flow>div { background:#3e62c8; }
.admin-shell .analytics-flow>div:nth-child(2) { background:#5676cf; }
.admin-shell .analytics-flow>div:nth-child(3) { background:#738dd4; }
.admin-shell .analytics-flow>div:nth-child(4) { background:#8ba0d8; }
.admin-shell .analytics-pending>i { color:#a5b5d6; }
.admin-shell .analytics-pending strong { color:#657792; }
.admin-shell .analytics-donut svg>circle:first-child { stroke:#edf1f8; }
.admin-shell .analytics-chart rect:focus { fill:#315de70d; }
.admin-shell .chart-bar,.admin-shell .rank-bar>span { background:#6485dc; }
.admin-shell .chart-bar.spider-bar { background:#a6b9e8; }
.admin-shell .category-tree .tree-site>summary,.admin-shell .category-tree a.active { background:#edf2ff; color:#4264b5; }
.admin-shell .category-tree .tree-site>summary>.layui-icon,.admin-shell .category-tree .tree-site { color:#4264b5; }
.admin-shell .category-tree summary>.layui-icon { color:#8699b8; }
.admin-shell .form-section>h2,.admin-shell .form-section-title,.admin-shell .media-options summary { color:#4264b5; }
.admin-shell .form-section>h2:before,.admin-shell .form-section-title:before { background:#5274cc; }
.admin-shell .editor-toolbar { background:#f5f7fb; border-color:#dae3ef; }
.admin-shell .editor-toolbar button { color:#526784; border-color:#dae3ef; }
.admin-shell .editor-toolbar button:hover { color:#315de7; border-color:#a9bdea; }
.admin-shell .upload-placeholder,.admin-shell .upload-box,.admin-shell .image-empty { background:#f8fafd; border-color:#d4dfef; color:#8a9bb4; }
.admin-shell .upload-placeholder:hover { background:#f1f5ff; border-color:#9eb5eb; color:#486ab4; }
.admin-shell .upload-placeholder.is-uploading:after { background:#f5f8ffed; color:#315de7; }
.admin-shell .workspace-footer { color:#96a3b6; }
.admin-shell .sites-filter-card { margin-bottom:18px; }
.admin-shell .sites-filter-card .filter-bar { gap:16px; }
.admin-shell .sites-table-card { margin-top:0; padding-top:20px; }
.admin-shell .sites-table-card .panel-head { margin-bottom:18px; }
.admin-shell .sites-table-card .toolbar { margin-top:18px; }
.admin-shell .stable-list .table-wrap,.admin-shell .stable-list .list-region {
  min-height:var(--list-min-height,440px); overflow-anchor:none;
}
.admin-shell .stable-list .list-body>tr { height:40px; }
.admin-shell .stable-list .list-body>tr>td { padding-top:8px; padding-bottom:8px; }
.admin-shell .stable-list .pagination { min-height:42px; }
.admin-shell .sitehub-editor-layer.layui-layer { display:flex; flex-direction:column; box-shadow:0 14px 50px #162c4d26; }
.admin-shell .sitehub-editor-layer>.layui-layer-content { flex:1 1 auto; height:100%!important; min-height:0; overflow:hidden!important; }
.admin-shell .sitehub-editor-layer .sitehub-editor-host { flex:1 1 auto; min-height:0; }
.admin-shell .sitehub-editor-layer .modal-header { border-color:#e6ecf4; background:#fff; }
.admin-shell .sitehub-editor-layer .modal-body { min-height:0; overflow-y:auto; scrollbar-gutter:stable; }
.admin-shell .sitehub-editor-layer .modal-footer { position:relative; z-index:1; border-color:#e6ecf4; background:#fff; padding-top:14px; padding-bottom:14px; }
.admin-shell .layui-layer-title { background:#f7f9fc!important; color:#344760!important; }
.admin-shell .layui-layer-btn .layui-layer-btn0 { background:#315de7!important; border-color:#315de7!important; }
.admin-shell .layui-layer-btn .layui-layer-btn0:hover { background:#254dcc!important; }
#main-content { transition:opacity .14s ease; }
#main-content.page-transition-leave { opacity:.72; }
#main-content.page-transition-enter { animation:page-content-enter .16s ease-out both; }
@keyframes page-content-enter { from { opacity:.72; } to { opacity:1; } }
@media (max-width:720px) {
  .admin-shell main { padding-top:16px; }
  .admin-shell .sites-filter-card,.admin-shell .sites-table-card { padding:16px; }
  .admin-shell .sites-filter-card .filter-bar { gap:12px; }
  .admin-shell .stable-list .table-wrap,.admin-shell .stable-list .list-region { min-height:var(--list-min-height,420px); }
}
@media (prefers-reduced-motion:reduce) {
  #main-content,#main-content.page-transition-leave,#main-content.page-transition-enter { transition:none!important; animation:none!important; opacity:1; }
}
.auth-shell .login-shell { background:#f7f9fc; }
.auth-shell .login-intro { background:linear-gradient(145deg,#edf2fc,#f5f7fb); }
.auth-shell .brand { color:#233a63; }
.auth-shell .brand-symbol path { fill:#315de7; }
.auth-shell .brand small,.auth-shell .login-intro-copy p,.auth-shell .login-capabilities { color:#7789a9; }
.auth-shell .login-intro-copy h1,.auth-shell .login-card h2 { color:#243a5a; }
.auth-shell .login-kicker,.auth-shell .eyebrow { color:#6984b8; }
.auth-shell .login-card label { color:#637793; }
.auth-shell .login-intro-footer,.auth-shell .login-footnote { color:#8f9eb5; }
.auth-shell .login-orbit,.auth-shell .login-orbit span { border-color:#dce5f5; }
.auth-shell .login-orbit b { color:#d3dff3; }
.auth-shell .layui-btn { background:#315de7; color:#fff; border-color:#315de7; box-shadow:none; }
.auth-shell .layui-btn:hover { background:#254dcc; }
.auth-shell .layui-input:focus { border-color:#315de7; box-shadow:0 0 0 3px #315de712; }
.admin-shell .layui-table td.site-cell { display:table-cell; }
.admin-shell .badge.soft-green { background:#f0f3f9; color:#647897; }
/* One centered, geometry-preserving loading state for list and page navigation. */
.admin-loading[hidden] { display:none!important; }
.admin-loading { position:fixed; inset:0 0 0 var(--side-width); z-index:100001; display:grid; place-items:center; background:#f4f7fc80; cursor:wait; }
.loading-card { display:flex; flex-direction:column; align-items:center; gap:10px; min-width:200px; padding:26px 30px; border:1px solid #e1e7f1; border-radius:14px; background:#fff; color:#718099; box-shadow:0 10px 40px #19324d20; font-size:12px; }
.loading-card strong { font-size:16px; color:#294568; }
.loading-spinner { width:32px; height:32px; border:3px solid #e2e9f9; border-top-color:#315de7; border-radius:50%; animation:loading-spin .75s linear infinite; }
@keyframes loading-spin { to { transform:rotate(360deg); } }
.data-refresh:disabled { opacity:.5; cursor:wait; }
@media (max-width:960px) { .admin-loading { left:0; } }
@media (prefers-reduced-motion:reduce) { .loading-spinner { animation:none; } }
/* Layui marks input focus borders important; keep that state on the same blue accent. */
.admin-shell .layui-input:focus,.admin-shell .layui-textarea:focus,.admin-shell .native-select:focus,
.auth-shell .layui-input:focus { border-color:#315de7!important; box-shadow:0 0 0 3px #315de714; }
.admin-shell .layui-input:focus-visible,.admin-shell .layui-textarea:focus-visible,.admin-shell .native-select:focus-visible,
.auth-shell .layui-input:focus-visible { outline:0; }

/* Operational reports and chart inspection. */
.analytics-context { display:flex; justify-content:space-between; flex-wrap:wrap; gap:8px; margin-bottom:14px; color:#7b8ba3; font-size:12px; }
.analytics-report-stack { display:grid; gap:18px; margin-bottom:18px; }
.report-actions { display:flex; align-items:center; gap:16px; flex-wrap:wrap; }
.report-export { white-space:nowrap; font-size:12px; color:#315de7!important; }
.report-export i { margin-right:5px; }
.analytics-panel h2 small { font-size:11px; font-weight:400; margin-left:6px; }
.report-sub { display:block; color:#8392a8; font-size:11px; margin-top:4px; }
.report-table { min-width:900px; }
.report-table td { vertical-align:top; }
.report-table th { white-space:nowrap; }
.spider-details { min-width:100px; }
.spider-details summary { cursor:pointer; color:#315de7; white-space:nowrap; }
.spider-details ul { padding-top:8px; min-width:115px; }
.spider-details li { display:flex; justify-content:space-between; gap:12px; line-height:1.9; }
.analytics-chart .chart-hit { cursor:crosshair; }
.analytics-chart .chart-hit:focus { fill:#315de70d; }
.chart-tooltip { position:absolute; z-index:5; top:6px; pointer-events:none; white-space:pre-line; min-width:150px; max-width:calc(100% - 16px); padding:10px 13px; border:1px solid #d8e2f2; border-radius:8px; background:#fff; box-shadow:0 6px 24px #233c6426; color:#263e61; font-size:12px; line-height:1.8; }
.chart-tooltip[hidden] { display:none; }
.analytics-chart-empty { pointer-events:none; }
.analytics-donut-legend { max-height:240px; overflow-y:auto; }
.analytics-donut-legend a { color:#315de7; text-decoration:underline; text-underline-offset:3px; }
.analytics-bottom-grid.report-bottom { grid-template-columns:1.2fr 1fr; align-items:start; }
@media(max-width:1100px) { .analytics-bottom-grid.report-bottom { grid-template-columns:1fr; } }

.publishing-summary { display:grid; grid-template-columns:1fr 1fr; gap:10px; padding-top:12px; }
.publishing-summary>div { background:#f5f7fc; border-radius:8px; padding:14px 10px; text-align:center; color:#73849f; }
.publishing-summary span { display:block; font-size:11px; }
.publishing-summary strong { display:block; margin-top:6px; font-size:20px; color:#315de7; }

/* Request investigation and site-scoped manual IP blocks. */
.traffic-toolbar { display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:12px; margin-bottom:16px; }
.traffic-toolbar .analytics-tabs { margin:0; flex-wrap:wrap; }
.traffic-toolbar .layui-btn { margin:0; }
.traffic-rank-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; margin-bottom:18px; align-items:start; }
.traffic-rank-panel .panel-head { align-items:flex-start; }
.traffic-rank-panel .panel-head p { margin:4px 0 0; }
.traffic-rank-panel .table-wrap { max-height:464px; }
.analytics-page .traffic-rank-panel .traffic-rank-table td { vertical-align:top; white-space:normal; }
.traffic-rank-table th { position:sticky; top:0; z-index:1; }
.traffic-rank-table .traffic-rank-name { min-width:130px; max-width:260px; overflow-wrap:anywhere; }
.traffic-rank-table .traffic-rank-number { display:inline-block; width:20px; color:#8b9ab0; font-variant-numeric:tabular-nums; }
.traffic-rank-table .traffic-rank-number.is-leading { color:#315de7; font-weight:650; }
.traffic-rank-table .traffic-rank-actions { display:flex; gap:12px; margin-top:5px; }
.traffic-rank-count { font-weight:600; color:#263d63; font-variant-numeric:tabular-nums; }
.traffic-ip { font-family:ui-monospace,SFMono-Regular,Consolas,monospace; font-size:12px; overflow-wrap:anywhere; }
.traffic-region { display:block; color:#7185a1; font-size:11px; margin-top:3px; white-space:normal; }
.traffic-record-table { min-width:1100px; }
.analytics-page .traffic-record-table .analytics-path { white-space:normal; min-width:180px; }
.analytics-page .traffic-record-table .traffic-ip-cell { white-space:normal; min-width:135px; max-width:220px; }
.traffic-record-table .traffic-record-actions { white-space:nowrap; }
.traffic-filter-input { width:100%; min-width:150px; }
.traffic-filter-detail { display:flex; flex-wrap:wrap; gap:7px; margin:0 0 14px; }
.traffic-filter-chip { display:inline-flex; align-items:center; gap:9px; max-width:100%; padding:5px 9px; border:1px solid #dce5f5; border-radius:5px; background:#f4f7ff; color:#536e99; font-size:12px; overflow-wrap:anywhere; }
.traffic-security-grid { display:grid; grid-template-columns:minmax(270px,.75fr) minmax(0,1.6fr); gap:18px; align-items:start; }
.traffic-block-form { display:grid; gap:15px; }
.traffic-block-form label { display:grid; gap:6px; color:#526481; font-size:12px; }
.traffic-block-form .native-select { width:100%; }
.traffic-block-form .layui-textarea { min-height:90px; }
.traffic-block-form .hint { margin:0; font-size:11px; }
.traffic-block-form .layui-btn { width:100%; margin:0; }
.traffic-block-form :disabled { opacity:.6; cursor:not-allowed; }
.traffic-security-note { padding:12px 14px; background:#f5f8fc; border-radius:7px; color:#7285a2; font-size:12px; line-height:1.9; margin:16px 0 0; }
.traffic-security-note strong { display:block; color:#4f668b; margin-bottom:3px; }
.traffic-block-table { min-width:720px; }
.analytics-page .traffic-block-table td { vertical-align:top; }
.analytics-page .traffic-block-table .traffic-block-reason { min-width:130px; max-width:230px; white-space:normal; overflow-wrap:anywhere; }
.traffic-block-table .row-actions form { margin:0; }
@media(max-width:1450px) { .traffic-rank-grid { grid-template-columns:1fr 1fr; } .traffic-rank-grid>.traffic-rank-panel:last-child { grid-column:1/-1; } }
@media(max-width:1000px) { .traffic-security-grid { grid-template-columns:1fr; } .traffic-block-form { grid-template-columns:1fr 1fr; } .traffic-block-form .traffic-block-wide { grid-column:1/-1; } }
@media(max-width:760px) { .traffic-rank-grid { grid-template-columns:1fr; } .traffic-toolbar { align-items:stretch; } .traffic-toolbar .analytics-tabs { gap:6px; } .traffic-toolbar .analytics-tabs a { padding:7px 10px; } .traffic-block-form { grid-template-columns:1fr; } .traffic-security-grid { gap:14px; } }
