.error-boundary{z-index:9999;background:#10141c;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.error-boundary__card{color:#e6e9ef;text-align:center;background:#1b2230;border-radius:12px;width:100%;max-width:420px;padding:28px 24px}.error-boundary__title{margin-bottom:12px;font-size:18px;font-weight:600}.error-boundary__message{color:#98a2b3;word-break:break-all;margin-bottom:20px;font-size:13px;line-height:1.6}.error-boundary__retry{color:#fff;cursor:pointer;background:#2f6bff;border:none;border-radius:6px;padding:8px 32px;font-size:14px}.error-boundary__retry:active{opacity:.85}:root{--color-bg-primary:#0a0e17;--color-bg-secondary:#111827;--color-bg-card:#1a2332;--color-bg-hover:#1e293b;--color-bg-lazy:#0d1117;--color-border:#1e3a5f;--color-text-primary:#e2e8f0;--color-text-secondary:#94a3b8;--color-text-inverse:#fff;--color-accent:#00d4ff;--color-accent-rgb:0, 212, 255;--color-accent-dim:rgba(var(--color-accent-rgb), .15);--color-success:#10b981;--color-warning:#f59e0b;--color-danger:#ef4444;--color-orange:#f97316;--color-blue:#3b82f6;--color-gray:#6b7280;--color-popup-bg:#15151e;--color-nav-active:#82d1f6;--color-nav-center-bg:#1a3353;--color-nav-center-active-bg:linear-gradient(135deg, #0081dd, #034373);--color-nav-center-active-border:#101010;--header-height:56px;--tabbar-height:60px}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{width:100%;height:100%}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none;padding:0;line-height:normal}.ant-app{height:100%}body{background-color:var(--color-bg-primary);color:var(--color-text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;overflow:hidden}a{color:var(--color-accent);text-decoration:none}input,textarea,select{font-size:16px!important}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:3px}.app-header{height:var(--header-height);background:var(--color-bg-secondary);border-bottom:1px solid var(--color-border);z-index:100;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);align-items:center;padding:0 24px;display:flex;position:fixed;top:0;left:0;right:0}.app-header .logo{color:var(--color-accent);white-space:nowrap;align-items:center;gap:10px;margin-right:40px;font-size:18px;font-weight:700;display:flex}.app-header .logo-icon{font-size:24px}.app-header img.logo-icon{width:auto;height:28px}.app-header .ant-menu{line-height:var(--header-height)!important;background:0 0!important;border-bottom:none!important}.app-header .ant-menu-item{color:var(--color-text-secondary)!important}.app-header .ant-menu-item-selected,.app-header .ant-menu-item:hover{color:var(--color-accent)!important}.app-header .ant-menu-item:after{border-bottom-color:var(--color-accent)!important}.app-content{height:100%;overflow:hidden auto}.app-content--pc{padding-top:var(--header-height)}.app-content--mobile{padding-bottom:calc(var(--tabbar-height) + env(safe-area-inset-bottom,0px))}.app-content--mobile.app-content--no-tabbar{padding-bottom:0}.app-tabbar{height:calc(var(--tabbar-height) + env(safe-area-inset-bottom,0px));padding-bottom:env(safe-area-inset-bottom,0px);background:var(--color-bg-secondary);border-top:1px solid var(--color-border);z-index:100;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);position:fixed;bottom:0;left:0;right:0}.app-tabbar .adm-tab-bar{--adm-color-text:var(--color-text-secondary);--adm-color-primary:var(--color-accent);height:100%}.page-container{min-height:100%;padding:20px}.page-title{color:var(--color-text-primary);align-items:center;gap:8px;margin-bottom:20px;font-size:20px;font-weight:600;display:flex}.page-title:before{content:"";background:var(--color-accent);border-radius:2px;width:4px;height:20px;display:inline-block}.card{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:8px;margin-bottom:10px;padding:10px;transition:border-color .3s}.card:hover{border-color:var(--color-accent)}.card-title{color:var(--color-text-secondary);margin-bottom:8px;font-size:14px}.card-value{color:var(--color-text-primary);font-size:28px;font-weight:700}.grid{gap:16px;display:grid}.grid--2{grid-template-columns:repeat(2,1fr)}.grid--3{grid-template-columns:repeat(3,1fr)}.grid--4{grid-template-columns:repeat(4,1fr)}@media (width<=768px){.grid--3,.grid--4{grid-template-columns:repeat(2,1fr)}.page-container{padding:12px}}.route-lazy-fallback{height:100vh;color:var(--color-accent);background:var(--color-bg-lazy);justify-content:center;align-items:center;font-size:14px;display:flex}@media (width<=768px){.ant-picker-dropdown{max-width:calc(100vw - 16px)}.ant-picker-dropdown .ant-picker-panel-layout{flex-direction:column;max-width:calc(100vw - 16px)}.ant-picker-dropdown .ant-picker-panel-layout>div:not(.ant-picker-presets){flex-direction:column;align-items:center;display:flex}}.map-placeholder{background:radial-gradient(ellipse at center, rgba(var(--color-accent-rgb),.05) 0%, transparent 70%), linear-gradient(180deg, var(--color-bg-card) 0%, var(--color-bg-secondary) 100%);border:1px solid var(--color-border);width:100%;height:400px;color:var(--color-text-secondary);border-radius:8px;justify-content:center;align-items:center;font-size:14px;display:flex;position:relative;overflow:hidden}.map-placeholder:before{content:"";background-image:linear-gradient(rgba(var(--color-accent-rgb),.06) 1px, transparent 1px), linear-gradient(90deg, rgba(var(--color-accent-rgb),.06) 1px, transparent 1px);transform-origin:top;opacity:.6;background-size:40px 40px;position:absolute;inset:0;transform:perspective(500px)rotateX(45deg)}.list-item{background:var(--color-bg-card);border:1px solid var(--color-border);cursor:pointer;border-radius:8px;justify-content:space-between;align-items:center;margin-bottom:10px;padding:14px 16px;transition:all .2s;display:flex}.list-item:hover{border-color:var(--color-accent);background:var(--color-bg-hover)}.list-item-info{flex:1;min-width:0}.list-item-title{color:var(--color-text-primary);margin-bottom:4px;font-size:15px;font-weight:500}.list-item-desc{color:var(--color-text-secondary);font-size:12px}.list-item-status{white-space:nowrap;border-radius:4px;padding:4px 10px;font-size:13px}.list-item-status--active{background:var(--color-accent-dim);color:var(--color-accent)}.list-item-status--done{color:var(--color-success);background:#10b98126}.list-item-status--alarm{color:var(--color-danger);background:#ef444426}.status-dot{vertical-align:middle;border-radius:50%;width:8px;height:8px;margin-right:6px;display:inline-block}.status-dot--patrol{background:var(--color-success);box-shadow:0 0 6px var(--color-success);animation:2s infinite pulse}.status-dot--standby{background:var(--color-blue);box-shadow:0 0 6px var(--color-blue)}.status-dot--lowbat{background:var(--color-warning);box-shadow:0 0 6px var(--color-warning);animation:1.5s infinite pulse}.status-dot--offline{background:var(--color-gray)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.job-tag{white-space:nowrap;border-radius:4px;align-items:center;padding:1px 6px;font-size:10px;display:inline-flex}.job-tag--pending{color:var(--color-blue);border:1px solid var(--color-blue);background:#3b82f626}.job-tag--active{color:var(--color-success);border:1px solid var(--color-success);background:#10b98126;animation:2s infinite tagPulse}.job-tag--reserved{color:var(--color-text-secondary);border:1px solid var(--color-text-secondary);background:0 0}.job-tag--done{color:var(--color-gray);border:1px solid var(--color-gray);background:#6b728026}@keyframes tagPulse{0%,to{opacity:1}50%{opacity:.6}}.alarm-tag{white-space:nowrap;border-radius:4px;align-items:center;padding:3px 10px;font-size:12px;display:inline-flex}.alarm-tag--critical{color:var(--color-danger);border:1px solid var(--color-danger);background:#ef444426}.alarm-tag--major{color:var(--color-orange);border:1px solid var(--color-orange);background:#f9731626}.alarm-tag--normal{color:var(--color-blue);border:1px solid var(--color-blue);background:#3b82f626}.point-dot{vertical-align:middle;border-radius:50%;width:10px;height:10px;margin-right:6px;display:inline-block}.point-dot--ok{background:var(--color-success)}.point-dot--error{background:var(--color-danger);animation:1s infinite pulse}.point-dot--pending{background:var(--color-blue)}.empty-state{text-align:center;color:var(--color-text-secondary);padding:60px 20px}.empty-state__icon{opacity:.5;margin-bottom:16px;font-size:48px}.empty-state__text{font-size:14px;line-height:1.6}.empty-state__action{color:var(--color-accent);cursor:pointer;margin-top:16px;font-size:14px;text-decoration:underline}.detail-table{border-collapse:collapse;width:100%;font-size:13px}.detail-table thead th{background:var(--color-bg-secondary);color:var(--color-text-secondary);text-align:left;border-bottom:1px solid var(--color-border);white-space:nowrap;z-index:1;padding:10px 12px;font-weight:500;position:sticky;top:0}.detail-table tbody td{color:var(--color-text-primary);border-bottom:1px solid #1e3a5f80;padding:10px 12px}.detail-table tbody tr{cursor:pointer;transition:background .15s}.detail-table tbody tr:hover{background:var(--color-bg-hover)}.login-page{background:radial-gradient(ellipse at 30% 20%, rgba(var(--color-accent-rgb),.08) 0%, transparent 50%), radial-gradient(ellipse at 70% 80%, #10b9810f 0%, transparent 50%), var(--color-bg-primary);justify-content:center;align-items:center;height:100%;display:flex}.login-card{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:12px;width:400px;max-width:90vw;padding:40px 32px;box-shadow:0 8px 32px #0006}.login-card .login-title{text-align:center;color:var(--color-accent);justify-content:center;align-items:center;gap:8px;margin-bottom:8px;font-size:24px;font-weight:700;display:flex}.login-card .login-title__icon{object-fit:contain;width:28px;height:28px;display:block}.login-card .login-subtitle{text-align:center;color:var(--color-text-secondary);margin-bottom:32px;font-size:14px}.login-card .ant-input,.login-card .ant-input-password{background:var(--color-bg-secondary)!important;border-color:var(--color-border)!important;color:var(--color-text-primary)!important}.login-card .ant-input::placeholder{color:var(--color-text-secondary)!important}.login-card .ant-btn-primary{height:44px;font-weight:600;background:var(--color-accent)!important;border-color:var(--color-accent)!important;color:#0a0e17!important}.login-card .ant-btn-primary:hover{opacity:.85}.login-card input:-webkit-autofill{caret-color:var(--color-text-primary);transition:background-color 9999s ease-in-out;-webkit-box-shadow:0 0 0 1000px var(--color-bg-secondary) inset!important;-webkit-text-fill-color:var(--color-text-primary)!important}.login-card input:-webkit-autofill:hover{caret-color:var(--color-text-primary);transition:background-color 9999s ease-in-out;-webkit-box-shadow:0 0 0 1000px var(--color-bg-secondary) inset!important;-webkit-text-fill-color:var(--color-text-primary)!important}.login-card input:-webkit-autofill:focus{caret-color:var(--color-text-primary);transition:background-color 9999s ease-in-out;-webkit-box-shadow:0 0 0 1000px var(--color-bg-secondary) inset!important;-webkit-text-fill-color:var(--color-text-primary)!important}.hm-page-v2{width:100%;height:100%;position:relative;overflow:hidden}.patrol-detail-btn{bottom:calc(var(--tabbar-height,60px) + env(safe-area-inset-bottom,0px) + 36px);z-index:120;cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:0;transition:transform .2s,filter .2s;display:flex;position:fixed;left:50%;transform:translate(-50%)}.patrol-detail-btn:hover{filter:brightness(1.25);transform:translate(-50%)scale(1.05)}.patrol-detail-btn:active{transform:translate(-50%)scale(.95)}.patrol-detail-btn__icon{object-fit:contain;border-radius:10px;width:auto;height:46px;display:block}@media (width>=769px){.patrol-detail-btn{bottom:24px}.patrol-detail-btn__icon{height:52px}}.return-home-confirm-bar{bottom:calc(var(--tabbar-height,60px) + env(safe-area-inset-bottom,0px) + 28px);z-index:130;border:1px solid rgba(var(--color-accent-rgb), .35);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);white-space:nowrap;background:#0a0e17e0;border-radius:999px;align-items:center;gap:10px;padding:8px 10px 8px 16px;display:flex;position:fixed;left:50%;transform:translate(-50%);box-shadow:0 6px 24px #00000059}.return-home-confirm-bar__tip{color:#cbd5e1;font-size:12px;line-height:1}.return-home-confirm-bar__btn{cursor:pointer;border:none;border-radius:999px;padding:7px 22px;font-size:13px;font-weight:600;line-height:1;transition:filter .15s,opacity .15s}.return-home-confirm-bar__btn--execute{color:#04121e;background:#00d4ff}.return-home-confirm-bar__btn--execute:hover:not(:disabled){filter:brightness(1.12)}.return-home-confirm-bar__btn--cancel{color:#e2e8f0;background:#94a3b82e;border:1px solid #94a3b873}.return-home-confirm-bar__btn--cancel:hover:not(:disabled){filter:brightness(1.2)}.return-home-confirm-bar__btn:disabled{opacity:.5;cursor:not-allowed}@media (width>=769px){.return-home-confirm-bar{bottom:24px}}.map-legend{left:12px;bottom:calc(var(--tabbar-height,60px) + env(safe-area-inset-bottom,0px) + 16px);z-index:110;-webkit-backdrop-filter:blur(12px);background:#1a2332cc;border:1px solid #1e3a5f99;border-radius:10px;flex-direction:column;gap:2px;padding:5px 8px;display:flex;position:fixed}.map-legend__item{align-items:center;gap:6px;display:flex}.map-legend__dot{border-radius:50%;flex-shrink:0;width:8px;height:8px;display:inline-block}.map-legend__dot--ok{background:#3b82f6}.map-legend__dot--pending{background:#10b981}.map-legend__dot--error{background:#ef4444}.map-legend__line{border-radius:2px;flex-shrink:0;width:20px;height:3px;display:inline-block}.map-legend__line--done{background:#3b82f6}.map-legend__line--plan{background:#10b981}.map-legend__line--nav-line{background:#94a3b8}.map-legend__line--nav-auto{background:repeating-linear-gradient(90deg,#94a3b8 0 5px,#0000 5px 9px)}.map-legend__wave{color:#94a3b8;flex-shrink:0}.map-legend__text{color:#e2e8f0;white-space:nowrap;font-size:10px}@media (width>=769px){.map-legend{bottom:24px}}.gamepad-modal__grid{grid-template-columns:repeat(3,1fr);gap:8px;max-width:200px;margin:16px auto;display:grid}.gamepad-modal__dir-btn{color:#e2e8f0;cursor:pointer;background:#1a2332e6;border:1px solid #1e3a5fcc;border-radius:12px;justify-content:center;align-items:center;width:56px;height:56px;font-size:20px;transition:all .15s;display:flex}.gamepad-modal__dir-btn:hover{background:rgba(var(--color-accent-rgb), .15);border-color:#00d4ff}.gamepad-modal__dir-btn:active{transform:scale(.9)}.gamepad-modal__dir-btn--center{background:rgba(var(--color-accent-rgb), .1);border-color:rgba(var(--color-accent-rgb), .3);color:#00d4ff;font-size:12px}.bottom-nav{z-index:80;height:calc(60px + env(safe-area-inset-bottom,0px));padding-bottom:env(safe-area-inset-bottom,0px);-webkit-backdrop-filter:blur(16px);background:#0a0e17f2;border-top:1px solid #1e3a5f80;justify-content:space-around;align-items:flex-end;display:flex;position:fixed;bottom:0;left:0;right:0}.bottom-nav__item{cursor:pointer;color:var(--color-gray);background:0 0;border:none;flex-direction:column;flex:1;justify-content:center;align-items:center;min-width:48px;min-height:48px;padding:6px 0;transition:all .2s;display:flex;position:relative}.bottom-nav__item:hover{color:var(--color-text-secondary)}.bottom-nav__item--active,.bottom-nav__item--active:hover{color:var(--color-nav-active)}.bottom-nav__item--center{margin-top:-20px;position:relative}.bottom-nav__center-btn{background:var(--color-nav-center-bg);border:2px solid var(--color-border);border-radius:50%;flex-direction:column;justify-content:center;align-items:center;gap:2px;width:70px;height:70px;margin-bottom:9px;transition:all .25s;display:flex}.bottom-nav__center-btn--active{background:var(--color-nav-center-active-bg);border-color:var(--color-nav-center-active-border);transform:scale(1.05);box-shadow:0 4px 20px #007bff66}.bottom-nav__center-icon{object-fit:contain;width:28px;height:28px;display:block}.bottom-nav__icon{object-fit:contain;width:26px;height:26px;margin-bottom:2px;display:block}.bottom-nav__icon-wrap{width:26px;height:26px;margin-bottom:2px;display:block;position:relative}.bottom-nav__icon-wrap .bottom-nav__icon{margin-bottom:0}.bottom-nav__icon-battery{color:var(--color-text-inverse);letter-spacing:-.2px;font-variant-numeric:tabular-nums;pointer-events:none;white-space:nowrap;font-size:9px;font-weight:600;line-height:1;position:absolute;top:47%;left:50%;transform:translate(-50%,-50%)}.bottom-nav__item--active .bottom-nav__icon-battery{color:var(--color-nav-active)}.bottom-nav__label{white-space:nowrap;margin-top:2px;font-size:12px}.bottom-nav__label--center{color:var(--color-text-inverse);margin-top:0;font-size:11px;font-weight:600}
