*{box-sizing:border-box}body{margin:0;font-family:"Microsoft YaHei",Arial,sans-serif;background:#f3f6fb;color:#0f172a}button,input,select,textarea{font:inherit}button{border:1px solid #d8e1ef;background:#fff;color:#24405f;border-radius:8px;padding:8px 13px;cursor:pointer}button:hover{border-color:#9bb3d3}.primary{background:#2255d6;color:#fff;border-color:#2255d6}.danger-btn{border-color:#fecaca;color:#dc2626}.hidden{display:none!important}.topbar{height:52px;background:#101a2f;color:#dbeafe;display:flex;align-items:center;padding:0 20px;gap:24px;position:sticky;top:0;z-index:10}.brand-row{display:flex;align-items:center;gap:8px;white-space:nowrap}.brand-icon{display:inline-grid;place-items:center;width:18px;height:18px;border-radius:4px;background:linear-gradient(90deg,#16a34a,#2563eb,#f97316);color:#fff;font-size:12px}.brand-row small{opacity:.75}nav{display:flex;gap:4px;flex:1}nav button{background:transparent;border:0;color:#c7d2fe;border-radius:6px;padding:9px 13px}nav button.active,nav button:hover{background:#2b364b;color:#fff}.userbox{display:flex;align-items:center;gap:12px}.userbox button{background:transparent;border:0;color:#9fb5d7}.online{background:#f0fdf4;color:#16a34a;border-radius:8px;padding:3px 10px;font-size:12px;font-weight:700}main{padding:24px}.page{display:none}.page.active{display:block}.page-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px;gap:16px}.page-head h1{font-size:24px;margin:0 0 8px}.page-head p{margin:0;color:#526c91}.actions{display:flex;gap:10px;flex-wrap:wrap}.section-title{font-weight:800;margin:20px 0 12px}.metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.metric,.small-grid article,.panel{background:#fff;border:1px solid #dbe5f1;border-radius:10px}.metric{padding:20px 22px}.metric span,.small-grid span{display:block;color:#47658c;font-weight:700;font-size:13px}.metric strong{display:block;font-size:34px;margin:4px 0;color:#001b44}.metric small{color:#64748b}.bar{height:5px;background:#e3eaf3;border-radius:999px;margin-top:14px;overflow:hidden}.bar i{display:block;height:100%;background:#2563eb}.bar.red i{background:#ef4444}.bar.orange i{background:#d97706}.bar.purple i{background:#7c3aed}.bar.green i{background:#16a34a}.small-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.small-grid article{padding:18px}.small-grid strong{display:block;font-size:24px;margin:8px 0}.panel{padding:20px;margin-top:20px}.panel h2{font-size:17px;margin:0 0 16px}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;font-size:14px}th{text-align:left;color:#486284;background:#f8fbff;border-bottom:1px solid #dce6f2;padding:12px}td{padding:12px;border-bottom:1px solid #edf2f7;vertical-align:top}tbody tr:nth-child(even){background:#f8fbff}.tag{display:inline-block;padding:3px 8px;border-radius:999px;background:#eef4ff;color:#1d4ed8;font-size:12px;font-weight:700}.tag.green{background:#eefdf3;color:#16a34a}.tag.orange{background:#fff7ed;color:#d97706}.tag.red{background:#fff1f2;color:#e11d48}.funnel{display:grid;gap:8px}.funnel-row{display:grid;grid-template-columns:90px 1fr 70px;align-items:center;gap:12px}.funnel-row .fill{height:28px;border-radius:6px;color:#fff;text-align:center;font-weight:800;line-height:28px;min-width:28px}.filters{margin-bottom:12px;display:flex;gap:8px;flex-wrap:wrap}.filters input,.filters select{border:1px solid #d8e1ef;border-radius:8px;padding:10px 12px;background:#fff}.filters input{width:280px}.activity-filters select{min-width:108px}.template-list{display:grid;gap:14px}.template-card{background:#fff;border:1px solid #dbe5f1;border-radius:10px;padding:18px}.template-card header{display:flex;justify-content:space-between;gap:12px}.template-card h3{margin:0 0 8px}.template-card pre{white-space:pre-wrap;background:#f8fbff;border:1px solid #e6edf7;border-radius:8px;padding:14px;color:#243b5a}.danger-zone button{border-color:#ef4444;color:#dc2626}.login-shell{min-height:100vh;display:grid;place-items:center;background:#101a2f}.login-panel{width:min(420px,92vw);background:#fff;border-radius:14px;padding:30px;box-shadow:0 24px 80px rgba(0,0,0,.25)}.login-panel h1{margin:22px 0 8px}.login-panel p{color:#64748b}.login-panel label{display:block;font-weight:700;color:#344a68;margin:16px 0}.login-panel input{display:block;width:100%;margin-top:8px;border:1px solid #d8e1ef;border-radius:8px;padding:12px}.login-panel button{width:100%;margin-top:12px}.msg{margin-top:12px;color:#dc2626}.modal{position:fixed;inset:0;background:rgba(15,23,42,.55);display:grid;place-items:center;z-index:20}.modal-card{width:min(760px,92vw);background:#fff;border-radius:14px;padding:24px}.modal-card label{display:block;margin:12px 0;font-weight:700;color:#344a68}.modal-card input,.modal-card textarea,.modal-card select{width:100%;border:1px solid #d8e1ef;border-radius:8px;padding:10px;margin-top:6px}.modal-card textarea{min-height:160px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 14px}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}canvas{width:100%;max-height:260px}@media(max-width:900px){.topbar{height:auto;align-items:flex-start;flex-wrap:wrap;padding:12px}nav{order:3;flex-basis:100%;overflow:auto}.metric-grid,.small-grid,.form-grid{grid-template-columns:1fr}.page-head{align-items:flex-start;flex-direction:column}main{padding:14px}}
.filter-combo,.date-range{position:relative}.combo-btn,#dateRangeBtn{min-width:128px;text-align:left;background:#fff}.combo-btn:after,#dateRangeBtn:after{content:"";float:right;margin-top:7px;border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid #486284}.combo-menu,.date-menu{position:absolute;top:calc(100% + 6px);left:0;z-index:30;background:#fff;border:1px solid #dbe5f1;border-radius:10px;box-shadow:0 18px 48px rgba(15,23,42,.14);padding:10px}.combo-menu{width:260px}.combo-menu input{width:100%;border:0;border-bottom:1px solid #2563eb;border-radius:0;padding:9px 6px;margin-bottom:8px}.combo-menu div{max-height:280px;overflow:auto;display:grid;gap:2px}.combo-menu button{border:0;border-radius:6px;text-align:left;color:#1f3f65;padding:8px 10px}.combo-menu button:hover,.combo-menu button.active{background:#eef5ff;color:#2255d6}.date-menu{width:720px;display:grid;grid-template-columns:104px 1fr;gap:16px;padding:16px}.date-presets{border-right:1px solid #e5edf7;padding-right:14px;display:grid;align-content:start;gap:4px}.date-presets button{border:0;text-align:left;border-radius:6px;padding:8px 10px}.date-presets button:hover{background:#eef5ff;color:#2255d6}.date-actions{grid-column:2;display:flex;justify-content:flex-end;gap:8px}.activity-filters{align-items:flex-start}.activity-filters select{height:39px}.total-row td{background:#eef5ff;border-top:1px solid #cfe0f5;color:#102a4c}.total-row td:first-child{text-align:right}@media(max-width:900px){.combo-menu,.date-menu{position:fixed;left:14px;right:14px;top:128px;width:auto}.date-menu{display:grid;grid-template-columns:1fr}.date-presets{grid-template-columns:repeat(2,1fr);border-right:0;border-bottom:1px solid #e5edf7;padding-right:0;padding-bottom:10px}.date-actions{grid-column:1}}
.range-calendar{grid-column:2}.calendar-nav{display:flex;align-items:center;justify-content:space-between;margin:0 0 12px}.calendar-nav strong{font-size:16px}.calendar-nav button{border:0;width:32px;height:32px;padding:0;font-size:22px;color:#001b44}.calendar-pair{display:grid;grid-template-columns:1fr 1fr;gap:16px}.calendar-month h3{display:none}.calendar-week,.calendar-days{display:grid;grid-template-columns:repeat(7,32px);justify-content:center;gap:4px}.calendar-week span{height:24px;text-align:center;color:#475569;font-size:13px}.calendar-day{width:32px;height:32px;padding:0;border:0;border-radius:8px;text-align:center;color:#0f172a}.calendar-day.muted{background:transparent}.calendar-day:hover{background:#eaf2ff}.calendar-day.in-range{background:#eaf2ff;color:#2255d6}.calendar-day.selected{background:#2255d6;color:#fff}@media(max-width:900px){.range-calendar{grid-column:1}.calendar-pair{grid-template-columns:1fr}.calendar-week,.calendar-days{grid-template-columns:repeat(7,minmax(28px,1fr))}.calendar-day{width:100%}}
.date-menu{max-width:calc(100vw - 28px)}@media(max-width:900px){.date-menu{grid-template-columns:88px minmax(0,1fr);gap:12px}.date-presets{grid-template-columns:1fr;border-right:1px solid #e5edf7;border-bottom:0;padding-right:10px;padding-bottom:0}.range-calendar{grid-column:2}.calendar-pair{grid-template-columns:1fr 1fr;gap:8px}.calendar-week,.calendar-days{grid-template-columns:repeat(7,24px);gap:3px}.calendar-day{width:24px;height:28px;border-radius:7px}.calendar-nav strong{font-size:14px}.date-actions{grid-column:2}}
.is-loading{opacity:.55;transition:opacity .12s ease}
