:root{--bg:#f5f7fb;--panel:#fff;--text:#0f172a;--muted:#64748b;--line:#e2e8f0;--nav:#fffaf5;--blue:#2563eb}*{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;background:var(--bg);color:var(--text)}button,input,select,textarea{font:inherit}button{cursor:pointer}.app{display:grid;grid-template-columns:230px minmax(0,1fr);min-height:100vh}.sidebar{background:linear-gradient(180deg,#fffaf5 0%,#f5fbf7 52%,#ffffff 100%);color:#334155;padding:18px 14px;position:sticky;top:0;height:100vh;border-right:1px solid #f0e8df}.brand{font-weight:800;font-size:18px;padding:10px 12px 18px}.brand small{display:block;color:#94a3b8;font-size:11px;margin-top:5px}.nav{display:flex;flex-direction:column;gap:6px}.nav button{border:1px solid transparent;background:rgba(255,255,255,.62);color:#52606d;text-align:left;padding:11px 12px;border-radius:10px}.nav button:hover{background:#eef8f1;border-color:#dcefe2;color:#25633b}.nav button.active{background:#fff1e6;border-color:#ffd9bc;color:#c4530a;font-weight:800;box-shadow:0 2px 8px rgba(196,83,10,.06)}.main{padding:22px 24px 80px;min-width:0}.topbar{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;margin-bottom:16px}.topbar h1{margin:0 0 5px;font-size:25px}.topbar p{margin:0;color:var(--muted);font-size:13px}.tag{font-size:12px;padding:6px 9px;border-radius:999px;background:#eef2ff}.page{display:none}.page.active{display:block}.card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:15px;box-shadow:0 2px 10px rgba(15,23,42,.03)}.grid4{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.two{display:grid;grid-template-columns:1.25fr .9fr;gap:12px}.gap{margin-top:12px}.metric span,.metric small{display:block;color:var(--muted);font-size:12px}.metric b{display:block;font-size:28px;margin:8px 0}.jump{cursor:pointer}.plain{cursor:default}.card-title{display:flex;justify-content:space-between;gap:10px;align-items:center;margin-bottom:12px}.card-title.wrap{align-items:flex-start;flex-wrap:wrap}.card h3{margin:0;font-size:15px}.link,.back,.num{border:0;background:transparent;color:var(--blue);font-weight:700;padding:4px}.primary{border:0;background:#0f172a;color:#fff;border-radius:9px;padding:9px 12px}.ghost{border:1px solid var(--line);background:#fff;border-radius:8px;padding:7px 9px}.hint{font-size:11px;color:var(--muted)}.hint.big{font-size:12px;line-height:1.8}.placeholder{height:180px;border:1px dashed #cbd5e1;border-radius:12px;background:#f8fafc;display:flex;align-items:center;justify-content:center;text-align:center;color:var(--muted);padding:20px}.item{display:flex;justify-content:space-between;padding:9px 0;border-bottom:1px solid var(--line)}.table-wrap{overflow:auto}.tall{max-height:640px}table{width:100%;border-collapse:collapse;font-size:12px}th,td{padding:10px 8px;border-bottom:1px solid var(--line);white-space:nowrap;text-align:left}th{color:var(--muted);font-weight:600;position:sticky;top:0;background:#fff}.filters{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}.filters input{min-width:230px;flex:1}.filters select{min-width:135px}input,select,textarea{width:100%;border:1px solid #cbd5e1;border-radius:9px;padding:9px;background:#fff}textarea{min-height:90px}.pill{display:inline-block;padding:4px 8px;border-radius:999px;font-size:11px;background:#eef2f7}.pill.good{background:#ecfdf3;color:#087a58}.pill.warn{background:#fff7e6;color:#a76300}.pill.bad{background:#fef2f2;color:#b91c1c}.tagpill{display:inline-block;padding:4px 7px;border-radius:999px;background:#eef2f7;font-size:11px;margin:2px}.tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}.tabs button{border:1px solid var(--line);background:#fff;border-radius:999px;padding:7px 10px;font-size:11px}.tabs button.active{background:#0f172a;color:#fff}.formgrid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.field label{display:block;color:var(--muted);font-size:11px;margin-bottom:5px}.field.full{grid-column:1/-1}dialog{border:0;border-radius:16px;width:min(760px,calc(100% - 24px));padding:0;box-shadow:0 20px 60px rgba(15,23,42,.2)}dialog::backdrop{background:rgba(15,23,42,.5)}.dialogbox{padding:18px;max-height:86vh;overflow:auto}.dialoghead,.dialogfoot{display:flex;justify-content:space-between;align-items:center;gap:10px}.dialoghead{margin-bottom:14px}.dialoghead h2{margin:0;font-size:19px}.dialogfoot{justify-content:flex-end;margin-top:14px}.detailgrid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.detailbox{background:#f8fafc;border-radius:10px;padding:10px}.detailbox small{display:block;color:var(--muted);margin-bottom:5px}.toast{position:fixed;z-index:999;top:18px;left:50%;transform:translateX(-50%) translateY(-70px);opacity:0;background:#0f172a;color:#fff;border-radius:9px;padding:9px 12px;font-size:12px;transition:.2s}.toast.show{transform:translateX(-50%) translateY(0);opacity:1}.mobile-nav{display:none}@media(max-width:980px){.grid4{grid-template-columns:repeat(2,1fr)}.grid3,.two{grid-template-columns:1fr}}@media(max-width:768px){.app{display:block}.sidebar{display:none}.main{padding:14px 12px calc(78px + env(safe-area-inset-bottom))}.topbar h1{font-size:21px}.tag{display:none}.grid4{grid-template-columns:1fr 1fr;gap:9px}.metric b{font-size:22px}.filters{display:grid;grid-template-columns:1fr 1fr}.filters input{grid-column:1/-1;min-width:0}.filters select{min-width:0}.mobile-nav{display:grid;grid-template-columns:repeat(5,1fr);position:fixed;left:0;right:0;bottom:0;z-index:90;background:#fff;border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom)}.mobile-nav button{border:0;background:#fff;color:var(--muted);padding:10px 2px 8px;font-size:11px}.mobile-nav button.active{font-weight:800;color:var(--text)}.formgrid,.detailgrid{grid-template-columns:1fr}.field.full{grid-column:1}dialog{width:100%;max-width:none;position:fixed;left:0;right:0;bottom:0;margin:0;border-radius:18px 18px 0 0;max-height:82vh}.dialogbox{max-height:82vh}.card{padding:13px}}

/* Stage 3: real AMap */
.dashboard-map{height:310px;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#eef3f8}
.map-toolbar{display:flex;justify-content:space-between;gap:12px;align-items:center;flex-wrap:wrap}.map-toolbar h3{margin-bottom:5px}.map-toolbar p{margin:0}
.map-actions{display:flex;gap:7px;flex-wrap:wrap}
.map-filterbar{display:grid;grid-template-columns:repeat(5,minmax(120px,1fr)) auto;gap:8px;align-items:center}
.map-status{font-size:11px;color:var(--muted);white-space:nowrap}
.map-layout{display:grid;grid-template-columns:minmax(0,1fr) 365px;gap:12px}
.map-card{padding:0;overflow:hidden}.main-map{height:680px;background:#eef3f8}.map-detail{max-height:680px;overflow:auto}
.map-placeholder{height:100%}.point-list-card summary{cursor:pointer;font-weight:700;font-size:13px}
.coord-good{color:#087a58}.coord-bad{color:#b45309}
.point-head{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}.point-head h2{margin:0 0 4px;font-size:20px}.star{white-space:nowrap}
.stats3{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin:12px 0}.stats3 div{background:#f8fafc;border-radius:9px;padding:9px}.stats3 small{display:block;color:var(--muted);font-size:10px}.stats3 b{display:block;font-size:18px;margin-top:4px}
.point-section{margin-top:14px}.point-section h4{margin:0 0 7px;font-size:12px}.point-order{padding:9px 0;border-bottom:1px solid var(--line);cursor:pointer}.point-order b{font-size:12px}.point-order small{display:block;color:var(--muted);margin-top:3px}
.location-actions{display:flex;gap:6px;flex-wrap:wrap;margin-top:12px}
.map-marker-label{background:#fff;border:1px solid #cbd5e1;border-radius:6px;padding:3px 6px;font-size:10px;white-space:nowrap;box-shadow:0 2px 5px rgba(15,23,42,.12)}
.mobile-sheet{display:none}.sheet-close{float:right;border:0;background:#eef2f7;border-radius:8px;padding:6px 8px}.sheet-grab{width:44px;height:4px;border-radius:999px;background:#cbd5e1;margin:0 auto 8px}
@media(max-width:1100px){.map-layout{grid-template-columns:1fr}.map-detail{max-height:none}.main-map{height:600px}.map-filterbar{grid-template-columns:repeat(3,1fr)}}
@media(max-width:768px){
 .dashboard-map{height:250px}
 .map-actions{width:100%;display:grid;grid-template-columns:1fr 1fr}.map-actions .primary{grid-column:1/-1}
 .map-filterbar{grid-template-columns:1fr 1fr}.map-status{grid-column:1/-1}
 .main-map{height:calc(100vh - 310px);min-height:520px}.map-detail{display:none}
 .mobile-sheet{display:block;position:fixed;left:0;right:0;bottom:calc(55px + env(safe-area-inset-bottom));z-index:80;background:#fff;border:1px solid var(--line);border-radius:18px 18px 0 0;padding:14px;max-height:70vh;overflow:auto;box-shadow:0 -10px 35px rgba(15,23,42,.18);transform:translateY(110%);transition:.22s}
 .mobile-sheet.open{transform:translateY(0)}
}

/* Stage 3.1: AMap address autocomplete */
.amap-input-wrap{position:relative}
.amap-suggest{display:none;position:absolute;left:0;right:0;top:calc(100% + 5px);z-index:9999;background:#fff;border:1px solid #cbd5e1;border-radius:10px;box-shadow:0 12px 30px rgba(15,23,42,.16);max-height:280px;overflow:auto}
.amap-suggest.show{display:block}
.amap-suggest-item{display:block;width:100%;border:0;border-bottom:1px solid #eef2f7;background:#fff;text-align:left;padding:9px 11px}
.amap-suggest-item:last-child{border-bottom:0}
.amap-suggest-item:hover{background:#f8fafc}
.amap-suggest-item b{display:block;color:#0f172a;font-size:12px;margin-bottom:3px}
.amap-suggest-item span{display:block;color:#64748b;font-size:10px;white-space:normal;line-height:1.45}
.amap-suggest-empty{padding:10px 11px;color:#94a3b8;font-size:11px}
.address-verify{margin-top:6px;font-size:10px}
.address-verify.ok{color:#087a58}
.address-verify.wait{color:#b45309}

/* Stage 3.2: point/heat view */
#mapViewMode,#mapHeatMetric{min-width:128px}
#mapHeatMetric:disabled{opacity:.5;background:#f8fafc}
.map-mode-note{font-size:10px;color:#64748b}
@media(max-width:768px){
  #mapViewMode,#mapHeatMetric{min-width:0}
}

/* Stage 3.3: quality layering */
.map-quality-legend{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:8px 4px 0;color:#64748b;font-size:11px}
.map-quality-legend span{display:inline-flex;align-items:center;gap:5px}
.map-quality-legend small{color:#94a3b8}
.qdot{width:9px;height:9px;border-radius:50%;display:inline-block}
.qdot.good,.quality-pin.good span{background:#16a34a}
.qdot.verify,.quality-pin.verify span{background:#f59e0b}
.qdot.low,.quality-pin.low span{background:#dc2626}
.quality-pin{width:26px;height:34px;position:relative;filter:drop-shadow(0 3px 5px rgba(15,23,42,.22))}
.quality-pin:before{content:"";position:absolute;left:4px;top:2px;width:18px;height:18px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);background:#fff;border:3px solid currentColor}
.quality-pin:after{content:"";position:absolute;left:10px;top:8px;width:6px;height:6px;border-radius:50%;background:currentColor}
.quality-pin.good{color:#16a34a}.quality-pin.verify{color:#f59e0b}.quality-pin.low{color:#dc2626}
.map-marker-label.good{border-color:#86efac}.map-marker-label.verify{border-color:#fcd34d}.map-marker-label.low{border-color:#fca5a5}
.quality-badge{display:inline-block;vertical-align:middle;font-size:10px;padding:3px 6px;border-radius:999px;margin-left:5px}
.quality-badge.good{background:#ecfdf3;color:#15803d}.quality-badge.verify{background:#fffbeb;color:#b45309}.quality-badge.low{background:#fef2f2;color:#b91c1c}
@media(max-width:768px){.map-quality-legend{gap:8px}.map-quality-legend small{width:100%}}

/* Stage 3.4: system operating status + clustering + district summary */
.qdot.observe,.quality-pin.observe span{background:#2563eb}
.quality-pin.observe{color:#2563eb}
.map-marker-label.observe{border-color:#93c5fd}
.quality-badge.observe{background:#eff6ff;color:#1d4ed8}

.status-rule-card{margin:8px 0 0;border:1px solid var(--line);border-radius:10px;background:#fff}
.status-rule-card summary{cursor:pointer;padding:9px 11px;font-size:11px;font-weight:700;color:#475569}
.status-rule-content{padding:0 11px 10px;font-size:11px;line-height:1.65;color:#475569}
.status-rule-content p{margin:6px 0}

.cluster-bubble{border-radius:50%;background:rgba(15,23,42,.88);color:#fff;text-align:center;font-size:12px;font-weight:800;border:2px solid rgba(255,255,255,.95);box-shadow:0 3px 12px rgba(15,23,42,.24)}
.cluster-single{width:14px;height:14px;border-radius:50%;background:#64748b;border:2px solid #fff;box-shadow:0 2px 6px rgba(15,23,42,.2)}

.district-summary.hidden{display:none}
.district-summary-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.district-summary-head b{display:block;font-size:14px}
.district-summary-head small{display:block;color:var(--muted);margin-top:3px;font-size:10px}
.district-summary-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin-top:10px}
.district-summary-grid>div{background:#f8fafc;border-radius:9px;padding:9px}
.district-summary-grid span{display:block;font-size:10px;color:var(--muted)}
.district-summary-grid b{display:block;font-size:18px;margin-top:4px}
.district-top-points{display:flex;gap:6px;flex-wrap:wrap;margin-top:9px}
.district-top-points button{border:1px solid var(--line);background:#fff;border-radius:9px;padding:7px 9px;text-align:left}
.district-top-points button span{display:block;font-size:11px;color:#0f172a}
.district-top-points button b{display:block;font-size:10px;color:#64748b;margin-top:2px}

.status-separation{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0}
.status-separation>div{background:#f8fafc;border-radius:10px;padding:10px}
.status-separation small{display:block;color:var(--muted);font-size:10px}
.status-separation b{display:block;font-size:15px;margin:5px 0}
.status-separation span{display:block;color:#64748b;font-size:10px;line-height:1.45}
.status-text.good{color:#15803d}.status-text.observe{color:#1d4ed8}.status-text.verify{color:#b45309}.status-text.low{color:#b91c1c}

.stats6{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin:12px 0}
.stats6 div{background:#f8fafc;border-radius:9px;padding:9px}
.stats6 small{display:block;color:var(--muted);font-size:10px}
.stats6 b{display:block;font-size:17px;margin-top:4px}
.due-warning{background:#fff7ed;border:1px solid #fed7aa;color:#9a3412;border-radius:9px;padding:8px 9px;font-size:10px;line-height:1.5}
.reason-cell{max-width:280px;white-space:normal;line-height:1.4}

@media(max-width:768px){
 .district-summary-grid{grid-template-columns:repeat(2,1fr)}
 .district-summary-grid>div:last-child{grid-column:1/-1}
 .status-separation{grid-template-columns:1fr}
 .stats6{grid-template-columns:repeat(2,1fr)}
}

/* Stage 3.5 — 全站一致性 */
.sync-note{margin:8px 0 10px}
#locationsBody td,#pointSummaryBody td{vertical-align:middle}
#locationsBody .quality-badge,#pointSummaryBody .quality-badge{white-space:nowrap}
@media(max-width:768px){
  .point-list-card .table-wrap{max-width:100%;overflow:auto}
}

/* Stage 4.1 salary */
.salary-rule-strip{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0 12px}
.salary-rule-strip span{font-size:10px;background:#f8fafc;border:1px solid var(--line);border-radius:999px;padding:6px 8px;color:#475569}
.salary-rule-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin:10px 0 12px}
.salary-rule-grid>div{background:#f8fafc;border-radius:10px;padding:9px}
.salary-rule-grid b,.salary-rule-grid span{display:block}
.salary-rule-grid b{font-size:11px;margin-bottom:4px}
.salary-rule-grid span{font-size:10px;color:var(--muted);line-height:1.45}
.cell-sub{display:block;color:var(--muted);font-size:9px;margin-top:3px}
.salary-warn{display:block;color:#b45309;font-size:9px;margin-top:3px}
.salary-rule-hint{background:#f8fafc;border:1px solid var(--line);border-radius:9px;padding:10px;color:#475569;font-size:11px}
@media(max-width:768px){
 .salary-rule-grid{grid-template-columns:1fr 1fr}
 .mobile-nav{grid-template-columns:repeat(6,1fr)}
 .mobile-nav button{font-size:10px}
}

/* Stage 4.1.2 */
.salary-badge{display:block;width:max-content;margin-top:4px;padding:3px 6px;border-radius:999px;font-size:9px;line-height:1.25}
.salary-badge.estimate{background:#fff7ed;color:#b45309;border:1px solid #fed7aa}
.salary-badge.actual{background:#ecfdf5;color:#047857;border:1px solid #a7f3d0}
.salary-error{display:block;color:#b91c1c;font-size:9px;font-weight:700;margin-top:3px;white-space:normal}
.form-tip{display:block;margin-top:5px;color:var(--muted);font-size:9px;line-height:1.4}

/* Stage 4.1.3 QA fixes */
#rankBody .pill,#performanceBody .pill{white-space:nowrap}

/* Stage 4.1.3.1 */
.header-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
@media(max-width:768px){.header-actions{width:100%}.header-actions button{flex:1}}

/* Stage 4.1.4 五险一金 */
.danger-metric b{color:#b91c1c}
.benefit-explain{display:flex;gap:10px;align-items:flex-start;background:#fff7ed;border:1px solid #fed7aa;border-radius:10px;padding:10px 12px;margin:10px 0 12px}
.benefit-explain b{white-space:nowrap;color:#9a3412;font-size:11px}
.benefit-explain span{font-size:10px;color:#7c2d12;line-height:1.55}
.salary-positive{font-weight:800;color:#047857}
.salary-negative{font-weight:800;color:#b91c1c}
@media(max-width:768px){
 .benefit-explain{display:block}
 .benefit-explain b{display:block;margin-bottom:5px}
}


/* ===== Stage 4.1.5 每日录入 ===== */
.daily-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}
.daily-head h3{font-size:18px}
.daily-grid{display:grid;grid-template-columns:1.2fr .8fr;gap:12px}
.daily-entry-card{border-color:#cbd5e1}
.daily-save{width:100%;margin-top:12px;padding:11px 14px}
.daily-metrics{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-top:12px}
.daily-metrics>div{background:#f8fafc;border:1px solid var(--line);border-radius:10px;padding:10px}
.daily-metrics span{display:block;color:var(--muted);font-size:10px}
.daily-metrics b{display:block;font-size:22px;margin-top:4px}
.daily-flags{display:flex;gap:7px;flex-wrap:wrap;margin:12px 0}
.daily-flag{font-size:10px;padding:5px 8px;border-radius:999px;border:1px solid}
.daily-flag.good{background:#ecfdf5;color:#047857;border-color:#a7f3d0}
.daily-flag.info{background:#eff6ff;color:#1d4ed8;border-color:#bfdbfe}
.daily-flag.bad{background:#fef2f2;color:#b91c1c;border-color:#fecaca}
.daily-unmatched{border-top:1px solid var(--line);padding-top:10px}
.daily-unmatched>b{font-size:11px}
.daily-unmatched-row{display:flex;justify-content:space-between;gap:8px;align-items:center;padding:8px 0;border-bottom:1px solid var(--line);font-size:11px}
.daily-sessions{display:grid;gap:10px}
.daily-session{border:1px solid var(--line);border-radius:12px;padding:12px;background:#fff}
.daily-session.zero-order{border-style:dashed;background:#fffdf7}
.daily-session-main{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}
.daily-session-main>div:first-child>b{font-size:14px;margin-right:6px}
.daily-session-main small{display:block;color:var(--muted);font-size:10px;margin-top:5px}
.daily-session-kpi{text-align:right}
.daily-session-kpi b{display:block;font-size:20px}
.daily-session-kpi small{color:var(--muted);font-size:10px}
.daily-session-actions{display:flex;gap:7px;flex-wrap:wrap;margin-top:10px}
.daily-order-chips{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px;padding-top:10px;border-top:1px solid var(--line)}
.daily-order-chips button{border:1px solid var(--line);background:#f8fafc;border-radius:999px;padding:5px 8px;font-size:10px;color:#334155}
.daily-zero-note{margin-top:10px;padding-top:9px;border-top:1px solid var(--line);font-size:10px;color:#92400e}
.daily-empty{padding:28px;text-align:center;color:var(--muted);background:#f8fafc;border-radius:10px}
.daily-context-lock{background:#eff6ff;border:1px solid #bfdbfe;color:#1d4ed8;border-radius:9px;padding:9px 10px;font-size:11px}

/* ===== 地图：主体=类型；外圈=经营状态 ===== */
.map-legend-group{padding:8px 4px 0;display:grid;gap:6px}
.map-type-legend,.map-quality-legend{display:flex;align-items:center;gap:12px;flex-wrap:wrap;color:#64748b;font-size:11px}
.map-type-legend>b,.map-quality-legend>b{color:#334155}
.map-type-legend span,.map-quality-legend span{display:inline-flex;align-items:center;gap:5px}
.typedot{width:10px;height:10px;border-radius:50%;display:inline-block}
.typedot.school{background:#dc2626;box-shadow:0 0 0 2px #fecaca}
.typedot.commerce{background:#f59e0b}
.typedot.park{background:#059669}
.typedot.education{background:#7c3aed}
.typedot.community{background:#2563eb}
.typedot.play{background:#ec4899}
.typedot.event{background:#16a34a}
.typedot.other{background:#64748b}
.qring{width:11px;height:11px;border-radius:50%;display:inline-block;background:#fff;border:3px solid}
.qring.good{border-color:#16a34a}.qring.observe{border-color:#2563eb}.qring.verify{border-color:#f59e0b}.qring.low{border-color:#dc2626}

.type-pin{--type:#64748b;--status:#f59e0b;width:30px;height:40px;position:relative;filter:drop-shadow(0 3px 5px rgba(15,23,42,.25))}
.type-pin.school{--type:#dc2626;width:36px;height:46px;filter:drop-shadow(0 4px 7px rgba(220,38,38,.35))}
.type-pin.commerce{--type:#f59e0b}
.type-pin.park{--type:#059669}
.type-pin.education{--type:#7c3aed}
.type-pin.community{--type:#2563eb}
.type-pin.play{--type:#ec4899}
.type-pin.event{--type:#16a34a}
.type-pin.other{--type:#64748b}
.type-pin.status-good{--status:#16a34a}
.type-pin.status-observe{--status:#2563eb}
.type-pin.status-verify{--status:#f59e0b}
.type-pin.status-low{--status:#dc2626}
.type-pin-shape{position:absolute;left:4px;top:2px;width:24px;height:24px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);background:var(--type);border:4px solid var(--status);box-shadow:0 0 0 2px #fff}
.type-pin.school .type-pin-shape{width:29px;height:29px;border-width:4px}
.type-pin-shape span{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;transform:rotate(45deg);color:#fff;font-size:9px;font-weight:900}
.type-pin.school .type-pin-shape span{font-size:11px}
.quality-pin{display:none!important}

@media(max-width:980px){
 .daily-grid{grid-template-columns:1fr}
}
@media(max-width:768px){
 .daily-head{display:block}
 .daily-head button{margin-top:8px;width:100%}
 .daily-metrics{grid-template-columns:repeat(2,1fr)}
 .daily-session-main{align-items:center}
 .daily-unmatched-row{align-items:flex-start;flex-direction:column}
 .daily-unmatched-row button{width:100%}
 .mobile-nav{display:flex!important;overflow-x:auto;grid-template-columns:none!important;scrollbar-width:none}
 .mobile-nav::-webkit-scrollbar{display:none}
 .mobile-nav button{flex:0 0 72px;white-space:nowrap}
 .map-type-legend,.map-quality-legend{gap:8px}
 .map-type-legend>b,.map-quality-legend>b{width:100%}
}
\n/* Stage 4.1.6 */
*{scrollbar-width:thin;scrollbar-color:#94a3b8 #eef2f7}*::-webkit-scrollbar{width:8px;height:8px}*::-webkit-scrollbar-track{background:#eef2f7;border-radius:999px}*::-webkit-scrollbar-thumb{background:#94a3b8;border-radius:999px;border:2px solid #eef2f7}*::-webkit-scrollbar-thumb:hover{background:#64748b}.table-wrap::-webkit-scrollbar{height:9px}
.nav button{position:relative;transition:background .16s,color .16s}.nav button.active{background:#334155!important;color:#fff!important;font-weight:800;box-shadow:inset 4px 0 0 #60a5fa,0 6px 18px rgba(15,23,42,.18)}.nav button.active::after{content:"";position:absolute;right:10px;top:50%;width:7px;height:7px;transform:translateY(-50%);border-radius:50%;background:#60a5fa}.mobile-nav button.active{background:#eff6ff!important;color:#1d4ed8!important;box-shadow:inset 0 3px 0 #3b82f6}
.grid5{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}.today-card{border-color:#bfdbfe;background:linear-gradient(180deg,#fff,#f8fbff)}
.today-target{display:inline-flex;align-items:center;border-radius:999px;padding:4px 7px;font-size:10px;font-weight:800}.today-target.done{background:#dbeafe;color:#1d4ed8;border:1px solid #93c5fd}.today-target.todo{background:#fee2e2;color:#b91c1c;border:1px solid #fecaca}.today-target.neutral{background:#f1f5f9;color:#475569;border:1px solid #e2e8f0}
.team-target-card{background:linear-gradient(145deg,#fff,#f8fafc)}.team-target-number{display:flex;align-items:baseline;gap:7px;margin:18px 0 12px}.team-target-number b{font-size:32px;color:#2563eb}.team-target-number strong{font-size:24px}.team-target-number span,.team-target-number small{color:#64748b}.team-target-line{display:flex;justify-content:space-between;gap:10px;font-size:12px}.team-target-line b{color:#1d4ed8}.team-target-progress{height:8px;background:#e2e8f0;border-radius:999px;overflow:hidden;margin-top:8px}.team-target-progress i{display:block;height:100%;width:0;background:#3b82f6;border-radius:999px;transition:width .25s}.order-filter-note{min-height:18px;margin:-4px 0 7px;color:#1d4ed8;font-size:11px;font-weight:700}
.daily-report-selector{display:grid;grid-template-columns:220px minmax(260px,420px);gap:10px}.daily-report-layout{display:grid;grid-template-columns:290px minmax(0,1fr);gap:12px}.daily-progress{display:grid;gap:7px;margin-top:10px}.daily-progress-row{border:1px solid var(--line);background:#fff;border-radius:10px;padding:10px;text-align:left;display:flex;justify-content:space-between;gap:8px;align-items:center}.daily-progress-row.done{border-color:#bfdbfe;background:#f8fbff}.daily-progress-row.todo{border-style:dashed}.daily-progress-row>span:first-child{display:flex;align-items:center;gap:6px}.daily-progress-row>span:last-child{font-size:10px;color:var(--muted)}.daily-report-main{min-width:0}.daily-dirty{display:inline-flex;padding:5px 8px;border-radius:999px;font-size:10px;font-weight:800}.daily-dirty.clean{background:#ecfdf5;color:#047857}.daily-dirty.dirty{background:#fff7ed;color:#b45309}.daily-report-scene{border:1px solid #cbd5e1;border-radius:12px;padding:12px;margin-top:10px;background:#fff}.daily-report-scene-head,.daily-orders-head{display:flex;justify-content:space-between;gap:10px;align-items:center;flex-wrap:wrap}.daily-report-scene-head>div:last-child{display:flex;gap:6px;flex-wrap:wrap}.daily-scene-grid{display:grid;grid-template-columns:2fr 1fr 1fr 1fr 1.3fr 1.7fr;gap:8px;margin-top:10px}.daily-location-field{min-width:180px}.daily-orders-head{border-top:1px solid var(--line);padding-top:10px;margin-top:10px}.daily-orders-head>div{display:flex;align-items:center;gap:8px}.daily-orders-head span{font-size:10px;color:var(--muted)}.daily-report-orders{display:grid;gap:8px;margin-top:8px}.daily-order-row{position:relative;display:grid;grid-template-columns:1.2fr .8fr 1.15fr .9fr 1fr 1fr 1fr 1.2fr 52px;gap:7px;padding:10px;border:1px solid #e2e8f0;border-radius:10px;background:#f8fafc;align-items:end}.daily-order-row .field label{font-size:9px}.daily-order-remove{border:1px solid #fecaca;background:#fff;color:#b91c1c;border-radius:8px;padding:9px 4px;font-size:10px}.daily-report-actions{display:flex;justify-content:flex-end;gap:8px;border-top:1px solid var(--line);margin-top:14px;padding-top:12px}.hidden{display:none!important}.daily-missing{display:inline-flex;margin-left:7px;padding:3px 6px;border-radius:999px;background:#fef2f2;color:#b91c1c;font-size:9px}.danger-text{color:#b91c1c;border-color:#fecaca}
@media(max-width:1180px){.grid5{grid-template-columns:repeat(3,1fr)}.daily-report-layout{grid-template-columns:1fr}.daily-scene-grid{grid-template-columns:repeat(3,1fr)}.daily-order-row{grid-template-columns:repeat(4,1fr)}}
@media(max-width:768px){*{scrollbar-width:none}*::-webkit-scrollbar{width:0;height:0}.grid5{grid-template-columns:1fr 1fr;gap:9px}.daily-report-selector{grid-template-columns:1fr}.daily-scene-grid{grid-template-columns:1fr 1fr}.daily-order-row{grid-template-columns:1fr 1fr}.daily-order-remove{grid-column:1/-1}.daily-report-actions{position:sticky;bottom:70px;background:#fff;padding:10px 0;z-index:3}}

/* ===== Stage 4.2 历史计薪周期 ===== */
.cycle-flow{display:flex;gap:10px;flex-wrap:wrap;margin:10px 0 12px}
.cycle-flow span{font-size:10px;padding:6px 9px;border-radius:999px;background:#f8fafc;border:1px solid var(--line);color:#475569}
.cycle-badge{display:inline-flex;align-items:center;padding:4px 7px;border-radius:999px;font-size:10px;font-weight:800;border:1px solid}
.cycle-badge.paid{background:#ecfdf5;color:#047857;border-color:#a7f3d0}
.cycle-badge.pending{background:#eff6ff;color:#1d4ed8;border-color:#bfdbfe}
.cycle-badge.settle{background:#fff7ed;color:#b45309;border-color:#fed7aa}
.cycle-badge.wait{background:#f1f5f9;color:#64748b;border-color:#cbd5e1}
.cycle-summary-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin-bottom:12px}
.cycle-summary-grid>div{padding:10px;border:1px solid var(--line);border-radius:10px;background:#f8fafc}
.cycle-summary-grid span,.cycle-summary-grid small{display:block;color:var(--muted);font-size:9px}
.cycle-summary-grid b{display:block;margin:6px 0;font-size:15px}
.cycle-actions{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0 14px}
.cycle-subtitle{font-size:13px;margin:15px 0 8px}
.cycle-check{display:grid;gap:10px}
.check-group{padding:10px 12px;border-radius:10px;border:1px solid}
.check-group b{display:block;margin-bottom:5px}.check-group p{margin:4px 0;font-size:11px;line-height:1.45}
.check-group.bad{background:#fef2f2;color:#991b1b;border-color:#fecaca}
.check-group.good{background:#ecfdf5;color:#065f46;border-color:#a7f3d0}
.check-group.warn{background:#fffbeb;color:#92400e;border-color:#fde68a}
.check-group.info{background:#eff6ff;color:#1e40af;border-color:#bfdbfe}
.full-btn{width:100%;padding:10px}
@media(max-width:980px){.cycle-summary-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:768px){.cycle-summary-grid{grid-template-columns:1fr}.cycle-actions button{width:100%}}


/* ===== Stage 4.3 登录 / 权限 / 上线 ===== */
.login-screen{position:fixed;inset:0;z-index:9999;background:linear-gradient(135deg,#0f172a,#1e293b);display:none;align-items:center;justify-content:center;padding:20px}
.login-screen.show{display:flex}.login-card{width:min(390px,100%);background:#fff;border-radius:18px;padding:24px;box-shadow:0 28px 80px rgba(0,0,0,.35);display:grid;gap:10px}.login-brand{font-size:20px;font-weight:900;color:#0f172a;margin-bottom:8px}.login-brand small{display:block;font-size:11px;color:#64748b;margin-top:5px}.login-card label{font-size:11px;font-weight:700;color:#475569}.login-card input{width:100%;box-sizing:border-box;padding:11px 12px;border:1px solid #cbd5e1;border-radius:10px}.login-card .primary{padding:11px;margin-top:4px}.login-card p{font-size:10px;color:#64748b;text-align:center}.login-error{min-height:18px;color:#b91c1c;font-size:11px}
.userbar{display:flex;align-items:center;gap:8px}.user-identity{display:grid;text-align:right}.user-identity b{font-size:11px}.user-identity small{font-size:9px;color:#64748b}.history-mode-wrap{display:flex;align-items:center;gap:6px;padding:8px 10px;border:1px solid #f59e0b;background:#fffbeb;color:#92400e;border-radius:9px;font-size:11px;font-weight:800;white-space:nowrap}.history-mode-wrap input{accent-color:#d97706}.write-hidden{display:none!important}.viewer-mode .primary{display:none!important}.viewer-mode .daily-report-actions,.viewer-mode #dailyAddScene,.viewer-mode #mapConfigBtn,.viewer-mode #autoLocateBtn,.viewer-mode #newLocation,.viewer-mode #newOrder,.viewer-mode #newEmployee,.viewer-mode #newAttendance,.viewer-mode #newSalaryAdjustment,.viewer-mode #payrollPolicyBtn{display:none!important}
@media(max-width:768px){.user-identity{display:none}.userbar{gap:4px}.userbar .ghost{padding:6px 7px;font-size:9px}.history-mode-wrap{width:100%;justify-content:center}.daily-report-selector{grid-template-columns:1fr!important}}


/* Stage 4.3.2：移动端 H5 侧滑导航与录入体验 */
.mobile-menu-btn,.mobile-drawer-head,.mobile-drawer-footer,.mobile-nav-backdrop{display:none}

@media(max-width:768px){
  body{background:#f3f6fb}
  body.mobile-menu-open{overflow:hidden}

  .app{display:block;min-height:100vh}
  .main{
    padding:0 12px calc(24px + env(safe-area-inset-bottom));
    min-height:100vh;
  }

  .topbar{
    position:sticky;
    top:0;
    z-index:70;
    margin:0 -12px 14px;
    padding:calc(10px + env(safe-area-inset-top)) 12px 10px;
    display:grid;
    grid-template-columns:42px minmax(0,1fr);
    align-items:center;
    gap:10px;
    background:rgba(245,247,251,.94);
    border-bottom:1px solid rgba(226,232,240,.9);
    backdrop-filter:blur(14px);
    -webkit-backdrop-filter:blur(14px);
  }
  .topbar-title{min-width:0}
  .topbar h1{
    margin:0;
    font-size:18px;
    line-height:1.25;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
  }
  .topbar p{
    margin-top:3px;
    font-size:9px;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
  }
  .topbar .userbar{display:none!important}

  .mobile-menu-btn{
    display:grid;
    width:40px;
    height:40px;
    padding:9px;
    align-content:center;
    gap:4px;
    border:1px solid #dbe3ef;
    background:#fff;
    border-radius:12px;
    box-shadow:0 2px 8px rgba(15,23,42,.05);
  }
  .mobile-menu-btn span{
    display:block;
    height:2px;
    border-radius:2px;
    background:#0f172a;
  }

  .sidebar{
    display:flex!important;
    position:fixed;
    z-index:120;
    top:0;
    bottom:0;
    left:0;
    width:min(82vw,320px);
    height:100dvh;
    padding:calc(12px + env(safe-area-inset-top)) 14px calc(14px + env(safe-area-inset-bottom));
    transform:translateX(-104%);
    transition:transform .22s ease;
    box-shadow:18px 0 40px rgba(15,23,42,.22);
    flex-direction:column;
    overflow:auto;
  }
  body.mobile-menu-open .sidebar{transform:translateX(0)}

  .mobile-nav-backdrop{
    display:block;
    position:fixed;
    inset:0;
    z-index:110;
    background:rgba(15,23,42,.42);
    opacity:0;
    pointer-events:none;
    transition:opacity .22s ease;
  }
  body.mobile-menu-open .mobile-nav-backdrop{
    opacity:1;
    pointer-events:auto;
  }

  .mobile-drawer-head{
    display:flex;
    justify-content:space-between;
    align-items:center;
    gap:10px;
    padding:2px 2px 10px;
    border-bottom:1px solid rgba(148,163,184,.18);
  }
  .mobile-drawer-user{display:grid;min-width:0}
  .mobile-drawer-user b{
    color:#fff;
    font-size:14px;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
  }
  .mobile-drawer-user small{
    margin-top:3px;
    color:#94a3b8;
    font-size:10px;
  }
  .mobile-drawer-close{
    width:36px;
    height:36px;
    border:0;
    border-radius:10px;
    background:#1e293b;
    color:#fff;
    font-size:24px;
    line-height:1;
  }

  .sidebar .brand{
    padding:18px 8px 14px;
    font-size:17px;
  }
  .sidebar .nav{gap:5px}
  .sidebar .nav button{
    position:relative;
    padding:12px 13px;
    border-radius:11px;
    font-size:14px;
  }
  .sidebar .nav button.active{
    background:#26364d;
    color:#fff;
    box-shadow:inset 3px 0 0 #60a5fa;
  }

  .mobile-drawer-footer{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:8px;
    margin-top:auto;
    padding-top:16px;
  }
  .drawer-secondary{
    border:1px solid #334155;
    background:#172033;
    color:#cbd5e1;
    border-radius:10px;
    padding:10px 8px;
    font-size:11px;
  }

  .mobile-nav{display:none!important}
  .card{border-radius:16px;padding:12px;box-shadow:0 2px 12px rgba(15,23,42,.035)}
  .grid5{grid-template-columns:1fr 1fr;gap:9px}
  .grid4{grid-template-columns:1fr 1fr;gap:9px}
  .grid3,.two{grid-template-columns:1fr}
  .metric b{font-size:22px}

  .filters{display:grid;grid-template-columns:1fr 1fr}
  .filters input{grid-column:1/-1;min-width:0}
  .filters select{min-width:0}

  .daily-report-selector{grid-template-columns:1fr!important}
  .daily-report-layout{grid-template-columns:1fr!important}
  .daily-scene-grid{grid-template-columns:1fr 1fr}
  .daily-order-row{grid-template-columns:1fr 1fr}
  .daily-order-remove{grid-column:1/-1}
  .daily-report-scene{padding:11px;border-radius:14px}
  .daily-report-scene-head>div:last-child{
    width:100%;
    display:grid;
    grid-template-columns:1fr 1fr;
  }
  .daily-orders-head .primary{min-height:42px}
  .daily-report-actions{
    position:sticky;
    bottom:max(0px,env(safe-area-inset-bottom));
    z-index:35;
    margin:14px -12px -12px;
    padding:10px 12px calc(10px + env(safe-area-inset-bottom));
    background:rgba(255,255,255,.96);
    border-top:1px solid #e2e8f0;
    box-shadow:0 -8px 24px rgba(15,23,42,.08);
    backdrop-filter:blur(12px);
    -webkit-backdrop-filter:blur(12px);
  }
  .daily-report-actions .primary{flex:1;min-height:44px}
  .daily-report-actions .ghost{min-height:44px}

  .formgrid,.detailgrid{grid-template-columns:1fr}
  .field.full{grid-column:1}
  dialog{
    width:100%;
    max-width:none;
    position:fixed;
    left:0;
    right:0;
    bottom:0;
    margin:0;
    border-radius:18px 18px 0 0;
    max-height:86vh;
  }
  .dialogbox{max-height:86vh}
}


/* Stage 4.3.3：高危永久删除与移动端细节 */
.employee-purge-btn{color:#b91c1c!important;border-color:#fecaca!important;background:#fff7f7!important}
.employee-purge-btn:hover{background:#fef2f2!important}
@media(max-width:768px){
  #employees .table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
  #employees table{min-width:980px}
  #employees td:last-child{white-space:nowrap}
  #employees .employee-purge-btn{min-height:36px}
}

/* Stage 4.3.4：出勤日志筛选 */
.attendance-filterbar{display:grid;grid-template-columns:180px minmax(160px,1fr) minmax(180px,1fr) auto;gap:10px;align-items:end;margin:10px 0 8px}.attendance-filterbar .field{min-width:0}.attendance-filterbar button{height:38px;white-space:nowrap}
@media(max-width:768px){.attendance-filterbar{grid-template-columns:1fr 1fr}.attendance-filterbar .field:first-child{grid-column:1/-1}.attendance-filterbar button{grid-column:1/-1;width:100%}}

/* Stage 4.3.5 smart order location picker */
.order-location-picker{display:grid;gap:7px}.order-location-actions{display:flex;gap:7px;flex-wrap:wrap}.order-location-chosen{font-size:11px;color:#475569;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;padding:8px;white-space:normal}.order-location-picker .amap-input-wrap{position:relative}


/* Stage 4.3.6 — 下拉点位 / 出勤捆绑业绩 */
.attendance-order-bundle{border:1px solid var(--line);border-radius:12px;padding:10px;background:#f8fafc}
.attendance-order-bundle-head{display:flex;justify-content:space-between;gap:10px;align-items:center;margin-bottom:8px}
.attendance-order-bundle-head span{font-size:10px;color:var(--muted);line-height:1.5}
.attendance-order-row{display:grid;grid-template-columns:1.2fr .8fr 1.1fr auto;gap:8px;align-items:end;padding:9px 0;border-top:1px solid var(--line)}
.attendance-order-row:first-child{border-top:0}
.detail-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:14px}
@media(max-width:768px){
 .attendance-order-bundle-head{align-items:flex-start;flex-direction:column}
 .attendance-order-row{grid-template-columns:1fr 1fr}
 .attendance-order-remove{grid-column:1/-1}
 .attendance-order-remove button{width:100%}
}


/* 4.3.8 出勤日志：记薪周期 → 日期 → 明细 */
.attendance-cycle-shell{margin:10px 0 12px;border:1px solid var(--line);border-radius:13px;background:#f8fafc;overflow:hidden}
.attendance-cycle-current{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 13px;background:#fff}
.attendance-cycle-current small{display:block;color:var(--muted);font-size:10px;margin-bottom:3px}.attendance-cycle-current b{font-size:14px}
.attendance-history-cycle-list{border-top:1px solid var(--line)}.attendance-history-cycle-list>summary{cursor:pointer;padding:10px 13px;font-size:12px;font-weight:700;color:#475569;list-style:none}.attendance-history-cycle-list>summary::-webkit-details-marker{display:none}.attendance-history-cycle-list>summary span{color:#94a3b8;font-weight:500;margin-left:4px}
.attendance-history-cycle-list>div{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;padding:0 10px 10px}.attendance-cycle-option{border:1px solid var(--line);background:#fff;border-radius:10px;padding:9px;text-align:left;color:var(--text)}.attendance-cycle-option b,.attendance-cycle-option small{display:block}.attendance-cycle-option small{font-size:10px;color:var(--muted);margin-top:3px}.attendance-cycle-option.active{border-color:#2563eb;background:#eff6ff}
.attendance-groups{display:grid;gap:9px;margin-top:10px}.attendance-day-card{border:1px solid var(--line);border-radius:12px;background:#fff;overflow:hidden}.attendance-day-card>summary{cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 13px;list-style:none;background:#fff}.attendance-day-card>summary::-webkit-details-marker{display:none}.attendance-day-card>summary div b,.attendance-day-card>summary div small{display:block}.attendance-day-card>summary div b{font-size:14px}.attendance-day-card>summary div small{margin-top:4px;color:var(--muted);font-size:11px}.attendance-day-card>summary>span{font-size:10px;color:#64748b;background:#f1f5f9;border-radius:999px;padding:4px 7px}.attendance-day-card[open]>summary{background:#f8fafc;border-bottom:1px solid var(--line)}.attendance-day-table{max-height:440px}
.attendance-date-jump{position:fixed;right:22px;bottom:22px;z-index:72}.attendance-date-jump-btn{border:0;border-radius:999px;background:#0f172a;color:#fff;box-shadow:0 8px 24px rgba(15,23,42,.24);padding:11px 15px;font-weight:800}.attendance-date-jump-panel{display:none;position:absolute;right:0;bottom:50px;width:310px;max-height:420px;overflow:auto;background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 18px 48px rgba(15,23,42,.18);padding:10px}.attendance-date-jump.open .attendance-date-jump-panel{display:block}.attendance-date-jump-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;font-size:12px}.attendance-date-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}.attendance-date-grid button{border:1px solid var(--line);border-radius:9px;background:#fff;padding:7px 2px;min-width:0}.attendance-date-grid button b,.attendance-date-grid button small{display:block}.attendance-date-grid button small{font-size:8px;color:#94a3b8;margin-top:2px}.attendance-date-grid button.has-data{background:#f8fafc}.attendance-date-grid button.active{background:#0f172a;color:#fff;border-color:#0f172a}.attendance-date-grid button.active small{color:#cbd5e1}
@media(max-width:768px){.attendance-history-cycle-list>div{grid-template-columns:1fr}.attendance-cycle-current{align-items:flex-start}.attendance-day-card>summary{padding:11px}.attendance-day-table table{min-width:760px}.attendance-date-jump{right:12px;bottom:calc(18px + env(safe-area-inset-bottom))}.attendance-date-jump-panel{width:min(320px,calc(100vw - 24px));max-height:58vh}.attendance-date-jump-btn{padding:10px 14px}.attendance-filterbar{margin-top:10px}}

/* Stage 4.4.0 员工端：同一登录入口，按角色自动分流 */
.hidden{display:none!important}.inline-check{display:flex!important;align-items:center;gap:8px}.inline-check input{width:auto}.good-text{color:#087a58!important}
.staff-app{min-height:100vh;background:#f4f7fb;padding-bottom:82px}.staff-header{background:linear-gradient(135deg,#0f172a,#1e293b);color:#fff;padding:22px 18px 26px;display:flex;justify-content:space-between;align-items:flex-start}.staff-header h1{margin:4px 0 0;font-size:25px}.staff-header small{color:#cbd5e1}.staff-logout{border:1px solid rgba(255,255,255,.25);background:rgba(255,255,255,.08);color:#fff;border-radius:9px;padding:8px 11px}.staff-main{max-width:680px;margin:-10px auto 0;padding:0 12px 24px}.staff-page{display:none}.staff-page.active{display:block}.staff-card{background:#fff;border:1px solid #e2e8f0;border-radius:16px;padding:16px;margin-bottom:12px;box-shadow:0 3px 14px rgba(15,23,42,.04)}.staff-hero{display:flex;justify-content:space-between;align-items:center}.staff-hero h2{margin:8px 0 4px}.staff-hero p{margin:0;color:#64748b;font-size:12px}.staff-badge{display:inline-block;padding:4px 9px;border-radius:999px;background:#e0e7ff;color:#3730a3;font-size:11px;font-weight:800}.staff-number{text-align:right}.staff-number b{display:block;font-size:32px}.staff-number span{font-size:11px;color:#64748b}.staff-card-title{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px}.staff-card-title h3{margin:0}.staff-card-title small,.staff-muted{color:#64748b;font-size:12px}.staff-qr-empty{min-height:220px;border:1px dashed #cbd5e1;border-radius:14px;display:flex;align-items:center;justify-content:center;color:#94a3b8;text-align:center;padding:15px}.staff-qr-img{display:block;width:min(280px,82vw);height:auto;margin:0 auto;border-radius:12px}.staff-mini-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.staff-mini-grid>div{background:#f8fafc;border-radius:12px;padding:12px}.staff-mini-grid span{display:block;color:#64748b;font-size:11px;margin-bottom:5px}.staff-mini-grid b{font-size:17px}.staff-bottom-nav{position:fixed;z-index:300;left:0;right:0;bottom:0;display:grid;grid-template-columns:repeat(3,1fr);background:#fff;border-top:1px solid #e2e8f0;padding-bottom:env(safe-area-inset-bottom)}.staff-bottom-nav button{border:0;background:#fff;padding:13px 4px;color:#64748b}.staff-bottom-nav button.active{color:#0f172a;font-weight:900}
@media(min-width:769px){.staff-app{padding-bottom:30px}.staff-bottom-nav{max-width:680px;left:50%;transform:translateX(-50%);border:1px solid #e2e8f0;border-radius:14px 14px 0 0}}

.order-filter-note.active{
  margin:0 0 10px;
  padding:9px 12px;
  border:1px solid #bfdbfe;
  background:#eff6ff;
  border-radius:10px;
  color:#1d4ed8;
  font-size:13px;
  font-weight:800;
}

/* 4.4.1 员工日报 */
.staff-report-status{display:inline-flex;align-items:center;padding:5px 9px;border-radius:999px;font-size:11px;font-weight:900}.staff-report-status.pending{background:#fff7ed;color:#c2410c}.staff-report-status.done{background:#ecfdf5;color:#047857}.staff-report-summary{background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;padding:11px 12px;margin-top:10px;font-size:13px;color:#475569}.staff-report-summary b{font-size:18px;color:#0f172a}.staff-report-summary span{color:#cbd5e1;margin:0 5px}.staff-report-readonly{margin-top:10px;padding:10px 12px;border-radius:10px;background:#fff7ed;color:#9a3412;font-size:12px;font-weight:700}.staff-scene{background:#fff;border:1px solid #e2e8f0;border-radius:16px;padding:14px;margin-bottom:12px;box-shadow:0 3px 14px rgba(15,23,42,.04)}.staff-scene-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.staff-scene-head>div{display:flex;align-items:center;gap:8px}.staff-scene-head small{background:#eff6ff;color:#1d4ed8;border-radius:999px;padding:3px 7px}.staff-field{margin-bottom:11px}.staff-field label{display:block;font-size:12px;font-weight:800;color:#475569;margin-bottom:5px}.staff-field input,.staff-field select,.staff-field textarea{width:100%;box-sizing:border-box;border:1px solid #cbd5e1;border-radius:10px;padding:10px;background:#fff;font:inherit}.staff-field textarea{min-height:76px;resize:vertical}.staff-field input:disabled,.staff-field select:disabled,.staff-field textarea:disabled{background:#f8fafc;color:#64748b}.staff-grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}.staff-grid2 .staff-field{margin-bottom:2px}.staff-location-search{position:relative}.staff-location-suggestions{position:absolute;left:0;right:0;top:44px;z-index:50;background:#fff;border:1px solid #cbd5e1;border-radius:12px;box-shadow:0 10px 24px rgba(15,23,42,.12);overflow:hidden}.staff-location-suggestions:empty{display:none}.staff-location-suggestions button{width:100%;display:flex;flex-direction:column;align-items:flex-start;border:0;border-bottom:1px solid #eef2f7;background:#fff;padding:10px 12px;text-align:left}.staff-location-suggestions button:last-child{border-bottom:0}.staff-location-suggestions button b{font-size:13px}.staff-location-suggestions button span,.staff-location-empty{font-size:11px;color:#64748b;margin-top:3px}.staff-location-empty{padding:10px 12px}.staff-selected-location{display:block;color:#047857;margin-top:5px}.staff-selected-location.warn{color:#c2410c}.staff-link-btn{border:0;background:none;color:#2563eb;padding:7px 0 0;font-weight:800;font-size:12px}.staff-report-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;position:sticky;bottom:64px;background:rgba(244,247,251,.95);padding:10px 0 12px;backdrop-filter:blur(8px);z-index:30}.staff-report-empty{background:#fff;border:1px dashed #cbd5e1;border-radius:16px;padding:28px 16px;text-align:center;color:#94a3b8;margin-bottom:12px}

/* 4.4.2 员工端：参考用户提供的暖橙/白卡片移动端层级 */
.staff-app{min-height:100vh;background:linear-gradient(180deg,#fff7ef 0,#f5f6f8 34%,#eef1f4 100%);padding-bottom:92px;color:#18202d}.staff-mobile-top{height:64px;padding:12px 18px;display:flex;align-items:center;gap:10px;background:rgba(255,248,241,.94);position:sticky;top:0;z-index:100;border-bottom:1px solid rgba(255,125,29,.08);backdrop-filter:blur(12px)}.staff-brand-dot{width:38px;height:38px;background:#ff6a13;color:#fff;border-radius:13px;display:grid;place-items:center;font-weight:900;font-size:18px}.staff-mobile-top>b{font-size:19px}.staff-mobile-top .staff-logout{margin-left:auto;background:#fff;border:1px solid #f1ded1;color:#6b4a37}.staff-main{max-width:680px;margin:0 auto;padding:16px 14px 30px}.staff-page-heading{padding:6px 4px 12px}.staff-page-heading h1{font-size:30px;margin:0 0 5px}.staff-page-heading p{margin:0;color:#7b808a;font-size:14px}.staff-card{border:0;border-radius:24px;padding:18px;margin-bottom:14px;box-shadow:0 8px 30px rgba(25,32,45,.06)}.staff-today-card{position:relative;overflow:hidden;background:linear-gradient(135deg,#ff6a13,#ff5a0a);color:#fff;border-radius:24px;padding:22px 20px 31px;margin-bottom:16px;display:flex;justify-content:space-between;align-items:flex-start}.staff-today-card span{font-weight:800}.staff-today-card b{font-size:52px;line-height:1}.staff-today-card em{font-style:normal;font-size:24px;font-weight:800}.staff-today-side{text-align:right}.staff-today-side b{font-size:22px;display:block}.staff-today-side span{display:block;margin-top:58px}.staff-progress{position:absolute;left:20px;right:20px;bottom:16px;height:9px;border-radius:99px;background:rgba(255,255,255,.35);overflow:hidden}.staff-progress i{display:block;height:100%;background:#fff;border-radius:99px;transition:.25s}.staff-card-title.center{justify-content:center;text-align:center}.staff-qr-card{text-align:center}.staff-qr-empty{min-height:215px;background:#fff;border:1px solid #edf0f2;border-radius:22px}.staff-qr-empty.small{min-height:170px}.staff-qr-img{width:min(300px,75vw);cursor:zoom-in}.staff-primary-wide,.staff-secondary-wide{width:100%;border:0;border-radius:16px;padding:15px 14px;font-size:17px;font-weight:900;margin-top:12px}.staff-primary-wide{background:#ff6813;color:#fff}.staff-secondary-wide{background:#fff4ec;color:#e65300;border:1px solid #ffd8be}.staff-danger-note{color:#dc2626;font-size:13px;font-weight:900;text-align:center;margin:8px 0}.staff-danger-banner{background:#fff1f2;color:#be123c;border:1px solid #fecdd3;padding:12px 14px;border-radius:14px;font-weight:800;margin-bottom:14px}.staff-home-stats{display:grid;grid-template-columns:1fr 1fr;gap:12px}.staff-home-stats>div{background:#fff;border-radius:20px;padding:16px;box-shadow:0 8px 25px rgba(25,32,45,.05)}.staff-home-stats span{display:block;color:#7b808a}.staff-home-stats b{display:block;font-size:25px;margin-top:6px}.staff-list{margin-top:10px}.staff-list-row{width:100%;display:flex;justify-content:space-between;align-items:center;padding:14px 2px;border:0;border-bottom:1px solid #eef0f2;background:transparent;text-align:left}.staff-list-row:last-child{border-bottom:0}.staff-list-row div{min-width:0}.staff-list-row b{display:block;font-size:16px}.staff-list-row small{display:block;color:#858a94;margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.staff-list-row>span{font-weight:900;color:#3f4753}.staff-list-row.clickable{cursor:pointer}.staff-ok{color:#0f9f6e!important;background:#e8fbf4;padding:5px 9px;border-radius:999px}.staff-warn{color:#b7791f!important;background:#fff7d6;padding:5px 9px;border-radius:999px}.staff-text-button{border:0;background:transparent;color:#e85f0c;font-weight:900;padding:12px 0}.staff-text-button.left{text-align:left}.staff-tabs{display:grid;grid-template-columns:1fr 1fr;background:#f2f3f5;border-radius:14px;padding:4px}.staff-tabs button{border:0;background:transparent;border-radius:11px;padding:10px;font-weight:800;color:#838892}.staff-tabs button.active{background:#fff;color:#18202d;box-shadow:0 2px 8px rgba(0,0,0,.04)}.staff-rank-row{display:grid;grid-template-columns:28px 42px 1fr auto;gap:8px;align-items:center;padding:13px 4px;border-bottom:1px solid #eef0f2}.staff-rank-row>b{color:#ff6813}.staff-rank-avatar{width:36px;height:36px;border-radius:50%;background:#ffe6d6;display:grid;place-items:center;color:#c54b00;font-weight:900}.staff-rank-row strong,.staff-rank-row small{display:block}.staff-rank-row small{color:#8a8f98;margin-top:2px}.staff-rank-row em{font-style:normal;font-weight:900}.staff-profile-card{background:linear-gradient(135deg,#182230,#26364a);color:#fff;border-radius:26px;padding:22px;margin-bottom:14px}.staff-profile-top{display:flex;gap:14px;align-items:center}.staff-profile-top>span{width:50px;height:50px;border-radius:16px;background:#ff6813;display:grid;place-items:center;font-size:24px;font-weight:900}.staff-profile-top h2{margin:0 0 4px}.staff-profile-top p{margin:0;color:#cbd5e1}.staff-profile-pay{border-top:1px solid rgba(255,255,255,.15);margin-top:18px;padding-top:17px}.staff-profile-pay span{display:block;color:#cbd5e1}.staff-profile-pay b{display:block;font-size:38px;margin-top:6px}.staff-mini-grid.three{grid-template-columns:repeat(3,1fr)}.staff-mini-grid.three>div{text-align:center;background:#f7f7f8}.staff-mini-grid.three b{font-size:23px}.staff-mini-grid.three span{margin-top:6px}.staff-bottom-nav{padding:6px 0 max(6px,env(safe-area-inset-bottom));grid-template-columns:repeat(3,1fr);box-shadow:0 -5px 18px rgba(0,0,0,.05)}.staff-bottom-nav button{display:flex;flex-direction:column;align-items:center;gap:2px;font-size:12px}.staff-bottom-nav button b{font-size:24px;font-weight:400}.staff-bottom-nav button.active{color:#ff6813}.staff-panel{position:fixed;inset:0;background:#f4f5f7;z-index:500;transform:translateX(100%);transition:.22s;overflow:auto}.staff-panel.open{transform:translateX(0)}.staff-panel-head{height:62px;display:grid;grid-template-columns:45px 1fr 45px;align-items:center;background:#fff;position:sticky;top:0;z-index:20;border-bottom:1px solid #eee}.staff-panel-head button{border:0;background:transparent;font-size:38px}.staff-panel-head h2{margin:0;text-align:center;font-size:19px}.staff-panel-body{max-width:680px;margin:auto;padding:14px 14px 90px}.staff-form-card{background:#fff;border-radius:22px;padding:17px;margin-bottom:14px}.staff-form-card h3,.staff-form-card h4{margin:0 0 14px}.staff-field label{font-size:14px;color:#343b47}.staff-field input,.staff-field select,.staff-field textarea{font-size:16px;border-color:#e5e7eb;border-radius:14px;padding:13px}.staff-choice-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.staff-choice-grid label input{display:none}.staff-choice-grid label span{display:block;padding:13px 12px;border:1px solid #e5e7eb;border-radius:13px;background:#fff}.staff-choice-grid label input:checked+span{border-color:#ff7a22;background:#fff3ea;color:#e65300;font-weight:900}.staff-location-suggestions{top:49px}.staff-new-location{background:#fff9f5;border:1px dashed #ffcfb0;padding:12px;border-radius:14px;margin-top:8px}.staff-new-location.hidden{display:none}.sticky-submit{position:sticky;bottom:12px;box-shadow:0 8px 28px rgba(255,104,19,.25)}.staff-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.staff-detail-grid>div{background:#f7f8fa;border-radius:12px;padding:11px}.staff-detail-grid span,.staff-detail-grid b{display:block}.staff-detail-grid span{font-size:12px;color:#878c95}.staff-feedback-json{white-space:pre-wrap;font-family:inherit;background:#f8fafc;border-radius:14px;padding:13px;line-height:1.7;color:#475569}.staff-feedback-json.admin{max-height:420px;overflow:auto}.staff-readonly{background:#fff7ed;color:#9a3412;padding:12px;border-radius:13px}.staff-empty{text-align:center;color:#9aa0aa;padding:18px}.staff-empty.big{padding:48px}.staff-history-head{background:#182230;color:#fff;border-radius:20px;padding:18px;margin-bottom:14px}.staff-history-head b,.staff-history-head span{display:block}.staff-history-head span{margin-top:8px;color:#cbd5e1}.staff-section-title{padding:5px 4px}.staff-qr-overlay{position:fixed;inset:0;background:rgba(0,0,0,.93);z-index:900;display:none;align-items:center;justify-content:center;padding:22px}.staff-qr-overlay.open{display:flex}.staff-qr-overlay img{max-width:92vw;max-height:82vh;background:#fff;border-radius:20px}.staff-qr-overlay button{position:absolute;right:18px;top:18px;width:48px;height:48px;border-radius:50%;border:0;font-size:31px;background:#fff}.hidden{display:none!important}
@media(max-width:420px){.staff-today-card b{font-size:46px}.staff-choice-grid{grid-template-columns:1fr}.staff-mini-grid.three b{font-size:20px}}


/* 4.4.2.2 客情反馈管理页 */
.feedback-filterbar{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));gap:12px;margin:14px 0}.feedback-filterbar .field{margin:0}.feedback-groups{display:flex;flex-direction:column;gap:12px;margin-top:12px}.feedback-day-card{border:1px solid #e2e8f0;border-radius:14px;background:#fff;overflow:hidden}.feedback-day-card>summary{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;cursor:pointer;list-style:none;background:#f8fafc}.feedback-day-card>summary::-webkit-details-marker,.feedback-record>summary::-webkit-details-marker{display:none}.feedback-day-card>summary div{display:flex;flex-direction:column;gap:3px}.feedback-day-card>summary small{color:#64748b}.feedback-day-card>summary>span{font-size:12px;color:#475569;background:#e2e8f0;padding:4px 8px;border-radius:999px}.feedback-record-list{padding:10px;display:flex;flex-direction:column;gap:8px}.feedback-record{border:1px solid #e2e8f0;border-radius:12px;overflow:hidden;background:#fff}.feedback-record.pending{border-color:#fecaca;background:#fffafa}.feedback-record>summary{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:12px 14px;cursor:pointer;list-style:none}.feedback-record-main{display:flex;flex-direction:column;gap:4px;min-width:0}.feedback-record-main small{color:#64748b;white-space:normal}.feedback-record-status{display:flex;align-items:flex-end;flex-direction:column;gap:5px;white-space:nowrap}.feedback-record-status>span:last-child{font-size:12px;color:#64748b}.feedback-record-body{border-top:1px solid #e2e8f0;padding:14px}.feedback-detail-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.feedback-detail-grid>div{background:#f8fafc;border-radius:10px;padding:10px;min-width:0}.feedback-detail-grid span{display:block;font-size:12px;color:#64748b;margin-bottom:4px}.feedback-detail-grid b{display:block;font-size:14px;overflow-wrap:anywhere}.feedback-meta{display:flex;flex-wrap:wrap;gap:8px 14px;margin-top:12px;padding-top:12px;border-top:1px dashed #cbd5e1;color:#64748b;font-size:12px}.feedback-pending-box{padding:12px;border-radius:10px;background:#fef2f2;color:#991b1b}.feedback-edit-btn{margin-top:12px}.pill.bad{background:#fee2e2;color:#991b1b}
@media(max-width:900px){.feedback-filterbar{grid-template-columns:1fr 1fr}.feedback-detail-grid{grid-template-columns:1fr 1fr}}
@media(max-width:600px){.feedback-filterbar{grid-template-columns:1fr}.feedback-record>summary{align-items:flex-start;flex-direction:column}.feedback-record-status{align-items:flex-start;flex-direction:row}.feedback-detail-grid{grid-template-columns:1fr}}

/* 4.4.2.3 员工日报管理 */
.staff-report-scenes{display:grid;gap:10px;margin-top:14px}.staff-report-scene{border:1px solid var(--line,#e5e7eb);border-radius:12px;padding:12px;background:#fff}.staff-report-scene>div:first-child{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.staff-report-scene small{display:block;color:#64748b;margin-top:3px}.staff-report-summary>div{min-height:72px}
@media(max-width:768px){.staff-report-scene>div:first-child{display:block}.staff-report-summary>div{min-height:auto}}


/* 4.4.3 经营分析 */
.analytics-head{margin-bottom:14px}.analytics-filterbar{display:flex;gap:16px;align-items:end;flex-wrap:wrap}.analytics-filterbar .field{min-width:220px}.analytics-filterbar .order-filter-note{margin:0;flex:1}.analytics-overview{margin-bottom:16px}.analytics-bottom{align-items:start}.analytics-profile-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.analytics-profile-block{border:1px solid #e5e7eb;border-radius:14px;padding:12px;background:#fff}.analytics-profile-head{display:flex;justify-content:space-between;gap:10px;margin-bottom:8px}.analytics-profile-head span{font-size:12px;color:#64748b}.analytics-profile-row{display:grid;grid-template-columns:minmax(90px,1fr) 1.2fr 52px;gap:8px;align-items:center;margin:8px 0}.analytics-profile-row>div:first-child{display:flex;justify-content:space-between;gap:8px;font-size:12px}.analytics-profile-row small{text-align:right;color:#64748b}.analytics-profile-bar{height:7px;background:#eef2f7;border-radius:99px;overflow:hidden}.analytics-profile-bar i{display:block;height:100%;background:currentColor;border-radius:99px}.analytics-report-metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.analytics-report-metrics>div{border:1px solid #e5e7eb;border-radius:12px;padding:12px;display:grid;gap:2px}.analytics-report-metrics span,.analytics-report-metrics small{font-size:12px;color:#64748b}.analytics-report-metrics b{font-size:24px}.analytics-missing-title{font-weight:700;margin:16px 0 8px}.analytics-missing-list{max-height:320px;overflow:auto;display:grid;gap:6px}.analytics-missing-list>div{display:flex;justify-content:space-between;gap:10px;padding:9px 10px;border-radius:10px;background:#fff7ed;font-size:13px}.analytics-all-good{padding:14px;border-radius:12px;background:#f0fdf4;color:#166534}.analytics-definition{margin-top:16px}.daily-empty.small{padding:10px;font-size:12px}
@media(max-width:768px){.analytics-profile-grid{grid-template-columns:1fr}.analytics-report-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.analytics-profile-row{grid-template-columns:minmax(80px,1fr) 1fr 48px}.analytics-filterbar .field{min-width:100%;}.analytics-overview{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* 4.4.4 管理预警层 */
.management-workbench{margin-top:2px}.management-alert-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin-top:8px}.management-alert-card{border:1px solid #e5e7eb;border-radius:14px;padding:12px;background:#fff;display:grid;gap:3px}.management-alert-card span,.management-alert-card small{font-size:12px;color:#64748b}.management-alert-card b{font-size:28px;line-height:1.1}.management-alert-groups{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:12px}.management-alert-group{border:1px solid #e5e7eb;border-radius:12px;background:#fff;overflow:hidden}.management-alert-group summary{cursor:pointer;list-style:none;display:flex;justify-content:space-between;align-items:center;padding:11px 12px;font-size:13px}.management-alert-group summary::-webkit-details-marker{display:none}.management-alert-group summary b{min-width:28px;text-align:center;padding:2px 7px;border-radius:99px;background:#f1f5f9}.management-alert-group>div{border-top:1px solid #eef2f7;padding:8px;max-height:260px;overflow:auto}.management-alert-row{display:flex;justify-content:space-between;gap:12px;padding:8px 7px;border-bottom:1px dashed #e5e7eb;font-size:12px}.management-alert-row:last-child{border-bottom:0}.management-alert-row>div{display:grid;gap:2px}.management-alert-row>div:last-child{text-align:right}.management-alert-row span,.management-alert-row small{color:#64748b}.management-insight-grid{align-items:start}.trend-delta{display:block;margin-top:3px;font-size:10px}.trend-delta.neutral{color:#64748b}.management-low-point-list{display:grid;gap:9px;max-height:520px;overflow:auto}.management-low-point{border:1px solid #fed7aa;background:#fff7ed;border-radius:12px;padding:11px}.management-low-point>div{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}.management-low-point span,.management-low-point small{font-size:11px;color:#78716c}.management-low-point p{margin:7px 0;font-size:12px;line-height:1.55;color:#9a3412}
@media(max-width:1100px){.management-alert-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.management-insight-grid{grid-template-columns:1fr}}
@media(max-width:768px){.management-alert-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.management-alert-groups{grid-template-columns:1fr}.management-alert-card b{font-size:24px}.management-low-point>div{display:grid}.management-insight-grid .table-wrap{max-height:480px}}

/* 4.4.5 上线前收口：浅色导航 + 历史批量导入 */
.mobile-drawer-user b{color:#334155}.mobile-drawer-user small{color:#64748b}.drawer-secondary{color:#475569!important;background:#fff!important;border-color:#e2e8f0!important}.template-download{display:inline-flex;align-items:center;text-decoration:none;background:#ecfdf3;color:#16734a;border:1px solid #cdeedb;border-radius:9px;padding:9px 12px;font-weight:800;font-size:13px}.history-import-card{max-width:1100px}.history-import-rule{display:flex;gap:12px;align-items:flex-start;background:#fff7ed;border:1px solid #fed7aa;border-radius:12px;padding:12px 14px;margin:12px 0;color:#9a3412}.history-import-rule b{white-space:nowrap}.history-import-grid{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:end}.history-import-actions{display:flex;gap:8px}.history-import-result{margin-top:14px}.import-summary-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.import-summary-grid>div{background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;padding:12px}.import-summary-grid span,.import-summary-grid b{display:block}.import-summary-grid span{color:#64748b;font-size:12px}.import-summary-grid b{font-size:22px;margin-top:4px}.import-check-list{margin-top:12px;padding:12px 14px;border-radius:12px}.import-check-list.error{background:#fef2f2;color:#991b1b;border:1px solid #fecaca}.import-check-list.warn{background:#fffbeb;color:#92400e;border:1px solid #fde68a}.import-check-list.good{background:#ecfdf5;color:#166534;border:1px solid #bbf7d0}.import-check-list ul{margin:7px 0 0;padding-left:20px}.import-check-list li{margin:5px 0}.import-final{background:#ecfdf5;border:1px solid #bbf7d0;border-radius:13px;padding:15px;color:#166534}.import-final b{display:block;font-size:18px;margin-bottom:6px}@media(max-width:768px){.history-import-grid{grid-template-columns:1fr}.history-import-actions{flex-direction:column}.import-summary-grid{grid-template-columns:1fr 1fr}}


/* 4.4.5.1 视觉主题优化：更轻、更统一的上海数据看板 */
:root{
  --bg:#f7faff;
  --nav:#fbfdff;
  --blue:#1677e8;
  --soft-blue:#5b94c7;
  --nav-text:#3e5872;
  --nav-line:#dfeaf5;
}
body{background:linear-gradient(180deg,#fbfdff 0%,#f6f9fd 52%,#f8fbff 100%);}
.sidebar{
  position:sticky;
  overflow:hidden;
  background:linear-gradient(180deg,#fcfeff 0%,#f8fbfd 48%,#f5faff 100%)!important;
  border-right:1px solid #e6eef6!important;
  color:#30465d;
}
.sidebar::before{
  content:"";
  position:absolute;
  left:0;right:0;top:34px;
  height:135px;
  pointer-events:none;
  opacity:.28;
  background:
    linear-gradient(90deg,transparent 0 69%,#b9d7ed 69% 70%,transparent 70% 100%),
    linear-gradient(90deg,transparent 0 78%,#c7dff0 78% 81%,transparent 81% 100%),
    linear-gradient(90deg,transparent 0 87%,#d5e6f2 87% 91%,transparent 91% 100%);
  mask-image:linear-gradient(to bottom,rgba(0,0,0,.8),transparent);
}
.sidebar::after{
  content:"";
  position:absolute;
  left:0;right:0;bottom:0;
  height:170px;
  pointer-events:none;
  opacity:.48;
  background:
    radial-gradient(ellipse at 105% 105%,#98cbea 0 31%,transparent 32%),
    radial-gradient(ellipse at 45% 112%,#d9edf8 0 46%,transparent 47%),
    linear-gradient(to top,rgba(213,235,248,.66),transparent 72%);
}
.sidebar>.brand,.sidebar>.nav,.sidebar>.mobile-drawer-head,.sidebar>.mobile-drawer-footer{position:relative;z-index:2}
.brand{
  color:#0f4d83;
  font-size:20px!important;
  letter-spacing:.2px;
  padding:10px 14px 22px!important;
  text-shadow:0 1px 0 rgba(255,255,255,.9);
}
.brand small{
  color:#7893aa!important;
  font-size:10px!important;
  font-weight:600;
  letter-spacing:.5px;
  margin-top:7px!important;
}
.nav{gap:7px!important}
.nav button{
  min-height:48px;
  display:flex;
  align-items:center;
  position:relative;
  border:1px solid rgba(220,232,243,.66)!important;
  background:rgba(255,255,255,.54)!important;
  color:var(--nav-text)!important;
  text-align:left;
  padding:9px 36px 9px 12px!important;
  border-radius:13px!important;
  box-shadow:0 3px 13px rgba(60,91,122,.025);
  font-weight:650;
}
.nav button::before{
  content:"•";
  display:inline-grid;
  place-items:center;
  flex:0 0 28px;
  width:28px;height:28px;
  margin-right:10px;
  border-radius:9px;
  background:#eef7ff;
  color:#5b96c9;
  font-size:17px;
  font-weight:900;
  line-height:1;
}
.nav button[data-page="dashboard"]::before{content:"⌂"}
.nav button[data-page="analytics"]::before{content:"▥"}
.nav button[data-page="orders"]::before{content:"≡"}
.nav button[data-page="map"]::before{content:"◆";font-size:12px}
.nav button[data-page="employees"]::before{content:"●";font-size:12px}
.nav button[data-page="attendance"]::before{content:"▣";font-size:14px}
.nav button[data-page="staffReports"]::before{content:"▤";font-size:14px}
.nav button[data-page="salary"]::before{content:"¥";font-size:14px}
.nav button[data-page="customerFeedback"]::before{content:"•••";font-size:9px;letter-spacing:1px}
.nav button[data-page="historyImport"]::before{content:"↑";font-size:18px}
.nav button[data-page="dailyEntry"]::before{content:"＋";font-size:17px}
.nav button:hover{
  background:rgba(244,249,253,.96)!important;
  border-color:#d2e5f3!important;
  color:#1c5f93!important;
}
.nav button.active{
  background:#fff!important;
  border-color:#e1eaf2!important;
  color:#142b43!important;
  box-shadow:inset 4px 0 0 #1683ff,0 8px 24px rgba(38,72,105,.08)!important;
  font-weight:850!important;
}
.nav button.active::before{background:#edf6ff;color:#177fe8}
.nav button.active::after{
  width:7px!important;height:7px!important;
  right:12px!important;
  background:#1683ff!important;
  box-shadow:0 0 0 4px rgba(22,131,255,.07);
}
.main{background:transparent}
.card{border-color:#e2eaf3;box-shadow:0 5px 18px rgba(46,78,110,.035)}
.topbar{align-items:center;gap:18px}
.topbar-title{flex:0 0 auto;min-width:285px}
.topbar-motto{
  flex:1 1 auto;
  min-width:300px;
  max-width:760px;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  position:relative;
  padding:6px 18px 8px;
  color:#7c3f14;
  font-family:"Kaiti SC","STKaiti","KaiTi","Comic Sans MS",cursive;
  font-size:17px;
  font-weight:800;
  letter-spacing:.5px;
  white-space:nowrap;
}
.topbar-motto::before{
  content:"";
  position:absolute;
  left:8%;right:8%;bottom:4px;
  height:18px;
  border-radius:55% 35% 58% 30%;
  background:linear-gradient(90deg,rgba(255,215,103,.18),rgba(255,224,130,.50),rgba(255,215,103,.18));
  transform:rotate(-.7deg);
  z-index:-1;
}
.motto-sun{font-family:inherit;color:#f2b632;font-size:24px;filter:drop-shadow(0 2px 2px rgba(242,182,50,.12))}
.motto-banana{font-size:26px;transform:rotate(8deg)}
.motto-copy b{color:#2f8b4f;font-weight:900}
.userbar{flex:0 0 auto}
.tag{background:#eef4ff;color:#304768;border:1px solid #e3ebf6}
@media(max-width:1380px){.topbar-title{min-width:240px}.topbar-motto{font-size:14px;min-width:240px;padding-left:6px;padding-right:6px}.motto-sun{font-size:20px}.motto-banana{font-size:22px}}
@media(max-width:1120px){.topbar-motto{display:none}.topbar{align-items:flex-start}}
@media(max-width:768px){
  body{background:#f7faff}
  .topbar{background:rgba(247,250,255,.95)!important}
  .sidebar{position:fixed!important;background:linear-gradient(180deg,#fcfeff 0%,#f6faff 100%)!important}
  .brand{font-size:18px!important;padding-top:8px!important}
  .nav button{min-height:46px}
}
