*{box-sizing:border-box}
body{margin:0;font-family:"Noto Sans CJK SC","PingFang SC","Microsoft YaHei",system-ui,sans-serif;background:#f1f5f9;color:#0f172a;font-size:15px}
.top{position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:8px;padding:9px 16px;background:#0f172a;color:#fff}
.logo{font-size:18px;margin-right:6px;white-space:nowrap}
.sp{flex:1}
select{font:inherit;padding:5px 8px;border-radius:8px;border:1px solid #cbd5e1}
.top select{background:#1e293b;color:#fde68a;border-color:#334155;font-weight:700}
.btn{font:inherit;font-size:14px;padding:6px 12px;border-radius:8px;border:1px solid #334155;background:#1e293b;color:#e2e8f0;cursor:pointer;white-space:nowrap}
.btn:hover{background:#334155}.btn.pri{background:#f59e0b;border-color:#f59e0b;color:#111827;font-weight:700}
dialog .btn{background:#fff;color:#0f172a;border-color:#cbd5e1}dialog .btn.pri{background:#f59e0b}
main{padding:14px 16px;max-width:1200px;margin:0 auto}
.drop{border:3px dashed #94a3b8;border-radius:18px;background:#fff;text-align:center;padding:60px 20px;margin-top:20px}
.drop.on{border-color:#f59e0b;background:#fffbeb}.drop .big{font-size:56px;color:#f59e0b}.drop h2{margin:6px 0 10px;font-size:28px}
.drop p{margin:6px 0;color:#475569}.drop .lock{color:#0f766e;font-weight:700;margin-top:14px}
.files{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.files span{background:#e2e8f0;border-radius:99px;padding:3px 12px;font-size:13px;color:#334155}
.files span b{color:#0f766e}
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:10px}
.kpi{background:#fff;border-radius:12px;padding:10px 14px;box-shadow:0 1px 2px #0001}
.kpi small{color:#64748b;font-size:13px}.kpi b{display:block;font-size:26px;margin-top:2px}
.kpi:first-child b{color:#dc2626}.kpi:nth-child(2) b{color:#16a34a}
.grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.card{background:#fff;border-radius:12px;padding:10px 14px 12px;box-shadow:0 1px 2px #0001;min-width:0}
.card h3{margin:0 0 8px;font-size:15px;color:#334155}.card h3.mt{margin-top:12px}
.bar{display:grid;grid-template-columns:88px 1fr 128px;align-items:center;gap:8px;margin:5px 0;font-size:14px}
.bar i{display:block;height:16px;border-radius:5px}.bar .tr{background:#f1f5f9;border-radius:5px}
.bar em{font-style:normal;text-align:right;color:#334155;font-variant-numeric:tabular-nums}
.bar span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.daily{display:flex;align-items:flex-end;gap:2px;height:150px;border-bottom:1px solid #cbd5e1;position:relative}
.daily div{flex:1;background:#3b82f6;border-radius:3px 3px 0 0;min-height:1px;position:relative}
.daily div.we{background:#f59e0b}.daily div:hover{background:#ef4444}
.daily div:hover::after{content:attr(data-t);position:absolute;bottom:100%;left:50%;transform:translateX(-50%);background:#0f172a;color:#fff;font-size:12px;padding:2px 6px;border-radius:4px;white-space:nowrap}
.dl{display:flex;justify-content:space-between;color:#64748b;font-size:12px;margin-top:4px}
.legend{font-size:12px;color:#64748b;margin-top:4px}.legend i{display:inline-block;width:10px;height:10px;border-radius:2px;margin:0 4px 0 10px}
ol{margin:0;padding-left:22px}ol li{margin:4px 0;font-size:14px}ol li b{float:right;font-variant-numeric:tabular-nums}ol li small{color:#64748b;margin-left:6px}
.sm{background:#fef3c7;border-radius:10px;padding:7px 12px;margin:5px 0;font-size:14px}.sm b{color:#b45309}
.oth{display:flex;align-items:center;gap:8px;margin:4px 0;font-size:14px}.oth span{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.oth select{font-size:13px;padding:2px 4px}
.empty{color:#94a3b8;font-size:13px}
dialog{border:none;border-radius:14px;padding:16px 18px;width:min(760px,94vw);box-shadow:0 20px 60px #0005}
dialog h3{margin:0 0 4px}.tip{margin:0 0 8px;color:#64748b;font-size:13px}
dialog textarea{width:100%;height:300px;font:14px/1.6 "Noto Sans Mono CJK SC",monospace;border:1px solid #cbd5e1;border-radius:8px;padding:8px 10px}
.row{display:flex;gap:8px;margin-top:10px}
#toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);background:#0f172a;color:#fff;padding:8px 18px;border-radius:99px;font-size:14px;opacity:0;transition:.3s;pointer-events:none}
#toast.on{opacity:1}
@media (max-width:700px){.top{flex-wrap:wrap}.kpis,.grid{grid-template-columns:1fr 1fr}.grid{grid-template-columns:1fr}.top .btn{font-size:13px;padding:5px 8px}}
@media print{@page{size:A4;margin:12mm}.top,.files,#other,.mt,#toast{display:none!important}body{background:#fff}main{padding:0}.card,.kpi{box-shadow:none;border:1px solid #e2e8f0;break-inside:avoid}
  body::before{content:attr(data-title);display:block;font-size:20px;font-weight:700;margin-bottom:10px}
  .bar i,.daily div,.sm{print-color-adjust:exact;-webkit-print-color-adjust:exact}}
