aside{width:236px;flex:0 0 236px;background:#10233e;color:#b9c7d9;padding:28px 16px;display:flex;flex-direction:column}main{flex:1;min-width:0}:root{font-family:Inter,PingFang SC,Microsoft YaHei,sans-serif;color:#1d2939;background:#f5f7fb;font-size:14px}*{box-sizing:border-box}body{margin:0}.shell{display:flex;min-height:100vh}aside{width:236px;background:#10233e;color:#b9c7d9;padding:28px 16px;display:flex;flex-direction:column}.brand{display:flex;gap:11px;align-items:center;color:#fff;font-size:17px;font-weight:700;margin:0 10px 46px}.brand>span{background:#3b82f6;border-radius:10px;width:34px;height:34px;text-align:center;line-height:34px}.brand small{display:block;font-size:10px;font-weight:400;color:#8193ad;margin-top:4px}nav{display:grid;gap:8px}nav button,nav .disabled{border:0;background:transparent;color:#b9c7d9;text-align:left;padding:13px 14px;border-radius:8px;font-size:14px;cursor:pointer}nav button.active,nav button:hover{background:#1d4270;color:#fff}.disabled{opacity:.46;cursor:default!important}.disabled i{float:right;font-size:10px;font-style:normal;border:1px solid #63758e;border-radius:4px;padding:2px 4px}.user{margin-top:auto;border-top:1px solid #29415f;padding:20px 12px;color:#dce6f2}.user small{padding-left:23px;color:#8193ad}main{flex:1}header{height:72px;background:#fff;border-bottom:1px solid #e9edf3;padding:0 42px;display:flex;align-items:center;justify-content:space-between;color:#526175}.crumb{color:#9ba9b9}.avatar{width:32px;height:32px;border-radius:50%;background:#dbeafe;color:#2563eb;text-align:center;line-height:32px;font-weight:700}.content{max-width:1160px;margin:0 auto;padding:40px 46px}.hero{background:linear-gradient(110deg,#dceafe,#f3f8ff);border-radius:16px;padding:34px 42px;display:flex;justify-content:space-between;align-items:center}.eyebrow{font-size:11px;letter-spacing:1.7px;color:#4e86d8;font-weight:700;margin:0 0 8px}.hero h1,.page-heading h1{font-size:28px;margin:0 0 10px;color:#162a44}.hero p:not(.eyebrow),.page-heading p:not(.eyebrow){color:#66768b;margin:0}.hero-icon{font-size:100px;color:#5f9af0;opacity:.5}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin:24px 0}.stats>div{background:#fff;border:1px solid #e9edf3;border-radius:12px;padding:20px 24px}.stats small,.stats span{display:block;color:#7d8b9d}.stats strong{font-size:30px;display:block;margin:10px 0 5px;color:#203a60}.section-title h2{font-size:18px;margin:30px 0 14px}.cards{display:grid;grid-template-columns:1fr 1fr;gap:18px}.cards button{background:#fff;border:1px solid #e9edf3;border-radius:12px;padding:22px;display:flex;align-items:center;text-align:left;gap:14px;color:#92a0af;font-size:24px;cursor:pointer}.cards b{background:#e9f2ff;color:#327ce1;border-radius:10px;padding:14px;font-weight:400}.cards b.orange{background:#fff1e6;color:#ed8a36}.cards span{flex:1}.cards strong,.cards small{display:block}.cards strong{font-size:16px;color:#20314a;margin-bottom:6px}.cards small{font-size:12px;color:#8996a6}.notice,.success{padding:14px 18px;border-radius:8px;margin:22px 0}.notice{background:#fff8e8;color:#8b6a2d}.notice b{margin-right:14px}.success{background:#ecfdf3;color:#168348}.page-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:26px}.primary{background:#347eea;border:0;color:#fff;border-radius:7px;padding:11px 17px;cursor:pointer;font-size:14px}.toolbar{background:#fff;padding:17px;border:1px solid #e9edf3;border-radius:10px;display:flex;gap:10px;align-items:center;margin-bottom:18px}.toolbar input{width:340px}.toolbar button,.actions button:not(.primary){border:1px solid #d7e0ea;background:#fff;border-radius:7px;padding:10px 18px;cursor:pointer}.toolbar span{color:#9aa7b6;font-size:12px;margin-left:auto}.table-wrap,.form-card{background:#fff;border:1px solid #e9edf3;border-radius:10px;overflow:hidden}table{width:100%;border-collapse:collapse}th,td{padding:16px 20px;text-align:left;border-bottom:1px solid #edf0f4}th{font-size:12px;color:#7c8998;background:#fbfcfe}td b{color:#245fae}td em{font-style:normal;background:#eaf8ef;color:#168348;border-radius:12px;padding:4px 10px;font-size:12px}.empty{text-align:center;color:#9aa7b6;padding:50px}.form-card{padding:28px 32px;max-width:900px}.form-card h2{font-size:16px;margin:0 0 18px;padding-bottom:14px;border-bottom:1px solid #edf0f4}.form-card h2:not(:first-child){margin-top:30px}.form-card h2 small{color:#a0acb9;font-size:12px;font-weight:400;margin-left:8px}.form-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.form-card label{display:block;color:#66768b;font-size:12px}.form-card input,.form-card select,.toolbar input{display:block;width:100%;border:1px solid #dbe3ec;border-radius:6px;padding:10px 12px;margin-top:7px;font-size:14px;color:#1d2939;background:#fff}.item-row{display:grid;grid-template-columns:1.5fr 1fr 1fr auto;gap:12px;align-items:end;margin-bottom:13px}.link{border:0;background:transparent;color:#d65d5d;padding:10px;cursor:pointer}.add{border:1px dashed #9dbbe5;background:#f6faff;color:#3175c9;padding:10px 16px;border-radius:6px;cursor:pointer}.other-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.other-grid label span{display:block;margin-top:11px}.actions{border-top:1px solid #edf0f4;margin-top:30px;padding-top:20px;display:flex;gap:10px}.detail-link{border:0;background:transparent;color:#3175c9;cursor:pointer;padding:4px 0}.detail-row td{background:#f8fbff;padding:20px 24px}.detail-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.detail-grid small,.detail-grid strong{display:block}.detail-grid small{color:#8996a6;font-size:11px;margin-bottom:5px}.detail-grid strong{font-size:13px;color:#263b56;font-weight:500}.search-field{min-width:180px}.search-field label{display:block;color:#66768b;font-size:12px;margin-bottom:6px}.search-field input{width:180px!important;margin:0}.clear-button{border:1px solid #d7e0ea;background:#fff;border-radius:7px;padding:10px 18px;cursor:pointer}.toolbar{align-items:end}.green{background:#e7f8ef!important;color:#24965a!important}.summary-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-bottom:24px}.summary-stats>div{background:#fff;border:1px solid #e9edf3;border-radius:12px;padding:20px 24px}.summary-stats small,.summary-stats span{display:block;color:#7d8b9d}.summary-stats strong{display:block;font-size:30px;color:#203a60;margin:10px 0 5px}.summary-columns{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-bottom:18px}.summary-panel{background:#fff;border:1px solid #e9edf3;border-radius:10px;overflow:hidden}.summary-panel h2{font-size:16px;margin:0;padding:20px;border-bottom:1px solid #edf0f4}.summary-panel table{font-size:13px}.summary-panel th,.summary-panel td{padding:13px 16px}.recent-panel{margin-bottom:24px}.item-row{grid-template-columns:1.3fr .8fr .8fr 1.6fr auto}.note-field{min-width:180px}.date-filter{display:flex;align-items:end;gap:12px;background:#fff;border:1px solid #e9edf3;border-radius:10px;padding:16px 18px;margin-bottom:20px}.date-filter label{color:#66768b;font-size:12px}.date-filter input{display:block;border:1px solid #dbe3ec;border-radius:6px;padding:9px 12px;margin-top:6px;color:#1d2939}.date-filter>span{color:#8996a6;padding-bottom:10px}.date-filter button{border:1px solid #d7e0ea;background:#fff;border-radius:7px;padding:9px 15px;cursor:pointer}.validation{padding:12px 16px;border-radius:8px;margin:18px 0;background:#fff0f0;color:#c24141;border:1px solid #f5c2c2}.other-grid .activity-invalid input{border-color:#e56a6a;background:#fff8f8}.other-grid em{display:block;color:#a26868;font-size:11px;font-style:normal;margin-top:8px}.unit-filter{display:flex;align-items:center;gap:10px;flex-wrap:wrap;border-left:1px solid #edf0f4;padding-left:16px;margin-left:4px}.unit-filter>span{color:#66768b;font-size:12px}.unit-filter label{color:#526175;font-size:12px;white-space:nowrap}.unit-filter input{display:inline-block;margin:0 4px 0 0;vertical-align:middle;width:auto}.delete-link{border:0;background:transparent;color:#d64d4d;cursor:pointer;padding:4px 0}.delete-link:hover{text-decoration:underline}.wide-table{overflow-x:auto;width:100%}.wide-table table{min-width:1900px}.wide-table th,.wide-table td{white-space:nowrap;vertical-align:top}.wide-table th small{display:block;color:#a0acb9;font-size:10px;font-weight:400;margin-top:4px}.permission-note{color:#9a6d31;background:#fff8e8;border:1px solid #f1d79e;border-radius:7px;padding:10px 14px}.heading-actions{display:flex;gap:10px;align-items:center}.heading-actions>button:not(.primary){border:1px solid #d7e0ea;background:#fff;border-radius:7px;padding:10px 15px;cursor:pointer}.date-shortcuts{display:flex;gap:6px;padding-bottom:1px}.date-shortcuts button{border:1px solid #d7e0ea;background:#f8fbff;color:#3175c9;border-radius:6px;padding:8px 10px;cursor:pointer;font-size:12px}.date-shortcuts button:hover{background:#eaf2ff}.smart-date-dom{position:relative;display:block}.smart-date-trigger-dom{width:100%;border:1px solid #dbe3ec;border-radius:6px;background:#fff;color:#1d2939;text-align:left;padding:10px 12px;font-size:14px;cursor:pointer}.smart-date-trigger-dom:after{content:"▾";float:right;color:#8795a6}.smart-date-native-input{position:absolute!important;width:1px!important;height:1px!important;opacity:0!important;pointer-events:none!important}.smart-date-popover-dom{position:absolute;z-index:20;top:calc(100% + 6px);left:0;width:280px;background:#fff;border:1px solid #dbe3ec;border-radius:10px;box-shadow:0 12px 30px #142d502e;padding:12px}.smart-date-selects-dom{display:grid;grid-template-columns:1fr 1fr;gap:8px}.smart-date-selects-dom select{height:36px;border:1px solid #dbe3ec;border-radius:6px;padding:0 8px}.smart-date-days-dom{display:grid;grid-template-columns:repeat(7,1fr);gap:5px;margin:12px 0}.smart-date-days-dom button{border:0;background:#f5f8fc;border-radius:5px;padding:7px 0;cursor:pointer}.smart-date-days-dom button:hover,.smart-date-days-dom button.selected{background:#347eea;color:#fff}.smart-date-today-dom{border:1px solid #d7e0ea;background:#fff;color:#3175c9;border-radius:6px;padding:7px 12px;cursor:pointer}.item-row>select{height:39px;line-height:19px}.form-grid select{height:39px;line-height:19px}.smart-date-calendar-header{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:9px}.smart-date-calendar-header .smart-date-selects-dom{flex:1}.smart-date-arrow{display:flex;align-items:center;justify-content:center;border:0;background:#f5f8fc;color:#3175c9;border-radius:5px;width:30px;height:30px;padding:0;font-size:22px;line-height:1;cursor:pointer}.smart-date-weekdays{display:grid;grid-template-columns:repeat(7,1fr);gap:5px;color:#8996a6;font-size:11px;text-align:center}.smart-date-weekdays span{padding:3px 0}.form-grid .smart-date-dom{margin-top:7px;width:100%}.form-grid .smart-date-trigger-dom,.date-filter .smart-date-trigger-dom{height:39px;line-height:19px;box-sizing:border-box}.date-filter .smart-date-dom{display:block;min-width:150px;margin-top:6px}.date-filter .smart-date-trigger-dom{padding:9px 12px}.smart-date-trigger-dom{box-sizing:border-box;line-height:19px}.date-filter{display:flex;flex-wrap:wrap;align-items:end;column-gap:12px;row-gap:14px}.date-filter>.unit-filter{flex-basis:100%;border-left:0;border-top:1px solid #edf0f4;padding:14px 0 0;margin:0;gap:8px}.unit-filter>span{font-weight:600;margin-right:4px}.unit-filter label{background:#f8fbff;border:1px solid #dbe6f2;border-radius:6px;padding:7px 10px;cursor:pointer;transition:.15s}.unit-filter label:hover{border-color:#8db5e8;background:#eef6ff}.unit-filter input{accent-color:#347eea}.auth-panel{position:fixed;right:28px;top:19px;z-index:50}.account-button{width:34px;height:34px;border:0;border-radius:50%;background:#dbeafe;color:#2563eb;font-weight:700;cursor:pointer;box-shadow:0 2px 7px #2563eb2e}.account-menu{position:absolute;right:0;top:42px;min-width:150px;background:#fff;border:1px solid #dbe3ec;border-radius:8px;padding:7px;box-shadow:0 10px 24px #142d5029}.account-menu button{display:block;width:100%;border:0;background:#fff;text-align:left;padding:9px 10px;border-radius:5px;color:#526175;cursor:pointer}.account-menu button:hover{background:#f3f7fc}.account-name{padding:8px 10px;border-bottom:1px solid #edf0f4;color:#263b56;font-weight:600}.account-name small{display:block;color:#8996a6;font-weight:400;font-size:11px;margin-top:3px}.auth-modal{position:fixed;top:0;right:0;bottom:0;left:0;background:#10233e47;display:flex;align-items:center;justify-content:center;z-index:60}.auth-modal form,.user-modal{width:360px;background:#fff;border-radius:12px;padding:24px;box-shadow:0 18px 55px #10233e40}.auth-modal h2{margin:0 0 18px;color:#1d3552}.auth-modal form>input,.user-form>input{display:block;width:100%;border:1px solid #dbe3ec;border-radius:6px;padding:10px 12px;margin:10px 0;font-size:14px}.auth-hint{font-size:12px;color:#8996a6}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}.modal-actions button{border:1px solid #d7e0ea;background:#fff;border-radius:6px;padding:7px 10px;color:#526175;cursor:pointer}.user-modal{width:min(720px,calc(100vw - 32px));max-height:80vh;overflow:auto}.modal-title{display:flex;justify-content:space-between;align-items:center}.modal-title button{border:0;background:transparent;font-size:22px;color:#8996a6;cursor:pointer}.user-form{width:auto!important;padding:0!important;box-shadow:none!important}.user-units{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 18px;color:#526175;font-size:12px}.user-units label{border:1px solid #dbe6f2;background:#f8fbff;border-radius:6px;padding:7px 9px}.user-list{border-top:1px solid #edf0f4;margin-top:20px}.user-list>div{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:12px 0;border-bottom:1px solid #edf0f4;color:#263b56}.user-list small{color:#8996a6;font-weight:400}.avatar{display:none}.account-button{min-width:72px!important;height:40px!important;border-radius:20px!important;background:#347eea!important;color:#fff!important;border:1px solid #6ea4e5!important;font-size:0!important;box-shadow:0 3px 10px #2563eb40!important}.account-button:after{content:"登录";font-size:14px}.logged-user .account-button{min-width:82px!important;width:auto!important;border-radius:20px!important;background:#dbeafe!important;color:#2563eb!important;border-color:#b8d4f7!important}.logged-user .account-button:after{content:var(--account-name,"用户");font-size:13px}body:not(.admin-user) .page-heading>.primary{display:none}body:not(.admin-user) .permission-note{display:none}.cards b.heat{background:#f3e8ff;color:#7e22ce}.heatmap-page{max-width:1320px}.heatmap-upload{display:flex;align-items:center;gap:10px}.heatmap-upload select{height:39px;border:1px solid #d7e0ea;background:#fff;border-radius:7px;padding:0 12px;color:#526175}.heatmap-filter-panel{background:#fff;border:1px solid #e3e9f1;border-radius:12px;padding:18px 20px;margin-bottom:18px;display:flex;flex-wrap:wrap;align-items:end;gap:20px;box-shadow:0 6px 18px #1f36580a}.heatmap-type-filter{display:flex;align-items:center;gap:9px}.heatmap-type-filter>span{color:#66768b;font-size:12px;font-weight:600;margin-right:2px}.heatmap-type{height:39px;border:1px solid #d9e1eb;background:#f8fafc;color:#657489;border-radius:8px;padding:0 12px;display:flex;align-items:center;gap:7px;cursor:pointer}.heatmap-type i{width:10px;height:10px;border-radius:50%;background:#aab4c2}.heatmap-type b{min-width:22px;border-radius:11px;padding:2px 6px;background:#e7ecf2;color:#627187;font-size:11px}.heatmap-type.selected{background:#fff;border-color:#9eb7d7;color:#263b56;box-shadow:0 3px 9px #263b5614}.heatmap-type.violation.selected i{background:#ef4444;box-shadow:0 0 0 4px #fee2e2}.heatmap-type.violation.selected b{background:#fee2e2;color:#b91c1c}.heatmap-type.accident.selected i{background:#2563eb;box-shadow:0 0 0 4px #dbeafe}.heatmap-type.accident.selected b{background:#dbeafe;color:#1d4ed8}.accident-responsibility-filter{display:flex;align-items:center;gap:10px;border-left:1px solid #e8edf3;padding-left:20px}.accident-responsibility-filter>span{color:#53657b;font-size:12px;font-weight:600}.accident-responsibility-filter>span small,.heatmap-date-caption small{display:block;color:#9aa7b6;font-size:10px;font-weight:400;margin-top:2px}.accident-responsibility-filter>div{display:flex;gap:7px}.accident-responsibility-filter button{height:39px;border:1px solid #dbe3ee;background:#f8fafc;border-radius:8px;padding:0 11px;color:#66768b;cursor:pointer}.accident-responsibility-filter button b{font-size:10px;margin-left:4px;background:#e8eef8;color:#58739a;padding:2px 5px;border-radius:9px}.accident-responsibility-filter button.selected{background:#eef5ff;border-color:#8eb3e9;color:#1f5faf;box-shadow:0 3px 9px #2563eb1a}.accident-responsibility-filter button.selected b{background:#dbeafe;color:#1d4ed8}.accident-responsibility-filter.disabled{opacity:.45}.accident-responsibility-filter button:disabled{cursor:not-allowed}.heatmap-date-filter{width:100%;display:flex;align-items:end;gap:10px;flex-wrap:wrap;border-top:1px solid #e8edf3;padding-top:15px}.heatmap-date-caption{align-self:center;min-width:146px;color:#53657b;font-size:12px;font-weight:600}.heatmap-date-filter>label{font-size:12px;color:#66768b}.heatmap-date-filter>label>input{display:block;width:150px;height:39px;border:1px solid #dbe3ec;border-radius:6px;padding:0 10px;margin-top:6px;color:#1d2939;background:#fff}.heatmap-date-filter>span{padding-bottom:11px;color:#9aa7b6}.heatmap-date-filter .date-shortcuts{padding-bottom:0}.heatmap-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:18px}.heatmap-summary>div{background:#fff;border:1px solid #e5eaf1;border-radius:11px;padding:16px 20px}.heatmap-summary small,.heatmap-summary span{display:block;color:#8491a3}.heatmap-summary strong{display:block;font-size:26px;color:#203a60;margin:7px 0 3px}.heatmap-summary strong.violation-number{color:#dc4a32}.heatmap-summary strong.accident-number{color:#2563eb}.heatmap-map-card{height:590px;position:relative;background:#dfe8ef;border:1px solid #dce4ed;border-radius:14px;overflow:hidden;box-shadow:0 10px 30px #18304e1a;margin-bottom:20px}.heatmap-map{width:100%;height:100%;z-index:1}.heatmap-legend{position:absolute;z-index:5;left:18px;bottom:18px;display:flex;align-items:center;gap:14px;background:#fffffff0;border:1px solid rgba(215,224,234,.9);border-radius:9px;padding:10px 13px;box-shadow:0 5px 15px #192d461f}.heatmap-legend span{display:flex;align-items:center;gap:6px;color:#40526a;font-size:12px}.heatmap-legend i{width:11px;height:11px;border-radius:50%}.violation-dot{background:#ef4444;box-shadow:0 0 0 4px #fb923c38}.accident-dot{background:#2563eb;box-shadow:0 0 0 4px #60a5fa38}.heatmap-legend small{color:#8996a6;border-left:1px solid #dfe5ec;padding-left:12px}.map-loading{position:absolute;z-index:6;top:16px;left:50%;transform:translate(-50%);background:#10233ee0;color:#fff;border-radius:18px;padding:8px 15px;font-size:12px;box-shadow:0 5px 15px #10233e33}.amap-hotspot-popup{min-width:130px;padding:2px 0;color:#34465d}.amap-hotspot-popup strong{display:block;margin-bottom:5px}.amap-hotspot-popup div{font-size:12px;color:#68788c}.heatmap-query-button{height:39px;border:0;border-radius:7px;background:#347eea;color:#fff;padding:0 21px;font-weight:600;box-shadow:0 3px 9px #347eea33;cursor:pointer}.heatmap-query-button:hover{background:#286dce}.hotspot-key-notice{margin:-3px 0 16px;border:1px solid #f0dca6;background:#fffaf0;color:#8a6519;border-radius:9px;padding:11px 14px;font-size:12px}.hotspot-rankings{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-bottom:24px}.hotspot-ranking-card{background:#fff;border:1px solid #e2e8f0;border-radius:13px;overflow:hidden;box-shadow:0 7px 22px #1c314d0f}.hotspot-ranking-heading{display:flex;align-items:center;justify-content:space-between;padding:18px 20px 14px;border-bottom:1px solid #edf1f5}.hotspot-ranking-heading span{display:block;color:#b65b42;font-size:9px;letter-spacing:1.2px;font-weight:700;margin-bottom:4px}.hotspot-ranking-card.accident .hotspot-ranking-heading span{color:#477bc5}.hotspot-ranking-heading h2{font-size:17px;margin:0;color:#263b56}.hotspot-ranking-heading>small{font-size:10px;color:#8d9aab;background:#f4f7fa;border-radius:12px;padding:5px 8px}.hotspot-ranking-card ol{list-style:none;margin:0;padding:6px 0}.hotspot-ranking-card li{margin:0;padding:0 10px}.hotspot-ranking-card li+li{border-top:1px solid #f0f3f6}.hotspot-ranking-card li button{width:100%;min-height:62px;border:0;background:#fff;padding:9px 8px;display:grid;grid-template-columns:29px minmax(0,1fr) auto 18px;align-items:center;gap:9px;text-align:left;cursor:pointer;border-radius:7px}.hotspot-ranking-card li button:hover{background:#fff8f5}.hotspot-ranking-card.accident li button:hover{background:#f5f9ff}.hotspot-ranking-card li button>b{width:25px;height:25px;display:grid;place-items:center;border-radius:50%;background:#fff0e9;color:#c35332;font-size:11px}.hotspot-ranking-card.accident li button>b{background:#eaf2ff;color:#2864b8}.hotspot-ranking-card li button>span{min-width:0}.hotspot-ranking-card li button>span strong,.hotspot-ranking-card li button>span small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hotspot-ranking-card li button>span strong{font-size:13px;color:#34465d;margin-bottom:4px}.hotspot-ranking-card li button>span small{font-size:10px;color:#98a4b3}.hotspot-ranking-card li button>em{font-style:normal;font-weight:700;color:#d64d31;font-size:17px;white-space:nowrap}.hotspot-ranking-card.accident li button>em{color:#2563b8}.hotspot-ranking-card li button>em small{font-size:10px;font-weight:400;margin-left:2px}.hotspot-ranking-card li button>i{font-style:normal;color:#9aa7b7;font-size:16px}.hotspot-empty{padding:30px 18px!important;text-align:center;color:#95a1b0;font-size:12px;border:0!important}@media(max-width:900px){aside{width:200px;flex-basis:200px}.content{padding:28px 24px}.heatmap-filter-panel{align-items:stretch}.accident-responsibility-filter{border-left:0;padding-left:0}.heatmap-date-filter{padding:14px 0 0;width:100%}.heatmap-map-card{height:520px}.heatmap-legend small{display:none}.hotspot-rankings{grid-template-columns:1fr}}@media(max-width:680px){.shell{display:block}aside{width:100%;min-height:auto;padding:14px}.brand{margin:0 4px 14px}nav{display:flex;overflow-x:auto}nav button{white-space:nowrap}.user{display:none}header{padding:0 18px}.content{padding:22px 14px}.page-heading{align-items:flex-start;gap:16px}.heatmap-upload{flex-direction:column;align-items:stretch}.heatmap-summary{grid-template-columns:1fr}.heatmap-type-filter{flex-wrap:wrap}.heatmap-type-filter>span{width:100%}.accident-responsibility-filter{width:100%;flex-wrap:wrap}.accident-responsibility-filter>span{width:100%}.accident-responsibility-filter>div{width:100%}.accident-responsibility-filter button{flex:1}.heatmap-date-caption{width:100%}.heatmap-date-filter>label{flex:1;min-width:130px}.heatmap-date-filter>label>input{width:100%}.heatmap-query-button{flex:1;min-width:78px}.heatmap-map-card{height:460px}.heatmap-legend{right:12px;left:12px;bottom:12px;justify-content:center}.auth-panel{right:16px}.stats,.summary-stats,.summary-columns,.form-grid,.other-grid,.cards{grid-template-columns:1fr}}.cards b.parking{background:#e8f7f1;color:#0f9f72}.parking-page{max-width:1320px}.parking-total{display:flex;align-items:baseline;gap:8px;border:1px solid #dce6f0;background:#fff;border-radius:12px;padding:13px 18px;box-shadow:0 6px 18px #1f36580d}.parking-total strong{font-size:28px;color:#245da8}.parking-total span{color:#77869a;font-size:12px}.parking-unit-filter{display:flex;flex-wrap:wrap;align-items:center;gap:9px;background:#fff;border:1px solid #e2e8f0;border-radius:12px;padding:14px 16px;margin-bottom:18px;box-shadow:0 6px 18px #1f36580a}.parking-unit-filter>span{color:#64748b;font-size:12px;font-weight:600;margin-right:3px}.parking-unit-filter button{height:36px;display:flex;align-items:center;gap:7px;border:1px solid #dce4ed;background:#f8fafc;color:#64748b;border-radius:18px;padding:0 12px;cursor:pointer}.parking-unit-filter button:hover{background:#f1f6fb}.parking-unit-filter button.selected{border-color:#9fb8d8;background:#edf5ff;color:#245da8;box-shadow:0 3px 9px #255da81a}.parking-unit-filter button i{width:9px;height:9px;border-radius:50%;background:var(--unit-color,#3b82f6);box-shadow:0 0 0 3px #3b82f621}.parking-unit-filter button b{min-width:21px;border-radius:10px;background:#e6edf5;color:#61738a;padding:1px 6px;font-size:10px}.parking-unit-filter button.selected b{background:#d8e9ff;color:#245da8}.parking-map-card{height:650px;position:relative;background:#dfe8ef;border:1px solid #dce4ed;border-radius:14px;overflow:hidden;box-shadow:0 10px 30px #18304e1a;margin-bottom:16px}.parking-map{width:100%;height:100%;z-index:1}.parking-marker{position:relative;display:flex;justify-content:center;align-items:center;cursor:pointer;filter:drop-shadow(0 3px 4px rgba(26,48,74,.26))}.parking-marker-pin{position:relative;min-width:48px;max-width:150px;height:28px;display:flex;align-items:center;justify-content:center;padding:0 9px;background:var(--parking-color,#2563eb);color:#fff;border:2px solid #fff;border-radius:15px;font-size:11px;font-weight:700;line-height:1;white-space:nowrap;box-sizing:border-box;transition:transform .18s ease,filter .18s ease}.parking-marker-pin:after{content:"";position:absolute;left:50%;bottom:-7px;transform:translate(-50%);width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:7px solid var(--parking-color,#2563eb)}.parking-marker:hover .parking-marker-pin,.parking-marker.selected .parking-marker-pin{transform:scale(1.08);filter:brightness(1.05)}.parking-marker>b{position:absolute;right:-9px;top:-8px;display:grid;place-items:center;min-width:19px;height:19px;padding:0 4px;border:2px solid #fff;border-radius:10px;background:#ef4444;color:#fff;font-size:10px;line-height:1}.parking-map-legend{position:absolute;z-index:5;left:18px;bottom:18px;display:flex;align-items:center;gap:11px;background:#fffffff2;border:1px solid rgba(215,224,234,.9);border-radius:9px;padding:10px 13px;box-shadow:0 5px 15px #192d461f}.parking-map-legend span{display:flex;align-items:center;gap:7px;color:#40526a;font-size:12px}.parking-map-legend i{width:10px;height:10px;border-radius:50%;background:#2563eb;box-shadow:0 0 0 4px #2563eb24}.parking-map-legend small{color:#8996a6;border-left:1px solid #dfe5ec;padding-left:11px}.parking-detail-panel{position:absolute;z-index:8;top:14px;right:14px;bottom:14px;width:370px;max-width:calc(100% - 28px);display:flex;flex-direction:column;background:#fffffff7;border:1px solid #d8e2ed;border-radius:13px;box-shadow:0 16px 36px #192d4638;overflow:hidden;animation:parking-panel-in .18s ease-out}@keyframes parking-panel-in{0%{opacity:0;transform:translate(14px)}to{opacity:1;transform:translate(0)}}.parking-detail-close{position:absolute;z-index:2;right:13px;top:13px;width:30px;height:30px;border:0;border-radius:15px;background:#edf2f7;color:#58708c;font-size:21px;line-height:1;cursor:pointer}.parking-detail-close:hover{background:#e2e9f1}.parking-detail-heading{padding:22px 52px 14px 20px;border-bottom:1px solid #e9eef3}.parking-detail-heading small{color:#2d70c3;font-size:10px;font-weight:700;letter-spacing:.7px}.parking-detail-heading h2{margin:5px 0 0;color:#263b56;font-size:19px}.parking-detail-scroll{flex:1;overflow:auto;padding:14px}.parking-detail-card{border:1px solid #e1e8f0;background:#fff;border-radius:10px;padding:15px}.parking-detail-card+.parking-detail-card{margin-top:12px}.parking-detail-title{display:flex;align-items:center;gap:10px;margin-bottom:13px}.parking-detail-title>span{width:34px;height:34px;display:grid;place-items:center;border-radius:9px;color:#fff;font-size:13px;font-weight:800}.parking-detail-title h3{margin:0;color:#283d58;font-size:15px}.parking-detail-title small{color:#8491a3;font-size:10px}.parking-detail-card dl{margin:0}.parking-detail-card dl>div{display:grid;grid-template-columns:64px 1fr;gap:8px;padding:8px 0;border-top:1px solid #f0f3f6}.parking-detail-card dt{color:#8b98a9;font-size:11px}.parking-detail-card dd{margin:0;color:#40526a;font-size:12px;line-height:1.55;word-break:break-all}.parking-resource-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:12px}.parking-resource-grid>div{background:#f5f8fb;border-radius:8px;padding:11px}.parking-resource-grid small,.parking-resource-grid strong{display:block}.parking-resource-grid small{color:#8593a5;font-size:10px}.parking-resource-grid strong{color:#54708f;font-size:14px;margin-top:4px}.parking-extra-detail{display:flex;justify-content:space-between;gap:10px;padding:9px 2px;border-bottom:1px solid #eef2f5;color:#6f7f92;font-size:11px}.parking-extra-detail b{color:#3d526c}.parking-detail-hint{margin:0;padding:11px 15px;background:#f7f9fc;border-top:1px solid #e5ebf1;color:#8795a6;font-size:10px;line-height:1.45}.parking-note{display:flex;gap:12px;align-items:flex-start;background:#fffaf0;border:1px solid #f0dfb9;border-radius:9px;padding:11px 14px;color:#82682f;font-size:11px;line-height:1.6}.parking-note b{white-space:nowrap}.parking-note span{color:#8a7751}@media(max-width:900px){.parking-map-card{height:560px}.parking-map-legend small{display:none}.parking-detail-panel{width:340px}}@media(max-width:680px){.parking-total{padding:9px 13px}.parking-total strong{font-size:23px}.parking-unit-filter{align-items:flex-start}.parking-unit-filter>span{width:100%}.parking-map-card{height:520px}.parking-map-legend{right:12px;left:12px;bottom:12px;justify-content:center}.parking-detail-panel{top:auto;right:10px;bottom:10px;left:10px;width:auto;max-height:72%}.parking-resource-grid{grid-template-columns:1fr}.parking-note{display:block}.parking-note b{display:block;margin-bottom:3px}}.shell main{display:flex;flex-direction:column}.shell main>.content{width:100%}.site-footer{margin-top:auto;border-top:1px solid #e5eaf1;padding:18px 24px 22px;text-align:center;color:#8693a3;font-size:12px}.filing-links{display:flex;align-items:center;justify-content:center;gap:12px;flex-wrap:wrap}.site-footer a{color:inherit;text-decoration:none}.site-footer a:hover{color:#347eea;text-decoration:underline}.police-filing{display:inline-flex;align-items:center;gap:6px}.police-filing img{display:block;width:18px;height:20px;object-fit:contain}.filing-separator{color:#c5cdd7}@media(max-width:460px){.filing-links{gap:8px 14px}.filing-separator{display:none}}
