/* ================= 汇景研学 · 研学导师管理平台 ================= */
:root{
  --brand:#6C5CE7; --brand-soft:#EFECFF; --brand-deep:#4E3FD1;
  --mint:#12C2A0; --mint-soft:#E3FAF4;
  --coral:#FF6B8A; --coral-soft:#FFEAF0;
  --sun:#FFA724; --sun-soft:#FFF3E0;
  --sky:#3AA0FF; --sky-soft:#E8F3FF;
  --grape:#A855F7; --grape-soft:#F6EDFF;
  --bg:#F5F6FB; --panel:#FFFFFF; --line:#ECEEF6; --line2:#E3E7F2;
  --tx:#20263A; --tx2:#5B6480; --tx3:#98A0B8;
  --ok:#12C2A0; --warn:#FFA724; --bad:#FF5573;
  --r:14px; --r-sm:9px;
  --sh:0 1px 2px rgba(32,38,58,.04), 0 6px 20px rgba(32,38,58,.06);
  --sh-lg:0 12px 40px rgba(32,38,58,.14);
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{
  font-family:"PingFang SC","Microsoft YaHei","Hiragino Sans GB",system-ui,-apple-system,"Segoe UI",sans-serif;
  background:var(--bg); color:var(--tx); font-size:14px; line-height:1.6;
  -webkit-font-smoothing:antialiased;
}
button,input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}
button{cursor:pointer;border:none;background:none}
a{color:var(--brand);text-decoration:none}
::-webkit-scrollbar{width:9px;height:9px}
::-webkit-scrollbar-thumb{background:#D3D8E8;border-radius:9px}
::-webkit-scrollbar-thumb:hover{background:#B9C0D6}
::-webkit-scrollbar-track{background:transparent}
.i{width:15px;height:15px;flex:none;stroke:currentColor;fill:none;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round;vertical-align:-2px}
.i-sm{width:13px;height:13px}

/* ---------- 登录 ---------- */
#login{
  position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:20px;
  background:
    radial-gradient(1000px 520px at 8% -8%, #E5DEFF 0%, transparent 60%),
    radial-gradient(900px 500px at 105% 8%, #D9F5EE 0%, transparent 58%),
    radial-gradient(760px 520px at 45% 118%, #FFE7EE 0%, transparent 60%),
    #F7F8FD;
}
.blob{position:absolute;border-radius:50%;filter:blur(4px);opacity:.5;animation:float 12s ease-in-out infinite}
@keyframes float{0%,100%{transform:translateY(0) scale(1)}50%{transform:translateY(-22px) scale(1.06)}}
.login-card{
  position:relative;width:min(920px,100%);background:#fff;border-radius:24px;box-shadow:var(--sh-lg);
  display:grid;grid-template-columns:1.05fr .95fr;overflow:hidden;
}
.login-left{padding:44px 40px;background:linear-gradient(150deg,#6C5CE7,#8E7BFF 45%,#12C2A0);color:#fff;display:flex;flex-direction:column;justify-content:space-between}
.login-left h1{font-size:26px;font-weight:800;letter-spacing:.5px;line-height:1.35}
.login-left .sub{opacity:.9;margin-top:10px;font-size:13px;line-height:1.8}
.login-left .tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:26px}
.login-left .tags span{background:rgba(255,255,255,.18);border:1px solid rgba(255,255,255,.28);padding:5px 11px;border-radius:20px;font-size:12px}
.login-left .foot{font-size:11.5px;opacity:.78;margin-top:30px;line-height:1.9}
.login-right{padding:46px 42px;display:flex;flex-direction:column;justify-content:center}
.login-right h2{font-size:20px;font-weight:750;margin-bottom:4px}
.login-right p.hint{color:var(--tx3);font-size:12.5px;margin-bottom:26px}
.field{margin-bottom:15px}
.field label{display:block;font-size:12.5px;color:var(--tx2);margin-bottom:6px;font-weight:600}
.field input,.field select,.field textarea{
  width:100%;padding:10px 12px;border:1.5px solid var(--line2);border-radius:var(--r-sm);background:#FBFCFE;transition:.16s;outline:none;
}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--brand);background:#fff;box-shadow:0 0 0 3px var(--brand-soft)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:9px 16px;border-radius:var(--r-sm);font-weight:650;font-size:13px;transition:.16s;white-space:nowrap}
.btn-p{background:linear-gradient(135deg,#6C5CE7,#8B7BFF);color:#fff;box-shadow:0 4px 14px rgba(108,92,231,.3)}
.btn-p:hover{transform:translateY(-1px);box-shadow:0 7px 20px rgba(108,92,231,.4)}
.btn-g{background:var(--panel);border:1.5px solid var(--line2);color:var(--tx2)}
.btn-g:hover{border-color:var(--brand);color:var(--brand);background:var(--brand-soft)}
.btn-m{background:linear-gradient(135deg,#12C2A0,#38D9B4);color:#fff;box-shadow:0 4px 14px rgba(18,194,160,.28)}
.btn-c{background:linear-gradient(135deg,#FF6B8A,#FF8FA6);color:#fff;box-shadow:0 4px 14px rgba(255,107,138,.28)}
.btn-s{background:linear-gradient(135deg,#FFA724,#FFC163);color:#fff}
.btn-lg{width:100%;padding:12px;font-size:14.5px;margin-top:8px}
.btn-xs{padding:5px 10px;font-size:12px;border-radius:7px}
.btn:disabled{opacity:.45;cursor:not-allowed;transform:none!important}
.quick{margin-top:18px;padding-top:16px;border-top:1px dashed var(--line2);font-size:12px;color:var(--tx3)}
.quick b{color:var(--tx2)}

/* ---------- 布局 ---------- */
#app{display:none;min-height:100vh}
#app.on{display:block}
.side{
  position:fixed;left:0;top:0;bottom:0;width:210px;background:#fff;border-right:1px solid var(--line);
  display:flex;flex-direction:column;z-index:40;transition:transform .24s;
}
.brand{padding:18px 18px 14px;display:flex;align-items:center;gap:10px;border-bottom:1px solid var(--line)}
.brand .logo{width:34px;height:34px;border-radius:10px;background:linear-gradient(135deg,#6C5CE7,#12C2A0);display:grid;place-items:center;color:#fff;font-weight:800;font-size:15px;flex:none}
.brand .t1{font-size:14px;font-weight:750;letter-spacing:.3px}
.brand .t2{font-size:10.5px;color:var(--tx3);letter-spacing:1.5px}
.nav{padding:10px 10px;flex:1;overflow:auto}
.nav .grp{font-size:10.5px;color:var(--tx3);padding:12px 10px 6px;letter-spacing:1px;font-weight:700}
.nav a{
  display:flex;align-items:center;gap:9px;padding:9px 11px;border-radius:10px;color:var(--tx2);
  font-size:13.5px;font-weight:600;margin-bottom:2px;transition:.14s;position:relative;
}
.nav a:hover{background:#F5F6FC;color:var(--tx)}
.nav a.on{background:var(--brand-soft);color:var(--brand-deep)}
.nav a.on::before{content:"";position:absolute;left:-10px;top:9px;bottom:9px;width:3px;border-radius:0 3px 3px 0;background:var(--brand)}
.nav a .bdg{margin-left:auto;background:var(--coral);color:#fff;font-size:10px;padding:1px 6px;border-radius:9px;font-weight:700}
.side-foot{padding:12px;border-top:1px solid var(--line);display:flex;align-items:center;gap:9px}
.ava{width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,#FF6B8A,#FFA724);color:#fff;display:grid;place-items:center;font-size:12.5px;font-weight:700;flex:none}
.side-foot .n{font-size:12.5px;font-weight:650;line-height:1.3}
.side-foot .r{font-size:10.5px;color:var(--tx3)}

.main{margin-left:210px;min-height:100vh;display:flex;flex-direction:column}
.top{
  position:sticky;top:0;z-index:30;background:rgba(255,255,255,.86);backdrop-filter:blur(12px);
  border-bottom:1px solid var(--line);padding:12px 22px;display:flex;align-items:center;gap:12px;flex-wrap:wrap;
}
.top h2{font-size:17px;font-weight:750}
.top .desc{font-size:12px;color:var(--tx3)}
.top .sp{flex:1}
.burger{display:none;padding:7px;border-radius:8px;border:1px solid var(--line2)}
.page{padding:20px 22px 40px;flex:1}
.view{display:none}
.view.on{display:block;animation:fade .3s}
@keyframes fade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

/* ---------- 通用块 ---------- */
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh)}
.card-h{padding:14px 16px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.card-h h3{font-size:14.5px;font-weight:700}
.card-h .sp{flex:1}
.card-b{padding:16px}
.grid{display:grid;gap:14px}
.tag{display:inline-flex;align-items:center;gap:4px;padding:2px 9px;border-radius:20px;font-size:11.5px;font-weight:650;white-space:nowrap}
.t-brand{background:var(--brand-soft);color:var(--brand-deep)}
.t-mint{background:var(--mint-soft);color:#0A8E77}
.t-coral{background:var(--coral-soft);color:#D93A62}
.t-sun{background:var(--sun-soft);color:#C97A00}
.t-sky{background:var(--sky-soft);color:#1173D4}
.t-grape{background:var(--grape-soft);color:#8B32DB}
.t-gray{background:#F1F3F9;color:var(--tx2)}
.muted{color:var(--tx3)}
.sm{font-size:12px}
.xs{font-size:11px}

/* KPI */
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(168px,1fr));gap:12px}
.kpi{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:14px 15px;position:relative;overflow:hidden;box-shadow:var(--sh);transition:.18s}
.kpi:hover{transform:translateY(-2px);box-shadow:0 10px 26px rgba(32,38,58,.1)}
.kpi::after{content:"";position:absolute;right:-24px;top:-24px;width:74px;height:74px;border-radius:50%;opacity:.14}
.kpi.c1::after{background:var(--brand)} .kpi.c2::after{background:var(--mint)}
.kpi.c3::after{background:var(--coral)} .kpi.c4::after{background:var(--sun)}
.kpi.c5::after{background:var(--sky)}   .kpi.c6::after{background:var(--grape)}
.kpi .lb{font-size:12px;color:var(--tx2);display:flex;align-items:center;gap:5px;font-weight:600}
.kpi .vl{font-size:26px;font-weight:800;margin-top:5px;letter-spacing:-.5px}
.kpi .ex{font-size:11px;color:var(--tx3);margin-top:2px}
.kpi.c1 .i{color:var(--brand)} .kpi.c2 .i{color:var(--mint)} .kpi.c3 .i{color:var(--coral)}
.kpi.c4 .i{color:var(--sun)} .kpi.c5 .i{color:var(--sky)} .kpi.c6 .i{color:var(--grape)}

/* 工具条 */
.bar{display:flex;gap:9px;align-items:center;flex-wrap:wrap;margin-bottom:12px}
.search{position:relative;flex:1;min-width:180px;max-width:320px}
.search .i{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:var(--tx3)}
.search input{width:100%;padding:8px 12px 8px 32px;border:1.5px solid var(--line2);border-radius:20px;background:#fff;outline:none;transition:.16s}
.search input:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}
.sel{padding:8px 11px;border:1.5px solid var(--line2);border-radius:20px;background:#fff;outline:none;font-size:13px;cursor:pointer;transition:.16s}
.sel:focus{border-color:var(--brand)}
.chips{display:flex;gap:6px;flex-wrap:wrap}
.chip{padding:5px 12px;border-radius:20px;border:1.5px solid var(--line2);background:#fff;font-size:12.5px;font-weight:600;color:var(--tx2);transition:.15s}
.chip:hover{border-color:var(--brand);color:var(--brand)}
.chip.on{background:var(--brand);border-color:var(--brand);color:#fff}

/* 表格 */
.tw{overflow-x:auto;border-radius:var(--r)}
table{width:100%;border-collapse:collapse;font-size:13px;min-width:900px}
thead th{
  background:#FAFBFE;text-align:left;padding:10px 12px;font-size:11.5px;color:var(--tx2);font-weight:700;
  border-bottom:1px solid var(--line);white-space:nowrap;position:sticky;top:0;z-index:2;letter-spacing:.3px;
}
tbody td{padding:10px 12px;border-bottom:1px solid #F3F5FA;vertical-align:middle}
tbody tr{transition:.12s}
tbody tr:hover{background:#FAFAFF}
tbody tr:last-child td{border-bottom:none}
/* 排团 Excel 表格模式（直接编辑人员，自动同步排团计划） */
.sheet-staff{vertical-align:top}
.sheet-staff .addstaff{margin-top:6px;width:100%;max-width:160px;padding:6px 8px;border:1.5px dashed var(--line2);border-radius:8px;font-size:12px;color:var(--tx2);background:#fff;cursor:pointer;font-family:inherit}
.sheet-staff .addstaff:hover{border-color:var(--brand);color:var(--brand)}
.sheet .rm{font-style:normal;line-height:1;font-size:13px;margin-left:1px;user-select:none}
.sheet .rm:hover{opacity:.7}
.sheet .t-ctl,.sheet .t-arrange{white-space:nowrap;min-width:92px}
.sheet .ctl{white-space:nowrap}
.sheet .pill{margin:2px 4px 2px 0}
.nm{display:flex;align-items:center;gap:8px}
.nm .av{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;color:#fff;font-size:11.5px;font-weight:700;flex:none}
.stars{color:#FF4D6D;letter-spacing:-1px;font-size:12px;white-space:nowrap}
.lvl{display:inline-block;padding:2px 8px;border-radius:6px;font-size:11.5px;font-weight:750}
.pg{display:flex;align-items:center;justify-content:center;gap:5px;padding:14px;flex-wrap:wrap}
.pg button{min-width:30px;height:30px;padding:0 8px;border-radius:8px;border:1px solid var(--line2);background:#fff;font-size:12.5px;font-weight:600;color:var(--tx2)}
.pg button:hover:not(:disabled){border-color:var(--brand);color:var(--brand)}
.pg button.on{background:var(--brand);border-color:var(--brand);color:#fff}
.pg button:disabled{opacity:.4;cursor:not-allowed}

/* 行程横版列表（紧凑化，减少空旷感） */
.trips{display:flex;flex-direction:column;gap:9px}
.trow{
  background:#fff;border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh);
  display:grid;grid-template-columns:70px 1.5fr 1.5fr 1.15fr 168px;gap:11px;align-items:center;
  padding:9px 13px;transition:.18s;border-left:4px solid var(--brand);
}
.trow:hover{box-shadow:0 8px 22px rgba(32,38,58,.09);transform:translateY(-1px)}
.trow.wait{border-left-color:var(--coral)}
.trow.part{border-left-color:var(--sun)}
.trow.done{border-left-color:var(--mint)}
.trow.rated{border-left-color:var(--sky)}
.tdate{text-align:center;background:linear-gradient(160deg,#F7F6FF,#EFF6FF);border-radius:10px;padding:5px 3px}
.tdate .d{font-size:18px;font-weight:800;line-height:1;color:var(--brand-deep)}
.tdate .m{font-size:10px;color:var(--tx3);margin-top:2px}
.tdate .w{font-size:9.5px;color:var(--tx3)}
.tmain .code{font-size:11px;color:var(--tx3);font-family:ui-monospace,Menlo,Consolas,monospace}
.tmain .sch{font-size:13.5px;font-weight:700;margin:1px 0 3px;line-height:1.3}
.tmeta{display:flex;flex-wrap:wrap;gap:4px}
.titin{font-size:12px;color:var(--tx2);line-height:1.45;max-height:34px;overflow:hidden}
.tstaff{display:flex;flex-wrap:wrap;gap:4px;align-items:center}
.pill{display:inline-flex;align-items:center;gap:4px;background:#F4F5FB;border:1px solid var(--line2);border-radius:20px;padding:2px 8px 2px 3px;font-size:11px;font-weight:600}
.pill .av{width:18px;height:18px;border-radius:50%;display:grid;place-items:center;color:#fff;font-size:9px;font-weight:700}
.pill.conf{background:var(--coral-soft);border-color:#FFC9D6;color:#D93A62}
.tact{display:flex;flex-direction:column;gap:5px;align-items:stretch}
.tact .row{display:flex;gap:5px}
.tact .btn{flex:1;padding:5px 6px;font-size:11.5px}

/* 小红星统计 */
.rstats{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin-bottom:14px}
.rbox{background:linear-gradient(140deg,#FFF7F9,#FFF);border:1px solid #FFE0E8;border-radius:var(--r);padding:13px 15px}
.rbox .lb{font-size:12px;color:#B24361;font-weight:650;display:flex;align-items:center;gap:5px}
.rbox .vl{font-size:24px;font-weight:800;color:#E23A5F;margin-top:3px}
.rbox .ex{font-size:11px;color:var(--tx3)}
.rank{display:flex;flex-direction:column;gap:7px}
.rank .it{display:flex;align-items:center;gap:9px;padding:6px 9px;border-radius:9px;background:#FAFBFE;transition:.14s}
.rank .it:hover{background:#F3F5FC}
.rank .no{width:20px;height:20px;border-radius:6px;display:grid;place-items:center;font-size:10.5px;font-weight:800;background:#E9ECF6;color:var(--tx2);flex:none}
.rank .it:nth-child(1) .no{background:linear-gradient(135deg,#FFB020,#FFD173);color:#fff}
.rank .it:nth-child(2) .no{background:linear-gradient(135deg,#A9B4CC,#CBD3E3);color:#fff}
.rank .it:nth-child(3) .no{background:linear-gradient(135deg,#D98A52,#EBB48A);color:#fff}
.rank .nn{font-weight:650;font-size:13px}
.rank .sp{flex:1}

/* 评分 */
.scores{display:grid;grid-template-columns:repeat(auto-fit,minmax(122px,1fr));gap:8px}
.sopt{border:2px solid var(--line2);border-radius:11px;padding:10px 8px;text-align:center;background:#fff;transition:.15s}
.sopt:hover{transform:translateY(-2px)}
.sopt .e{font-size:19px;line-height:1}
.sopt .t{font-size:12.5px;font-weight:700;margin-top:4px}
.sopt .s{font-size:11px;color:var(--tx3)}
.sopt.on{color:#fff}
.sopt[data-v="5"].on{background:linear-gradient(135deg,#12C2A0,#3FD9BB);border-color:#12C2A0}
.sopt[data-v="4"].on{background:linear-gradient(135deg,#3AA0FF,#6FBEFF);border-color:#3AA0FF}
.sopt[data-v="3"].on{background:linear-gradient(135deg,#FFA724,#FFC163);border-color:#FFA724}
.sopt[data-v="2"].on{background:linear-gradient(135deg,#FF6B8A,#FF95AC);border-color:#FF6B8A}
.sopt[data-v="1"].on{background:linear-gradient(135deg,#E23A5F,#F2607F);border-color:#E23A5F}
.sopt.on .s{color:rgba(255,255,255,.85)}
.evrow{border:1px solid var(--line);border-radius:12px;padding:13px;margin-bottom:11px;background:#FCFDFF}
.evrow .hd{display:flex;align-items:center;gap:9px;margin-bottom:10px;flex-wrap:wrap}

/* 评价打分 · 九宫格（每位导师一张方块，一屏尽览） */
.evgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:14px}
.evgrid .evrow{margin-bottom:0;background:#fff;border:1px solid var(--line2);border-radius:12px;padding:11px 12px;display:flex;flex-direction:column;transition:.15s}
.evgrid .evrow:hover{box-shadow:0 4px 14px rgba(32,38,58,.08);border-color:#D9DEEE}
.evgrid .evrow .hd{margin-bottom:9px;gap:7px}
.evgrid .evrow .hd .xs{font-size:10.5px}
.evgrid .scores{grid-template-columns:repeat(5,1fr);gap:4px;margin-top:2px}
.evgrid .sopt{padding:7px 2px;border-width:1.5px}
.evgrid .sopt .e{font-size:15px}
.evgrid .sopt .t{font-size:10px;margin-top:3px}
.evgrid .sopt .s{display:none}
.evgrid .rmk textarea,.evgrid .okrmk input{padding:7px 9px;font-size:12px}
@media(max-width:900px){ .evgrid{grid-template-columns:repeat(2,1fr)} }
@media(max-width:540px){ .evgrid{grid-template-columns:1fr} }

/* 评分版式切换（九宫格 / 列表） */
.segt{display:flex;align-items:center;gap:9px;margin-bottom:12px;flex-wrap:wrap}
.segt .xs{margin-right:2px}
.seg{padding:5px 15px;border-radius:20px;border:1.5px solid var(--line2);background:#fff;font-size:12.5px;font-weight:650;color:var(--tx2);transition:.15s}
.seg:hover{border-color:var(--brand);color:var(--brand)}
.seg.on{background:var(--brand);border-color:var(--brand);color:#fff}

/* 带团评价主列表 · 宫格卡片（大屏 8 个，常规 6 个，逐步响应到 1 个） */
.evcards{display:grid;grid-template-columns:repeat(6,1fr);gap:11px}
.evcard{
  background:#fff;border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh);
  display:flex;flex-direction:column;border-left:4px solid var(--brand);transition:.18s;
}
.evcard:hover{box-shadow:0 8px 22px rgba(32,38,58,.09);transform:translateY(-1px)}
.evcard.rated{border-left-color:var(--sky)}
.evcard.done{border-left-color:var(--mint)}
.evcard .evc-h{display:flex;align-items:center;gap:10px;padding:12px 13px 0}
.evcard .evc-meta{flex:1;min-width:0}
.evcard .evc-meta .code{font-size:11px;color:var(--tx3);font-family:ui-monospace,Menlo,Consolas,monospace}
.evcard .evc-meta .sch{font-size:14px;font-weight:700;line-height:1.3;margin-top:1px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.evcard .evc-body{padding:10px 13px 12px;flex:1}
.evcard .evc-foot{padding:10px 13px 12px;border-top:1px solid var(--line);display:flex;gap:6px;flex-wrap:wrap}
.evcard .evc-foot .btn{flex:1;padding:6px 4px;font-size:11.5px}
@media(min-width:1800px){ .evcards{grid-template-columns:repeat(8,1fr)} }
@media(max-width:1500px){ .evcards{grid-template-columns:repeat(4,1fr)} }
@media(max-width:1100px){ .evcards{grid-template-columns:repeat(3,1fr)} }
@media(max-width:820px){ .evcards{grid-template-columns:repeat(2,1fr)} }
@media(max-width:540px){ .evcards{grid-template-columns:1fr} }

/* 列表版式已移除，带团评价主列表统一为宫格（一行 6 个）展示 */

/* 导入排团预览 */
.impstat{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.impstat .tag{font-size:12px}

/* 弹窗 */
.mask{position:fixed;inset:0;background:rgba(24,28,44,.44);backdrop-filter:blur(3px);z-index:80;display:none;align-items:center;justify-content:center;padding:16px}
.mask.on{display:flex;animation:fade .18s}
.modal{background:#fff;border-radius:18px;box-shadow:var(--sh-lg);width:min(760px,100%);max-height:90vh;display:flex;flex-direction:column;animation:pop .22s}
.modal.wide{width:min(1000px,100%)}
.modal.narrow{width:min(500px,100%)}
@keyframes pop{from{transform:scale(.95) translateY(10px);opacity:0}to{transform:none;opacity:1}}
.modal-h{padding:16px 20px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:10px}
.modal-h h3{font-size:16px;font-weight:750;flex:1}
.modal-b{padding:20px;overflow:auto;flex:1}
.modal-f{padding:14px 20px;border-top:1px solid var(--line);display:flex;gap:9px;justify-content:flex-end;flex-wrap:wrap}
.x{width:30px;height:30px;border-radius:8px;display:grid;place-items:center;color:var(--tx3);transition:.14s}
.x:hover{background:#F2F4FA;color:var(--tx)}
.fgrid{display:grid;grid-template-columns:1fr 1fr;gap:13px}
.fgrid .full{grid-column:1/-1}

/* 排团选择器 */
.picker{display:grid;grid-template-columns:1fr 250px;gap:14px;min-height:400px}
.plist{border:1px solid var(--line);border-radius:12px;overflow:hidden;display:flex;flex-direction:column;max-height:440px}
.plist .hd{padding:9px 12px;background:#FAFBFE;border-bottom:1px solid var(--line);font-size:12px;font-weight:700;color:var(--tx2)}
.plist .bd{overflow:auto;flex:1}
.mrow{display:flex;align-items:center;gap:9px;padding:8px 12px;border-bottom:1px solid #F4F6FB;transition:.12s;cursor:pointer}
.mrow:hover{background:#F7F8FE}
.mrow.on{background:var(--brand-soft)}
.mrow.busy{opacity:.55}
.mrow .av{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;color:#fff;font-size:11.5px;font-weight:700;flex:none}
.mrow .info{flex:1;min-width:0}
.mrow .n{font-weight:650;font-size:13px;display:flex;align-items:center;gap:6px}
.mrow .d{font-size:11px;color:var(--tx3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.picked{border:1px solid var(--line);border-radius:12px;padding:12px;background:#FCFDFF;display:flex;flex-direction:column;max-height:440px}
.picked .hd{font-size:12.5px;font-weight:700;margin-bottom:9px;color:var(--tx2)}
.picked .bd{overflow:auto;flex:1;display:flex;flex-direction:column;gap:6px}
.pk{display:flex;align-items:center;gap:7px;background:#fff;border:1px solid var(--line2);border-radius:9px;padding:6px 8px;font-size:12.5px}
.pk .sp{flex:1}
.pk button{color:var(--tx3);display:grid;place-items:center}
.pk button:hover{color:var(--bad)}

/* 图表 */
.charts{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.legend{display:flex;flex-wrap:wrap;gap:10px;font-size:11.5px;color:var(--tx2);margin-top:10px}
.legend i{width:9px;height:9px;border-radius:3px;display:inline-block;margin-right:4px}

/* 提示 */
.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(80px);z-index:200;
  background:#20263A;color:#fff;padding:11px 20px;border-radius:11px;font-size:13.5px;font-weight:600;
  box-shadow:var(--sh-lg);opacity:0;transition:.28s;display:flex;align-items:center;gap:8px;max-width:88vw}
.toast.on{transform:translateX(-50%);opacity:1}
.toast.ok{background:linear-gradient(135deg,#0FA98C,#12C2A0)}
.toast.err{background:linear-gradient(135deg,#E23A5F,#FF6B8A)}
.empty{text-align:center;padding:52px 20px;color:var(--tx3)}
.empty .i{width:38px;height:38px;stroke-width:1.4;margin-bottom:10px;color:#C9D0E2}
.empty p{font-size:13.5px}

/* 链接盒 */
.linkbox{display:flex;gap:8px;align-items:center;background:#F7F8FD;border:1.5px dashed var(--line2);border-radius:10px;padding:9px 11px}
.linkbox input{flex:1;border:none;background:none;outline:none;font-size:12px;font-family:ui-monospace,Menlo,Consolas,monospace;color:var(--tx2)}
.note{background:var(--sky-soft);border:1px solid #C9E3FF;border-radius:10px;padding:11px 13px;font-size:12.5px;color:#14639E;line-height:1.75}
.note.warn{background:var(--sun-soft);border-color:#FFE0B2;color:#9A5D00}
.note.mint{background:var(--mint-soft);border-color:#BDEEE3;color:#0A7D6A}

/* 响应式 */
@media(max-width:1180px){ .charts{grid-template-columns:1fr} .trow{grid-template-columns:68px 1.5fr 1.2fr 168px} .trow .titin{display:none} }
@media(max-width:900px){
  .login-card{grid-template-columns:1fr} .login-left{padding:30px 26px} .login-right{padding:30px 26px}
  .side{transform:translateX(-100%);box-shadow:var(--sh-lg)} .side.open{transform:none}
  .main{margin-left:0} .burger{display:grid;place-items:center}
  .picker{grid-template-columns:1fr} .picked{max-height:190px}
}
@media(max-width:680px){
  .page{padding:14px 12px 34px} .top{padding:10px 12px}
  .trow{grid-template-columns:1fr;gap:9px;padding:12px}
  .tdate{display:flex;align-items:center;justify-content:center;gap:8px;padding:6px}
  .tdate .d{font-size:16px} .tdate .m,.tdate .w{margin:0}
  .fgrid{grid-template-columns:1fr}
  .kpi .vl{font-size:22px}
  .tact{flex-direction:row;flex-wrap:wrap}
}

/* 新增状态标签补色 */
.t-blue{background:#E8F0FF;color:#1A66D6}
.t-green{background:#E5F7EE;color:#0A8E5E}
.nav a .bdg-new{margin-left:auto;background:linear-gradient(135deg,#2EC6A8,#18B6E0);color:#fff;font-size:10px;padding:1px 7px;border-radius:9px;font-weight:700;letter-spacing:.3px}

/* ===== 排团表格（Excel 式在线编辑） ===== */
.ctlbar{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin:2px 0 12px;padding:9px 12px;
  background:linear-gradient(120deg,#F7FAFF,#FFF);border:1px solid var(--line);border-radius:12px}
.ctlbar .xs{flex:none}

.sheetwrap{overflow:hidden;padding:0}
.xsheet{overflow:auto;max-height:74vh;border-radius:14px}
.xls{border-collapse:separate;border-spacing:0;width:100%;font-size:12.5px}
.xls thead th{position:sticky;top:0;z-index:3;background:#F4F6FB;color:var(--tx2);font-weight:700;
  text-align:left;padding:9px 9px;border-bottom:2px solid var(--line2);border-right:1px solid var(--line);
  white-space:nowrap;font-size:12px;box-shadow:0 1px 0 rgba(0,0,0,.02)}
.xls tbody td{border-bottom:1px solid #EEF1F7;border-right:1px solid #EEF1F7;padding:0;vertical-align:middle;background:#fff}
.xls tbody tr:hover td{background:#FAFBFE}
.xls .cno,.xls th.cno{background:#F7F8FC;color:var(--tx3);text-align:center;width:38px;min-width:38px;padding:6px 4px;font-size:11px}
.xls .cel{width:100%;border:none;outline:none;background:transparent;padding:7px 9px;font-size:12.5px;color:var(--tx);
  font-family:inherit;border-radius:0;line-height:1.35;transition:background .12s}
.xls .cel.mono{font-family:ui-monospace,Menlo,Consolas,monospace;color:var(--tx2);letter-spacing:.2px}
.xls .cel:focus{background:#FFF7E6;box-shadow:inset 0 0 0 2px var(--brand)}
.xls .cel.warncel{background:#FDEEF1}
.xls .cel.warncel:focus{background:#FDEEF1;box-shadow:inset 0 0 0 2px var(--coral)}
.xls .cst{white-space:nowrap;padding:4px 9px;background:#FCFDFF}
.xls .cact{width:78px;min-width:78px;padding:4px 6px;text-align:center}
.xls .cact .x{width:28px;height:28px}
.xls .delcol{margin-left:6px;font-weight:800;color:var(--tx3);cursor:pointer;font-size:13px;line-height:1;opacity:.6}
.xls .delcol:hover{color:var(--bad);opacity:1}
.sheetfoot{display:flex;align-items:center;gap:12px;padding:11px 14px;border-top:1px solid var(--line);
  background:#FBFCFE;font-size:12px;color:var(--tx3);flex-wrap:wrap}
.sheetfoot .xs{color:var(--tx3)}
.sheetfoot b{color:var(--tx)}

@media print{ .side,.top,.bar,.tact{display:none!important} .main{margin:0} }
