:root {
  --el-color-primary: #14a8c7;
  --el-color-success: #2bbf8a;
  --xc-bg: #eef9fb;
  --xc-bg-2: #f7fcff;
  --xc-card: rgba(255, 255, 255, 0.86);
  --xc-line: #cdeff4;
  --xc-primary: #14a8c7;
  --xc-primary-deep: #087d99;
  --xc-green: #2bbf8a;
  --xc-text: #183642;
  --xc-muted: #71909a;
  --xc-shadow: 0 18px 50px rgba(28, 142, 168, 0.14);
}
[v-cloak] { display: none; }
* { box-sizing: border-box; }
body { margin: 0; color: var(--xc-text); font-family: "Helvetica Neue", "PingFang SC", "Microsoft YaHei", sans-serif; background: var(--xc-bg); }
.login-body { min-height: 100vh; background: radial-gradient(circle at 18% 20%, #c8f5f1 0, transparent 26%), radial-gradient(circle at 85% 15%, #bde8ff 0, transparent 28%), linear-gradient(135deg, #eafaf8, #f7fcff 58%, #edf7ff); }
.login-page { min-height: 100vh; display: grid; grid-template-columns: 1.15fr 420px; gap: 48px; align-items: center; padding: 8vw; }
.login-hero h1 { margin: 14px 0; max-width: 780px; font-size: clamp(42px, 5vw, 72px); line-height: 1.08; letter-spacing: -2px; color: #0d6077; }
.login-hero p { max-width: 580px; font-size: 20px; color: #497680; line-height: 1.8; }
.hero-badge { display: inline-flex; padding: 8px 14px; border: 1px solid var(--xc-line); border-radius: 999px; color: var(--xc-primary-deep); background: rgba(255,255,255,.62); }
.hero-grid { display: grid; grid-template-columns: repeat(2, minmax(160px, 1fr)); gap: 14px; max-width: 520px; margin-top: 30px; }
.hero-grid span { padding: 14px 16px; border-radius: 18px; background: rgba(255,255,255,.72); color: #28778a; box-shadow: var(--xc-shadow); }
.glass-card { background: var(--xc-card); border: 1px solid rgba(186, 235, 243, .9); border-radius: 28px; box-shadow: var(--xc-shadow); backdrop-filter: blur(14px); }
.login-card { padding: 34px; }
.login-card h2 { margin: 0 0 8px; font-size: 30px; color: #114c5b; }
.muted { color: var(--xc-muted); }
.login-button { width: 100%; margin-top: 12px; }
.admin-body { background: linear-gradient(135deg, #edfafa 0%, #f8fcff 45%, #eef8ff 100%); }
.admin-shell { min-height: 100vh; }
.admin-aside { border-right: 1px solid var(--xc-line); background: rgba(255,255,255,.78); backdrop-filter: blur(16px); }
.brand-panel { display: flex; gap: 12px; align-items: center; padding: 22px 18px; }
.brand-logo { width: 46px; height: 46px; border-radius: 16px; display: grid; place-items: center; color: white; font-weight: 800; background: linear-gradient(135deg, #0ab2ce, #30c995); box-shadow: 0 12px 30px rgba(20,168,199,.25); }
.brand-name { font-size: 20px; font-weight: 800; color: #0f5f73; }
.brand-sub { font-size: 12px; color: var(--xc-muted); margin-top: 2px; }
.side-menu { border-right: 0 !important; background: transparent !important; padding: 4px 10px 20px; }
.admin-header { height: 78px; display: flex; align-items: center; justify-content: space-between; border-bottom: 1px solid var(--xc-line); background: rgba(255,255,255,.68); backdrop-filter: blur(16px); }
.page-title { font-size: 22px; font-weight: 800; color: #123d4c; }
.page-desc { margin-top: 4px; color: var(--xc-muted); font-size: 13px; }
.header-actions { display: flex; gap: 10px; align-items: center; }
.admin-main { padding: 22px; }
.xc-card { border: 1px solid rgba(190, 234, 242, .9) !important; border-radius: 22px !important; box-shadow: var(--xc-shadow) !important; }
.metric-grid { display: grid; grid-template-columns: repeat(6, minmax(130px, 1fr)); gap: 16px; margin-bottom: 18px; }
.metric-card { padding: 18px; border-radius: 22px; border: 1px solid var(--xc-line); background: rgba(255,255,255,.82); box-shadow: var(--xc-shadow); }
.metric-label { font-size: 13px; color: var(--xc-muted); }
.metric-value { margin-top: 8px; font-size: 28px; font-weight: 800; color: #0e6c80; }
.metric-value small { margin-left: 3px; font-size: 13px; color: var(--xc-muted); font-weight: 500; }
.metric-value.green { color: var(--xc-green); }
.metric-value.red { color: #d25b5b; }
.portfolio-metric-grid .metric-card { min-width: 0; overflow-wrap: anywhere; }
.portfolio-main-tabs { margin-top: 4px; }
.portfolio-main-tabs > .el-tabs__content { padding-top: 4px; }
/* 必须写在 .metric-value 之后：通用的 .muted 声明在本文件更靠前的位置，
   同优先级下会被后声明的 .metric-value 覆盖，导致带 muted 的指标卡看起来与普通卡无异。 */
.metric-value.muted { color: var(--xc-muted); }
.smart-picker-page .section-card { margin-bottom: 14px; border-radius: 14px; overflow: hidden; }
.smart-picker-metrics { grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); }
.smart-picker-metrics .metric-card { min-width: 0; padding: 16px 18px; }
.smart-picker-metrics .metric-label { word-break: break-word; }
.smart-picker-metrics .metric-value { font-size: 20px; line-height: 1.3; word-break: break-all; overflow-wrap: anywhere; }
.smart-template-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 14px; }
.smart-template-grid .template-card { cursor: pointer; border: 1px solid #dcecf0; transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease; }
.smart-template-grid .template-card:hover { transform: translateY(-2px); border-color: var(--xc-primary); box-shadow: var(--xc-shadow); }
.smart-template-grid .template-card.active { border-color: var(--xc-primary); background: linear-gradient(135deg, #f2fdff, #ffffff); box-shadow: 0 14px 34px rgba(20,168,199,.16); }
.smart-template-grid .template-card h3 { margin: 0 0 10px; color: #183642; }
.smart-template-grid .template-card p { min-height: 44px; margin: 0; color: #4c6872; line-height: 1.7; }
.smart-picker-page .risk-row { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; }
.smart-picker-page .action-row { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 12px; }
.smart-picker-page .result-header { display: flex; justify-content: space-between; gap: 12px; align-items: center; flex-wrap: wrap; }
.smart-empty { padding: 22px 0; color: var(--xc-muted); }
.toolbar { display: flex; gap: 12px; align-items: center; justify-content: space-between; margin-bottom: 14px; }
.toolbar-left, .toolbar-right { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
.filter-bar { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; margin-bottom: 14px; }
.filter-bar .el-input { width: 170px; }
.filter-bar .el-select { width: 170px; }
.filter-bar.wide .el-input, .filter-bar.wide .el-date-editor { width: 220px; }
.filter-bar.wide .el-select { width: 220px; }
.table-count { margin-left: 10px; font-size: 13px; font-weight: 400; }
.pager-wrap { display: flex; justify-content: flex-end; margin-top: 16px; }
.cool-table { --el-table-header-bg-color: #eefbfc; --el-table-header-text-color: #275d6a; --el-table-row-hover-bg-color: #eefafb; }
.cool-table .el-table__cell { color: #244852; }
.xc-row-danger { --el-table-tr-bg-color: #fff3f3; }
.xc-row-warning { --el-table-tr-bg-color: #fffaf0; }
.section-alert { margin-bottom: 16px; border-radius: 16px !important; }
.dashboard-grid { display: grid; grid-template-columns: 1.2fr .8fr; gap: 16px; }
.dashboard-grid .xc-card:last-child { grid-column: span 2; }
.hero-card { min-height: 280px; background: linear-gradient(135deg, rgba(255,255,255,.9), rgba(224, 250, 252, .88)) !important; }
.hero-title { font-size: 30px; font-weight: 900; color: #0f6a80; margin-bottom: 12px; }
.hero-card p { color: #527d88; font-size: 16px; line-height: 1.8; max-width: 680px; }
.hero-steps, .rule-guide { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 24px; }
.hero-steps span, .rule-guide span { padding: 10px 14px; border: 1px solid var(--xc-line); border-radius: 999px; color: #0d7890; background: rgba(255,255,255,.78); }
.signal-chart { height: 260px; }
.decision-summary { display: grid; grid-template-columns: repeat(3, minmax(160px, 1fr)); gap: 16px; margin-bottom: 16px; }
.news-grid { display: grid; grid-template-columns: 1.3fr .7fr; gap: 16px; margin-bottom: 16px; }
.form-actions { display: flex; gap: 10px; margin-top: 14px; flex-wrap: wrap; }
.task-grid { display: grid; grid-template-columns: repeat(3, minmax(220px, 1fr)); gap: 16px; margin-top: 16px; }
.task-card h3 { margin: 0 0 10px; color: #115c70; }
.task-card p { min-height: 48px; margin: 0 0 16px; color: var(--xc-muted); line-height: 1.7; }
.pipeline-card { margin-bottom: 14px; }
.result-card { margin-top: 16px; }
.result-card pre { overflow: auto; padding: 16px; border-radius: 16px; background: #f2fbfc; color: #315e68; }
.rules-tabs { margin-bottom: 16px; }
.rule-card { margin-bottom: 16px; }
.json-editor textarea { font-family: "SFMono-Regular", Consolas, "Liberation Mono", monospace; line-height: 1.55; color: #1f5966; background: #f6fdfe; }
.badge-buy { color: #15925f; font-weight: 700; }
.badge-risk { color: #d25b5b; font-weight: 700; }
.badge-hold { color: #637b86; font-weight: 700; }
@media (max-width: 1200px) { .metric-grid { grid-template-columns: repeat(3, 1fr); } .smart-picker-metrics, .smart-template-grid { grid-template-columns: repeat(2, minmax(220px, 1fr)); } .task-grid { grid-template-columns: repeat(2, minmax(220px, 1fr)); } .dashboard-grid, .news-grid { grid-template-columns: 1fr; } .dashboard-grid .xc-card:last-child { grid-column: span 1; } }
@media (max-width: 960px) { .login-page { grid-template-columns: 1fr; padding: 28px; } .login-hero h1 { font-size: 52px; } .metric-grid, .decision-summary, .smart-picker-metrics, .smart-template-grid { grid-template-columns: repeat(2, 1fr); } .admin-aside { width: 210px !important; } .admin-header { height: auto; min-height: 78px; padding: 14px; flex-wrap: wrap; } .admin-main { padding: 14px; } }
@media (max-width: 640px) {
  .metric-grid, .decision-summary, .task-grid, .hero-grid, .smart-picker-metrics, .smart-template-grid { grid-template-columns: 1fr; }
  .admin-shell { display: block; }
  .admin-aside { width: 100% !important; max-width: none; border-right: 0; border-bottom: 1px solid var(--xc-line); }
  .brand-panel { padding: 16px 14px 10px; }
  .side-menu { display: flex; gap: 6px; overflow-x: auto; padding: 4px 10px 12px; white-space: nowrap; }
  .side-menu .el-menu-item, .side-menu .el-sub-menu__title { padding: 0 12px !important; }
  .admin-main { padding: 12px; overflow-x: hidden; }
  .admin-header { align-items: flex-start; }
  .header-actions, .toolbar-right { width: 100%; }
  .header-actions .el-button, .toolbar-right .el-button { flex: 1; margin-left: 0; }
  .filter-bar { align-items: stretch; flex-direction: column; }
  .filter-bar .el-input, .filter-bar .el-select, .filter-bar .el-date-editor, .filter-bar .el-button { width: 100% !important; margin-left: 0; }
  .filter-bar .el-select .el-input { width: 100% !important; }
  .toolbar { align-items: flex-start; flex-direction: column; }
  .pager-wrap { justify-content: flex-start; overflow-x: auto; }
  .el-drawer.rtl, .el-drawer.ltr { width: calc(100vw - 24px) !important; max-width: 520px; }
}
.strategy-hero { display: flex; justify-content: space-between; gap: 16px; align-items: flex-start; margin-bottom: 16px; padding: 22px; background: linear-gradient(135deg, rgba(255,255,255,.94), rgba(218,248,250,.86)); }
.strategy-hero h2 { margin: 4px 0 8px; font-size: 30px; color: #0f6a80; }
.strategy-hero p { max-width: 820px; margin: 0; color: var(--xc-muted); line-height: 1.7; }
.hero-kicker { color: var(--xc-primary-deep); font-size: 12px; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; }
.strategy-permission { display: flex; gap: 8px; flex-wrap: wrap; justify-content: flex-end; }
.strategy-layout { display: grid; grid-template-columns: minmax(360px, .9fr) minmax(520px, 1.4fr); gap: 16px; align-items: start; }
.strategy-layout > * { min-width: 0; }
.strategy-config-card { position: sticky; top: 92px; }
.strategy-summary-grid { display: grid; grid-template-columns: repeat(4, minmax(130px, 1fr)); gap: 12px; margin-bottom: 16px; }
.strategy-summary-card { min-width: 0; padding: 14px; }
.strategy-summary-card .metric-value { font-size: 22px; }
.strategy-chart { width: 100%; height: 340px; }
.strategy-log-console { min-height: 320px; max-height: 420px; overflow: auto; margin: 0; padding: 16px; border-radius: 16px; color: #d9fff6; background: linear-gradient(135deg, #0b2f3a, #123f4a); font-family: "SFMono-Regular", Consolas, "Liberation Mono", monospace; line-height: 1.6; }
@media (max-width: 1200px) { .strategy-layout { grid-template-columns: 1fr; } .strategy-config-card { position: static; } .strategy-summary-grid { grid-template-columns: repeat(2, minmax(130px, 1fr)); } }
@media (max-width: 640px) { .strategy-hero { flex-direction: column; } .strategy-summary-grid { grid-template-columns: 1fr; } .strategy-chart { height: 280px; } }
.one-yang-daily .oy-hero{background:linear-gradient(125deg,#fff8e8 0%,#fff 54%,#edf9f3 100%);border:1px solid #f2dfb5}
.one-yang-daily .oy-kicker{font-size:12px;letter-spacing:.18em;color:#a46413;font-weight:700}
.one-yang-daily .oy-title{margin:6px 0 8px;font-size:28px;color:#28372d}
.one-yang-daily .oy-rule-grid{display:grid;grid-template-columns:repeat(3,minmax(150px,1fr));gap:10px;margin-top:18px}
.one-yang-daily .oy-rule{padding:12px 14px;border-radius:10px;background:rgba(255,255,255,.78);border:1px solid #eadfc9;color:#5d5548}
.one-yang-daily .oy-rule strong{display:block;color:#9a5910;margin-bottom:4px}
.one-yang-daily .oy-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.one-yang-daily .oy-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:12px;margin:16px 0}
.one-yang-daily .oy-stat{padding:14px;border-radius:10px;background:#f6f8f7;text-align:center}
.one-yang-daily .oy-stat b{display:block;font-size:24px;color:#1e6650}
.one-yang-daily .oy-empty{padding:34px 12px;text-align:center;color:#909399}
.one-yang-daily .oy-warning{color:#b26a00;font-size:13px}
@media(max-width:760px){.one-yang-daily .oy-rule-grid,.one-yang-daily .oy-summary{grid-template-columns:1fr}.one-yang-daily .oy-title{font-size:23px}}
.oy-performance-heading,.oy-performance-meta{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.oy-performance-note{color:var(--xc-muted);font-size:13px;line-height:1.8;margin:12px 0}
.oy-performance-meta{font-size:13px;color:var(--xc-muted);margin:18px 0 12px}
.oy-performance-body{min-height:100px}
.oy-performance-filter .el-date-editor{max-width:360px;width:100%;flex-grow:0;min-width:0}
.oy-performance .oy-muted{color:var(--xc-muted);font-size:12px}
.oy-performance .oy-rise{color:#b33c32;font-variant-numeric:tabular-nums}
.oy-performance .oy-fall{color:#23734f;font-variant-numeric:tabular-nums}
.oy-observation-date{font-size:11px;color:var(--xc-muted);margin-top:3px}
@media(max-width:640px){.oy-performance-filter{align-items:stretch}.oy-performance-filter .el-date-editor{max-width:100%}.oy-performance-filter>span{width:100%}}
.pipeline-runs-page { min-width: 0; }
.pipeline-runs-page .task-grid > *, .pipeline-runs-page .result-card { min-width: 0; }
.pipeline-help { font-size: 13px; line-height: 1.7; margin: 12px 0; }
.pipeline-history-heading, .pipeline-latest { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.pipeline-latest { justify-content: flex-start; margin-bottom: 14px; }
.pipeline-history-heading .muted { font-size: 13px; font-weight: 400; margin-left: 8px; }
.pipeline-error { color: #b54436; overflow-wrap: anywhere; }
.pipeline-run-facts { display: grid; grid-template-columns: 125px minmax(0, 1fr); gap: 12px; font-size: 14px; line-height: 1.6; }
.pipeline-run-facts dt { color: var(--xc-muted); }
.pipeline-run-facts dd { margin: 0; overflow-wrap: anywhere; }
.pipeline-run-drawer .el-drawer__body { padding-top: 0; }
@media (max-width: 640px) {
  .pipeline-run-facts { grid-template-columns: 95px minmax(0, 1fr); gap: 10px; }
  .pipeline-history-heading { align-items: flex-start; }
  .pipeline-history-heading .muted { display: block; margin: 4px 0 0; }
}

/* 涨跌配色（核心标的池、我的自选）：A 股惯例红涨绿跌，沿用收益复盘页的 oy-rise/oy-fall 色值。 */
.price-up { color: #b33c32; font-weight: 600; font-variant-numeric: tabular-nums; }
.price-down { color: #23734f; font-weight: 600; font-variant-numeric: tabular-nums; }
.xc-ai-page { --xc-profit: #b33c32; --xc-loss: #23734f; min-width: 0; }
.xc-ai-page .muted { color: #64748b; font-size: 13px; margin-top: 5px; }
.xc-ai-page .section-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; }
.xc-ai-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin: 16px 0; }
.xc-ai-holdings-overview { display: flex; flex-wrap: wrap; gap: 18px 32px; padding: 18px 0; border-block: 1px solid #e2e8f0; margin: 18px 0; }
.xc-ai-holdings-overview strong { margin-left: 10px; font-size: 20px; font-variant-numeric: tabular-nums; }
.xc-ai-page .el-table { font-variant-numeric: tabular-nums; margin-bottom: 18px; }
.xc-ai-page .xc-profit { color: var(--xc-profit); }
.xc-ai-page .xc-loss { color: var(--xc-loss); }
.xc-ai-reference { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; padding-bottom: 16px; }
.xc-ai-form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 18px; }
.xc-ai-page .el-alert { margin: 12px 0; }
@media (max-width: 640px) {
  .xc-ai-page .section-header { flex-direction: column; gap: 0; }
  .xc-ai-page .xc-ai-actions { gap: 8px; }
  .xc-ai-holdings-overview { flex-direction: column; gap: 12px; }
  .xc-ai-form-grid { grid-template-columns: minmax(0, 1fr); }
  .xc-ai-page .el-pagination { flex-wrap: wrap; gap: 6px; }
}
/* 风控工作台：把风险层级做成操作台，而不是另一张通用数据表。 */
.risk-workbench { --risk-ink:#17332d; --risk-accent:#d45732; --risk-paper:#f5f0e6; color:var(--risk-ink); }
.risk-hero { display:flex; justify-content:space-between; gap:24px; align-items:center; padding:28px; border-radius:18px; background:linear-gradient(125deg,#163a32 0%,#245c4b 58%,#d4864d 140%); color:#fff; box-shadow:0 18px 45px rgba(20,58,49,.2); }
.risk-hero h2 { margin:3px 0 8px; font-family:Georgia,"Noto Serif SC",serif; font-size:30px; letter-spacing:.04em; }
.risk-hero p { margin:0; color:rgba(255,255,255,.76); }
.risk-kicker { font-size:11px; letter-spacing:.22em; color:#efc696; }
.risk-counts { display:grid; grid-template-columns:repeat(3,minmax(84px,1fr)); gap:8px; }
.risk-counts div { min-width:84px; padding:13px 16px; border:1px solid rgba(255,255,255,.18); border-radius:12px; background:rgba(255,255,255,.08); text-align:center; backdrop-filter:blur(8px); }
.risk-counts strong,.risk-counts span { display:block; }
.risk-counts strong { font:700 25px Georgia,serif; color:#ffd3a5; }
.risk-counts span { margin-top:3px; font-size:12px; color:rgba(255,255,255,.72); }
.risk-filter-card { margin-top:16px; }
.risk-filter-card .el-card__body { display:flex; flex-wrap:wrap; gap:10px; }
.risk-filter-card .el-select { width:150px; }
.risk-subtitle { margin-left:10px; color:#8b958f; font-size:12px; }
.risk-actions { display:flex; flex-wrap:wrap; gap:8px; margin:18px 0; }
.management-page { min-width:0; padding:24px; overflow:hidden; }
.management-page > .section-head { display:flex; align-items:flex-start; justify-content:space-between; gap:20px; margin-bottom:18px; }
.management-page > .section-head h2 { margin:3px 0 7px; color:#123d4c; }
.management-page > .section-head p { margin:0; }
.management-page > .section-head .eyebrow { color:var(--xc-primary-deep); font-size:11px; font-weight:800; letter-spacing:.16em; text-transform:uppercase; }
.management-page > .section-head .toolbar { justify-content:flex-end; margin-bottom:0; }
.management-page > .el-pagination { justify-content:flex-end; margin-top:18px; }
.role-form-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }
.permission-toolbar { display:flex; align-items:center; justify-content:space-between; gap:16px; margin:4px 0 12px; }
.permission-toolbar .el-input { max-width:360px; }
.permission-groups { max-height:46vh; overflow:auto; border:1px solid rgba(148,163,184,.22); border-radius:14px; padding:10px; }
.permission-group + .permission-group { border-top:1px solid rgba(148,163,184,.16); margin-top:10px; padding-top:10px; }
.permission-group-head { margin-bottom:8px; }
.permission-items { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:4px 14px; padding-left:22px; }
.permission-items .el-checkbox { height:auto; min-height:32px; margin-right:0; align-items:flex-start; }
.permission-items small { display:block; color:#8492a6; font-size:11px; line-height:1.35; }
.log-filter { margin:12px 0 4px; }
.log-filter .el-select { width:132px; }
.log-filter .el-input { width:150px; }
.log-filter .el-date-editor { width:360px; }
.audit-detail { padding:8px 24px; }
.audit-detail pre { white-space:pre-wrap; word-break:break-word; background:rgba(15,23,42,.05); border-radius:10px; padding:10px; }
@media (max-width: 640px) {
  .risk-hero { align-items:stretch; flex-direction:column; padding:20px; }
  .risk-counts { grid-template-columns:repeat(3,1fr); }
  .risk-counts div { min-width:0; padding:10px 4px; }
  .risk-filter-card .el-select,.risk-filter-card .el-button { width:100%; }
  .risk-detail-drawer { width:100% !important; max-width:100vw; }
  .management-page { padding:16px; }
  .management-page > .section-head { flex-direction:column; gap:12px; }
  .management-page > .section-head .toolbar { width:100%; }
  .role-form-grid,.permission-items { grid-template-columns:1fr; }
  .permission-items { padding-left:8px; }
  .permission-toolbar { align-items:flex-start; flex-direction:column; }
  .permission-toolbar .el-input { max-width:none; width:100%; }
  .log-filter { display:grid; grid-template-columns:1fr; }
  .log-filter .el-form-item,.log-filter .el-select,.log-filter .el-date-editor { width:100%; margin-right:0; }
}

.mobile-nav { display: none; }
@media (max-width: 640px) {
  .admin-aside { height: auto; flex: none; }
  .admin-aside .brand-panel { padding: 8px 12px; }
  .admin-aside .side-menu { display: none; }
  .mobile-nav { display: block; width: calc(100% - 24px); margin: 0 12px 10px; }
}
