:root{color-scheme:light dark;--bg: #0f1419;--panel: #1a2332;--panel-2: #243044;--text: #e8eef7;--muted: #9aabbf;--accent: #3b9eff;--ok: #3dd68c;--warn: #f5a524;--crit: #f31260;--info: #66d1ff;--border: rgba(255, 255, 255, .08);--shadow: 0 8px 32px rgba(0, 0, 0, .35);font-family:Segoe UI,system-ui,-apple-system,sans-serif}[data-theme=light]{--bg: #f4f7fb;--panel: #ffffff;--panel-2: #eef3f9;--text: #142033;--muted: #5b6b7f;--border: rgba(15, 30, 50, .1);--shadow: 0 8px 28px rgba(20, 40, 70, .12)}*{box-sizing:border-box}html,body,#root{margin:0;height:100%;height:100dvh;background:var(--bg);color:var(--text)}html{overflow:hidden}body:has(.login-page){overflow:auto;height:auto;min-height:100dvh}body.sheet-body-lock{overflow:hidden;touch-action:none}button,input,select,textarea{font:inherit}.app{display:grid;grid-template-columns:360px 1fr;height:100%;height:100dvh;max-height:100dvh;overflow:hidden}.app>.map-wrap{order:2}.app>.sidebar{order:1}.sidebar{background:var(--panel);border-right:1px solid var(--border);display:flex;flex-direction:column;min-height:0;z-index:2;max-height:100%}.sheet-grabber-row,.sheet-backdrop,.mobile-menu-fab{display:none}.sidebar-header{padding:12px 16px;border-bottom:1px solid var(--border)}.brand-logo-wrap{display:flex;justify-content:center;align-items:center;margin-bottom:10px}.brand-logo{display:block;width:auto;height:auto;object-fit:contain;background:transparent}.brand-logo-login{max-width:min(280px,100%);max-height:160px}.brand-logo-sidebar{max-width:220px;max-height:96px}.toolbar{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--border);background:var(--panel-2);color:var(--text);border-radius:10px;padding:8px 12px;cursor:pointer;transition:.15s ease}.btn:hover{border-color:var(--accent)}.btn.primary{background:var(--accent);border-color:transparent;color:#fff;font-weight:600}.btn.ghost{background:transparent}.action-tabs{display:flex;gap:4px;padding:10px 12px 0}.tabs{display:flex;gap:4px;padding:4px 12px 0}.tab{flex:1;border:none;background:transparent;color:var(--muted);padding:10px;border-radius:10px 10px 0 0;cursor:pointer;font-weight:600}.tab.active{background:var(--panel-2);color:var(--text)}.tab-add-alert{background:#f312602e;color:#ff6b8a;border:1px solid rgba(243,18,96,.45);border-radius:10px 10px 0 0;font-weight:800;letter-spacing:.02em}.tab-add-alert:hover,.tab-add-alert.active{background:#f31260;color:#fff;border-color:#f31260}.tab-add-poi{background:#3dd68c26;color:#3dd68c;border:1px solid rgba(61,214,140,.4);border-radius:10px 10px 0 0;font-weight:800}.tab-add-poi:hover,.tab-add-poi.active{background:#1f9d5a;color:#fff;border-color:#1f9d5a}.btn-danger{background:#f31260;border-color:transparent;color:#fff;font-weight:700}.btn-success{background:#1f9d5a;border-color:transparent;color:#fff;font-weight:700}.unit-title{display:flex;align-items:center;gap:8px}.unit-label{font-size:.95rem;font-weight:700;color:var(--text)}.unit-letter{display:inline-grid;place-items:center;min-width:28px;height:22px;padding:0 5px;border-radius:999px;background:#2563eb;color:#fff;font-size:11px;font-weight:700;font-variant-numeric:tabular-nums}.eye-icon{display:block;flex-shrink:0;color:var(--text);overflow:visible}.eye-icon-off{color:var(--text);opacity:.92}.list-item-poi{position:relative;align-items:stretch}.list-item-clickable{cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease}.list-item-clickable:hover{border-color:var(--accent)}.list-item-clickable.selected{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.list-item-clickable:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.list-item-main{min-width:0;display:flex;flex-direction:column;flex:1}.list-item-side{display:flex;flex-direction:column;align-items:flex-end;justify-content:flex-end;gap:8px;min-height:100%}.list-item-dates{gap:2px;margin-top:auto;align-self:flex-end}.added-date{font-size:10px;font-variant-numeric:tabular-nums;color:var(--muted);letter-spacing:.02em;white-space:nowrap}.expiry-date{font-size:10px;font-variant-numeric:tabular-nums;color:#eab308;letter-spacing:.02em;white-space:nowrap;font-weight:600}.delete-link{align-self:flex-start;margin-top:8px;border:none;background:transparent;color:#f31260;font-size:11px;font-weight:700;letter-spacing:.02em;cursor:pointer;padding:0;text-decoration:none}.delete-link:hover{color:#ff6b8a;text-decoration:underline}.address-row{align-items:flex-end}.street-num-field{flex:0 0 72px!important;max-width:72px}.street-num-field input{text-align:center;font-variant-numeric:tabular-nums}.address-field{position:relative;flex:1;min-width:0;display:flex;flex-direction:column}.suggest-list{list-style:none;margin:6px 0 0;padding:4px;position:static;width:100%;max-height:180px;overflow:auto;background:var(--panel);border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow);z-index:1}.suggest-item{display:block;width:100%;text-align:left;border:none;background:transparent;color:var(--text);padding:10px 12px;border-radius:8px;cursor:pointer;font-size:.85rem;line-height:1.3}.suggest-item:hover{background:var(--panel-2)}.suggest-item.muted{color:var(--muted);cursor:default}.field-hint{font-size:.72rem;color:var(--muted);margin-top:4px}.panel-body{flex:1;overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding:8px 12px 16px;padding-bottom:calc(16px + env(safe-area-inset-bottom,0px));background:var(--panel-2);min-height:0}@media(max-width:767px){.app{display:block;position:relative;width:100%;height:100dvh;max-height:100dvh;overflow:hidden}.app>.map-wrap{order:unset;position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:1}.app>.sidebar{order:unset}.map-wrap{padding-bottom:0}.toast{bottom:calc(88px + env(safe-area-inset-bottom,0px));max-width:min(420px,calc(100vw - 24px))}.mobile-menu-fab{display:inline-flex;align-items:center;justify-content:center;gap:8px;position:fixed;left:50%;bottom:calc(16px + env(safe-area-inset-bottom,0px));transform:translate(-50%);z-index:30;min-height:48px;min-width:140px;padding:12px 22px;border:none;border-radius:999px;background:#2563eb;color:#fff;font-weight:700;font-size:1rem;box-shadow:0 8px 28px #00000059;cursor:pointer;touch-action:manipulation}.mobile-menu-fab:active{transform:translate(-50%) scale(.98)}.mobile-menu-fab-badge{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;padding:0 6px;border-radius:999px;background:#f31260;color:#fff;font-size:12px;font-weight:800}.sheet-backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;border:none;padding:0;margin:0;background:#00000073;cursor:pointer;animation:sheetFadeIn .2s ease}.sidebar{position:fixed;left:0;right:0;bottom:0;top:auto;width:100%;max-width:100vw;height:min(92dvh,100%);max-height:min(92dvh,100%);border-right:none!important;border-top:1px solid var(--border);border-radius:18px 18px 0 0;box-shadow:0 -12px 40px #00000059;z-index:50;transform:translateY(110%);transition:transform .28s cubic-bezier(.32,.72,0,1);padding-bottom:env(safe-area-inset-bottom,0px);pointer-events:none;visibility:hidden}.sidebar.open{transform:translateY(0);pointer-events:auto;visibility:visible}.sheet-grabber-row{display:flex;align-items:center;justify-content:center;position:relative;flex-shrink:0;min-height:44px;padding:10px 48px 6px;touch-action:none;cursor:grab}.sheet-handle{width:44px;height:5px;border-radius:999px;background:var(--muted);opacity:.65}.sheet-close{position:absolute;right:8px;top:50%;transform:translateY(-50%);width:44px;height:44px;border:none;border-radius:12px;background:transparent;color:var(--text);font-size:1.6rem;line-height:1;cursor:pointer;display:grid;place-items:center;touch-action:manipulation}.sheet-close:hover,.sheet-close:active{background:var(--panel-2)}.sidebar-header{flex-shrink:0;padding:4px 14px 10px}.brand-logo-sidebar{max-width:160px;max-height:64px}.toolbar{gap:6px}.toolbar .btn{min-height:44px;padding:10px 12px;flex:1 1 auto}.action-tabs,.tabs{flex-shrink:0;padding-left:10px;padding-right:10px}.tab,.tab-add-alert,.tab-add-poi{min-height:44px;padding:10px 8px;font-size:.82rem}.panel-body{flex:1 1 auto;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding:10px 12px calc(20px + env(safe-area-inset-bottom,0px))}.vehicle-grid{grid-template-columns:1fr 1fr;gap:8px}.list-item-vehicle .icon-btn,.icon-btn{width:44px;height:44px;min-width:44px;min-height:44px}.list-item,.form-card{padding:12px}.field input,.field select,.field textarea{min-height:44px;font-size:16px}.modal-backdrop{padding:12px;padding-bottom:calc(12px + env(safe-area-inset-bottom,0px));align-items:flex-end;place-items:end center}.modal-card{width:100%;max-height:min(88dvh,100%);border-radius:16px 16px 12px 12px;margin-bottom:0}.modal-actions .btn{min-height:44px}.login-page{min-height:100dvh;padding:16px;padding-top:calc(16px + env(safe-area-inset-top,0px));padding-bottom:calc(16px + env(safe-area-inset-bottom,0px));overflow:auto;-webkit-overflow-scrolling:touch}.login-card{width:min(400px,100%);padding:22px 18px}.login-action-btn{min-height:48px}}@media(max-width:420px){.vehicle-grid{grid-template-columns:1fr}}@keyframes sheetFadeIn{0%{opacity:0}to{opacity:1}}.list-item{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:start;background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:10px 12px;margin-bottom:8px}.vehicle-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.list-item-vehicle{margin-bottom:0;min-width:0;padding:8px 10px}.list-item-vehicle .unit-status-select,.list-item-vehicle .unit-status-label{font-size:11px;padding:3px 6px;max-width:100%}.list-item-vehicle .icon-btn{width:32px;height:32px}.list-item h3{margin:0;font-size:.92rem}.list-item .meta{color:var(--muted);font-size:.78rem;margin-top:2px}.badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 8px;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em}.unit-status-wrap{margin-top:4px}.unit-status-select,.unit-status-label{font-size:12px;font-weight:700;border-radius:8px;padding:4px 8px;border:1px solid transparent;background:transparent;line-height:1.2}.unit-status-select{cursor:pointer;max-width:100%;-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}.unit-status-select.status-in-service,.unit-status-label.status-in-service{color:#2563eb;border-color:#2563eb73;background:#2563eb1f}.unit-status-select.status-busy,.unit-status-label.status-busy{color:#ca8a04;border-color:#eab3088c;background:#eab30829}.unit-status-select.status-out-of-service,.unit-status-label.status-out-of-service{color:#dc2626;border-color:#dc262673;background:#dc26261f}.badge.fresh{background:#3dd68c26;color:var(--ok)}.badge.stale{background:#f5a52426;color:var(--warn)}.badge.old{background:#9aabbf26;color:var(--muted)}.badge.critical{background:#f3126026;color:var(--crit)}.badge.warning{background:#f5a52426;color:var(--warn)}.badge.info{background:#66d1ff26;color:var(--info)}.icon-btn{border:1px solid var(--border);background:var(--panel-2);color:var(--text);border-radius:8px;width:36px;height:36px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:0;line-height:0}.icon-btn.off{opacity:1;border-color:#f3126066}.map-wrap{position:relative;min-width:0;min-height:0;height:100%;background:#1a2332}.map{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.map-overlay{position:absolute;top:12px;right:12px;display:flex;flex-direction:column;gap:8px;z-index:1}.toast{position:absolute;left:50%;bottom:24px;transform:translate(-50%);background:var(--panel);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:12px;padding:12px 16px;z-index:3;max-width:min(480px,90vw);animation:slideUp .25s ease}.locate-fail-badge{position:absolute;top:calc(12px + env(safe-area-inset-top,0px));right:calc(12px + env(safe-area-inset-right,0px));z-index:25;border:1px solid rgba(220,38,38,.55);background:#dc2626;color:#fff;font-weight:800;font-size:.78rem;letter-spacing:.02em;text-transform:uppercase;border-radius:10px;padding:10px 12px;min-height:40px;box-shadow:0 6px 20px #dc262659;cursor:pointer;touch-action:manipulation}.locate-fail-badge:hover,.locate-fail-badge:active{filter:brightness(1.06)}@media(max-width:767px){.locate-fail-badge{top:calc(10px + env(safe-area-inset-top,0px));right:calc(10px + env(safe-area-inset-right,0px));font-size:.72rem;padding:10px 11px;max-width:calc(100vw - 24px)}}@keyframes slideUp{0%{opacity:0;transform:translate(-50%,12px)}to{opacity:1;transform:translate(-50%)}}.login-page{min-height:100%;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at 20% 20%,rgba(59,158,255,.18),transparent 40%),radial-gradient(circle at 80% 0%,rgba(61,214,140,.12),transparent 35%),var(--bg)}.login-card{width:min(400px,100%);background:var(--panel);border:1px solid var(--border);border-radius:16px;padding:28px;box-shadow:var(--shadow)}.login-card .brand-logo-wrap{margin-bottom:16px}.login-heading{margin:0 0 16px;text-align:center;font-size:1.15rem;font-weight:700}.label-badge-hint{font-weight:600;color:var(--muted);font-size:.9em}.login-action-btn{width:100%;padding:12px 14px;font-size:.95rem;font-weight:700;margin-top:4px}.login-action-btn+.login-action-btn{margin-top:10px}.btn.register-btn{background:#f31260;border-color:transparent;color:#fff;font-weight:700}.btn.register-btn:hover{background:#d40d52;border-color:transparent;filter:brightness(1.05)}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}.field label{font-size:.82rem;color:var(--muted)}.field input,.field select,.field textarea{border:1px solid var(--border);background:var(--panel-2);color:var(--text);border-radius:10px;padding:10px 12px}.error{color:var(--crit);font-size:.85rem;margin-bottom:10px}.hint{margin-top:16px;font-size:.78rem;color:var(--muted);line-height:1.4}.form-card{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:12px;margin-bottom:10px}.form-card h3{margin:0 0 10px;font-size:.9rem}.row{display:flex;gap:8px}.row>*{flex:1}.user-chip{font-size:.78rem;color:var(--muted)}.maplibregl-ctrl-attrib{font-size:10px!important}.maplibregl-popup.mft-map-popup .maplibregl-popup-content,.maplibregl-popup .maplibregl-popup-content{color:#000!important;background:#fff!important;border-radius:10px;padding:10px 12px;box-shadow:0 4px 16px #00000040}.maplibregl-popup.mft-map-popup .maplibregl-popup-content *,.maplibregl-popup .maplibregl-popup-content *{color:#000!important}.maplibregl-popup.mft-map-popup .maplibregl-popup-tip,.maplibregl-popup .maplibregl-popup-tip{border-top-color:#fff!important}.envelope-icon{display:block;color:var(--text)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;background:#00000080;display:grid;place-items:center;padding:16px}.modal-card{width:min(480px,100%);max-height:min(90vh,720px);overflow:auto;background:var(--panel);border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow);color:var(--text)}.modal-header{padding:16px 16px 8px;border-bottom:1px solid var(--border)}.modal-header h2{margin:0 0 10px;font-size:1.1rem}.modal-tabs{display:flex;gap:8px}.modal-body{padding:16px}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:14px}.msg-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px;max-height:50vh;overflow:auto}.msg-item{border:1px solid var(--border);border-radius:12px;padding:10px 12px;background:var(--panel-2)}.msg-item-top{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:4px}.msg-body{margin:6px 0;font-size:.9rem;white-space:pre-wrap}.msg-item-actions{display:flex;align-items:center;gap:8px;margin-top:8px}.msg-inbox-btn{position:relative;transition:box-shadow .25s ease,border-color .25s ease,color .25s ease,background .25s ease}.msg-inbox-btn.has-unread{color:#fff!important;background:#2563eb!important;border-color:#3b82f6!important;font-weight:700;box-shadow:0 0 0 2px #3b82f673,0 0 16px 4px #2563eba6,0 0 28px 8px #2563eb59;animation:msg-glow-pulse 1.6s ease-in-out infinite}@keyframes msg-glow-pulse{0%,to{box-shadow:0 0 0 2px #3b82f673,0 0 14px 4px #2563eb8c,0 0 24px 6px #2563eb4d}50%{box-shadow:0 0 0 3px #60a5faa6,0 0 22px 8px #2563ebcc,0 0 36px 12px #3b82f666}}.dm-map-pin{animation:dm-pin-pulse 1.8s ease-in-out infinite}@keyframes dm-pin-pulse{0%,to{filter:drop-shadow(0 0 6px rgba(37,99,235,.75));transform:translateY(0)}50%{filter:drop-shadow(0 0 14px rgba(37,99,235,1));transform:translateY(-2px)}}.recipient-box{border:1px solid var(--border);border-radius:10px;background:var(--panel-2);padding:8px 10px}.recipient-list{max-height:140px;overflow:auto;margin-top:6px;display:flex;flex-direction:column;gap:4px;transition:max-height .2s ease}.recipient-list.expanded{max-height:min(50vh,360px)}.recipient-expand-btn{width:100%;margin-top:6px;font-size:.8rem;padding:6px 8px}.recipient-row{display:flex;align-items:center;gap:10px;padding:6px 4px;border-radius:8px;cursor:pointer;font-size:.9rem}.recipient-row:hover{background:var(--panel)}.recipient-row.selected{background:#2563eb1f;outline:1px solid rgba(37,99,235,.35)}.recipient-row input{width:16px;height:16px;accent-color:var(--accent);flex-shrink:0}.recipient-all{border-bottom:1px solid var(--border);padding-bottom:8px;margin-bottom:2px}
