/* =========================================================
   SP4 · 驾驶舱设计系统（对标参考图 1:1 布局）
   顶栏：品牌 + 日期/天气/资金/成员 + 账号
   侧栏：纯菜单（两行式中英 + 可折叠分组）
   仪表盘：Banner 轮播 + 活动中心 + 公告 + 快捷操作 + 基础统计
           + 机组/检修状态 + 航行通告 + 实时航班 + 财务速览
           + 历史航线 + 我的飞行活动 + 发展概况 + 快速入口
   叠加层：加载于 app.css 之后；删除本文件即可回滚旧版
   ========================================================= */

:root{
  --sp-navy-1:#0b1a32;
  --sp-navy-2:#081221;
  --sp-topbar:#0d1d38;
  --sp-blue:#1f66ff;
  --sp-blue-deep:#1348cf;
  --sp-cyan:#38bdf8;
  --sp-amber:#f59e0b;
  --sp-line:rgba(78,124,214,.24);
  --sp-glow:0 0 14px rgba(31,102,255,.45);
}

/* ---------- 全局背景 ---------- */
body{background:linear-gradient(180deg,#0a1626 0%,#081221 100%)}
html[data-theme="light"] body{
  background:
    radial-gradient(900px 420px at 88% -12%, rgba(31,102,255,.08), transparent 55%),
    linear-gradient(180deg,#eef2f9 0%,#e3e9f3 100%);
}
::-webkit-scrollbar-thumb{background:rgba(90,120,175,.45);border-radius:8px}
::-webkit-scrollbar-thumb:hover{background:var(--sp-blue)}

/* ---------- 骨架 ---------- */
.sp3{display:flex;height:100vh;overflow:hidden}
.sp3 .main{flex:1;display:flex;flex-direction:column;min-width:0}

/* ---------- 左侧纯菜单侧栏 ---------- */
.sp-side{
  width:224px;flex-shrink:0;display:flex;flex-direction:column;
  background:linear-gradient(180deg,var(--sp-navy-1) 0%,var(--sp-navy-2) 100%);
  border-right:1px solid rgba(56,110,220,.28);
  box-shadow:6px 0 24px rgba(3,8,20,.5);
}
.sp3 .nav{flex:1;overflow-y:auto;padding:12px 10px 8px;scrollbar-width:thin}
.sp3 .nav-item{
  display:flex;align-items:center;gap:10px;padding:8.5px 12px;border-radius:10px;
  color:#9db3d6;margin-bottom:3px;cursor:pointer;position:relative;
  transition:background .15s,color .15s;user-select:none;font-size:12.8px;
}
.sp3 .nav-item:hover{background:rgba(47,110,255,.14);color:#dcebff}
.sp3 .nav-item .ic{width:17px;text-align:center;font-size:14px;flex-shrink:0}
.sp3 .ni-t{min-width:0}
.sp3 .ni-t b{display:block;font-size:12.8px;font-weight:600;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sp3 .ni-t small{display:block;font-size:9px;color:#54688c;letter-spacing:.5px;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sp3 .nav-item.active{
  background:linear-gradient(135deg,var(--sp-blue) 0%,var(--sp-blue-deep) 100%);
  color:#fff;box-shadow:var(--sp-glow), 0 6px 18px rgba(19,72,207,.4);
}
.sp3 .nav-item.active::before{
  content:"";position:absolute;left:-10px;top:9px;bottom:9px;width:4px;border-radius:0 4px 4px 0;
  background:var(--sp-cyan);box-shadow:0 0 10px rgba(56,189,248,.8);
}
.sp3 .nav-item.active .ni-t small{color:rgba(255,255,255,.72)}
.sp3 .nav-item .arrow{margin-left:auto;font-size:10px;opacity:.55;transition:transform .2s}
.sp3 .nav-group.open>.nav-item .arrow{transform:rotate(180deg)}
.sp3 .nav-sub{display:none;padding-left:18px;margin:2px 0 6px}
.sp3 .nav-group.open .nav-sub{display:block}
.sp3 .nav-sub .nav-item{padding:6.5px 10px;font-size:12px}
.sp3 .nav-badge{margin-left:auto;background:var(--sp-amber);color:#1a1205;font-size:10px;border-radius:8px;padding:1px 6px;font-weight:700}
.sp3 .nav-item.locked{opacity:.45}
.sp-sidefoot{padding:9px 8px;text-align:center;color:#42557a;font-size:9.5px;border-top:1px solid rgba(56,110,220,.16)}
.sp-sidefoot em{font-style:normal;color:#5f7ba6;font-variant-numeric:tabular-nums}

/* ---------- 顶部品牌栏 ---------- */
.sp3 .topbar{
  height:58px;flex-shrink:0;display:flex;align-items:center;gap:9px;padding:0 16px;
  background:linear-gradient(180deg,var(--sp-topbar) 0%,#0a1830 100%);
  border-bottom:1px solid rgba(56,110,220,.28);
  box-shadow:0 4px 18px rgba(3,8,20,.4);
}
.tb-brand{display:flex;align-items:center;gap:10px;cursor:pointer;flex-shrink:0}
.tb-brand .logo-badge{
  width:40px;height:40px;border-radius:11px;
  background:linear-gradient(135deg,#2f7bff,#1348cf);
  color:#fff;display:flex;align-items:center;justify-content:center;overflow:hidden;
  box-shadow:0 0 16px rgba(47,123,255,.5), inset 0 0 0 1px rgba(255,255,255,.18);
}
.tb-brand .logo-badge img{width:100%;height:100%;object-fit:cover}
.tb-brand .logo-txt b{color:#f2f7ff;font-size:16px;letter-spacing:1px;display:block;line-height:1.15}
.tb-brand .logo-txt span{color:#5f7ba6;font-size:9px;letter-spacing:.6px}
.sp3 .topbar .sp{flex:1}
.sp3 .topbar .chip{
  background:rgba(31,102,255,.1);border:1px solid rgba(78,124,214,.3);
  color:#c9d9f2;border-radius:10px;white-space:nowrap;
}
.sp3 .topbar .chip .ci{color:var(--sp-cyan)}
.sp3 .topbar .chip b{font-variant-numeric:tabular-nums;color:#eaf2ff}
.tb-date{font-size:11.5px}
.tb-wx{font-size:12px;gap:6px}
.tb-cash .ci,.tb-mem .ci{font-size:12px}
.rolechip{background:rgba(31,102,255,.14)!important;border-color:rgba(31,102,255,.4)!important}
.rolechip:hover{background:rgba(31,102,255,.24)!important}
.rolechip b{color:#8ec2ff}
.rolechip.pilot{background:rgba(56,189,248,.1)!important;border-color:rgba(56,189,248,.4)!important}
.rolechip.pilot b{color:#7dd3fc}
.sp3 .btn-theme{
  background:rgba(31,102,255,.1);border:1px solid rgba(78,124,214,.3);
  color:#c9d9f2;border-radius:10px;
}
.sp3 .btn-theme:hover{background:rgba(31,102,255,.22)}
.tb-right{display:flex;align-items:center;gap:9px;position:relative}
.sp3 .bell{background:rgba(31,102,255,.1);border:1px solid rgba(78,124,214,.3);color:#c9d9f2}
.sp3 .bell:hover{background:rgba(31,102,255,.22)}
.sp3 .userbox{border-radius:10px}
.sp3 .userbox:hover{background:rgba(31,102,255,.12)}
.sp3 .userbox .un{color:#eef5ff}
.sp3 .userbox .ur{color:#54688c}
.sp3 .avatar{box-shadow:0 0 0 2px rgba(56,189,248,.5), 0 0 12px rgba(56,189,248,.3)}
.notif-panel{
  background:linear-gradient(180deg,#0e1d38,#0b1526);
  border:1px solid rgba(78,124,214,.35);
  box-shadow:0 20px 50px rgba(3,8,20,.65);
  color:#c9d9f2;border-radius:14px;
}
.acct-menu{
  top:46px;right:0;
  background:linear-gradient(180deg,#0e1d38,#0b1526);
  border:1px solid rgba(78,124,214,.35);
  box-shadow:0 20px 50px rgba(3,8,20,.65);
  color:#c9d9f2;
}
html[data-theme="dark"] .acct-menu .am-act button{color:#c9d9f2}
html[data-theme="dark"] .acct-menu .am-act button:hover{background:rgba(31,102,255,.12)}

/* ---------- 内容区 ---------- */
.sp3 .content{padding:14px 18px 36px;flex:1;overflow-y:auto;
  background:
    radial-gradient(820px 380px at 86% -8%, rgba(31,102,255,.10), transparent 55%),
    radial-gradient(700px 360px at -6% 108%, rgba(56,189,248,.07), transparent 55%);
}
html[data-theme="light"] .sp3 .content{background:none}

/* ---------- 卡片通用 ---------- */
.card,.st-card,.q-card,.kpi,.tile,.filters,.denied{border-radius:14px;transition:transform .18s, box-shadow .18s, border-color .18s}
.card,.st-card,.q-card,.kpi,.tile,.filters{
  background:rgba(255,255,255,.92);
  border:1px solid rgba(148,170,205,.28);
  box-shadow:0 1px 2px rgba(10,18,32,.06), 0 12px 32px rgba(10,18,32,.08);
}
.tbl-wrap{
  background:rgba(255,255,255,.92);
  border:1px solid rgba(148,170,205,.28);
  box-shadow:0 1px 2px rgba(10,18,32,.06), 0 12px 32px rgba(10,18,32,.08);
}
html[data-theme="dark"] .tbl-wrap{
  background:rgba(11,24,44,.78);
  border:1px solid rgba(78,124,214,.22);
  box-shadow:0 2px 4px rgba(0,0,0,.4), 0 14px 36px rgba(0,0,0,.32);
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
}
html[data-theme="dark"] .card,
html[data-theme="dark"] .st-card,
html[data-theme="dark"] .q-card,
html[data-theme="dark"] .kpi,
html[data-theme="dark"] .tile,
html[data-theme="dark"] .filters,
html[data-theme="dark"] .sp-panel{
  background:rgba(11,24,44,.78);
  border:1px solid rgba(78,124,214,.22);
  box-shadow:0 2px 4px rgba(0,0,0,.4), 0 14px 36px rgba(0,0,0,.32);
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
}
html[data-theme="dark"] .card-h b{color:#e8f0fc}
html[data-theme="dark"] .card-h small{color:#6d85ad}
html[data-theme="dark"] .card-h .more{color:#8ec2ff}
.sp-panel{
  background:var(--card);border:1px solid var(--line);border-radius:15px;
  padding:13px 15px 14px;min-width:0;box-shadow:var(--shadow);
  display:flex;flex-direction:column;
}

/* ---------- 按钮 / 表格 / 弹窗 ---------- */
.btn{border-radius:10px}
.btn.pri{background:linear-gradient(135deg,#2f7bff,#1348cf);box-shadow:0 4px 16px rgba(31,102,255,.4)}
.btn.pri:hover{filter:brightness(1.08)}
.btn.gh{background:rgba(255,255,255,.85);border:1px solid #c3d2e8;color:#3d4a63}
.btn.gh:hover{border-color:var(--sp-blue);color:var(--sp-blue-deep);box-shadow:0 0 0 3px rgba(31,102,255,.12)}
html[data-theme="dark"] .btn.gh{background:rgba(31,102,255,.08);border-color:rgba(78,124,214,.35);color:#c9d9f2}
html[data-theme="dark"] .btn.gh:hover{background:rgba(31,102,255,.18);color:#eaf2ff}
.fl-table th,.tbl th,.lg-table th{letter-spacing:.5px;color:#475569;border-bottom:1.5px solid rgba(148,170,205,.4)}
.fl-table tr:hover td,.tbl tr:hover td{background:rgba(31,102,255,.05)}
html[data-theme="dark"] .fl-table th,
html[data-theme="dark"] .tbl th,
html[data-theme="dark"] .lg-table th{color:#8fa9d4;border-color:rgba(78,124,214,.25)}
html[data-theme="dark"] .fl-table tr:hover td,
html[data-theme="dark"] .tbl tr:hover td{background:rgba(31,102,255,.08)}
html[data-theme="dark"] .tbl td{border-color:rgba(78,124,214,.14);color:#c9d9f2}
.modal{border-radius:18px;box-shadow:0 28px 70px rgba(3,8,20,.45);border:1px solid rgba(148,170,205,.32)}
.modal .m-h{border-bottom:1px solid rgba(148,170,205,.22)}
html[data-theme="dark"] .modal{
  background:rgba(11,22,40,.95);
  backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  border:1px solid rgba(78,124,214,.3);
  color:#dbe6f5;
}
html[data-theme="dark"] .modal .m-h b{color:#eef5ff}
html[data-theme="dark"] .modal .m-h,
html[data-theme="dark"] .modal .m-f{background:transparent;border-color:rgba(78,124,214,.18)}
html[data-theme="dark"] #toast{
  background:linear-gradient(135deg,#0e1d38,#16305a);
  border:1px solid rgba(78,124,214,.4);
  box-shadow:0 10px 30px rgba(3,8,20,.55);color:#eaf2ff;
}

/* =========================================================
   仪表盘 SP4 网格
   ========================================================= */
.sp-dash{
  display:grid;gap:13px;align-items:stretch;
  grid-template-columns:repeat(12,1fr);
  grid-template-areas:
    "h h h h h h h h a a a a"
    "h h h h h h h h n n n n"
    "q q q q q q q q b b b b"
    "c c c c m m m m t t t t"
    "s s s s s s s s f f f f"
    "d d d d d d d d e e e e";
}
.ar-hero{grid-area:h}.ar-act{grid-area:a}.ar-quick{grid-area:q}.ar-notice{grid-area:n}
.ar-bstat{grid-area:b}
.ar-crew{grid-area:c}.ar-mx{grid-area:m}.ar-ntc{grid-area:t}
.ar-fin{grid-area:f}
.ar-hist{grid-area:s}.ar-myact{grid-area:e}.ar-dev{grid-area:d}

/* 面板头 */
.sp-h{display:flex;align-items:center;gap:8px;margin-bottom:11px;flex-shrink:0}
.sp-hi{
  width:22px;height:22px;border-radius:6px;flex-shrink:0;
  background:linear-gradient(135deg,#2f7bff,#1348cf);color:#fff;font-size:11.5px;
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 3px 8px rgba(31,102,255,.35);
}
.sp-h b{font-size:13.5px;letter-spacing:.3px;color:var(--txt)}
html[data-theme="dark"] .sp-h b{color:#eef5ff}
.sp-h em{font-style:normal;color:var(--muted);font-size:10px;letter-spacing:.3px}
.sp-more{margin-left:auto;color:#2f7bff;font-size:11px;cursor:pointer;white-space:nowrap}
html[data-theme="dark"] .sp-more{color:#8ec2ff}
.sp-more:hover{text-decoration:underline}
.lg-priv{margin-left:auto;font-size:10px;color:var(--muted);background:var(--blue-l,#e8efff);border-radius:7px;padding:2px 8px;white-space:nowrap}
html[data-theme="dark"] .lg-priv{background:rgba(31,102,255,.14);color:#8ec2ff}
.sp-empty{padding:16px 0;text-align:center;color:var(--muted);font-size:11.5px}

/* Banner 轮播 */
.ar-hero{padding:10px}
.sp-dash .hero{height:100%;min-height:176px;border-radius:12px;border:1px solid rgba(120,165,255,.3)}

/* 活动卡 */
.sp-actcard{
  position:relative;flex:1;min-height:112px;border-radius:12px;overflow:hidden;
  display:flex;flex-direction:column;justify-content:flex-end;padding:13px 14px;color:#fff;
  background:linear-gradient(150deg,#0c2b6b 0%,#15418f 52%,#0a1f4d 100%);
  border:1px solid rgba(120,165,255,.35);
  background-size:cover;background-position:center;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.05), 0 10px 26px rgba(4,10,26,.35);
}
.ac-t{font-size:15.5px;font-weight:800;letter-spacing:.5px;text-shadow:0 2px 10px rgba(4,10,26,.5)}
.ac-d{font-size:10.3px;opacity:.92;margin:5px 0 9px}
.sp-actcard .btn-xs{align-self:flex-start}

/* 本周飞行统计（仅飞行员本人可见） */
.ar-act{background:linear-gradient(160deg,#2b62d9 0%,#2f7bff 55%,#5b96ff 100%);border-color:rgba(120,165,255,.5)}
html[data-theme="dark"] .ar-act{background:linear-gradient(160deg,#0e2f74 0%,#1550b4 55%,#2f7bff 100%);border-color:rgba(78,124,214,.4)}
.sp-wfs{display:flex;flex-direction:column;gap:8px;flex:1;min-height:0}
.wfs-head{display:flex;align-items:center;gap:8px}
.wfs-ic{width:26px;height:26px;border-radius:8px;background:rgba(255,255,255,.2);display:flex;align-items:center;justify-content:center;font-size:13.5px;flex-shrink:0}
.wfs-head b{font-size:13.5px;color:#fff;letter-spacing:.3px;white-space:nowrap}
.wfs-badge{margin-left:auto;font-size:9.5px;font-weight:700;color:#7c4a03;background:#ffd88a;border-radius:20px;padding:3px 10px;white-space:nowrap}
.wfs-cycle{align-self:flex-start;font-size:9.5px;color:rgba(255,255,255,.92);background:rgba(255,255,255,.16);border-radius:7px;padding:3px 9px;white-space:nowrap}
.wfs-card{background:rgba(255,255,255,.97);border-radius:12px;padding:10px;display:grid;grid-template-columns:1fr 1fr;gap:8px 10px;box-shadow:0 6px 18px rgba(9,24,54,.25)}
.wfs-m{display:flex;align-items:center;gap:8px;min-width:0}
.wfs-mi{width:30px;height:30px;border-radius:9px;background:#e8efff;color:#2f6bff;display:flex;align-items:center;justify-content:center;font-size:14px;flex-shrink:0}
.wfs-m small{display:block;font-size:9.5px;color:#6b7a96;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wfs-m b{display:block;font-size:14px;color:#12325e;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wfs-m b i{font-style:normal;font-size:9px;color:#6b7a96;margin-left:2px}
.wfs-m b.wk{color:#15803d;font-size:13.5px}
.wfs-info{font-size:9.8px;color:rgba(255,255,255,.92);background:rgba(255,255,255,.14);border-radius:8px;padding:6px 9px;line-height:1.55}
.wfs-info b{color:#fff}
.wfs-btns{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:auto}
.wfs-btn{display:flex;align-items:center;justify-content:center;gap:6px;background:rgba(255,255,255,.95);border:none;border-radius:9px;padding:8px 4px;font-size:10.5px;font-weight:700;color:#1747a5;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:background .15s}
.wfs-btn:hover{background:#fff}
.wfs-lock{flex:1;display:flex;align-items:center;justify-content:center;color:rgba(255,255,255,.92);font-size:11.5px}
.wfs-row2{display:flex;align-items:center;gap:7px;min-width:0}
.wfs-row2 .wfs-cycle{flex-shrink:1;min-width:0}
.wfs-sel{flex:1;min-width:0;max-width:150px;background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.35);color:#fff;border-radius:7px;padding:3px 6px;font-size:10px;cursor:pointer;outline:none}
.wfs-sel:focus{border-color:rgba(255,255,255,.7)}
.wfs-sel option{color:#12325e;background:#fff}
.wfs-who{font-size:10px;color:rgba(255,255,255,.9);background:rgba(255,255,255,.12);border-radius:7px;padding:4px 9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wfs-who b{color:#ffd88a}

/* 公告 / 通告列表 */
.sp-nlist{display:flex;flex-direction:column;flex:1;min-height:0;overflow-y:auto}
.sp-nrow{
  display:flex;align-items:center;gap:8px;padding:7px 2px;cursor:pointer;
  border-bottom:1px dashed var(--line);font-size:11.8px;
}
.sp-nrow:last-child{border-bottom:none}
.sp-nrow .tx{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--txt)}
html[data-theme="dark"] .sp-nrow .tx{color:#c9d9f2}
.sp-nrow .dt{color:var(--muted);font-size:10.5px;font-variant-numeric:tabular-nums}

/* 快捷操作 */
.sp-qk{display:grid;grid-template-columns:repeat(6,1fr);gap:9px;flex:1}
.qk{
  display:flex;align-items:center;gap:9px;border:1px solid var(--line);border-radius:11px;
  padding:9px 10px;cursor:pointer;background:var(--card);transition:transform .15s,border-color .15s,box-shadow .15s;
}
html[data-theme="dark"] .qk{background:rgba(16,32,58,.55);border-color:rgba(78,124,214,.2)}
.qk:hover{transform:translateY(-2px);border-color:rgba(120,165,255,.5);box-shadow:0 8px 20px rgba(4,10,26,.3)}
.qk-ic{width:34px;height:34px;border-radius:9px;display:flex;align-items:center;justify-content:center;font-size:15px;color:#fff;flex-shrink:0}
.qk b{font-size:12.3px;display:block;color:var(--txt);white-space:nowrap}
html[data-theme="dark"] .qk b{color:#e8f0fc}
.qk small{font-size:9px;color:var(--muted);white-space:nowrap}

/* 基础统计 */
.sp-bs{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;flex:1}
.bs{border:1px solid var(--line);border-radius:10px;padding:8px 10px;background:var(--card);min-width:0}
html[data-theme="dark"] .bs{background:rgba(16,32,58,.55);border-color:rgba(78,124,214,.2)}
.bs-lb{font-size:10px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bs-v{font-size:17px;font-weight:800;margin-top:2px;color:var(--txt);font-variant-numeric:tabular-nums;white-space:nowrap}
html[data-theme="dark"] .bs-v{color:#eef5ff;text-shadow:0 0 14px rgba(56,189,248,.22)}
.bs-v em{font-style:normal;font-size:9.5px;color:var(--muted);margin-left:2px}
.bs-d{font-size:9px;font-weight:700;margin-top:2px}
.up{color:var(--green)}.down{color:var(--red)}

/* 机组状态（圆环） */
.sp-dash .gauges{display:flex;justify-content:space-around;align-items:center;flex:1;padding:2px 0}
html[data-theme="dark"] .gauges .gauge circle{stroke:#12294d}
html[data-theme="dark"] .gauge text{fill:#eef5ff}
html[data-theme="dark"] .gauge .g-sub{color:#6d85ad}

/* 检修状态 */
.sp-mx{display:flex;gap:14px;align-items:center;flex:1}
.mx-plane{
  width:62px;height:62px;border-radius:14px;flex-shrink:0;font-size:28px;
  background:rgba(31,102,255,.15);border:1px solid rgba(78,124,214,.3);
  display:flex;align-items:center;justify-content:center;
}
.mx-rows{flex:1;min-width:0}
.mx-row{display:flex;align-items:center;gap:8px;padding:5.5px 0;font-size:11.8px;color:var(--muted)}
.mx-row i{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.mx-row b{margin-left:auto;font-size:15px;color:var(--txt);font-variant-numeric:tabular-nums}
html[data-theme="dark"] .mx-row b{color:#eef5ff}

/* 实时航班表 */
.sp-live-wrap{overflow-x:auto;flex:1}
.sp-live-t{width:100%;font-size:11.5px}
.sp-live-t th,.sp-live-t td{padding:6.5px 8px;white-space:nowrap}

/* 财务速览 */
.fin-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.fin-big{border:1px solid var(--line);border-radius:10px;padding:9px 11px;background:var(--card)}
html[data-theme="dark"] .fin-big{background:rgba(16,32,58,.55);border-color:rgba(78,124,214,.2)}
.fin-big .fl{font-size:10.5px;color:var(--muted)}
.fin-big .fv{font-size:16px;font-weight:800;margin-top:3px;color:var(--txt);font-variant-numeric:tabular-nums;white-space:nowrap}
html[data-theme="dark"] .fin-big .fv{color:#eef5ff}
.fin-big .fv .up,.fin-big .fv .down{font-size:10px;margin-left:6px}
.sp-fin-chart{width:100%;height:54px;display:block}
.sp-fin-x{display:flex;justify-content:space-between;font-size:8.5px;color:#54688c;margin-top:2px}
.ro-tag{font-size:9px;color:#b45309;background:#fef3c7;border-radius:5px;padding:1px 5px;font-weight:700;vertical-align:1px}
html[data-theme="dark"] .ro-tag{background:rgba(251,191,36,.14);color:#fcd34d}

/* 历史航线 */
.sp-hist{display:grid;grid-template-columns:1.25fr 1fr;gap:10px;flex:1;min-height:186px}
.sp-hist-map{min-width:0;display:flex}
.sp-hist-map .lg-map{flex:1;display:flex;flex-direction:column}
.sp-hist-map .lg-map-svg{flex:1;min-height:176px;width:100%}
.sp-hist-list{
  border:1px solid var(--line);border-radius:10px;padding:8px 10px;overflow-y:auto;
  background:var(--card);min-width:0;
}
html[data-theme="dark"] .sp-hist-list{background:rgba(16,32,58,.55);border-color:rgba(78,124,214,.2)}
.hl-h{font-size:10.5px;color:var(--muted);margin-bottom:4px}
.hl-row{
  display:flex;align-items:center;gap:8px;padding:6px 2px;cursor:pointer;
  border-bottom:1px dashed var(--line);font-size:11.5px;
}
.hl-row:last-child{border-bottom:none}
.hl-row .seg{flex:1;min-width:0;color:var(--txt);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
html[data-theme="dark"] .hl-row .seg{color:#c9d9f2}
.hl-row .dt{color:var(--muted);font-variant-numeric:tabular-nums}

/* 发展概况（8 列 · 品牌行 + 指标 + 趋势图） */
.sp-devx{display:flex;flex-direction:column;gap:10px;flex:1;min-height:0}
.dv-brand{display:flex;align-items:center;gap:11px;flex-shrink:0}
.dv-bt b{display:block;font-size:15.5px;font-weight:800;letter-spacing:.4px;color:var(--txt)}
html[data-theme="dark"] .dv-bt b{color:#eef5ff}
.dv-bt em{font-style:normal;font-size:10px;color:var(--muted);display:block;margin-top:3px;max-width:420px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dev-logo{
  width:44px;height:44px;border-radius:50%;overflow:hidden;cursor:pointer;flex-shrink:0;
  background:linear-gradient(135deg,#2f7bff,#1348cf);color:#fff;
  display:flex;align-items:center;justify-content:center;font-size:17px;font-weight:800;
  box-shadow:0 0 14px rgba(47,123,255,.45);
}
.dev-logo img{width:100%;height:100%;object-fit:cover}
.dv-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.dv-m{border:1px solid var(--line);border-radius:10px;background:var(--card);padding:8px 10px;min-width:0}
html[data-theme="dark"] .dv-m{background:rgba(16,32,58,.55);border-color:rgba(78,124,214,.2)}
.dv-m span{font-size:10px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}
.dv-m b{display:block;font-size:15.5px;font-weight:800;margin-top:3px;color:var(--txt);font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
html[data-theme="dark"] .dv-m b{color:#eef5ff}
.dv-m i{font-style:normal;font-size:9.5px;font-weight:700;display:block;margin-top:2px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dv-m i.up{color:var(--green)}
.dv-m i.down{color:var(--red)}

/* 主要运营区域占比 */
.rg-row{display:flex;align-items:center;gap:9px;padding:7px 2px;border-bottom:1px dashed var(--line);font-size:11.5px}
.rg-row:last-child{border-bottom:none}
.rg-row i{width:9px;height:9px;border-radius:50%;flex-shrink:0}
.rg-row .rg-n{flex:1;min-width:0;color:var(--txt);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
html[data-theme="dark"] .rg-row .rg-n{color:#c9d9f2}
.rg-row b{color:var(--txt);font-variant-numeric:tabular-nums;font-size:12px}
html[data-theme="dark"] .rg-row b{color:#eef5ff}
.et:hover{transform:translateY(-2px);border-color:rgba(120,165,255,.5)}

/* ---------- 页头图标（子页面通用） ---------- */
.page-head .ph-ic{background:linear-gradient(135deg,#2f7bff,#1348cf);box-shadow:0 6px 18px rgba(31,102,255,.4)}

/* ---------- 登录页 ---------- */
.auth-wrap{
  flex-direction:row;justify-content:center;align-items:center;
  background:
    radial-gradient(900px 480px at 78% 12%, rgba(31,102,255,.16), transparent 55%),
    radial-gradient(1000px 520px at 12% 90%, rgba(56,189,248,.14), transparent 55%),
    linear-gradient(165deg,#050b16 0%,#0a1830 55%,#101f38 100%);
}
.auth-side{position:absolute;inset:0;width:100%;min-width:0;z-index:0;background:transparent;padding:44px 6vw;border-right:none}
.as-list,.as-foot{display:none}
.auth-card{position:relative;z-index:2;background:transparent}
.ac-box{
  border-radius:22px;
  background:rgba(255,255,255,.97);
  border:1px solid rgba(78,124,214,.4);
  box-shadow:0 34px 90px rgba(2,8,20,.6), 0 0 0 1px rgba(255,255,255,.4) inset;
}
.ac-tabs{background:rgba(31,102,255,.1)}
.ac-tabs button.on{background:#fff;box-shadow:0 2px 8px rgba(10,18,32,.15)}
/* 登录页后端状态提示 */
.ac-server{
  display:flex;align-items:center;gap:6px;font-size:10.5px;color:#7c869c;
  background:#f4f7fc;border:1px solid #e3eaf6;border-radius:8px;padding:5px 9px;margin:2px 0 11px;
}
.ac-server i{width:7px;height:7px;border-radius:50%;background:#c3cbd9;flex-shrink:0}
.ac-server.on{background:#ecfdf5;border-color:#bbf7d0;color:#15803d}
.ac-server.on i{background:#22c55e;box-shadow:0 0 6px rgba(34,197,94,.6)}
.ac-server.off{background:#fff7ed;border-color:#fed7aa;color:#b45309}
.ac-server.off i{background:#f59e0b}

/* ---------- 输入控件 ---------- */
.fld input:focus,.fld select:focus,.fld textarea:focus,
.ac-fld input:focus,.ac-fld select:focus{
  border-color:var(--sp-blue);
  box-shadow:0 0 0 3px rgba(31,102,255,.16);
}

/* ---------- 响应式 ---------- */
@media(max-width:1420px){
  .sp-qk{grid-template-columns:repeat(3,1fr)}
  .sp-dash{grid-template-columns:repeat(12,1fr);
    grid-template-areas:
      "h h h h h h h h a a a a"
      "h h h h h h h h n n n n"
      "q q q q q q q q b b b b"
      "c c c c m m m m t t t t"
      "s s s s s s s s f f f f"
      "d d d d d d d d e e e e"}
}
@media(max-width:1180px){
  .sp-dash{grid-template-areas:none;grid-auto-flow:dense;grid-auto-rows:auto}
  .sp-dash>.sp-panel{grid-area:auto;grid-column:span 6}
  .ar-hero,.ar-live,.ar-hist,.ar-dev{grid-column:span 12}
  .sp-bs{grid-template-columns:repeat(4,1fr)}
  .tb-date,.tb-wx{display:none}
}
@media(max-width:860px){
  .sp-dash>.sp-panel{grid-column:span 12}
  .sp-side{width:64px}
  .sp-side .ni-t,.sp-side .nav-item .arrow{display:none}
  .sp3 .content{padding:10px 10px 26px}
  .tb-cash,.tb-mem,.rolechip{display:none}
}

/* ================= 排班系统 · 周视图 v2（航班排班改版） ================= */
.sch-topbar{display:flex;align-items:center;gap:12px;margin:0 0 12px;flex-wrap:wrap}
.sch-weeknav{display:flex;align-items:center;gap:6px}
.sch-date{border:1px solid var(--line);border-radius:8px;padding:6px 10px;background:var(--card);color:var(--txt);font-size:12.5px;font-family:inherit}
.sch-weeklabel{font-size:13.5px}
.sch-weekmeta{font-size:11px;color:var(--muted);margin-left:auto}
.sch-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:12px}
.sch-stat{display:flex;gap:10px;align-items:center;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:11px 14px;box-shadow:var(--shadow)}
.sch-stat .ic{width:34px;height:34px;border-radius:9px;display:flex;align-items:center;justify-content:center;font-size:16px;flex-shrink:0}
.sch-stat small{display:block;font-size:10.5px;color:var(--muted)}
.sch-stat b{font-size:17px}
.sch-stat i{font-style:normal;font-size:10px;margin-left:6px}
.sch-wrap{display:grid;grid-template-columns:236px minmax(0,1fr) 300px;gap:12px;align-items:start}
.sch-rail{padding:8px}
.sch-rail-h{padding:6px 8px 8px;border-bottom:1px solid var(--line)}
.sch-rail-h small{display:block;color:var(--muted);font-size:10px;margin-top:1px}
.sch-prow{display:flex;align-items:center;gap:8px;padding:8px;border-radius:9px;cursor:pointer;border:1px solid transparent;margin-top:2px}
.sch-prow:hover{background:var(--blue-l)}
.sch-prow.on{background:var(--blue-l);border-color:var(--blue)}
.sch-pavatar{width:30px;height:30px;border-radius:50%;background:linear-gradient(135deg,#0f2c66,#1d4fd7);color:#fff;display:flex;align-items:center;justify-content:center;font-size:12.5px;font-weight:700;flex-shrink:0}
.sch-pavatar.big{width:42px;height:42px;font-size:17px}
.sch-pmain{flex:1;min-width:0}
.sch-pmain b{font-size:12.5px;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sch-pmain small{color:var(--muted);font-size:10px;display:block}
.sch-pnum{text-align:right;width:32px;flex-shrink:0}
.sch-pnum b{font-size:13px;display:block}
.sch-pnum small{font-size:9px;color:var(--muted)}
.sch-pbar{width:44px;text-align:right;flex-shrink:0}
.sch-pbar b{font-size:10.5px;display:block}
.sch-pbar small{font-size:9px;color:var(--muted)}
.sch-pstat{width:10px;flex-shrink:0}
.sch-pstat .dot{display:inline-block;width:8px;height:8px;border-radius:50%}
.dot.g{background:var(--green)}.dot.a{background:var(--amber)}.dot.n{background:#c3cbd9}
.sch-center{overflow:hidden;display:flex;flex-direction:column}
.sch-tabs{display:flex;gap:4px;padding:10px 12px;border-bottom:1px solid var(--line)}
.sch-tabs button{border:1px solid var(--line);background:transparent;color:var(--muted);border-radius:8px;padding:5px 16px;font-size:12px;cursor:pointer;font-family:inherit}
.sch-tabs button.on{background:var(--blue);border-color:var(--blue);color:#fff;font-weight:600}
.sch-gridwrap{max-height:620px;overflow:auto}
.sch-ghead{display:flex;position:sticky;top:0;z-index:3;background:var(--card);border-bottom:1px solid var(--line)}
.sch-ghead .gtime{width:46px;flex-shrink:0}
.sch-ghead .gday{flex:1;min-width:118px;text-align:center;padding:7px 0;font-size:11.5px;font-weight:600;border-left:1px dashed var(--line)}
.sch-ghead .gday small{display:block;font-weight:400;color:var(--muted);font-size:9.5px}
.sch-ghead .gday.today{color:var(--blue)}
.sch-gbody{display:flex;position:relative}
.sch-gtimes{width:46px;flex-shrink:0;position:relative;height:1104px}
.sch-gtimes span{position:absolute;right:6px;transform:translateY(-50%);font-size:9.5px;color:var(--muted)}
.sch-gcol{flex:1;min-width:118px;position:relative;height:1104px;border-left:1px dashed var(--line);background:repeating-linear-gradient(to bottom,var(--line) 0,var(--line) 1px,transparent 1px,transparent 92px)}
.sch-block{position:absolute;left:4px;right:4px;border-radius:7px;padding:4px 6px;font-size:9.5px;line-height:1.3;cursor:pointer;overflow:hidden;color:#fff;box-shadow:0 2px 6px rgba(15,35,80,.18)}
.sch-block b{display:block;font-size:10.5px}
.sch-block b u{text-decoration:none;font-size:8.5px;opacity:.9;margin-left:2px}
.sch-block span{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sch-block small{display:block;opacity:.88;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sch-b-wait{background:linear-gradient(135deg,#2f6bff,#1d4fd7)}
.sch-b-live{background:linear-gradient(135deg,#16a34a,#0e7a37)}
.sch-b-done{background:linear-gradient(135deg,#64748b,#475569)}
.sch-b-cancel{background:linear-gradient(135deg,#ef4444,#b91c1c);opacity:.85}
.sch-legend{display:flex;gap:14px;padding:9px 14px;border-top:1px solid var(--line);font-size:10.5px;color:var(--muted);flex-wrap:wrap;align-items:center}
.sch-legend i{display:inline-block;width:9px;height:9px;border-radius:3px;margin-right:4px;vertical-align:-1px}
.lg-wait{background:#2f6bff}.lg-live{background:#16a34a}.lg-done{background:#64748b}.lg-cancel{background:#ef4444}
.sch-side{padding:12px}
.sch-side-h{display:flex;gap:10px;align-items:center;padding-bottom:10px;border-bottom:1px solid var(--line)}
.sch-side-h b{font-size:14px;display:block}
.sch-side-h small{color:var(--muted);font-size:10.5px;display:block}
.sch-side-h.sub{padding:10px 0 6px;border-bottom:none}
.sch-wstats{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin:10px 0}
.sch-wstats>div{background:var(--bg);border-radius:9px;padding:8px 6px;text-align:center}
.sch-wstats b{font-size:13.5px;display:block}
.sch-wstats small{font-size:9.5px;color:var(--muted)}
.sch-wlist{max-height:330px;overflow:auto}
.sch-wrow{display:flex;align-items:center;gap:8px;padding:7px 0;border-bottom:1px dashed var(--line)}
.sch-wl{width:88px;flex-shrink:0}
.sch-wl b{font-size:12px;display:block}
.sch-wl small{color:var(--muted);font-size:9.5px;display:block}
.sch-wm{flex:1;min-width:0;font-size:11px}
.sch-wm small{color:var(--muted);font-size:9.5px;display:block}
.sch-side-foot{padding-top:10px}
.sch-empty{padding:14px;text-align:center;color:var(--muted);font-size:11.5px}
@media (max-width:1100px){.sch-wrap{grid-template-columns:1fr}.sch-rail{order:2}.sch-side{order:3}}