.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:1rem;background:linear-gradient(135deg,#0d9488,#134e4a)}.login-card{background:#fff;padding:2rem;border-radius:12px;width:100%;max-width:380px;box-shadow:0 20px 50px #0003;display:flex;flex-direction:column;gap:1rem}.login-card h1{margin:0;font-size:1.35rem;color:#0f766e;line-height:1.3}.subtitle{margin:-.35rem 0 0;color:#64748b;font-size:.9rem}.login-card label{display:flex;flex-direction:column;gap:.4rem;font-size:.85rem;font-weight:600;color:#334155}.login-card .login-input{box-sizing:border-box;width:100%;padding:.65rem .75rem;border:1px solid #cbd5e1;border-radius:8px;font-size:1rem;line-height:1.4;color:#1e293b;background:#fff;transition:border-color .15s ease,box-shadow .15s ease}.login-card .login-input:focus{outline:none;border-color:#0d9488;box-shadow:0 0 0 3px #0d948826}.login-password-wrap{position:relative;width:100%}.login-password-wrap .login-input{padding-right:2.85rem}.login-password-toggle{position:absolute;top:50%;right:.4rem;transform:translateY(-50%);display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;margin:0;padding:0;border:none;border-radius:6px;background:transparent;color:#64748b;cursor:pointer;flex-shrink:0}.login-password-toggle:hover{color:#0f766e;background:#f0fdfa}.login-password-toggle:focus-visible{outline:2px solid #0d9488;outline-offset:1px}.login-password-toggle svg{display:block;pointer-events:none}.login-remember{flex-direction:row!important;align-items:center;gap:.5rem!important;font-weight:500!important;cursor:pointer;-webkit-user-select:none;user-select:none}.login-remember input[type=checkbox]{width:1rem;height:1rem;margin:0;accent-color:#0d9488;cursor:pointer;flex-shrink:0}.login-submit{width:100%;margin-top:.25rem;padding:.75rem 1rem;border:none;border-radius:8px;background:#0d9488;color:#fff;font-size:.95rem;font-weight:700;letter-spacing:.02em;cursor:pointer;transition:background .15s ease}.login-submit:hover:not(:disabled){background:#0f766e}.login-submit:disabled{opacity:.65;cursor:not-allowed}.login-download-link{margin:0;text-align:center;font-size:.82rem}.login-download-link a{color:#0f766e;font-weight:600;text-decoration:none}.login-download-link a:hover{text-decoration:underline}.error{margin:0;background:#fef2f2;color:#dc2626;padding:.5rem .75rem;border-radius:8px;font-size:.85rem;border:1px solid #fecaca}.app-header{display:flex;align-items:center;gap:.5rem;padding:.45rem .65rem;background:#fff;border-bottom:1px solid #e2e8f0;box-shadow:0 1px 6px #0f172a14;z-index:1100;flex-shrink:0;min-height:52px}.app-header-left{display:flex;align-items:center;gap:.4rem;min-width:0;flex:1}.app-title{font-size:1rem;color:#0d9488;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.header-icon-btn{display:flex;align-items:center;justify-content:center;width:38px;height:38px;border:1px solid #e2e8f0;background:#f8fafc;border-radius:8px;color:#334155;flex-shrink:0}.header-icon-btn:hover{background:#f0fdfa;border-color:#99f6e4;color:#0f766e}.realtime-pill{display:inline-flex;align-items:center;gap:.35rem;padding:.2rem .55rem;border-radius:999px;font-size:.7rem;font-weight:600;flex-shrink:0}.realtime-pill.on{background:#dcfce7;color:#166534}.realtime-pill.off{background:#fee2e2;color:#991b1b;border:1px solid #fecaca;cursor:pointer;font:inherit}.realtime-pill.off:hover{background:#fecaca}.realtime-pill.off.reconnecting{background:#fff7ed;color:#c2410c;border-color:#fed7aa}.realtime-pill.off.reconnecting .realtime-dot{animation:realtime-pulse 1s ease-in-out infinite}@keyframes realtime-pulse{0%,to{opacity:1}50%{opacity:.35}}.realtime-dot{width:7px;height:7px;border-radius:50%;background:currentColor}.header-actions{display:flex;align-items:center;justify-content:flex-end;gap:.35rem;flex-shrink:0;min-width:0;max-width:min(100%,calc(100vw - 11rem));margin-left:auto;overflow:visible}.header-actions-scroll{display:flex;align-items:center;justify-content:flex-end;gap:.35rem;min-width:0;max-width:100%;overflow-x:auto;overflow-y:visible;-webkit-overflow-scrolling:touch;scroll-snap-type:x proximity;scrollbar-width:thin;scrollbar-color:#cbd5e1 transparent;padding:.1rem .2rem;position:relative}.header-actions-scroll::-webkit-scrollbar{height:4px}.header-actions-scroll::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:4px}.header-action-btn{display:inline-flex;align-items:center;gap:.3rem;padding:.4rem .55rem;border:1px solid #e2e8f0;background:#f8fafc;border-radius:8px;color:#334155;font-size:.75rem;font-weight:600;white-space:nowrap;flex-shrink:0;scroll-snap-align:start}.header-action-btn:hover{background:#f0fdfa;border-color:#5eead4;color:#0f766e}.header-action-btn.active{background:#ccfbf1;border-color:#0d9488;color:#0f766e}.header-visibility-wrap{position:relative;flex-shrink:0}.header-visibility-menu{position:absolute;top:calc(100% + 6px);right:0;min-width:220px;padding:.5rem .65rem .6rem;background:#fff;border:1px solid #e2e8f0;border-radius:10px;box-shadow:0 8px 24px #0f172a1f;z-index:1300}.header-visibility-title{margin:0 0 .45rem;font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:#64748b}.header-visibility-item{display:flex;align-items:center;gap:.5rem;padding:.35rem .15rem;font-size:.82rem;font-weight:500;color:#0f172a;cursor:pointer;border-radius:6px}.header-visibility-item:hover{background:#f8fafc}.header-visibility-item input{width:1rem;height:1rem;accent-color:#0d9488;flex-shrink:0}.profile-menu-wrap{position:relative;flex-shrink:0}.profile-trigger{border:2px solid #e2e8f0;background:#fff;border-radius:50%;padding:0;width:40px;height:40px;display:flex;align-items:center;justify-content:center}.profile-trigger.open,.profile-trigger:hover{border-color:#0d9488}.profile-avatar,.profile-dropdown-avatar{display:flex;align-items:center;justify-content:center;width:100%;height:100%;border-radius:50%;background:linear-gradient(135deg,#0d9488,#134e4a);color:#fff;font-size:.8rem;font-weight:700}.profile-dropdown{position:absolute;top:calc(100% + 6px);right:0;min-width:240px;background:#fff;border:1px solid #e2e8f0;border-radius:12px;box-shadow:0 12px 32px #0f172a26;overflow:hidden;z-index:1200}.profile-dropdown-header{display:flex;gap:.75rem;padding:.85rem 1rem;border-bottom:1px solid #f1f5f9;background:#f8fafc}.profile-dropdown-avatar{width:44px;height:44px;flex-shrink:0}.profile-dropdown-header strong{display:block;font-size:.95rem;color:#0f172a}.profile-username,.profile-phone{display:block;font-size:.75rem;color:#64748b;margin-top:.15rem}.role-badge{display:inline-block;margin-top:.35rem;padding:.15rem .45rem;border-radius:4px;font-size:.68rem;font-weight:700}.role-badge.role-admin{background:#ede9fe;color:#5b21b6}.role-badge.role-dispatcher{background:#dbeafe;color:#1d4ed8}.role-badge.role-field_worker{background:#f0fdf4;color:#166534}.profile-dropdown-item{display:block;width:100%;text-align:left;padding:.65rem 1rem;border:none;background:#fff;font-size:.85rem;color:#334155}.profile-dropdown-item:hover{background:#f8fafc}.profile-dropdown-item.danger{color:#dc2626;border-top:1px solid #f1f5f9}@media(max-width:768px){.app-title{font-size:.85rem;max-width:5.5rem}.realtime-label,.action-label{display:none}.header-action-btn{padding:.4rem;min-width:38px;justify-content:center}.header-actions{max-width:min(72vw,calc(100vw - 9.5rem))}.header-actions-scroll{gap:.25rem}}@media(max-width:480px){.app-header{padding:.35rem .45rem;gap:.2rem}.app-title{max-width:4.5rem}.header-icon-btn.menu-toggle{width:34px;height:34px}.profile-trigger{width:36px;height:36px}}.header-notif-btn{border-color:#fcd34d;background:#fffbeb;color:#b45309}.header-notif-btn:hover{background:#fef3c7;border-color:#fbbf24;color:#92400e}.header-chat-btn{position:relative;overflow:visible}.header-chat-icon-wrap{position:relative;display:inline-flex;flex-shrink:0;align-items:center;justify-content:center}.header-chat-badge{position:absolute;top:-5px;right:-7px;min-width:15px;height:15px;padding:0 3px;border-radius:999px;background:#ef4444;color:#fff;font-size:.58rem;font-weight:700;line-height:1;display:flex;align-items:center;justify-content:center;pointer-events:none;border:1.5px solid #fff;box-sizing:border-box}.header-chat-btn.has-unread .action-label{padding-right:.1rem}.header-tools-btn{position:relative;overflow:visible}.header-tools-icon-wrap{position:relative;display:inline-flex;flex-shrink:0;align-items:center;justify-content:center}.header-tools-badge{position:absolute;top:-5px;right:-7px;min-width:15px;height:15px;padding:0 3px;border-radius:999px;background:#f59e0b;color:#fff;font-size:.58rem;font-weight:700;line-height:1;display:flex;align-items:center;justify-content:center;pointer-events:none;border:1.5px solid #fff;box-sizing:border-box}.header-tools-btn.has-expiring .action-label{padding-right:.1rem}.repair-timeline{margin:.65rem 0;padding:.55rem .6rem;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px}.repair-timeline.compact{margin:.45rem 0;padding:.45rem .5rem}.repair-timeline-title{margin:0 0 .45rem;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:#64748b}.repair-timeline-list{list-style:none;margin:0;padding:0}.repair-timeline-step{position:relative;display:flex;gap:.5rem;padding:.2rem 0 .2rem 1.35rem;min-height:2.1rem}.repair-timeline-dot{position:absolute;left:.2rem;top:.45rem;width:10px;height:10px;border-radius:50%;background:#cbd5e1;border:2px solid #fff;box-shadow:0 0 0 1px #cbd5e1;z-index:1}.repair-timeline-line{position:absolute;left:.64rem;top:1.1rem;bottom:-.15rem;width:2px;background:#e2e8f0}.repair-timeline-step.reached .repair-timeline-dot{background:#0d9488;box-shadow:0 0 0 1px #0d9488}.repair-timeline-step.wf-pending.reached .repair-timeline-dot{background:#d97706;box-shadow:0 0 0 1px #d97706}.repair-timeline-step.wf-accepted.reached .repair-timeline-dot{background:#2563eb;box-shadow:0 0 0 1px #2563eb}.repair-timeline-step.wf-repairing.reached .repair-timeline-dot{background:#ea580c;box-shadow:0 0 0 1px #ea580c}.repair-timeline-step.wf-completed.reached .repair-timeline-dot{background:#16a34a;box-shadow:0 0 0 1px #16a34a}.repair-timeline-step.current .repair-timeline-label{font-weight:800}.repair-timeline-body{flex:1;min-width:0;display:flex;flex-wrap:wrap;align-items:baseline;gap:.35rem .5rem}.repair-timeline-label{font-size:.78rem;color:#334155}.repair-timeline-time{font-size:.72rem;color:#64748b;font-variant-numeric:tabular-nums}.repair-timeline-step:not(.reached) .repair-timeline-time{color:#94a3b8}.repair-timeline.popup{margin:0;padding:.35rem .4rem}.repair-timeline.popup .repair-timeline-title{margin-bottom:.3rem;font-size:.65rem}.repair-timeline.popup .repair-timeline-list{display:grid;grid-template-columns:1fr 1fr;gap:.15rem .3rem}.repair-timeline.popup .repair-timeline-step{min-height:0;padding:.12rem 0 .12rem .85rem}.repair-timeline.popup .repair-timeline-line{display:none}.repair-timeline.popup .repair-timeline-dot{width:8px;height:8px;top:.35rem;left:.15rem}.repair-timeline.popup .repair-timeline-body{flex-direction:column;align-items:flex-start;gap:.05rem}.repair-timeline.popup .repair-timeline-label{font-size:.62rem;line-height:1.2}.repair-timeline.popup .repair-timeline-time{font-size:.6rem}.sidebar{width:100%;height:100%;min-height:0;background:#fff;display:flex;flex-direction:column;overflow:hidden;--sb-font-2xs: .78rem;--sb-font-xs: .86rem;--sb-font-sm: .94rem;--sb-font-md: 1rem;--sb-font-lg: 1.06rem}.sidebar-pane{display:flex;flex-direction:column;min-height:0;overflow:hidden}.teams-pane{flex:0 0 var(--teams-split, 38%);min-height:72px}.sidebar.teams-only .teams-pane{flex:1 1 auto}.sidebar.teams-only .sidebar-divider,.sidebar.teams-only .points-pane{display:none}.points-pane{flex:1 1 0;min-height:72px;border-top:none}.sidebar-divider{flex:0 0 6px;margin:0;background:linear-gradient(to bottom,transparent,#e2e8f0 35%,#e2e8f0 65%,transparent);cursor:row-resize;touch-action:none;position:relative;z-index:2}.sidebar-divider:after{content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:36px;height:3px;border-radius:2px;background:#94a3b8;opacity:.55}.sidebar-divider:hover:after,.sidebar-divider:active:after{background:#0d9488;opacity:1}.sidebar-pane-head{flex-shrink:0;padding:.5rem .75rem .35rem;border-bottom:1px solid #f1f5f9}.sidebar-points-head{display:flex;flex-direction:column;gap:.15rem}.sidebar-points-toggle{margin:0;padding:0;border:none;background:none;font:inherit;font-size:var(--sb-font-sm);font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:#0d9488;text-align:left;cursor:pointer;text-decoration:underline;text-underline-offset:2px;line-height:1.3}.sidebar-points-toggle:hover{color:#0f766e}.sidebar-points-toggle:focus-visible{outline:2px solid #0d9488;outline-offset:2px;border-radius:3px}.sidebar-pane-head h2{margin:0;font-size:var(--sb-font-sm);text-transform:uppercase;letter-spacing:.04em;color:#64748b;font-weight:700;line-height:1.3}.sidebar-pane-sub{margin:.2rem 0 0;font-size:var(--sb-font-xs);color:#94a3b8;line-height:1.3}.sidebar-empty{margin:0;padding:.5rem 0;font-size:var(--sb-font-sm);color:#94a3b8;text-align:center}.team-list{flex:1 1 0;min-height:0;overflow-y:auto;overflow-x:hidden;padding:.35rem .6rem .5rem;display:flex;flex-direction:column;gap:.35rem;-webkit-overflow-scrolling:touch}.team-card{border:1px solid #e2e8f0;border-radius:8px;padding:.45rem .55rem;cursor:pointer;transition:border-color .15s,background .15s;flex-shrink:0}.team-card.selected{border-color:#0d9488;background:#f0fdfa}.team-card-top{display:flex;gap:.4rem;align-items:flex-start}.team-card-main{flex:1;min-width:0}.team-title-row{display:flex;align-items:baseline;gap:.35rem;flex-wrap:wrap}.team-title-row strong{font-size:var(--sb-font-md);line-height:1.25}.status-dot{width:8px;height:8px;border-radius:50%;margin-top:5px;flex-shrink:0}.status-dot.moving{background:#22c55e}.status-dot.stopped{background:#ef4444}.team-battery-chip{font-size:var(--sb-font-2xs);font-weight:800;padding:.12rem .38rem;border-radius:5px;background:#1e293b;color:#f1f5f9;white-space:nowrap;line-height:1.2}.team-battery-chip.charging{background:#15803d;color:#fff}.code{font-size:var(--sb-font-xs);color:#64748b;font-weight:600}.team-worker{display:block;font-size:var(--sb-font-xs);color:#0f766e;margin-top:.12rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.team-worker-warn{display:block;font-size:var(--sb-font-xs);color:#b45309;margin-top:.12rem;font-weight:600}.coords{font-size:var(--sb-font-xs);color:#94a3b8;margin:.25rem 0 0;line-height:1.3}.team-meta{display:flex;justify-content:flex-start;align-items:center;font-size:var(--sb-font-xs);margin-top:.28rem;gap:.35rem}.badge.moving{color:#166534;font-weight:600}.badge.stopped{color:#991b1b;font-weight:600}.km{color:#64748b;white-space:nowrap}.team-actions{display:flex;gap:.25rem;margin-top:.35rem;padding-top:.35rem;border-top:1px dashed #99f6e4}.team-card:not(.selected) .team-meta{margin-bottom:0}.team-actions button{flex:1;font-size:var(--sb-font-2xs);padding:.28rem .2rem;border:1px solid #e2e8f0;background:#fff;border-radius:4px;line-height:1.2}.team-actions .danger{color:#dc2626}.team-card.offline{opacity:.78}.sidebar-points-filter{flex-shrink:0;margin:.3rem .6rem .35rem;padding:.45rem .5rem;border:1px solid #e2e8f0;border-radius:8px;background:#f8fafc;display:flex;flex-direction:column;gap:.45rem}.sidebar-points-filter-row{display:flex;align-items:flex-end;gap:.4rem}.sidebar-point-search{display:flex;flex-direction:column;gap:.15rem;font-size:var(--sb-font-xs);font-weight:600;color:#475569;position:relative}.sidebar-point-search-label{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sidebar-point-search input[type=search]{font-weight:400;padding:.3rem .4rem;border:1px solid #cbd5e1;border-radius:6px;font-size:var(--sb-font-sm);background:#fff}.sidebar-point-search input[type=search]::placeholder{color:#94a3b8;font-weight:500}.sidebar-point-search input[type=search]:focus{outline:none;border-color:#0d9488;box-shadow:0 0 0 2px #0d948826}.sidebar-point-search input[type=search]:focus::placeholder{color:#cbd5e1}.sidebar-category-filter{margin:0;padding:0;border:none;min-width:0}.sidebar-category-filter legend{padding:0;font-size:var(--sb-font-xs);font-weight:700;color:#475569;margin-bottom:.25rem}.sidebar-category-filter-options{display:flex;flex-wrap:wrap;gap:.25rem}.sidebar-category-filter-options button{flex:1 1 0;min-width:0;font-size:var(--sb-font-2xs);font-weight:600;padding:.28rem .35rem;border:1px solid #cbd5e1;border-radius:6px;background:#fff;color:#475569;cursor:pointer;line-height:1.2}.sidebar-category-filter-options button:hover{background:#f1f5f9}.sidebar-category-filter-options button.active{border-color:#0d9488;background:#ccfbf1;color:#0f766e}.points-filter-bar{flex-shrink:0;display:flex;align-items:flex-end;gap:.4rem;padding:.3rem .6rem .35rem;border-bottom:1px solid #f1f5f9}.points-filter-date{flex:1;min-width:0;display:flex;flex-direction:column;gap:.15rem;font-size:var(--sb-font-xs);font-weight:600;color:#475569}.points-filter-date input{font-weight:400;padding:.3rem .4rem;border:1px solid #cbd5e1;border-radius:6px;font-size:var(--sb-font-sm)}.points-filter-today{flex-shrink:0;font-size:var(--sb-font-xs);padding:.32rem .5rem;border:1px solid #99f6e4;border-radius:6px;background:#f0fdfa;color:#0f766e;cursor:pointer;line-height:1.2}.points-filter-today:hover{background:#ccfbf1}.point-list{flex:1 1 0;min-height:0;overflow-y:auto;overflow-x:hidden;padding:.35rem .6rem .5rem;display:flex;flex-direction:column;gap:.3rem;-webkit-overflow-scrolling:touch}.point-list-empty{margin:0;padding:.5rem 0;font-size:var(--sb-font-sm);color:#94a3b8;text-align:center}.point-item{display:block;width:100%;text-align:left;padding:.4rem .5rem;border-radius:6px;border:1px solid transparent;border-left:3px solid #94a3b8;background:#f8fafc;font-size:var(--sb-font-sm);cursor:pointer;transition:background .15s,border-color .15s,box-shadow .15s;flex-shrink:0}.point-item:hover{background:#f0fdfa;border-color:#99f6e4}.point-item.selected{border-color:#0d9488;box-shadow:0 0 0 1px #0d9488}.point-item-row{display:flex;justify-content:space-between;align-items:flex-start;gap:.3rem}.point-item-stt{flex-shrink:0;min-width:1.35rem;padding:.1rem .28rem;font-size:var(--sb-font-2xs);font-weight:800;font-variant-numeric:tabular-nums;line-height:1.2;text-align:center;color:#0f766e;background:#ccfbf1;border:1px solid #5eead4;border-radius:4px}.sidebar-day-stt-hint{font-weight:700;color:#0f766e}.sidebar-pane-sub-sep{color:#94a3b8}.point-item-name{flex:1;min-width:0;font-size:var(--sb-font-md);line-height:1.25;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.point-item-time{flex-shrink:0;font-size:var(--sb-font-2xs);font-weight:600;color:#64748b;font-variant-numeric:tabular-nums}.point-carryover-tag{display:inline-block;margin-top:.12rem;font-size:var(--sb-font-2xs);font-weight:700;color:#b45309;background:#fffbeb;padding:.08rem .3rem;border-radius:4px}.point-item.carryover{border-style:dashed}.point-item-actions{margin-top:.3rem;width:100%}.point-edit-btn{display:block;width:100%;padding:.3rem .45rem;font-size:var(--sb-font-2xs);font-weight:600;color:#1d4ed8;background:#eff6ff;border:1px solid #93c5fd;border-radius:5px;cursor:pointer;text-align:center}.point-edit-btn:hover{background:#dbeafe}.point-item-timeline-wrap{margin-top:.3rem;width:100%}.point-timeline-toggle{display:block;width:100%;padding:.3rem .45rem;font-size:var(--sb-font-2xs);font-weight:600;color:#0f766e;background:#f0fdfa;border:1px solid #99f6e4;border-radius:5px;cursor:pointer;text-align:center}.point-timeline-toggle:hover{background:#ccfbf1}.point-timeline-toggle[aria-expanded=true]{color:#64748b;background:#f8fafc;border-color:#cbd5e1}.point-item-timeline{margin-top:.28rem;pointer-events:none}.point-item.priority-normal{border-left-color:#22c55e}.point-item.priority-safety_emergency{border-left-color:#ef4444}.point-item.priority-other{border-left-color:#f59e0b}.point-item.wf-pending{border-left-color:#d97706;background:#fffbeb}.point-item.wf-accepted{border-left-color:#2563eb;background:#eff6ff}.point-item.wf-repairing{border-left-color:#ea580c;background:#fff7ed}.point-item.wf-completed{border-left-color:#16a34a;background:#f0fdf4;opacity:.88}.point-badges{display:flex;flex-wrap:wrap;gap:.25rem;margin-top:.2rem}.point-category{display:inline-flex;align-items:center;font-size:var(--sb-font-2xs);font-weight:700;padding:.12rem .32rem;border-radius:4px}.point-category.cat-repair{background:#f1f5f9;color:#475569}.point-category.cat-work,.point-category.cat-work_order,.point-category.cat-work_command{background:#ede9fe;color:#5b21b6}.point-status,.point-priority{display:inline-flex;align-items:center;gap:.2rem;font-size:var(--sb-font-2xs);font-weight:700;padding:.12rem .32rem;border-radius:4px}.point-status.wf-pending{background:#fef3c7;color:#92400e}.point-status.wf-accepted{background:#dbeafe;color:#1d4ed8}.point-status.wf-repairing{background:#ffedd5;color:#c2410c}.point-status.wf-completed{background:#dcfce7;color:#166534}.point-priority.pri-normal{background:#f0fdf4;color:#166534}.point-priority.pri-safety_emergency{background:#fef2f2;color:#b91c1c}.point-priority.pri-other{background:#fffbeb;color:#b45309}.badge-icon svg{display:block}.sidebar .repair-timeline.compact{padding:.45rem .5rem}.sidebar .repair-timeline.compact .repair-timeline-title{font-size:var(--sb-font-2xs)}.sidebar .repair-timeline.compact .repair-timeline-label{font-size:var(--sb-font-xs)}.sidebar .repair-timeline.compact .repair-timeline-time{font-size:var(--sb-font-2xs)}.point-comments{margin-top:.75rem;padding-top:.75rem;border-top:1px solid rgba(0,0,0,.08)}.point-comments-title{margin:0 0 .5rem;font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:#64748b}.point-comments-list{max-height:160px;overflow-y:auto;display:flex;flex-direction:column;gap:.5rem;margin-bottom:.5rem}.point-comment-item{background:#f8fafc;border-radius:8px;padding:.45rem .6rem;font-size:.82rem}.point-comment-item header{display:flex;justify-content:space-between;gap:.5rem;margin-bottom:.2rem}.point-comment-item header time{font-size:.72rem;color:#94a3b8;white-space:nowrap}.point-comment-item p{margin:0;white-space:pre-wrap;word-break:break-word}.point-comments-muted{margin:0;font-size:.8rem;color:#94a3b8}.point-comments-error{margin:0 0 .35rem;font-size:.8rem;color:#dc2626}.point-comments-compose{display:flex;gap:.4rem;align-items:flex-end}.point-comments-compose textarea{flex:1;resize:vertical;min-height:2.5rem;max-height:6rem;padding:.4rem .5rem;border:1px solid #cbd5e1;border-radius:8px;font:inherit;font-size:.82rem}.point-comments-compose button{flex-shrink:0;padding:.45rem .75rem;border:none;border-radius:8px;background:#0f766e;color:#fff;font-weight:600;font-size:.82rem;cursor:pointer}.point-comments-compose button:disabled{opacity:.5;cursor:not-allowed}.point-comments.embedded{margin-top:.35rem;padding-top:.45rem;border-top:1px solid #e2e8f0}.point-comments.embedded .point-comments-title{margin-bottom:.35rem;font-size:.68rem}.point-comments.embedded .point-comments-list{max-height:72px;margin-bottom:.35rem}.point-comments.embedded .point-comment-item{padding:.35rem .45rem;font-size:.75rem}.point-comments.embedded .point-comments-compose textarea{min-height:2rem;font-size:.75rem}.point-comments.embedded .point-comments-compose button{padding:.35rem .55rem;font-size:.75rem}.point-tools-panel{margin-top:.65rem;padding-top:.65rem;border-top:1px solid #e2e8f0}.point-tools-panel.embedded{margin-top:.5rem}.point-tools-header{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.4rem}.point-tools-title{margin:0;font-size:.72rem;font-weight:700;color:#334155;text-transform:uppercase;letter-spacing:.03em}.point-tools-link{padding:.15rem 0;border:none;background:none;font-size:.72rem;font-weight:600;color:#0d9488;cursor:pointer;text-decoration:underline;text-underline-offset:2px}.point-tools-link:hover{color:#0f766e}.point-tools-muted{margin:0;font-size:.72rem;color:#64748b}.point-tools-chips{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.35rem}.point-tools-chip{display:inline-flex;align-items:center;max-width:100%;padding:.2rem .25rem .2rem .55rem;border:1px solid #cbd5e1;border-radius:999px;background:#f8fafc;font-size:.68rem}.point-tools-chip-label{display:inline-flex;align-items:center;gap:.35rem;min-width:0}.point-tools-code{font-weight:700;color:#0f766e}.point-tools-expiry{font-size:.65rem;color:#64748b;white-space:nowrap}.point-tools-chip-remove{margin-left:.2rem;padding:0 .35rem;border:none;background:none;color:#94a3b8;font-size:.9rem;line-height:1;cursor:pointer}.point-tools-chip-remove:hover{color:#b91c1c}.point-tools-picker{margin-top:.5rem;border:1px solid #cbd5e1;border-radius:8px;background:#fff;box-shadow:0 8px 24px #0f172a1f;overflow:hidden}.point-tools-picker-head{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.6rem .85rem;background:#f8fafc;border-bottom:1px solid #e2e8f0}.point-tools-picker-title{font-size:.8rem;font-weight:700;color:#0f172a}.point-tools-picker-close{flex-shrink:0;width:1.65rem;height:1.65rem;padding:0;border:none;border-radius:6px;background:transparent;color:#64748b;font-size:1.15rem;line-height:1;cursor:pointer}.point-tools-picker-close:hover{background:#e2e8f0;color:#0f172a}.point-tools-picker-body{padding:.75rem .85rem;display:flex;flex-direction:column;gap:.55rem}.point-tools-search{width:100%;box-sizing:border-box;padding:.5rem .65rem;border:1px solid #cbd5e1;border-radius:6px;font-size:.8rem;line-height:1.35}.point-tools-search:focus{outline:2px solid #99f6e4;outline-offset:1px;border-color:#0d9488}.point-tools-picker-hint{margin:0;padding:.35rem .15rem;font-size:.75rem;color:#64748b;line-height:1.4}.point-tools-picker-list{list-style:none;margin:0;padding:0;max-height:10.5rem;overflow-y:auto;border:1px solid #e2e8f0;border-radius:6px;background:#fafafa}.point-tools-picker-row{display:flex;align-items:center;gap:.5rem;padding:.5rem .65rem;cursor:pointer;font-size:.75rem;line-height:1.35;border-bottom:1px solid #eef2f7}.point-tools-picker-list li:last-child .point-tools-picker-row{border-bottom:none}.point-tools-picker-row:hover,.point-tools-picker-row.picked{background:#f0fdfa}.point-tools-picker-row input[type=checkbox]{flex-shrink:0;width:.95rem;height:.95rem;margin:0;accent-color:#0d9488}.point-tools-picker-main{flex:1;min-width:0;display:flex;flex-wrap:wrap;gap:.3rem .5rem;align-items:baseline}.point-tools-name{font-weight:500;color:#1e293b}.point-tools-picker-foot{display:flex;align-items:center;justify-content:flex-end;gap:.5rem;padding:.65rem .85rem;border-top:1px solid #e2e8f0;background:#f8fafc}.point-tools-picker-cancel{padding:.4rem .75rem;font-size:.75rem;font-weight:600;border:1px solid #cbd5e1;border-radius:6px;background:#fff;color:#475569;cursor:pointer}.point-tools-picker-cancel:hover{background:#f1f5f9}.point-tools-assign-btn{padding:.4rem .85rem;font-size:.75rem;font-weight:600;border:none;border-radius:6px;background:#0d9488;color:#fff;cursor:pointer}.point-tools-assign-btn:disabled{opacity:.55;cursor:not-allowed}.point-tools-error{margin:.45rem 0 0;font-size:.72rem;color:#b91c1c;line-height:1.35}.tool-expiry-expired{color:#b91c1c;font-weight:600}.tool-expiry-soon{color:#b45309;font-weight:600}.map-info-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:12000;display:flex;align-items:center;justify-content:center;padding:1rem;background:#0f172a8c;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.map-info-modal{position:relative;width:min(520px,100%);max-height:min(90vh,720px);overflow-y:auto;background:#fff;border-radius:16px;box-shadow:0 24px 64px #0f172a59;border:1px solid #e2e8f0;padding:1.5rem 1.5rem 1.25rem}.map-info-close{position:absolute;top:.65rem;right:.65rem;width:2rem;height:2rem;border:none;border-radius:8px;background:#f1f5f9;color:#64748b;font-size:1.35rem;line-height:1;cursor:pointer}.map-info-close:hover{background:#e2e8f0;color:#0f172a}.map-info-about{display:flex;gap:1rem;align-items:flex-start;padding-bottom:1.25rem;margin-bottom:1.25rem;border-bottom:1px solid #e2e8f0}.map-info-logo{flex-shrink:0;width:72px;height:72px;border-radius:16px;box-shadow:0 4px 14px #0d948840;object-fit:contain;background:#0f172a}.map-info-about h2{margin:0 0 .35rem;font-size:1.35rem;color:#0f766e;line-height:1.25}.map-info-tagline{margin:0 0 .5rem;font-size:.9rem;color:#475569;line-height:1.45}.map-info-meta{margin:0 0 .25rem;font-size:.88rem;color:#334155}.map-info-contact{margin:0;font-size:.88rem;color:#334155}.map-info-contact a{color:#0d9488;font-weight:700;text-decoration:none}.map-info-contact a:hover{text-decoration:underline}.map-info-legend h3{margin:0 0 .25rem;font-size:1rem;color:#0f172a}.map-info-legend-intro{margin:0 0 .85rem;font-size:.82rem;color:#64748b}.map-info-legend .legend-title{display:block;font-weight:700;font-size:.78rem;text-transform:uppercase;letter-spacing:.04em;color:#64748b;margin:.65rem 0 .4rem}.map-info-legend .legend-title:first-of-type{margin-top:0}.map-info-legend-grid{display:flex;flex-wrap:wrap;gap:.35rem;margin-bottom:.15rem}.map-info-legend .legend-item{display:inline-flex;align-items:center;gap:.3rem;padding:.2rem .45rem;border-radius:6px;font-size:.78rem;font-weight:600}.map-info-legend .legend-item.wf-pending{background:#fef3c7;color:#92400e}.map-info-legend .legend-item.wf-accepted{background:#dbeafe;color:#1d4ed8}.map-info-legend .legend-item.wf-repairing{background:#ffedd5;color:#c2410c}.map-info-legend .legend-item.wf-completed{background:#dcfce7;color:#166534}.map-info-legend .legend-item.pri-normal{background:#f0fdf4;color:#166534}.map-info-legend .legend-item.pri-safety_emergency{background:#fef2f2;color:#b91c1c}.map-info-legend .legend-item.pri-other{background:#fffbeb;color:#b45309}.map-info-legend .legend-item.team-moving{background:#f0fdfa;color:#0d9488}.map-info-legend .legend-item.team-stopped{background:#f1f5f9;color:#64748b}@media(max-width:480px){.map-info-about{flex-direction:column;align-items:center;text-align:center}}.kml-layer-search{margin:.35rem 0 .15rem 1.35rem;padding:.45rem .5rem;border-radius:6px;border:1px solid #99f6e4;background:#f0fdfa}.kml-layer-search-label input{width:100%;font-size:.72rem;padding:.35rem .45rem;border:1px solid #cbd5e1;border-radius:4px;box-sizing:border-box}.kml-layer-search-meta{margin:.25rem 0 0;font-size:.62rem;color:#64748b}.kml-layer-search-error{margin:.25rem 0 0;font-size:.65rem;color:#b91c1c}.kml-layer-search-empty{margin:.3rem 0 0;font-size:.68rem;color:#94a3b8}.kml-layer-search-results{list-style:none;margin:.35rem 0 0;padding:0;max-height:160px;overflow-y:auto;display:flex;flex-direction:column;gap:.25rem}.kml-layer-search-hit{width:100%;text-align:left;padding:.35rem .45rem;border:1px solid #e2e8f0;border-radius:4px;background:#fff;cursor:pointer}.kml-layer-search-hit:hover{border-color:#0d9488;background:#fff}.kml-layer-search-hit strong{display:block;font-size:.75rem;color:#0f172a;line-height:1.25}.kml-layer-search-hit small{display:block;margin-top:.1rem;font-size:.62rem;color:#64748b;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.customer-list-panel{display:flex;flex-direction:column;gap:.45rem;font-size:.78rem}.customer-list-field{display:flex;flex-direction:column;gap:.25rem;font-weight:700;color:#0f172a}.customer-list-field select,.customer-list-field input{font-weight:400;font-size:.78rem;padding:.35rem .4rem;border:1px solid #cbd5e1;border-radius:6px}.customer-list-field-row{display:flex;align-items:center;justify-content:space-between;gap:.35rem}.customer-list-refresh-btn{font-size:.68rem;font-weight:600;padding:.15rem .45rem;border:1px solid #cbd5e1;border-radius:5px;background:#f8fafc;color:#334155;cursor:pointer}.customer-list-refresh-btn:disabled{opacity:.55;cursor:default}.customer-list-hint,.customer-list-meta{margin:0;color:#64748b;line-height:1.35}.customer-list-hint code{font-size:.72rem}.customer-list-error{margin:0;color:#b91c1c;font-weight:600}.customer-list-search-results ul,.customer-station-list{list-style:none;margin:0;padding:0;max-height:220px;overflow-y:auto}.customer-list-search-hit{display:flex;flex-direction:column;align-items:flex-start;width:100%;text-align:left;padding:.35rem .4rem;border:none;border-radius:6px;background:#f8fafc;cursor:pointer}.customer-list-search-hit:hover{background:#eef2ff}.customer-list-search-hit strong{font-size:.78rem}.customer-list-search-hit small{color:#64748b;font-size:.68rem}.customer-station-row{display:flex;align-items:center;gap:.35rem;padding:.28rem .35rem;border-radius:6px;cursor:pointer}.customer-station-row.on{background:#eef2ff}.customer-station-row:hover{background:#f1f5f9}.customer-station-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}.customer-station-count{flex-shrink:0;font-size:.68rem;font-weight:800;color:#4338ca;background:#e0e7ff;padding:.1rem .35rem;border-radius:999px}.customer-station-marker-leaflet{background:transparent!important;border:none!important}.customer-station-marker{display:flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;background:#6366f1;color:#fff;font-size:.85rem;box-shadow:0 2px 8px #6366f173;border:2px solid #fff}.customer-station-marker.active{background:#4338ca;box-shadow:0 0 0 2px #4338ca}.customer-leaflet-popup .leaflet-popup-content{margin:8px 10px;font-size:.78rem}.customer-feature-popup .customer-popup-name{display:block;margin-bottom:.25rem;font-size:.85rem}.customer-feature-popup .customer-popup-line{margin:.12rem 0;color:#334155}.customer-feature-popup .customer-popup-line span{color:#64748b;font-weight:600}.customer-feature-popup .customer-popup-address{font-size:.72rem}.customer-list-toolbar{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.35rem .45rem;border-radius:6px;background:#f1f5f9;border:1px solid #e2e8f0}.customer-clear-display-btn{flex-shrink:0;font-size:.68rem;font-weight:600;padding:.2rem .5rem;border:1px solid #fca5a5;border-radius:4px;background:#fef2f2;color:#b91c1c;cursor:pointer}.customer-clear-display-btn:hover{background:#fee2e2}.customer-list-hidden-hint{padding:.35rem .45rem;border-radius:6px;background:#fffbeb;border:1px solid #fde68a}.customer-search-marker-leaflet{background:transparent!important;border:none!important}.customer-search-marker{display:block;width:18px;height:18px;border-radius:50%;background:#6366f1;border:3px solid #fff;box-shadow:0 0 0 2px #4338ca,0 2px 10px #4338ca8c}.leaflet-cluster-anim .leaflet-marker-icon,.leaflet-cluster-anim .leaflet-marker-shadow{-webkit-transition:-webkit-transform .3s ease-out,opacity .3s ease-in;-moz-transition:-moz-transform .3s ease-out,opacity .3s ease-in;-o-transition:-o-transform .3s ease-out,opacity .3s ease-in;transition:transform .3s ease-out,opacity .3s ease-in}.leaflet-cluster-spider-leg{-webkit-transition:-webkit-stroke-dashoffset .3s ease-out,-webkit-stroke-opacity .3s ease-in;-moz-transition:-moz-stroke-dashoffset .3s ease-out,-moz-stroke-opacity .3s ease-in;-o-transition:-o-stroke-dashoffset .3s ease-out,-o-stroke-opacity .3s ease-in;transition:stroke-dashoffset .3s ease-out,stroke-opacity .3s ease-in}.marker-cluster-small{background-color:#b5e28c99}.marker-cluster-small div{background-color:#6ecc3999}.marker-cluster-medium{background-color:#f1d35799}.marker-cluster-medium div{background-color:#f0c20c99}.marker-cluster-large{background-color:#fd9c7399}.marker-cluster-large div{background-color:#f1801799}.leaflet-oldie .marker-cluster-small{background-color:#b5e28c}.leaflet-oldie .marker-cluster-small div{background-color:#6ecc39}.leaflet-oldie .marker-cluster-medium{background-color:#f1d357}.leaflet-oldie .marker-cluster-medium div{background-color:#f0c20c}.leaflet-oldie .marker-cluster-large{background-color:#fd9c73}.leaflet-oldie .marker-cluster-large div{background-color:#f18017}.marker-cluster{background-clip:padding-box;border-radius:20px}.marker-cluster div{width:30px;height:30px;margin-left:5px;margin-top:5px;text-align:center;border-radius:15px;font:12px Helvetica Neue,Arial,Helvetica,sans-serif}.marker-cluster span{line-height:30px}.map-container{width:100%;height:100%}.team-marker,.point-marker,.repair-point-pin-leaflet,.sovereignty-marker-leaflet{background:transparent!important;border:none!important}.sovereignty-marker-wrap{display:flex;flex-direction:column;align-items:center;gap:3px;pointer-events:none}.sovereignty-pin{display:flex;align-items:center;justify-content:center;padding:2px;border-radius:3px;background:#fff;box-shadow:0 1px 5px #0006;border:1px solid rgba(255,255,255,.95)}.sovereignty-pin .vn-flag-svg{display:block;border-radius:1px}.sovereignty-label{display:block;max-width:220px;padding:.2rem .45rem;font-size:.68rem;font-weight:700;line-height:1.25;text-align:center;color:#7f1d1d;background:#fffffff0;border:1px solid #fecaca;border-radius:6px;box-shadow:0 1px 4px #00000038;white-space:nowrap}.team-marker-wrap{display:flex;flex-direction:column;align-items:center;gap:2px}.team-name-chip{display:block;max-width:148px;padding:.16rem .5rem;font-size:.68rem;font-weight:800;line-height:1.2;text-align:center;color:#fff;background:#0f766e;border:1px solid rgba(255,255,255,.85);border-radius:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-shadow:0 2px 6px #00000047}.team-name-row-marker{display:flex;align-items:center;justify-content:center;gap:4px;flex-wrap:wrap;max-width:220px}.team-name-row-marker .team-name-chip{display:inline-block;vertical-align:middle}.team-battery-chip-marker{font-size:.56rem;font-weight:800;padding:.1rem .28rem;border-radius:5px;white-space:nowrap;background:#1e293beb;color:#e2e8f0;border:1px solid rgba(255,255,255,.35);box-shadow:0 1px 4px #00000040;line-height:1.15}.team-battery-chip-marker.charging{background:#15803df2;color:#fff}.team-pin-anim{display:inline-block;line-height:1}.team-pin-anim.is-moving{animation:team-bounce 1.2s ease-in-out infinite}.team-pin-anim.offline{filter:grayscale(.85) opacity(.65)}.team-pin{position:relative;display:inline-flex;align-items:center;justify-content:center;min-width:1.75rem;min-height:1.75rem;line-height:1}.team-emoji-wrap{position:relative;display:inline-flex;align-items:center;justify-content:center}.team-emoji{font-size:1.5rem;filter:drop-shadow(0 2px 4px rgba(0,0,0,.35));line-height:1;z-index:1}.team-chat-unread-badge{position:absolute;top:-4px;right:-8px;min-width:16px;height:16px;padding:0 4px;border-radius:999px;background:#ef4444;color:#fff;font-size:.55rem;font-weight:800;line-height:16px;text-align:center;border:1.5px solid #fff;box-sizing:border-box;z-index:3;pointer-events:none;box-shadow:0 1px 4px #00000047}.team-heading-rotate{position:absolute;left:50%;top:50%;width:0;height:0;transform-origin:center center;transition:transform .35s ease;pointer-events:none;z-index:2}.team-heading-arrow{position:absolute;left:-6px;top:-20px;width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:9px solid #0ea5e9;filter:drop-shadow(0 1px 2px rgba(0,0,0,.3))}.team-speed-chip{font-size:.72rem;font-weight:800;letter-spacing:.02em;background:#22c55e;color:#fff;padding:.18rem .5rem;border-radius:6px;white-space:nowrap;box-shadow:0 2px 6px #00000047;line-height:1.15}.team-speed-chip.moving{background:#16a34a}.team-speed-chip.stopped{background:#475569}.team-speed-chip.offline{background:#94a3b8;font-size:.65rem}.repair-location-pin{position:relative;width:36px;height:48px}.repair-location-pin .pin-shape{display:block;filter:drop-shadow(0 2px 6px rgba(0,0,0,.35))}.repair-location-pin.is-work .pin-work-icon{position:absolute;left:50%;top:14px;transform:translate(-50%);font-size:14px;line-height:1;z-index:2}.repair-location-pin .pin-wf-icon{position:absolute;left:50%;top:11px;transform:translate(-50%);display:flex;pointer-events:none}.repair-location-pin .pin-wf-icon svg{display:block}.repair-location-pin .pin-pri-flag{position:absolute;right:0;top:0;display:flex;width:16px;height:16px;align-items:center;justify-content:center;border-radius:50%;background:#fff;border:1px solid #e2e8f0;box-shadow:0 1px 3px #0003;pointer-events:none}.repair-location-pin.pri-safety_emergency .pin-pri-flag{animation:emergency-blink 1.2s ease-in-out infinite}.repair-location-pin .pin-label{position:absolute;left:50%;bottom:14px;transform:translate(-50%);font-size:.5rem;font-weight:800;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.5);white-space:nowrap;pointer-events:none}.repair-location-pin.wf-pending .pin-label{color:#422006}.repair-location-pin.wf-repairing .pin-shape{animation:repair-pulse-pin 1.5s ease-in-out infinite}@keyframes repair-pulse-pin{0%,to{filter:drop-shadow(0 2px 6px rgba(234,88,12,.35))}50%{filter:drop-shadow(0 3px 10px rgba(234,88,12,.65))}}@keyframes team-bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-3px)}}.point-marker-stack{position:relative;display:flex;flex-direction:column;align-items:center}.point-badge{display:flex;align-items:center;gap:.2rem;min-width:36px;min-height:28px;padding:.2rem .4rem;border-radius:8px;border:2px solid #fff;box-shadow:0 2px 8px #00000047;font-size:.58rem;font-weight:800;line-height:1.1;color:#fff;white-space:nowrap}.point-badge-wf-icon{display:flex;flex-shrink:0}.point-badge-wf-icon svg{display:block}.point-priority-flag{position:absolute;top:-6px;right:-8px;display:flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;border:2px solid #fff;box-shadow:0 1px 5px #00000040}.point-priority-flag svg{display:block}.point-priority-flag.pri-normal{background:#dcfce7;color:#166534}.point-priority-flag.pri-safety_emergency{background:#fee2e2;color:#b91c1c;animation:emergency-blink 1.2s ease-in-out infinite}.point-priority-flag.pri-other{background:#fef3c7;color:#b45309}.point-badge.wf-pending{background:linear-gradient(180deg,#fbbf24,#d97706);color:#422006}.point-badge.wf-pending .point-badge-wf-icon{color:#78350f}.point-badge.wf-accepted{background:linear-gradient(180deg,#60a5fa,#2563eb);color:#fff}.point-badge.wf-accepted .point-badge-wf-icon{color:#eff6ff}.point-badge.wf-repairing{background:linear-gradient(180deg,#fb923c,#ea580c);animation:repair-pulse 1.5s ease-in-out infinite}.point-badge.wf-repairing .point-badge-wf-icon{color:#fff7ed}.point-badge.wf-completed{background:linear-gradient(180deg,#4ade80,#16a34a);border-color:#bbf7d0;color:#fff;transform:scale(.92)}.point-badge.wf-completed .point-badge-wf-icon{color:#f0fdf4}@keyframes emergency-blink{0%,to{transform:scale(1)}50%{transform:scale(1.08)}}@keyframes repair-pulse{0%,to{box-shadow:0 2px 8px #ea580c59}50%{box-shadow:0 2px 14px #ea580ca6}}.map-overlay{position:absolute;z-index:1000;pointer-events:none}.map-base-layer-select{bottom:35px;right:12px;left:auto;pointer-events:auto;background:#fffffff5;padding:.45rem .65rem;border-radius:8px;box-shadow:0 2px 10px #00000026}.base-map-label{display:flex;flex-direction:column;gap:.3rem;font-size:.72rem;font-weight:700;color:#0f172a}.base-map-label select{min-width:148px;font-size:.78rem;padding:.3rem .35rem;border:1px solid #cbd5e1;border-radius:6px;background:#fff;color:#0f172a}.map-layer-select{overflow-y:auto;pointer-events:auto;background:#fffffffa;padding:.5rem .65rem;border-radius:10px;box-shadow:0 4px 20px #0f172a26}.map-layer-select--desktop{top:12px;right:56px;left:auto;width:min(280px,calc(100vw - 80px));max-width:280px;max-height:min(70vh,520px)}.map-customer-panel--desktop{top:8.25rem;max-height:min(65vh,480px)}.map-weather-panel{overflow-y:auto;pointer-events:auto;background:#fffffffa;padding:.5rem .65rem .65rem;border-radius:10px;box-shadow:0 4px 20px #0f172a26;z-index:1004}.map-weather-panel--desktop{top:85px;right:56px;left:auto;width:min(300px,calc(100vw - 80px));max-height:min(70vh,420px)}.map-weather-panel--mobile{left:12px;right:12px;bottom:12px;top:auto;max-height:min(55vh,400px)}.weather-toggle-row{display:flex;align-items:center;gap:.5rem;font-size:.85rem;font-weight:600;margin:.35rem 0 .65rem;cursor:pointer}.weather-field{display:flex;flex-direction:column;gap:.3rem;font-size:.72rem;font-weight:700;color:#0f172a;margin-bottom:.55rem}.weather-field select,.weather-field input[type=range]{font-weight:400}.weather-field select{font-size:.78rem;padding:.3rem .35rem;border:1px solid #cbd5e1;border-radius:6px;background:#fff}.weather-panel-hint{margin:.25rem 0 0;font-size:.72rem;color:#64748b;line-height:1.4}.weather-panel-status{margin:.35rem 0 0;font-size:.78rem;color:#0369a1}.weather-panel-error{margin:.35rem 0 0;padding:.4rem .5rem;font-size:.75rem;line-height:1.4;color:#991b1b;background:#fef2f2;border:1px solid #fecaca;border-radius:6px}.leaflet-pane.isuadienWeatherPane{z-index:450!important}.leaflet-pane.isuadienWeatherPane .weather-raster-tiles,.leaflet-pane.isuadienWeatherPane .weather-raster-tiles img,.leaflet-pane.isuadienWeatherPane canvas.weather-raster-tiles{filter:contrast(1.28) saturate(1.2)}.map-module-btn.has-weather:not(.is-open){color:#0369a1;background:#e0f2fe}.map-module-dock{top:12px;right:12px;display:flex;flex-direction:column;gap:.35rem;pointer-events:auto;z-index:1005}.map-module-btn{position:relative;display:flex;align-items:center;justify-content:center;width:38px;height:38px;padding:0;border-radius:8px;border:1px solid #e2e8f0;background:#fffffff5;color:#0d9488;box-shadow:0 2px 10px #0f172a26;cursor:pointer}.map-module-btn:hover,.map-module-btn.is-open{background:#f0fdfa;border-color:#5eead4;color:#0f766e}.map-module-badge{position:absolute;top:-4px;right:-4px;display:inline-flex;align-items:center;justify-content:center;min-width:1rem;height:1rem;padding:0 .2rem;border-radius:999px;background:#0d9488;color:#fff;font-size:.58rem;font-weight:800;line-height:1;border:2px solid #fff}.map-module-panel-header{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.35rem}.map-module-panel-title{font-size:.72rem;font-weight:700;color:#0f172a}.map-panel-close-btn{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;padding:0;border:1px solid #cbd5e1;border-radius:4px;background:#fff;color:#64748b;font-size:1rem;line-height:1;cursor:pointer;flex-shrink:0}.map-panel-close-btn:hover{background:#f1f5f9;color:#0f172a}.map-stats-panel{pointer-events:auto;z-index:1003}.map-stats-panel--desktop{top:12px;right:56px;left:auto;width:max-content;max-width:min(34rem,calc(100vw - 5rem));padding:.4rem .5rem .45rem;background:#fffffffa;border-radius:10px;box-shadow:0 4px 20px #0f172a26;z-index:1004}.map-stats-panel--desktop .map-module-panel-header{margin-bottom:.3rem}.map-stats-chips{display:flex;flex-wrap:wrap;align-items:stretch;gap:.35rem}.map-stats-panel--desktop .map-stats-chips{flex-wrap:nowrap}.map-stats-panel--desktop .stat-chip{flex:0 0 auto;font-size:.7rem;padding:.3rem .45rem;line-height:1.2;text-align:left;white-space:nowrap}.map-stats-panel--desktop .stat-chip strong{font-size:.82rem;margin-right:.2rem}@media(min-width:769px){.map-layer-select--desktop{top:12px}.map-container.map-stats-open .map-layer-select--desktop{top:8.25rem}}.layer-select-header-actions,.map-module-panel-header-actions{display:flex;align-items:center;gap:.35rem;flex-shrink:0}.customer-clear-layers-btn{font-size:.68rem;font-weight:600;padding:.2rem .45rem;border:1px solid #fca5a5;border-radius:4px;background:#fef2f2;color:#b91c1c;cursor:pointer}.customer-clear-layers-btn:hover{background:#fee2e2}.map-kml-toggle-badge{display:inline-flex;align-items:center;justify-content:center;min-width:1.1rem;height:1.1rem;padding:0 .25rem;border-radius:999px;background:#0d9488;color:#fff;font-size:.62rem;font-weight:800;line-height:1}.map-mobile-backdrop{display:none}@media(max-width:768px){.map-module-dock{top:8px;right:12px;left:auto}.map-stats-panel--mobile{top:8px;left:8px;right:56px;padding:.45rem .5rem .5rem;background:#fffffffa;border-radius:10px;box-shadow:0 4px 20px #0f172a26;overflow:visible}.map-stats-panel--mobile .map-module-panel-header{margin-bottom:.3rem}.map-stats-panel--mobile .map-stats-chips{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.3rem}.map-stats-panel--mobile .stat-chip{font-size:.64rem;padding:.28rem .2rem;line-height:1.25;text-align:center;white-space:normal}.map-stats-panel--mobile .stat-chip strong{display:block;font-size:.8rem;margin:0 0 .06rem}.map-legend-wrap{bottom:max(12px,env(safe-area-inset-bottom,0px));left:8px}.map-mobile-backdrop{display:block;position:absolute;top:0;right:0;bottom:0;left:0;z-index:1002;pointer-events:auto;border:none;padding:0;margin:0;background:#0f172a59;cursor:pointer}.map-base-map-panel--mobile{top:8px;left:8px;right:56px;padding:.5rem .65rem;pointer-events:auto;z-index:1003;max-height:min(50vh,320px);overflow-y:auto}.map-base-picker-list{display:flex;flex-direction:column;gap:.35rem}.map-base-picker-item{width:100%;padding:.55rem .65rem;border:1px solid #e2e8f0;border-radius:8px;background:#fff;font-size:.82rem;font-weight:600;color:#0f172a;text-align:left;cursor:pointer}.map-base-picker-item.active{border-color:#0d9488;background:#f0fdfa;color:#0f766e}.map-layer-select--mobile{top:8px;left:8px;right:56px;bottom:auto;width:auto;max-width:none;max-height:min(55vh,420px);border-radius:10px;z-index:1003}}.layer-select-header{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.4rem}.layer-select-title{font-size:.72rem;font-weight:700;color:#0f172a}.layer-clear-all{flex-shrink:0;font-size:.68rem;font-weight:600;padding:.2rem .45rem;border:1px solid #fca5a5;border-radius:4px;background:#fef2f2;color:#b91c1c;cursor:pointer}.layer-clear-all:hover{background:#fee2e2}.layer-checkbox-list{display:flex;flex-direction:column;gap:.35rem}.layer-row{display:flex;flex-direction:column;gap:0}.layer-row.expanded{padding-bottom:.15rem;border-bottom:1px solid #e2e8f0}.layer-row.expanded:last-child{border-bottom:none}.layer-checkbox-item{display:flex;align-items:flex-start;gap:.35rem;padding:.25rem .3rem;border-radius:4px;cursor:pointer;font-size:.72rem;color:#334155}.layer-checkbox-item:hover{background:#f1f5f9}.layer-checkbox-item.on{background:#f0fdfa}.layer-checkbox-item input{margin-top:.15rem;flex-shrink:0}.layer-checkbox-text{display:flex;flex-wrap:wrap;align-items:center;gap:.25rem;line-height:1.3}.layer-checkbox-text small{color:#64748b;font-size:.65rem}.layer-swatch-inline{width:10px;height:10px;border-radius:2px;flex-shrink:0;border:1px solid rgba(0,0,0,.12)}.layer-select-hint{margin:.35rem 0 0;font-size:.62rem;color:#64748b;line-height:1.3}.layer-label-settings{margin-top:.5rem;padding-top:.45rem;border-top:1px solid #e2e8f0;display:flex;flex-direction:column;gap:.4rem}.layer-label-row{display:flex;flex-direction:column;gap:.2rem;font-size:.68rem;font-weight:600;color:#334155}.layer-label-row-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.layer-label-row select{font-size:.7rem;padding:.2rem .25rem;border:1px solid #cbd5e1;border-radius:4px}.kml-point-marker-leaflet{background:transparent!important;border:none!important}.kml-point-marker{display:flex;align-items:center;gap:4px;white-space:nowrap;pointer-events:none}.kml-point-dot{width:10px;height:10px;border-radius:50%;border:2px solid #fff;box-shadow:0 1px 4px #00000059;flex-shrink:0}.kml-point-marker-img .kml-point-img{object-fit:contain;flex-shrink:0;filter:drop-shadow(0 1px 3px rgba(0,0,0,.35))}.kml-point-image-icon-leaflet{background:transparent!important;border:none!important}.kml-point-label{font-size:.68rem;font-weight:700;color:#0f172a;text-shadow:-1px -1px 0 #fff,1px -1px 0 #fff,-1px 1px 0 #fff,1px 1px 0 #fff,0 0 4px #fff;max-width:140px;overflow:hidden;text-overflow:ellipsis}.stat-chip{background:#fffffff2;border-radius:8px;padding:.35rem .6rem;font-size:.72rem;color:#334155;box-shadow:0 2px 8px #0000001f;border-left:4px solid #94a3b8}.stat-chip strong{font-size:.85rem;margin-right:.2rem}.stat-chip.wf-pending{border-left-color:#d97706}.stat-chip.wf-accepted{border-left-color:#2563eb}.stat-chip.wf-repairing{border-left-color:#ea580c}.map-legend-wrap{bottom:12px;left:12px;pointer-events:auto}.legend-toggle{display:flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:50%;border:1px solid #e2e8f0;background:#fffffff5;color:#0d9488;box-shadow:0 2px 10px #0f172a26}.legend-toggle:hover,.legend-toggle.open{background:#f0fdfa;border-color:#5eead4;color:#0f766e}.map-legend-panel{position:absolute;bottom:calc(100% + 8px);left:0;display:flex;flex-wrap:wrap;align-items:center;gap:.4rem .55rem;background:#fffffffa;padding:1.75rem .75rem .5rem;border-radius:10px;font-size:.7rem;box-shadow:0 8px 24px #0f172a2e;max-width:min(340px,calc(100vw - 80px));border:1px solid #e2e8f0}.legend-panel-close{position:absolute;top:.35rem;right:.4rem;width:24px;height:24px;border:none;background:transparent;color:#64748b;font-size:1.1rem;line-height:1;border-radius:4px}.legend-panel-close:hover{background:#f1f5f9;color:#0f172a}.legend-title{font-weight:700;color:#0f172a;width:100%;margin-bottom:.1rem}.legend-sep{color:#cbd5e1}.legend-item{display:inline-flex;align-items:center;gap:.25rem;padding:.15rem .4rem;border-radius:4px;font-weight:600}.legend-title-pri{margin-top:.25rem}.legend-item{gap:.3rem}.badge-icon{display:inline-flex;align-items:center;flex-shrink:0}.legend-item.wf-pending{background:#fef3c7;color:#92400e}.legend-item.wf-accepted{background:#dbeafe;color:#1d4ed8}.legend-item.wf-repairing{background:#ffedd5;color:#c2410c}.legend-item.wf-completed{background:#dcfce7;color:#166534}.legend-item.pri-normal{background:#f0fdf4;color:#166534}.legend-item.pri-safety_emergency{background:#fef2f2;color:#b91c1c}.legend-item.pri-other{background:#fffbeb;color:#b45309}.legend-item.team-moving{color:#0d9488}.legend-item.team-stopped{color:#64748b}.popup-badges-row{display:flex;flex-wrap:wrap;gap:.35rem;margin-bottom:.4rem}.popup-status-badge,.popup-priority-badge,.popup-type-badge{display:inline-flex;align-items:center;gap:.25rem;font-size:.68rem;font-weight:700;padding:.15rem .45rem;border-radius:4px}.popup-status-badge.wf-pending{background:#fef3c7;color:#92400e}.popup-status-badge.wf-accepted{background:#dbeafe;color:#1d4ed8}.popup-status-badge.wf-repairing{background:#ffedd5;color:#c2410c}.popup-status-badge.wf-completed{background:#dcfce7;color:#166534}.popup-priority-badge.pri-normal{background:#f0fdf4;color:#166534}.popup-priority-badge.pri-safety_emergency{background:#fef2f2;color:#b91c1c}.popup-priority-badge.pri-other{background:#fffbeb;color:#b45309}.popup-type-badge.cat-work_order{background:#ede9fe;color:#5b21b6}.popup-type-badge.cat-work_command{background:#e0e7ff;color:#3730a3}.popup-location-label{font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:#64748b}.popup-offline{color:#64748b;font-style:italic}.team-marker-popup{font-size:.82rem;line-height:1.45}.team-popup-location-age{color:#64748b;font-size:.78rem}.team-popup-location-exact{color:#94a3b8;font-size:.72rem}.team-popup-chat-btn{margin-top:.35rem;padding:.3rem .65rem;font-size:.78rem;font-weight:600;color:#fff;background:#2563eb;border:none;border-radius:6px;cursor:pointer}.team-popup-chat-btn:hover:not(:disabled){background:#1d4ed8}.team-popup-chat-btn:disabled{opacity:.45;cursor:not-allowed}.team-popup-comms{display:flex;gap:.35rem;margin-top:.5rem;padding-top:.4rem;border-top:1px solid #e2e8f0}.team-popup-comms-btn{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;padding:0;color:#334155;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:8px;cursor:pointer;transition:background .15s,color .15s,border-color .15s}.team-popup-comms-btn:hover:not(:disabled){background:#e2e8f0;color:#0f172a}.team-popup-comms-btn--chat{color:#fff;background:#2563eb;border-color:#2563eb}.team-popup-comms-btn--chat:hover:not(:disabled){background:#1d4ed8;border-color:#1d4ed8;color:#fff}.team-popup-comms-btn:disabled{opacity:.45;cursor:not-allowed}.team-popup-comms-hint{margin:.4rem 0 0;font-size:.72rem;color:#94a3b8;font-style:italic}.point-popup.wf-completed{opacity:.92}.repair-point-popup.leaflet-popup .leaflet-popup-content-wrapper,.repair-point-popup .leaflet-popup-content{overflow:visible!important}.repair-point-popup .leaflet-popup-content{margin:8px 10px;width:min(92vw,520px)!important}.leaflet-popup-content-wrapper:has(.field-worker-picker),.leaflet-popup-content:has(.field-worker-picker),.leaflet-popup-content-wrapper:has(.point-tools-picker),.leaflet-popup-content:has(.point-tools-picker){overflow:visible!important}.repair-point-popup .leaflet-popup-content:has(.point-tools-picker){margin:10px 12px}.point-popup{display:flex;flex-direction:column;gap:.45rem;max-width:520px}.popup-header{display:flex;flex-direction:column;gap:.35rem;padding-bottom:.4rem;border-bottom:1px solid #e2e8f0}.popup-customer-block{display:flex;flex-direction:column;align-items:flex-start;gap:.2rem}.popup-customer-name{margin:0;font-size:1rem;line-height:1.25;color:#0f172a}.popup-phone-link{font-size:.82rem;font-weight:600;color:#0d9488;text-decoration:none;padding:.12rem .45rem;background:#f0fdfa;border:1px solid #99f6e4;border-radius:999px}.popup-phone-link:hover{background:#ccfbf1;text-decoration:underline}.popup-body-grid{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,.75fr);gap:.5rem .65rem;align-items:start}.popup-col{min-width:0;display:flex;flex-direction:column;gap:.4rem}.popup-section-title{margin:0;font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:#64748b}.popup-section-head{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.popup-edit-toggle{font-size:.72rem;font-weight:600;color:#0d9488;background:#f0fdfa;border:1px solid #99f6e4;border-radius:6px;padding:.2rem .55rem;cursor:pointer}.popup-edit-toggle:hover{background:#ccfbf1}.popup-point-edit{display:flex;flex-direction:column;gap:.45rem;overflow:visible}.popup-point-edit label:has(.field-worker-picker){overflow:visible}.popup-point-edit label{display:flex;flex-direction:column;gap:.2rem;font-size:.72rem;font-weight:600;color:#64748b}.popup-point-edit input,.popup-point-edit textarea{font-size:.85rem;padding:.35rem .5rem;border:1px solid #cbd5e1;border-radius:6px;font-weight:400;color:#0f172a}.popup-edit-actions{display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.15rem}.popup-edit-cancel{font-size:.78rem;padding:.35rem .65rem;border:1px solid #cbd5e1;border-radius:6px;background:#fff;color:#475569;cursor:pointer}.popup-edit-error{margin:0;font-size:.78rem;color:#b91c1c}.popup-damage-block{display:flex;flex-direction:column;gap:.15rem;min-width:0}.popup-damage{margin:0;font-size:.82rem;line-height:1.45;color:#334155;white-space:pre-wrap;word-break:break-word;max-height:min(42vh,280px);overflow-y:auto;padding-right:.15rem}.popup-meta-line{margin:0;font-size:.72rem;line-height:1.35;color:#475569;display:flex;flex-direction:column;gap:.1rem}.popup-meta-label{font-size:.62rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:#94a3b8}.popup-address span:last-child{color:#64748b}.popup-col-ops{gap:.35rem}.point-popup .popup-actions{margin-top:0;padding-top:.45rem;border-top:1px solid #e2e8f0;flex-direction:column;align-items:stretch;gap:.45rem}.popup-status-edit{display:flex;flex-direction:column;gap:.3rem;width:100%}.popup-status-label{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:#64748b}.popup-status-row{display:flex;gap:.35rem;align-items:center}.popup-status-row select{flex:1;min-width:0;font-size:.82rem;padding:.35rem .4rem;border:1px solid #cbd5e1;border-radius:6px;background:#fff}.popup-save-status{flex-shrink:0;padding:.35rem .75rem;font-size:.82rem;font-weight:700;border:none;border-radius:6px;background:#0d9488;color:#fff;cursor:pointer}.popup-save-status:hover:not(:disabled){background:#0f766e}.popup-save-status:disabled{opacity:.45;cursor:not-allowed}.popup-status-error{margin:0;font-size:.75rem;color:#dc2626}.point-popup .popup-actions .danger{align-self:flex-end;font-size:.78rem;padding:.3rem .55rem;border:1px solid #fecaca;border-radius:6px;background:#fff}@media(max-width:420px){.popup-body-grid{grid-template-columns:1fr}}.point-form{min-width:min(92vw,360px);display:flex;flex-direction:column;gap:.5rem;overflow:visible}.leaflet-popup-content-wrapper:has(.point-form),.leaflet-popup-content:has(.point-form){overflow:visible}.leaflet-popup-content:has(.point-form){width:min(92vw,420px)!important}.point-form-row{display:grid;grid-template-columns:1fr 1fr;gap:.5rem;align-items:start}.point-form-row>label{min-width:0}@media(max-width:380px){.point-form-row{grid-template-columns:1fr}}.point-form h3{font-size:1rem;color:#0d9488}.point-form label{display:flex;flex-direction:column;gap:.25rem;font-size:.8rem;font-weight:600}.point-form input,.point-form textarea,.point-form select{padding:.4rem;border:1px solid #cbd5e1;border-radius:4px}.point-form-hint{font-size:.68rem;font-weight:500;color:#64748b;line-height:1.35}.form-actions{display:flex;gap:.5rem;margin-top:.25rem}.form-actions button{flex:1;padding:.4rem;border-radius:4px;border:1px solid #e2e8f0}.field-worker-picker{display:flex;flex-direction:column;gap:.35rem}.field-worker-chips{display:flex;flex-wrap:wrap;gap:.3rem;min-height:1.6rem}.field-worker-empty{font-size:.72rem;font-weight:500;color:#94a3b8}.field-worker-chip{display:inline-flex;align-items:center;gap:.15rem;padding:.1rem .3rem .1rem .2rem;border-radius:999px;background:#ecfdf5;border:1px solid #99f6e4;color:#0f766e;font-size:.72rem;font-weight:700}.field-worker-chip-name{border:none;background:transparent;color:#0d9488;font-size:inherit;font-weight:inherit;padding:.1rem .25rem;border-radius:999px;cursor:pointer;text-decoration:underline;text-underline-offset:2px}.field-worker-chip-name:hover{background:#0d94881f;color:#0f766e}.field-worker-chip-label{padding:.1rem .35rem}.field-worker-chip-remove{border:none;background:transparent;color:#0d9488;cursor:pointer;font-size:.95rem;line-height:1;padding:0 .1rem}.field-worker-input-wrap{position:relative}.field-worker-input{width:100%;box-sizing:border-box}.field-worker-suggest-list{position:absolute;z-index:10050;pointer-events:auto;isolation:isolate;left:0;right:0;top:calc(100% + 2px);margin:0;padding:.2rem 0;list-style:none;background:#fff;border:1px solid #cbd5e1;border-radius:6px;box-shadow:0 8px 20px #0f172a1f;max-height:160px;overflow-y:auto}.field-worker-suggest-row{display:flex;align-items:stretch;gap:0}.field-worker-suggest-item{display:block;flex:1;min-width:0;text-align:left;border:none;background:transparent;padding:.35rem .55rem;font-size:.78rem;cursor:pointer}.field-worker-suggest-item:hover{background:#f0fdfa}.field-worker-suggest-focus{flex-shrink:0;border:none;border-left:1px solid #e2e8f0;background:transparent;padding:0 .45rem;font-size:.85rem;cursor:pointer;line-height:1}.field-worker-suggest-focus:hover{background:#f0fdfa}.popup-work-member-list{display:inline}.popup-work-member-link{border:none;background:transparent;color:#0d9488;font:inherit;padding:0;cursor:pointer;text-decoration:underline;text-underline-offset:2px}.popup-work-member-link:hover{color:#0f766e}.field-worker-hint{margin:0;font-size:.68rem;font-weight:500;color:#94a3b8}.form-actions .save{background:#0d9488;color:#fff;border-color:#0d9488}.point-popup p{margin:.25rem 0;font-size:.85rem}.point-popup .popup-phone a{color:#0d9488;font-weight:600;text-decoration:none}.point-popup .popup-phone a:hover{text-decoration:underline}.point-popup .address{color:#64748b;font-size:.75rem}.popup-actions{display:flex;gap:.35rem;margin-top:.5rem}.popup-actions .danger{color:#dc2626}.kml-leaflet-popup .leaflet-popup-content{margin:10px 12px;font-size:.82rem;line-height:1.45}.kml-feature-popup .kml-popup-title{display:block;font-size:.95rem;color:#0f766e;margin-bottom:.35rem}.kml-popup-desc{margin-bottom:.5rem;color:#334155}.kml-popup-table{width:100%;border-collapse:collapse;font-size:.75rem}.kml-popup-table th{text-align:left;padding:.2rem .45rem .2rem 0;color:#64748b;font-weight:600;vertical-align:top;white-space:nowrap}.kml-popup-table td{padding:.2rem 0;color:#1e293b;word-break:break-word}.nearby-teams-panel{margin-top:.65rem;padding-top:.55rem;border-top:1px solid #e2e8f0}.nearby-teams-panel.popup{margin-top:0;padding-top:0;border-top:none}.nearby-teams-header{display:flex;align-items:center;justify-content:space-between;gap:.35rem;margin-bottom:.4rem}.nearby-teams-panel.popup .nearby-teams-header{margin-bottom:.25rem}.nearby-teams-panel h4{margin:0;font-size:.8rem;color:#0f766e}.nearby-teams-panel.popup h4{font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:#64748b}.nearby-direct-link{border:none;background:transparent;color:#0d9488;font-size:.72rem;font-weight:600;padding:0;cursor:pointer;text-decoration:underline;text-underline-offset:2px;white-space:nowrap}.nearby-teams-panel.popup .nearby-direct-link{font-size:.65rem}.nearby-direct-link:hover{color:#0f766e}.nearby-direct-list .nearby-team-info strong{font-size:.72rem}.nearby-teams-panel.popup .nearby-direct-list .nearby-team-info strong{font-size:.7rem}.nearby-empty{margin:0;font-size:.75rem;color:#64748b}.nearby-teams-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.35rem;max-height:200px;overflow-y:auto}.nearby-teams-panel.popup .nearby-teams-list{max-height:108px;gap:.25rem}.nearby-teams-panel.popup .nearby-teams-list li{padding:.25rem .35rem}.nearby-teams-panel.popup .nearby-team-info strong{font-size:.7rem}.nearby-teams-panel.popup .nearby-assign-btn{font-size:.65rem;padding:.15rem .4rem}.nearby-teams-list li{display:flex;align-items:center;gap:.4rem;padding:.35rem .4rem;background:#f8fafc;border-radius:6px;border:1px solid #e2e8f0}.nearby-teams-list li.no-gps{opacity:.65}.nearby-team-icon{font-size:1.25rem;line-height:1}.nearby-team-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:.1rem}.nearby-team-info strong{font-size:.78rem}.nearby-team-code{font-size:.68rem;color:#64748b}.nearby-meta{font-size:.68rem;color:#0d9488;font-weight:600}.nearby-meta.warn{color:#b45309}.nearby-assign-btn{flex-shrink:0;padding:.25rem .5rem;font-size:.68rem;font-weight:700;border:1px solid #0d9488;background:#f0fdfa;color:#0f766e;border-radius:4px}.nearby-assign-btn:hover{background:#ccfbf1}.map-context-tools-host{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1200;pointer-events:none;overflow:visible}.map-context-menu-anchor{position:absolute;z-index:2;pointer-events:none;transform:translate(8px,8px)}.map-context-menu{pointer-events:auto;min-width:220px;padding:.35rem 0;background:#fffffffa;border:1px solid #e2e8f0;border-radius:10px;box-shadow:0 10px 28px #0f172a2e}.map-context-menu-item{display:flex;align-items:center;gap:.5rem;width:100%;padding:.5rem .75rem;border:none;background:transparent;font-size:.82rem;font-weight:600;color:#0f172a;text-align:left;cursor:pointer}.map-context-menu-item:hover{background:#f0fdfa;color:#0f766e}.map-context-menu-item--muted{color:#64748b;font-weight:500}.map-context-menu-item--muted:hover{color:#475569;background:#f8fafc}.map-measure-hud{position:absolute;left:50%;bottom:max(12px,env(safe-area-inset-bottom,0px));transform:translate(-50%);pointer-events:none;z-index:1}.map-measure-hud-inner{pointer-events:auto;display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .75rem;padding:.5rem .75rem;background:#fffffff7;border:1px solid #99f6e4;border-radius:10px;box-shadow:0 6px 20px #0f172a26;max-width:min(96vw,420px)}.map-measure-title{font-size:.78rem;font-weight:800;color:#0f766e}.map-measure-detail{font-size:.78rem;color:#334155;flex:1;min-width:140px}.map-measure-actions{display:flex;gap:.35rem}.map-measure-btn{padding:.3rem .55rem;font-size:.72rem;font-weight:700;border:1px solid #cbd5e1;border-radius:6px;background:#fff;color:#334155;cursor:pointer}.map-measure-btn:disabled{opacity:.45;cursor:not-allowed}.map-measure-btn.primary{border-color:#0d9488;background:#0d9488;color:#fff}.map-measure-btn.primary:hover{background:#0f766e}@media(max-width:768px){.map-context-menu{min-width:200px}.map-measure-hud{left:8px;right:8px;transform:none}.map-measure-hud-inner{flex-direction:column;align-items:stretch}.map-measure-actions{justify-content:flex-end}}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:2000;padding:max(.75rem,env(safe-area-inset-top,0px)) max(.75rem,env(safe-area-inset-right,0px)) max(.75rem,env(safe-area-inset-bottom,0px)) max(.75rem,env(safe-area-inset-left,0px));overflow-y:auto}.modal{background:#fff;padding:1.5rem;border-radius:12px;width:100%;max-width:420px;display:flex;flex-direction:column;gap:.75rem}.modal.team-modal{max-height:min(92dvh,calc(100dvh - 1.5rem));padding:0;overflow:hidden;gap:0;margin:auto}.team-modal-header{flex-shrink:0;padding:1rem 1.25rem .35rem;border-bottom:1px solid #f1f5f9}.team-modal-header h2{margin:0}.team-modal-body{flex:1 1 auto;min-height:0;overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding:.75rem 1.25rem 1rem;display:flex;flex-direction:column;gap:.75rem}.team-modal-footer{flex-shrink:0;margin-top:0;padding:.75rem 1.25rem 1rem;border-top:1px solid #e2e8f0;background:#fff;border-radius:0 0 12px 12px}.modal h2{color:#0d9488}.modal label{display:flex;flex-direction:column;gap:.3rem;font-size:.85rem;font-weight:600}.modal input,.modal textarea{padding:.5rem;border:1px solid #cbd5e1;border-radius:6px}.modal-actions{display:flex;gap:.5rem;margin-top:.5rem}.modal-actions button{flex:1;padding:.6rem;border-radius:6px;border:1px solid #e2e8f0}.modal-actions .save{background:#0d9488;color:#fff;border-color:#0d9488}.modal select{padding:.5rem;border:1px solid #cbd5e1;border-radius:6px}.modal h3{color:#0d9488;margin:0 0 .25rem}.modal-hint{margin:0;font-size:.75rem;color:#64748b;line-height:1.4}.team-icon-picker{display:grid;grid-template-columns:repeat(4,1fr);gap:.35rem}.team-icon-option{display:flex;flex-direction:column;align-items:center;gap:.15rem;padding:.4rem .25rem;border:2px solid #e2e8f0;border-radius:8px;background:#f8fafc;cursor:pointer}.team-icon-option.selected{border-color:#0d9488;background:#f0fdfa}.team-icon-emoji{font-size:1.35rem;line-height:1}.team-icon-label{font-size:.58rem;font-weight:600;color:#64748b;text-align:center;line-height:1.15}.team-worker-select{display:flex;flex-direction:column;gap:.35rem}.team-worker-empty{font-size:.78rem;font-weight:500;color:#94a3b8}.team-worker-selected{display:flex;align-items:flex-start;gap:.35rem;padding:.35rem .45rem;border-radius:8px;background:#ecfdf5;border:1px solid #99f6e4}.team-worker-selected-name{flex:1;min-width:0;font-size:.78rem;font-weight:600;color:#0f766e;line-height:1.35;word-break:break-word}.team-worker-clear{flex-shrink:0;border:none;background:transparent;color:#0d9488;cursor:pointer;font-size:1rem;line-height:1;padding:.1rem .25rem}.team-worker-input-wrap{position:relative}.team-worker-input{width:100%;box-sizing:border-box;padding:.5rem;border:1px solid #cbd5e1;border-radius:6px;font-weight:400}.team-worker-suggest-list{position:absolute;z-index:10;left:0;right:0;top:calc(100% + 2px);margin:0;padding:.2rem 0;list-style:none;background:#fff;border:1px solid #cbd5e1;border-radius:6px;box-shadow:0 8px 20px #0f172a1f;max-height:180px;overflow-y:auto}.team-worker-suggest-item{display:block;width:100%;text-align:left;border:none;background:transparent;padding:.4rem .55rem;font-size:.78rem;line-height:1.35;cursor:pointer;color:#0f172a}.team-worker-suggest-item:hover{background:#f0fdfa}.team-worker-no-match{margin:.25rem 0 0;font-size:.72rem;color:#94a3b8}@media(max-width:480px){.modal.team-modal{max-height:min(94dvh,calc(100dvh - 1rem));border-radius:10px}.team-modal-header{padding:.85rem 1rem .3rem}.team-modal-body,.team-modal-footer{padding:.65rem 1rem .85rem}.team-icon-picker{grid-template-columns:repeat(3,1fr)}}.journey-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;z-index:1500;display:flex;align-items:center;justify-content:center;padding:1rem}.journey-panel{background:#fff;border-radius:12px;width:100%;max-width:min(980px,96vw);max-height:90vh;display:flex;flex-direction:column;overflow:hidden}.journey-panel header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.25rem;border-bottom:1px solid #e2e8f0}.journey-panel h2{font-size:1.1rem;color:#0d9488}.journey-code{font-weight:500;color:#64748b;font-size:.9em}.journey-header-actions{display:flex;align-items:center;gap:.5rem}.journey-export-btn{padding:.4rem .75rem;font-size:.82rem;font-weight:600;border:1px solid #99f6e4;border-radius:6px;background:#f0fdfa;color:#0f766e;cursor:pointer}.journey-export-btn:disabled{opacity:.5;cursor:not-allowed}.journey-close-btn{padding:.4rem .85rem;font-size:.82rem;font-weight:600;border:1px solid #cbd5e1;border-radius:6px;background:#fff;color:#475569;cursor:pointer}.journey-close-btn:hover{background:#f8fafc;border-color:#94a3b8}.journey-controls{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.75rem 1rem;padding:.75rem 1.25rem}.journey-view-tabs{display:flex;gap:.35rem;margin-left:auto}.journey-view-tabs button{padding:.45rem .85rem;font-size:.82rem;font-weight:600;border:1px solid #cbd5e1;border-radius:8px;background:#f8fafc;color:#475569;cursor:pointer}.journey-view-tabs button.active{background:#0d9488;border-color:#0d9488;color:#fff}.journey-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:.75rem;padding:0 1.25rem .75rem}.journey-stats div{background:#f8fafc;padding:.5rem .75rem;border-radius:8px;text-align:center}.journey-stats span{display:block;font-size:.7rem;color:#64748b}.journey-stats strong{font-size:1rem;color:#0f766e}.journey-map{height:400px;margin:0 1rem 1rem;border-radius:8px;flex-shrink:0}.journey-table-section{display:flex;flex-direction:column;min-height:0;flex:1;margin:0 1rem 1rem}.journey-table-hint{margin:0 0 .5rem;font-size:.78rem;color:#64748b}.journey-table-loading,.journey-table-empty{text-align:center;color:#64748b;padding:1.5rem}.journey-table-wrap{overflow:auto;max-height:min(48vh,420px);border:1px solid #e2e8f0;border-radius:8px}.journey-points-table{width:100%;border-collapse:collapse;font-size:.78rem}.journey-points-table th{position:sticky;top:0;background:#f1f5f9;text-align:left;padding:.45rem .5rem;font-weight:700;color:#334155;border-bottom:1px solid #e2e8f0;white-space:nowrap}.journey-points-table td{padding:.4rem .5rem;border-bottom:1px solid #f1f5f9;vertical-align:top}.journey-points-table tbody tr:nth-child(2n){background:#fafbfc}.journey-points-table tbody tr:hover{background:#f0fdfa}.journey-coord{font-family:ui-monospace,Cascadia Code,Consolas,monospace;font-size:.72rem;white-space:nowrap}.users-modal{max-width:720px;max-height:90vh;overflow:auto}.users-modal-header{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.users-modal-header h2{margin:0}.modal-close{border:none;background:transparent;font-size:1.5rem;line-height:1;cursor:pointer;color:#64748b}.modal-error{color:#dc2626;font-size:.85rem;margin:0}.btn-inline-add{align-self:flex-start;padding:.4rem .75rem;border-radius:6px;border:1px dashed #0d9488;background:#f0fdfa;color:#0f766e;font-weight:600;cursor:pointer}.users-loading{color:#64748b;font-size:.9rem}.users-table-wrap{overflow-x:auto;margin-top:.5rem}.users-table{width:100%;border-collapse:collapse;font-size:.8rem}.users-table th,.users-table td{padding:.45rem .35rem;text-align:left;border-bottom:1px solid #e2e8f0}.users-table th{color:#64748b;font-weight:600}.users-actions{white-space:nowrap}.users-actions button{margin-right:.25rem;padding:.2rem .45rem;font-size:.72rem;border-radius:4px;border:1px solid #e2e8f0;background:#fff;cursor:pointer}.users-actions .danger{color:#dc2626;border-color:#fecaca}.role-tag{display:inline-block;padding:.1rem .35rem;border-radius:4px;font-size:.7rem;font-weight:600}.role-tag.role-admin{background:#ede9fe;color:#5b21b6}.role-tag.role-dispatcher{background:#e0f2fe;color:#0369a1}.role-tag.role-field_worker{background:#f1f5f9;color:#475569}.modal-overlay.inner{z-index:2100}.map-layers-modal{max-width:560px;max-height:90vh;overflow:auto}.map-layers-hint{font-size:.8rem;color:#64748b;margin:0}.kml-point-search{margin:.75rem 0;padding:.75rem;border-radius:8px;border:1px solid #e2e8f0;background:#f8fafc}.kml-search-label{display:flex;flex-direction:column;gap:.35rem;font-size:.8rem;font-weight:600;color:#334155}.kml-search-label input{font-weight:400;padding:.45rem .6rem;border:1px solid #cbd5e1;border-radius:6px}.kml-search-meta{margin:.35rem 0 0;font-size:.72rem;color:#64748b}.kml-search-empty{margin:.5rem 0 0;font-size:.78rem;color:#94a3b8}.kml-search-results{list-style:none;margin:.5rem 0 0;padding:0;max-height:220px;overflow-y:auto;display:flex;flex-direction:column;gap:.35rem}.kml-search-hit{width:100%;text-align:left;padding:.45rem .55rem;border:1px solid #e2e8f0;border-radius:6px;background:#fff;cursor:pointer}.kml-search-hit:hover{border-color:#0d9488;background:#f0fdfa}.kml-search-hit strong{display:block;font-size:.82rem;color:#0f172a}.kml-search-hit small{display:block;margin-top:.15rem;font-size:.7rem;color:#64748b;line-height:1.35}.upload-form{display:flex;flex-direction:column;gap:.5rem;padding:.75rem;background:#f0fdfa;border-radius:8px;border:1px solid #99f6e4}.upload-form label{display:flex;flex-direction:column;gap:.25rem;font-size:.8rem;font-weight:600}.upload-form input[type=file]{font-size:.75rem}.upload-form .save{align-self:flex-start;padding:.45rem 1rem;background:#0d9488;color:#fff;border:none;border-radius:6px;cursor:pointer}.map-layers-list{list-style:none;margin:.75rem 0 0;padding:0;display:flex;flex-direction:column;gap:.5rem}.map-layers-list li{display:flex;align-items:center;gap:.5rem;padding:.5rem;border:1px solid #e2e8f0;border-radius:8px;background:#f8fafc}.map-layers-list li.empty{justify-content:center;color:#94a3b8}.layer-swatch{width:14px;height:14px;border-radius:4px;flex-shrink:0;border:1px solid rgba(0,0,0,.15)}.map-layers-list li>div:first-of-type{flex:1;min-width:0}.map-layers-list small{display:block;color:#64748b;font-size:.7rem}.layer-actions button{font-size:.72rem;padding:.2rem .45rem;margin-left:.2rem;border-radius:4px;border:1px solid #e2e8f0;background:#fff;cursor:pointer}.layer-actions .danger{color:#dc2626}.layer-scale-presets{display:flex;gap:.35rem;margin-top:.35rem}.layer-scale-presets button{flex:1;font-size:.72rem;padding:.25rem;border:1px solid #e2e8f0;border-radius:4px;background:#fff;cursor:pointer}.layer-scale-presets button:hover{border-color:#0d9488;background:#f0fdfa}.layer-icon-field{display:flex;flex-direction:column;gap:.35rem;margin-top:.25rem}.layer-icon-field-title{font-size:.8rem;font-weight:600;color:#334155}.layer-icon-hint{margin:0;font-size:.72rem;color:#64748b;line-height:1.35}.layer-icon-preview-wrap{display:flex;align-items:center;gap:.65rem}.layer-icon-preview{width:40px;height:40px;object-fit:contain;border:1px solid #e2e8f0;border-radius:6px;background:#f8fafc}.layer-icon-remove{font-size:.72rem;padding:.25rem .5rem;border:1px solid #fca5a5;border-radius:4px;background:#fef2f2;color:#b91c1c;cursor:pointer}.layer-icon-pending{margin:0;font-size:.72rem;color:#b45309}.layer-icon-field input[type=file]{font-size:.75rem}.export-report-modal{max-width:min(920px,96vw);max-height:92vh;overflow:auto}.export-report-tabs{display:flex;gap:.35rem;padding:0 0 .5rem;border-bottom:1px solid #e2e8f0;margin-bottom:.5rem}.export-report-tabs button{padding:.45rem .85rem;font-size:.82rem;font-weight:600;border:1px solid #cbd5e1;border-radius:8px;background:#f8fafc;color:#475569;cursor:pointer}.export-report-tabs button.active{background:#0d9488;border-color:#0d9488;color:#fff}.movement-toolbar{margin-bottom:.25rem}.team-inactive-tag{font-size:.75rem;color:#b45309;font-weight:600}.journey-link-btn{padding:.25rem .5rem;font-size:.75rem;border:1px solid #99f6e4;border-radius:6px;background:#f0fdfa;color:#0f766e;cursor:pointer}.journey-link-btn:hover{background:#ccfbf1}.export-report-hint{font-size:.82rem;color:#64748b;margin:0;line-height:1.45}.export-report-toolbar{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.5rem .75rem}.export-report-toolbar label{flex:1;min-width:140px}.export-report-presets{display:flex;flex-wrap:wrap;gap:.35rem;align-items:center}.export-report-presets .preset-btn{padding:.45rem .65rem;font-size:.78rem;font-weight:600;border:1px solid #99f6e4;border-radius:6px;background:#f0fdfa;color:#0f766e}.export-report-presets .preset-btn:hover{background:#ccfbf1}.export-report-toolbar input[type=date]{padding:.45rem .5rem;border:1px solid #cbd5e1;border-radius:6px}.export-report-toolbar .save{padding:.55rem 1rem;border-radius:8px;border:1px solid #0d9488;background:#0d9488;color:#fff;font-weight:700;font-size:.85rem;cursor:pointer}.export-report-toolbar .save:hover:not(:disabled){background:#0f766e;border-color:#0f766e}.export-report-toolbar .save:disabled{opacity:.5;cursor:not-allowed}.export-excel-btn{padding:.55rem 1rem;border-radius:8px;border:1px solid #16a34a;background:#22c55e;color:#fff;font-weight:700;font-size:.85rem}.export-excel-btn:hover:not(:disabled){background:#16a34a}.export-excel-btn:disabled{opacity:.5;cursor:not-allowed}.export-report-date-title{font-size:.9rem;color:#0f172a;margin:.25rem 0 .5rem}.export-summary-grid{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:.75rem}.summary-card{display:flex;flex-direction:column;align-items:center;min-width:72px;padding:.4rem .55rem;border-radius:8px;background:#f8fafc;border:1px solid #e2e8f0;font-size:.72rem;color:#64748b}.summary-card strong{font-size:1.1rem;color:#0f172a}.summary-card.wf-pending{border-left:3px solid #d97706}.summary-card.wf-accepted{border-left:3px solid #2563eb}.summary-card.wf-repairing{border-left:3px solid #ea580c}.summary-card.wf-completed{border-left:3px solid #16a34a}.summary-card.pri-safety strong{color:#b91c1c}.export-table-wrap{overflow:auto;max-height:min(48vh,420px);border:1px solid #e2e8f0;border-radius:8px}.export-points-table{width:100%;border-collapse:collapse;font-size:.78rem}.export-points-table th{position:sticky;top:0;background:#f1f5f9;text-align:left;padding:.45rem .5rem;font-weight:700;color:#334155;border-bottom:1px solid #e2e8f0;white-space:nowrap}.export-points-table td{padding:.4rem .5rem;border-bottom:1px solid #f1f5f9;vertical-align:top}.export-ccdc-cell{max-width:11rem;font-size:.72rem;color:#475569;line-height:1.35;word-break:break-word}.export-points-table tr.wf-pending td:first-child{border-left:3px solid #d97706}.export-points-table tr.wf-accepted td:first-child{border-left:3px solid #2563eb}.export-points-table tr.wf-repairing td:first-child{border-left:3px solid #ea580c}.export-points-table tr.wf-completed td:first-child{border-left:3px solid #16a34a}.damage-preview{display:block;font-size:.68rem;color:#64748b;margin-top:.15rem;max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.empty-row{text-align:center;color:#64748b;padding:1.5rem!important}.export-loading{text-align:center;color:#64748b;padding:1rem}.backup-modal{max-width:720px;width:min(96vw,720px)}.backup-modal-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:.75rem}.backup-modal-header h2{margin:0;font-size:1.15rem}.backup-intro{margin:0 0 1rem;font-size:.88rem;color:#64748b;line-height:1.45}.backup-intro code{font-size:.82rem;background:#f1f5f9;padding:.1rem .35rem;border-radius:4px}.backup-actions-row{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1rem}.backup-loading,.backup-empty{margin:0;color:#64748b;font-size:.9rem}.backup-table-wrap{max-height:280px;overflow:auto;border:1px solid #e2e8f0;border-radius:8px}.backup-table{width:100%;border-collapse:collapse;font-size:.85rem}.backup-table th,.backup-table td{padding:.5rem .65rem;text-align:left;border-bottom:1px solid #f1f5f9}.backup-table th{background:#f8fafc;font-weight:700;position:sticky;top:0}.backup-table td.mono{font-family:ui-monospace,monospace;font-size:.78rem;word-break:break-all}.backup-row-actions{white-space:nowrap;text-align:right!important}.btn-link{background:none;border:none;color:#0f766e;font-weight:600;cursor:pointer;padding:.2rem .35rem;font-size:.82rem}.btn-link:hover{text-decoration:underline}.btn-link.warn{color:#d97706}.btn-link.danger{color:#dc2626}.btn-primary{background:#0f766e;color:#fff;border:none;padding:.5rem 1rem;border-radius:8px;font-weight:600;cursor:pointer}.btn-primary:disabled{opacity:.6;cursor:not-allowed}.btn-secondary{background:#f1f5f9;color:#334155;border:1px solid #e2e8f0;padding:.5rem 1rem;border-radius:8px;font-weight:600;cursor:pointer}.btn-danger{background:#dc2626;color:#fff;border:none;padding:.5rem 1rem;border-radius:8px;font-weight:600;cursor:pointer}.restore-panel{margin-top:1.25rem;padding:1rem;background:#fff7ed;border:1px solid #fdba74;border-radius:10px}.restore-panel h3{margin:0 0 .5rem;font-size:.95rem}.restore-warn{margin:0 0 .75rem;font-size:.85rem;color:#c2410c}.restore-panel label{display:block;font-size:.85rem;font-weight:600}.restore-panel input{display:block;width:100%;margin-top:.35rem;padding:.45rem .55rem;border:1px solid #fdba74;border-radius:6px;font-size:.9rem}.restore-btns{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.75rem}.map-api-settings-modal{max-width:520px;padding:0;gap:0;overflow:hidden}.map-api-modal-header{display:grid;grid-template-columns:2rem 1fr 2rem;align-items:start;gap:.5rem;padding:1rem 1rem .75rem;border-bottom:1px solid #f1f5f9}.map-api-modal-titles h2{margin:0;font-size:1.1rem}.map-api-back-btn,.map-api-close-btn{width:2rem;height:2rem;border:none;border-radius:8px;background:#f8fafc;color:#334155;font-size:1.1rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center}.map-api-back-btn:hover,.map-api-close-btn:hover{background:#f0fdfa;color:#0d9488}.map-api-back-spacer{width:2rem}.map-api-settings-hint{margin:.25rem 0 0;font-size:.82rem;color:#64748b;line-height:1.45;font-weight:400}.map-api-settings-muted{padding:1rem 1.25rem;color:#94a3b8;font-size:.85rem;margin:0}.map-api-settings-error{margin:.75rem 1.25rem 0;color:#dc2626;font-size:.85rem}.map-api-test-ok,.map-api-test-fail{margin:.75rem 1.25rem 0;font-size:.82rem;line-height:1.4}.map-api-test-ok{color:#166534}.map-api-test-fail{color:#991b1b}.map-api-service-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:.65rem;padding:1rem 1.25rem 1.25rem}@media(max-width:420px){.map-api-service-grid{grid-template-columns:repeat(2,1fr)}}.map-api-service-card{display:flex;flex-direction:column;align-items:center;gap:.4rem;padding:.85rem .5rem;border:1px solid #e2e8f0;border-radius:12px;background:#fff;cursor:pointer;transition:border-color .15s,box-shadow .15s,transform .1s;text-align:center}.map-api-service-card:hover{border-color:#5eead4;box-shadow:0 4px 14px #0d94881f;transform:translateY(-1px)}.map-api-svc-icon-wrap{width:52px;height:52px;border-radius:14px;overflow:hidden;box-shadow:0 2px 8px #0f172a14}.map-api-svc-icon-svg{width:100%;height:100%;display:block}.map-api-svc-name{font-size:.82rem;font-weight:700;color:#1e293b}.map-api-svc-status{font-size:.68rem;font-weight:600;padding:.12rem .45rem;border-radius:999px;line-height:1.3}.map-api-svc-status.is-on{background:#dcfce7;color:#166534}.map-api-svc-status.is-off{background:#f1f5f9;color:#64748b}.map-api-detail-panel{padding:1rem 1.25rem 1.25rem;display:flex;flex-direction:column;gap:.75rem}.map-api-detail-panel label{display:flex;flex-direction:column;gap:.35rem;font-size:.82rem;font-weight:600}.map-api-detail-panel input[type=password]{font-family:ui-monospace,monospace;font-size:.85rem;padding:.5rem .65rem;border:1px solid #cbd5e1;border-radius:8px}.map-api-current{margin:0;font-size:.82rem}.map-api-current code{background:#f1f5f9;padding:.1rem .35rem;border-radius:4px}.map-api-settings-note{margin:0;font-size:.78rem;color:#64748b;line-height:1.45;font-weight:400}.map-api-settings-warn{color:#b45309}.map-api-detail-actions{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.25rem}.map-api-btn-primary,.map-api-btn-secondary,.map-api-btn-danger{padding:.45rem .85rem;font-size:.8rem;font-weight:600;border-radius:8px;cursor:pointer;border:1px solid transparent}.map-api-btn-primary{background:#0d9488;color:#fff;border-color:#0d9488}.map-api-btn-primary:hover:not(:disabled){background:#0f766e}.map-api-btn-secondary{background:#f8fafc;color:#334155;border-color:#cbd5e1}.map-api-btn-secondary:hover:not(:disabled){background:#f0fdfa;border-color:#5eead4}.map-api-btn-danger{background:#fff;color:#b91c1c;border-color:#fecaca}.map-api-btn-danger:hover:not(:disabled){background:#fef2f2}.map-api-btn-primary:disabled,.map-api-btn-secondary:disabled,.map-api-btn-danger:disabled{opacity:.55;cursor:not-allowed}.map-api-modal-footer{padding:.75rem 1.25rem 1rem;border-top:1px solid #e2e8f0;display:flex;justify-content:flex-end}.map-api-modal-footer button{padding:.45rem 1rem;font-size:.85rem;border-radius:8px;border:1px solid #cbd5e1;background:#fff;cursor:pointer}.map-api-modal-footer button:hover{background:#f8fafc}.tools-modal-overlay{z-index:2000}.tools-modal{max-width:min(960px,96vw);max-height:min(92dvh,calc(100dvh - 1.5rem));padding:0;overflow:hidden;display:flex;flex-direction:column;gap:0}.tools-modal-header{flex-shrink:0;padding:1rem 1.15rem .75rem;border-bottom:1px solid #e2e8f0}.tools-modal-body{flex:1 1 auto;min-height:0;overflow-y:auto;padding:1rem 1.15rem 1.15rem;display:flex;flex-direction:column;gap:.75rem}.tools-modal-filters{display:flex;flex-wrap:wrap;gap:.75rem 1rem;margin:0}.tools-modal-filters label{display:flex;flex-direction:column;gap:.25rem;font-size:.75rem;font-weight:600;color:#475569}.tools-modal-filters select,.tools-modal-filters input[type=search],.tools-modal-filters input[type=date]{min-width:10rem;padding:.4rem .55rem;border:1px solid #cbd5e1;border-radius:6px;font-size:.85rem}.tools-handover-date-filter{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.5rem .75rem}.tools-handover-date-actions{display:flex;flex-wrap:wrap;gap:.35rem}.tools-handover-date-actions button{padding:.4rem .65rem;font-size:.78rem;font-weight:600;border:1px solid #cbd5e1;border-radius:6px;background:#fff;color:#475569;cursor:pointer}.tools-handover-date-actions button:hover{background:#f8fafc}.tools-handover-date-actions button.active{border-color:#0f766e;background:#ecfdf5;color:#0f766e}.tools-search-label{flex:1 1 12rem;min-width:12rem}.tools-search-label input[type=search]{width:100%;min-width:0}.tools-modal-toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.5rem}.tools-modal-menu{display:flex;flex-wrap:wrap;gap:.35rem}.tools-menu-btn{padding:.4rem .75rem;border-radius:6px;border:1px solid #cbd5e1;background:#fff;color:#334155;font-size:.8rem;font-weight:600;cursor:pointer}.tools-menu-btn:hover:not(:disabled){background:#f1f5f9;border-color:#94a3b8}.tools-menu-btn:disabled{opacity:.5;cursor:not-allowed}.tools-list-meta{margin:0;font-size:.78rem;color:#64748b}.tools-handover-pagination{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem;margin-top:.75rem;padding-top:.75rem;border-top:1px solid #e2e8f0}.tools-handover-page-size{display:flex;align-items:center;gap:.4rem;font-size:.78rem;color:#64748b}.tools-handover-page-size select{padding:.25rem .4rem;border:1px solid #cbd5e1;border-radius:6px;font-size:.78rem;background:#fff}.tools-handover-page-nav{display:flex;align-items:center;gap:.5rem}.tools-handover-page-nav button{padding:.35rem .65rem;border:1px solid #cbd5e1;border-radius:6px;background:#fff;font-size:.78rem;cursor:pointer}.tools-handover-page-nav button:hover:not(:disabled){background:#f1f5f9}.tools-handover-page-nav button:disabled{opacity:.45;cursor:not-allowed}.tools-handover-page-info{font-size:.78rem;color:#475569;min-width:5.5rem;text-align:center}.tools-empty-row{text-align:center;color:#64748b;padding:1rem!important}.tool-categories-modal{width:100%;max-width:560px;max-height:min(88dvh,calc(100dvh - 2rem));background:#fff;border-radius:12px;box-shadow:0 16px 48px #0f172a33;overflow:hidden;display:flex;flex-direction:column}.tool-categories-body{padding:1rem 1.1rem 1.1rem;overflow-y:auto;display:flex;flex-direction:column;gap:.75rem}.tool-categories-hint{margin:0;font-size:.8rem;color:#64748b;line-height:1.45}.tools-import-modal{max-width:480px}.tools-import-file{font-size:.85rem}.tools-import-mode{display:flex;flex-direction:column;gap:.35rem;font-size:.82rem;font-weight:600;color:#334155}.tools-import-mode select{padding:.45rem .55rem;border:1px solid #cbd5e1;border-radius:6px;font-weight:400}.tools-import-preview{margin:0;font-size:.82rem;color:#0f766e;font-weight:600}.tools-import-result{padding:.65rem .75rem;border-radius:8px;background:#f8fafc;border:1px solid #e2e8f0;font-size:.8rem;color:#334155}.tools-import-result p{margin:0 0 .35rem}.tools-import-result ul{margin:0;padding-left:1.1rem;color:#b45309}.tools-table .tools-condition{max-width:12rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tools-row-inactive{opacity:.55}.tools-expiry-tag{display:inline-block;margin-left:.35rem;padding:.05rem .35rem;border-radius:4px;font-size:.65rem;font-weight:700;background:#fee2e2;color:#991b1b}.tools-expiry-tag.soon{background:#ffedd5;color:#9a3412}.tool-form-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:2200;background:#0f172a8c;display:flex;align-items:center;justify-content:center;padding:max(1rem,env(safe-area-inset-top,0px)) max(1rem,env(safe-area-inset-right,0px)) max(1rem,env(safe-area-inset-bottom,0px)) max(1rem,env(safe-area-inset-left,0px))}.tool-form-modal{width:100%;max-width:440px;max-height:min(90dvh,calc(100dvh - 2rem));background:#fff;border-radius:12px;box-shadow:0 16px 48px #0f172a33;overflow:hidden;display:flex;flex-direction:column}.tool-form-head{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.85rem 1.1rem;border-bottom:1px solid #e2e8f0;background:#f8fafc}.tool-form-head h3{margin:0;font-size:1rem;font-weight:700;color:#0f172a}.tool-form-close{flex-shrink:0;width:2rem;height:2rem;padding:0;border:none;border-radius:8px;background:transparent;color:#64748b;font-size:1.35rem;line-height:1;cursor:pointer}.tool-form-close:hover{background:#e2e8f0;color:#0f172a}.tool-form-body{padding:1rem 1.1rem 1.1rem;overflow-y:auto}.tool-form-fields{display:flex;flex-direction:column;gap:.75rem}.tool-form-fields label{display:flex;flex-direction:column;gap:.35rem;font-size:.82rem;font-weight:600;color:#334155}.tool-form-fields input,.tool-form-fields textarea,.tool-form-fields select{padding:.5rem .65rem;border:1px solid #cbd5e1;border-radius:6px;font-size:.88rem;font-weight:400}.tool-form-fields textarea{min-height:4.5rem;resize:vertical}.tool-form-foot{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-top:.35rem;padding-top:.85rem;border-top:1px solid #e2e8f0}.tool-form-foot-actions{display:flex;justify-content:flex-end;gap:.5rem;margin-left:auto}.tool-form-delete{padding:.45rem .9rem;font-size:.85rem;font-weight:600;border:1px solid #fecaca;border-radius:8px;background:#fff;color:#b91c1c;cursor:pointer}.tool-form-delete:hover:not(:disabled){background:#fef2f2}.tool-form-cancel{padding:.45rem .9rem;font-size:.85rem;font-weight:600;border:1px solid #cbd5e1;border-radius:8px;background:#fff;color:#475569;cursor:pointer}.tool-form-cancel:hover{background:#f1f5f9}.tool-form-save{padding:.45rem 1rem;font-size:.85rem;font-weight:600;border:none;border-radius:8px;background:#0d9488;color:#fff;cursor:pointer}.tool-form-save:disabled{opacity:.55;cursor:not-allowed}.tools-active-check{flex-direction:row!important;align-items:center;gap:.5rem!important;font-weight:500!important}.tools-modal-tabs{display:flex;gap:.35rem;padding:0 1.15rem;border-bottom:1px solid #e2e8f0;flex-shrink:0}.tools-modal-tabs button{border:none;background:transparent;padding:.55rem .85rem;font-size:.85rem;font-weight:600;color:#64748b;border-bottom:2px solid transparent;margin-bottom:-1px;cursor:pointer}.tools-modal-tabs button.active{color:#0f766e;border-bottom-color:#0f766e}.tools-handover-badge{display:inline-block;padding:.15rem .45rem;border-radius:999px;font-size:.72rem;font-weight:600;white-space:nowrap}.tools-handover-badge.handover-pending{background:#fef3c7;color:#92400e}.tools-handover-badge.handover-in-use{background:#dbeafe;color:#1e40af}.tools-handover-badge.handover-return{background:#ffedd5;color:#c2410c}.tools-handover-badge.handover-done{background:#dcfce7;color:#166534}.tools-handover-badge.handover-cancelled{background:#f1f5f9;color:#64748b}.tools-handover-name{display:block;font-size:.75rem;color:#64748b}.tools-handover-time{font-size:.78rem;white-space:nowrap}.tools-handover-actions{white-space:nowrap}.tools-handover-timeline{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.65rem}.tools-handover-timeline li{display:flex;flex-wrap:wrap;align-items:center;gap:.45rem .65rem;padding-bottom:.55rem;border-bottom:1px solid #e2e8f0}.tools-handover-timeline-actor{font-size:.82rem;color:#334155}.tools-handover-timeline-note{flex:1 1 100%;font-size:.78rem;color:#64748b}.point-tools-chip-status{display:block;font-size:.65rem;margin-top:.1rem}.realtime-alert-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:3000;display:flex;align-items:center;justify-content:center;padding:1rem;background:#0f172a8c}.realtime-alert-modal{width:100%;max-width:440px;padding:1.25rem 1.35rem 1.35rem;border-radius:14px;background:#fff;box-shadow:0 20px 50px #0f172a40}.realtime-alert-icon{display:flex;align-items:center;justify-content:center;width:52px;height:52px;border-radius:12px;margin-bottom:.75rem}.realtime-alert-icon.connection{background:#fef2f2;color:#dc2626}.realtime-alert-icon.team-offline{background:#fff7ed;color:#ea580c}.realtime-alert-modal h2{margin:0 0 .5rem;font-size:1.1rem;color:#0f172a}.realtime-alert-lead{margin:0 0 .75rem;font-size:.88rem;line-height:1.5;color:#475569}.realtime-alert-meta{margin:0 0 .75rem;font-size:.85rem;color:#334155}.realtime-alert-queue{margin:0 0 .75rem;font-size:.8rem;color:#64748b;font-style:italic}.realtime-alert-steps{margin:0 0 1rem;padding-left:1.15rem;font-size:.82rem;line-height:1.55;color:#475569}.realtime-alert-steps li+li{margin-top:.35rem}.realtime-alert-steps kbd{display:inline-block;padding:.1rem .35rem;border:1px solid #cbd5e1;border-radius:4px;background:#f8fafc;font-size:.75rem;font-family:inherit;color:#0f172a}.realtime-alert-actions{display:flex;flex-direction:column;gap:.45rem}.realtime-alert-actions.single{margin-top:.25rem}.realtime-alert-btn{width:100%;padding:.6rem .85rem;border-radius:8px;font-size:.88rem;font-weight:600;cursor:pointer;border:1px solid transparent}.realtime-alert-btn.primary{background:#0d9488;color:#fff}.realtime-alert-btn.primary:hover{background:#0f766e}.realtime-alert-btn.secondary{background:#fff;border-color:#cbd5e1;color:#0f172a}.realtime-alert-btn.secondary:hover{background:#f8fafc}.realtime-alert-btn.ghost{background:transparent;color:#64748b}.realtime-alert-btn.ghost:hover{color:#0f172a;background:#f1f5f9}.chat-image-viewer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:2000;background:#0f172aeb;display:flex;flex-direction:column}.chat-image-viewer-toolbar{display:flex;align-items:center;justify-content:center;gap:.75rem;padding:.65rem 1rem;color:#f8fafc;flex-shrink:0}.chat-image-viewer-toolbar button{min-width:40px;height:40px;border:1px solid rgba(248,250,252,.25);border-radius:8px;background:#0f172a80;color:#f8fafc;font-size:1.1rem;cursor:pointer}.chat-image-viewer-toolbar button:hover{background:#f8fafc1f}.chat-image-viewer-save{margin-left:auto;min-width:auto!important;height:40px!important;padding:0 14px!important;border:none!important;border-radius:8px!important;background:#0d9488!important;color:#fff!important;font-size:.88rem!important;font-weight:700!important;cursor:pointer}.chat-image-viewer-save:hover{background:#0f766e!important}.chat-image-viewer-close{min-width:40px!important}.chat-image-viewer-rotate-hint{min-width:2.5rem;text-align:center;font-size:.82rem;color:#cbd5e1}.chat-image-viewer-stage{flex:1;display:flex;align-items:center;justify-content:center;overflow:hidden;touch-action:none;cursor:grab}.chat-image-viewer-stage img{max-width:min(96vw,1200px);max-height:calc(100vh - 120px);object-fit:contain;transition:transform .08s ease-out;-webkit-user-select:none;user-select:none}.chat-image-viewer-caption{margin:0;padding:.65rem 1rem 1rem;text-align:center;color:#cbd5e1;font-size:.82rem;flex-shrink:0}.chat-emoji-picker{margin-bottom:.5rem;border:1px solid #e2e8f0;border-radius:10px;background:#f8fafc;box-shadow:0 -4px 16px #0f172a14;overflow:hidden}.chat-emoji-picker-tabs{display:flex;gap:.15rem;padding:.35rem .4rem;border-bottom:1px solid #e2e8f0;background:#fff;overflow-x:auto}.chat-emoji-picker-tabs button{display:inline-flex;align-items:center;gap:.25rem;flex-shrink:0;padding:.3rem .45rem;border:1px solid transparent;border-radius:8px;background:transparent;font-size:1rem;line-height:1;cursor:pointer;color:#64748b}.chat-emoji-picker-tabs button:hover{background:#f1f5f9}.chat-emoji-picker-tabs button.active{background:#ecfdf5;border-color:#99f6e4;color:#0f766e}.chat-emoji-picker-tab-label{font-size:.68rem;font-weight:600}.chat-emoji-picker-grid{display:grid;grid-template-columns:repeat(8,1fr);gap:.15rem;padding:.45rem;max-height:168px;overflow-y:auto}.chat-emoji-picker-item{display:flex;align-items:center;justify-content:center;width:100%;aspect-ratio:1;border:none;border-radius:8px;background:transparent;font-size:1.35rem;line-height:1;cursor:pointer}.chat-emoji-picker-item:hover{background:#e2e8f0}.chat-emoji-picker-item:active{background:#cbd5e1;transform:scale(.92)}.chat-compose-emoji-wrap{position:relative;flex-shrink:0}.chat-emoji-toggle{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border:1px solid #e2e8f0;border-radius:8px;background:#f8fafc;font-size:1.15rem;line-height:1;cursor:pointer}.chat-emoji-toggle:hover{background:#f1f5f9}.chat-emoji-toggle.active{background:#ecfdf5;border-color:#5eead4;box-shadow:0 0 0 2px #2dd4bf33}.chat-emoji-toggle:disabled{opacity:.5;cursor:not-allowed}.chat-panel-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a59;z-index:1550;border:none;cursor:pointer}.chat-panel{position:fixed;top:0;right:0;bottom:0;width:min(400px,100vw);background:#fff;z-index:1600;display:flex;flex-direction:column;box-shadow:-4px 0 24px #0f172a1f;transform:translate(100%);transition:transform .22s ease}.chat-panel.open{transform:translate(0)}.chat-thread-call-actions{display:flex;align-items:center;gap:.25rem}.chat-call-btn{width:36px;height:36px;border:none;border-radius:50%;background:#e8f5f3;cursor:pointer;font-size:1rem;line-height:1;display:inline-flex;align-items:center;justify-content:center}.chat-call-btn:hover{background:#ccfbf1}.chat-panel-header{display:flex;align-items:center;gap:.5rem;padding:.75rem 1rem;border-bottom:1px solid #e2e8f0;flex-shrink:0}.chat-panel-header h2{flex:1;margin:0;font-size:1rem;font-weight:700;color:#0d9488}.chat-panel-back,.chat-panel-close,.chat-panel-new,.chat-panel-hide{display:inline-flex;align-items:center;justify-content:center;min-width:36px;height:36px;padding:0 .5rem;border:1px solid #e2e8f0;border-radius:8px;background:#f8fafc;color:#475569;font-size:.82rem;font-weight:600;cursor:pointer}.chat-panel-back:hover,.chat-panel-close:hover,.chat-panel-new:hover,.chat-panel-hide:hover{background:#f0fdfa;border-color:#99f6e4;color:#0f766e}.chat-panel-hide{padding:0 .65rem;font-size:.78rem}.chat-panel-body{flex:1;overflow:hidden;display:flex;flex-direction:column;min-height:0}.chat-panel-muted{padding:1rem;color:#64748b;font-size:.88rem}.chat-panel-error{padding:.5rem 1rem;color:#b91c1c;font-size:.82rem;background:#fef2f2;border-bottom:1px solid #fecaca}.chat-conv-list{flex:1;overflow-y:auto}.chat-conv-row{display:flex;align-items:stretch;border-bottom:1px solid #f1f5f9;background:#fff}.chat-conv-row:hover{background:#f8fafc}.chat-conv-row.active{background:#f0fdfa}.chat-conv-item{display:flex;align-items:flex-start;gap:.65rem;flex:1;min-width:0;padding:.85rem .5rem .85rem 1rem;border:none;background:transparent;text-align:left;cursor:pointer}.chat-conv-hide{flex-shrink:0;width:40px;border:none;background:transparent;color:#94a3b8;font-size:1.35rem;line-height:1;cursor:pointer}.chat-conv-hide:hover{color:#dc2626;background:#fef2f2}.chat-conv-avatar{width:40px;height:40px;border-radius:50%;background:#ccfbf1;color:#0f766e;font-size:.82rem;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0}.chat-conv-main{flex:1;min-width:0}.chat-conv-top{display:flex;align-items:baseline;justify-content:space-between;gap:.5rem}.chat-conv-name{font-weight:600;color:#0f172a;font-size:.92rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-conv-time{font-size:.72rem;color:#94a3b8;flex-shrink:0}.chat-conv-preview{margin:.2rem 0 0;font-size:.82rem;color:#64748b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-conv-role{font-size:.72rem;color:#94a3b8}.chat-unread-badge{min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:#ef4444;color:#fff;font-size:.7rem;font-weight:700;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.chat-contacts-view{flex:1;display:flex;flex-direction:column;min-height:0}.chat-contact-search-wrap{padding:.65rem 1rem .35rem;border-bottom:1px solid #e2e8f0;flex-shrink:0;background:#fff}.chat-contact-search{width:100%;box-sizing:border-box;padding:.55rem .75rem;border:1px solid #cbd5e1;border-radius:8px;font-size:.88rem;background:#f8fafc}.chat-contact-search:focus{outline:none;border-color:#14b8a6;background:#fff;box-shadow:0 0 0 2px #14b8a626}.chat-contact-list{flex:1;overflow-y:auto}.chat-contact-item{display:flex;align-items:center;gap:.65rem;width:100%;padding:.75rem 1rem;border:none;border-bottom:1px solid #f1f5f9;background:#fff;text-align:left;cursor:pointer}.chat-contact-item:hover{background:#f8fafc}.chat-thread-messages{flex:1;overflow-y:auto;padding:.75rem 1rem;display:flex;flex-direction:column;gap:.65rem;background:#f8fafc}.chat-load-more{align-self:center;padding:.35rem .75rem;font-size:.78rem;border:1px solid #cbd5e1;border-radius:6px;background:#fff;color:#475569;cursor:pointer}.chat-load-more:disabled{opacity:.5;cursor:not-allowed}.chat-bubble{max-width:85%;padding:.55rem .75rem;border-radius:12px;font-size:.88rem;line-height:1.4}.chat-bubble.mine{align-self:flex-end;background:#0d9488;color:#fff;border-bottom-right-radius:4px}.chat-bubble.theirs{align-self:flex-start;background:#fff;color:#0f172a;border:1px solid #e2e8f0;border-bottom-left-radius:4px}.chat-bubble-meta{display:block;margin-top:.25rem;font-size:.68rem;opacity:.75}.chat-bubble.mine .chat-bubble-meta{text-align:right}.chat-panel-title{display:flex;align-items:center;gap:.4rem;min-width:0}.chat-presence-dot{flex-shrink:0;width:10px;height:10px;border-radius:50%}.chat-presence-dot.sm{width:8px;height:8px}.chat-presence-dot.online{background:#10b981}.chat-presence-dot.offline{background:#ef4444}.chat-presence-label{font-size:.72rem;font-weight:400;color:var(--text-muted, #64748b)}.chat-conv-name-wrap{display:inline-flex;align-items:center;gap:.35rem;min-width:0}.chat-msg-status{margin-left:.35rem;font-size:.65rem;letter-spacing:-.05em;color:#94a3b8;opacity:.85}.chat-msg-status.delivered{color:#94a3b8;opacity:1}.chat-msg-status.read{color:#0d9488;opacity:1}.chat-bubble-images{display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.35rem}.chat-image-figure{margin:0;max-width:180px}.chat-image-thumb{position:relative;display:block;padding:0;border:none;background:transparent;cursor:zoom-in}.chat-image-thumb:disabled{cursor:wait;opacity:.85}.chat-image-opening{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;border-radius:8px;background:#0f172a73;color:#fff;font-size:.72rem;font-weight:600}.chat-bubble-images img{display:block;max-width:160px;max-height:160px;border-radius:8px;object-fit:cover}.chat-image-meta{margin-top:.2rem;font-size:.68rem;line-height:1.35;color:#64748b;word-break:break-word}.chat-bubble.mine .chat-image-meta{color:#ffffffd1}.chat-image-placeholder{width:120px;height:80px;border-radius:8px;background:#0000000f;display:flex;align-items:center;justify-content:center;font-size:.72rem;color:#64748b}.chat-compose{padding:.65rem .85rem;border-top:1px solid #e2e8f0;background:#fff;flex-shrink:0}.chat-compose-attachments{display:flex;flex-wrap:wrap;gap:.35rem;margin-bottom:.45rem}.chat-compose-thumb{position:relative;width:56px;height:56px}.chat-compose-thumb img{width:100%;height:100%;object-fit:cover;border-radius:6px;border:1px solid #e2e8f0}.chat-compose-thumb button{position:absolute;top:-6px;right:-6px;width:20px;height:20px;border-radius:50%;border:none;background:#ef4444;color:#fff;font-size:.75rem;line-height:1;cursor:pointer}.chat-compose-row{display:flex;align-items:flex-end;gap:.4rem}.chat-compose-row textarea{flex:1;resize:none;border:1px solid #cbd5e1;border-radius:8px;padding:.5rem .65rem;font:inherit;font-size:.88rem;min-height:38px;max-height:120px}.chat-compose-row textarea:focus{outline:none;border-color:#5eead4;box-shadow:0 0 0 2px #2dd4bf40}.chat-compose-actions{display:flex;flex-direction:column;gap:.3rem}.chat-compose-actions button,.chat-compose-actions label{display:inline-flex;align-items:center;justify-content:center;min-width:38px;height:38px;border:1px solid #e2e8f0;border-radius:8px;background:#f8fafc;color:#475569;font-size:.78rem;font-weight:600;cursor:pointer}.chat-compose-actions label input{display:none}.chat-compose-actions button.primary{background:#0d9488;border-color:#0d9488;color:#fff}.chat-compose-actions button:disabled,.chat-compose-actions label:has(input:disabled){opacity:.5;cursor:not-allowed}.chat-alert-host{position:fixed;left:50%;bottom:.85rem;transform:translate(-50%);z-index:1450;width:min(96vw,52rem);pointer-events:none}.chat-alert-track{display:flex;flex-direction:row;align-items:stretch;gap:.5rem;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scroll-behavior:smooth;-webkit-overflow-scrolling:touch;padding:.15rem .35rem .25rem;scrollbar-width:thin;scrollbar-color:#cbd5e1 transparent}.chat-alert-track.is-few{justify-content:center}.chat-alert-track::-webkit-scrollbar{height:4px}.chat-alert-track::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:4px}.chat-alert-card{flex:0 0 auto;width:min(15.5rem,72vw);display:flex;align-items:stretch;background:#fff;border:1px solid #e2e8f0;border-radius:10px;box-shadow:0 8px 22px #0f172a24;overflow:hidden;pointer-events:auto;scroll-snap-align:center;animation:chat-alert-in .22s ease-out}.chat-alert-card.is-newest{border-color:#5eead4;box-shadow:0 10px 26px #0d948838}@keyframes chat-alert-in{0%{opacity:0;transform:translateY(.45rem)}to{opacity:1;transform:translateY(0)}}.chat-alert-main{flex:1;min-width:0;display:flex;align-items:flex-start;gap:.5rem;padding:.6rem .5rem .6rem .65rem;border:none;background:transparent;text-align:left;cursor:pointer;font:inherit;color:inherit}.chat-alert-main:hover{background:#f8fafc}.chat-alert-icon{position:relative;flex-shrink:0;display:flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:8px;background:#f0fdfa;color:#0f766e}.chat-alert-badge{position:absolute;top:-5px;right:-6px;min-width:16px;height:16px;padding:0 4px;border-radius:999px;background:#ef4444;color:#fff;font-size:.58rem;font-weight:700;line-height:16px;text-align:center;border:1.5px solid #fff;box-sizing:border-box}.chat-alert-body{min-width:0;display:flex;flex-direction:column;gap:.12rem}.chat-alert-sender{display:block;font-size:.8rem;font-weight:700;color:#0f172a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-alert-preview{display:block;font-size:.76rem;color:#64748b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-alert-close{flex-shrink:0;width:1.85rem;border:none;border-left:1px solid #f1f5f9;background:#fff;color:#94a3b8;font-size:1.05rem;line-height:1;cursor:pointer}.chat-alert-close:hover{background:#f8fafc;color:#64748b}@media(max-width:480px){.chat-alert-host{width:calc(100vw - .8rem);bottom:.55rem}.chat-alert-card{width:min(14rem,82vw)}}.call-media-perm-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:13000;background:#0f172a8c;display:flex;align-items:center;justify-content:center;padding:1rem}.call-media-perm-modal{background:#fff;border-radius:14px;width:100%;max-width:420px;padding:1.25rem 1.35rem 1.1rem;box-shadow:0 20px 48px #0f172a38}.call-media-perm-modal h2{margin:0 0 .75rem;font-size:1.15rem;color:#0f172a}.call-media-perm-body{font-size:.92rem;line-height:1.5;color:#334155}.call-media-perm-body p{margin:0 0 .65rem}.call-media-perm-list,.call-media-perm-steps{margin:0 0 .75rem 1.1rem;padding:0}.call-media-perm-hint{font-size:.85rem;color:#64748b}.call-media-perm-actions{display:flex;gap:.6rem;justify-content:flex-end;margin-top:1rem}.call-media-perm-btn{border:none;border-radius:8px;padding:.55rem 1rem;font-size:.9rem;cursor:pointer}.call-media-perm-btn:disabled{opacity:.6;cursor:not-allowed}.call-media-perm-btn.cancel{background:#f1f5f9;color:#475569}.call-media-perm-btn.confirm{background:#2563eb;color:#fff}.call-media-perm-btn.confirm:hover:not(:disabled){background:#1d4ed8}.call-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:12000;background:#0f172af5;display:flex;align-items:stretch;justify-content:center}.call-overlay-inner{width:min(100%,480px);display:flex;flex-direction:column;padding:24px 20px 32px}.call-video-stage{position:relative;flex:1;min-height:280px;border-radius:16px;overflow:hidden;background:#0f172a}.call-video-stage.audio{display:flex;align-items:center;justify-content:center}.call-remote-video{width:100%;height:100%;object-fit:cover;background:#020617}.call-remote-audio{position:absolute;width:0;height:0;opacity:0;pointer-events:none}.call-local-video{position:absolute;top:12px;right:12px;width:112px;height:148px;object-fit:cover;border-radius:10px;border:2px solid rgba(255,255,255,.35);background:#1e293b;z-index:1}.call-remote-video.hidden,.call-local-video.hidden{display:none}.call-status-floating{position:absolute;top:12px;left:12px;margin:0;padding:6px 10px;border-radius:8px;background:#0f172ab8;color:#e2e8f0;font-size:.85rem;z-index:2}.call-duration-floating{position:absolute;top:12px;right:12px;margin:0;padding:6px 10px;border-radius:8px;background:#0f172ab8;color:#cbd5e1;font-family:ui-monospace,monospace;font-size:.9rem;z-index:2}.call-info-panel{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px;text-align:center;pointer-events:none;background:linear-gradient(180deg,#0f172a59,#0f172abf)}.call-video-stage.video .call-info-panel{justify-content:flex-end;padding-bottom:48px}.call-avatar{width:96px;height:96px;border-radius:50%;background:#0d9488;color:#fff;font-size:2rem;font-weight:700;display:flex;align-items:center;justify-content:center;margin-bottom:16px}.call-remote-name{margin:0;color:#f8fafc;font-size:1.5rem;font-weight:700}.call-status{margin:8px 0 0;color:#94a3b8;font-size:1rem}.call-duration{margin:6px 0 0;color:#cbd5e1;font-family:ui-monospace,monospace;font-size:1.1rem}.call-actions{display:flex;justify-content:center;gap:48px;margin-top:28px}.call-btn{display:flex;flex-direction:column;align-items:center;gap:8px;border:none;background:transparent;color:#94a3b8;font-size:.85rem;cursor:pointer;min-width:72px}.call-btn:disabled{opacity:.5;cursor:not-allowed}.call-btn-icon{width:72px;height:72px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:1.6rem;color:#fff}.call-btn.decline .call-btn-icon{background:#dc2626}.call-btn.accept .call-btn-icon{background:#16a34a}.call-btn.neutral .call-btn-icon{background:#334155;font-size:1.35rem}@media(max-width:480px){.call-actions{gap:32px}.call-btn-icon{width:64px;height:64px}}.tool-handover-alert-host{position:fixed;left:50%;bottom:5.25rem;transform:translate(-50%);z-index:1445;width:min(96vw,52rem);pointer-events:none}.tool-handover-alert-track{display:flex;flex-direction:row;align-items:stretch;gap:.5rem;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scroll-behavior:smooth;-webkit-overflow-scrolling:touch;padding:.15rem .35rem .25rem;scrollbar-width:thin;scrollbar-color:#cbd5e1 transparent}.tool-handover-alert-track.is-few{justify-content:center}.tool-handover-alert-card{flex:0 0 auto;width:min(16.5rem,74vw);display:flex;align-items:stretch;background:#fff;border:1px solid #fcd34d;border-radius:10px;box-shadow:0 8px 22px #b4530929;overflow:hidden;pointer-events:auto;scroll-snap-align:center}.tool-handover-alert-card.is-newest{animation:tool-handover-alert-pop .35s ease-out}@keyframes tool-handover-alert-pop{0%{opacity:0;transform:translateY(8px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}.tool-handover-alert-main{flex:1;display:flex;align-items:center;gap:.55rem;padding:.55rem .65rem;border:none;background:transparent;text-align:left;cursor:pointer;min-width:0}.tool-handover-alert-main:hover{background:#fffbeb}.tool-handover-alert-icon{position:relative;flex-shrink:0;width:2rem;height:2rem;border-radius:999px;background:#fef3c7;color:#b45309;display:flex;align-items:center;justify-content:center}.tool-handover-alert-badge{position:absolute;top:-4px;right:-4px;min-width:1rem;height:1rem;padding:0 .2rem;border-radius:999px;background:#ef4444;color:#fff;font-size:.62rem;font-weight:800;line-height:1rem;text-align:center}.tool-handover-alert-body{min-width:0;display:flex;flex-direction:column;gap:.12rem}.tool-handover-alert-title{font-size:.78rem;color:#92400e;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tool-handover-alert-preview{font-size:.72rem;color:#64748b;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.tool-handover-alert-close{flex-shrink:0;width:2rem;border:none;border-left:1px solid #fde68a;background:#fffbeb;color:#92400e;font-size:1.1rem;line-height:1;cursor:pointer}.tool-handover-alert-close:hover{background:#fef3c7}@media(max-width:768px){.tool-handover-alert-host{bottom:4.75rem}}.dashboard{display:flex;flex-direction:column;height:100vh;height:100dvh;overflow:hidden}.dashboard-body{display:flex;flex:1;min-height:0;position:relative}.sidebar-panel{width:360px;max-width:min(92vw,400px);flex-shrink:0;border-right:1px solid #e2e8f0;background:#fff;display:flex;flex-direction:column;min-height:0;transition:transform .25s ease,margin .25s ease;z-index:1050}.sidebar-backdrop{display:none;position:fixed;right:0;bottom:0;left:0;top:52px;background:#0f172a73;z-index:1040;border:none;padding:0;cursor:pointer}.map-area{flex:1;position:relative;min-width:0;height:100%;overflow:hidden}.map-hint{position:absolute;top:12px;left:50%;transform:translate(-50%);z-index:1000;background:#0d9488;color:#fff;padding:.4rem 1rem;border-radius:8px;font-size:.85rem;pointer-events:none}@media(max-width:768px){.sidebar-panel{position:fixed;top:52px;left:0;bottom:0;transform:translate(-100%);box-shadow:4px 0 24px #0f172a33}.sidebar-panel.open{transform:translate(0)}.sidebar-backdrop.visible{display:block}.dashboard:not(.sidebar-open) .sidebar-panel{width:0;max-width:0;border:none;overflow:hidden}}@media(min-width:769px){.dashboard:not(.sidebar-open) .sidebar-panel{width:0;max-width:0;border:none;overflow:hidden;margin:0;padding:0}}.vn34-admin{display:flex;flex-direction:column;height:100vh;background:#f1f5f9;color:#0f172a}.vn34-admin-header{display:flex;align-items:center;gap:.75rem;padding:.55rem 1rem;background:#0f766e;color:#fff;flex-shrink:0}.vn34-admin-header h1{margin:0;font-size:1rem;font-weight:700;flex:1}.vn34-admin-header button{border:1px solid rgba(255,255,255,.35);background:#ffffff1f;color:#fff;border-radius:8px;padding:.35rem .65rem;cursor:pointer;font-size:.82rem}.vn34-admin-header button:hover{background:#ffffff38}.vn34-admin-tabs{display:flex;gap:.35rem}.vn34-admin-tabs button{font-weight:600}.vn34-admin-tabs button.active{background:#fff;color:#0f766e;border-color:#fff}.vn34-admin-select{width:100%;box-sizing:border-box;margin-bottom:.5rem;padding:.4rem .5rem;border:1px solid #cbd5e1;border-radius:6px;font-size:.82rem}.vn34-commune-list{max-height:calc(100vh - 280px);overflow:auto}.vn34-draw-hint{position:absolute;top:.5rem;left:50%;transform:translate(-50%);z-index:1000;background:#ea580ceb;color:#fff;padding:.35rem .75rem;border-radius:8px;font-size:.78rem;pointer-events:none}.vn34-draw-toolbar{display:flex;flex-wrap:wrap;gap:.35rem;margin:.5rem 0}.vn34-draw-toolbar button{padding:.35rem .55rem;border-radius:6px;border:1px solid #fdba74;background:#fff7ed;color:#9a3412;cursor:pointer;font-size:.75rem}.vn34-draw-toolbar button.active{background:#ea580c;border-color:#ea580c;color:#fff}.vn34-draw-meta{margin:0 0 .5rem}.vn34-ap-mini-list{list-style:none;margin:0 0 .75rem;padding:0;max-height:120px;overflow:auto}.vn34-ap-mini-list button{width:100%;text-align:left;border:none;background:#fff7ed;padding:.35rem .5rem;border-radius:6px;margin-bottom:.25rem;cursor:pointer;font-size:.78rem}.vn34-ap-mini-list button:hover{background:#ffedd5}.vn34-admin-body{display:grid;grid-template-columns:240px 1fr 320px;gap:0;flex:1;min-height:0}.vn34-admin-sidebar,.vn34-admin-editor{background:#fff;border-right:1px solid #e2e8f0;overflow:auto}.vn34-admin-editor{border-right:none;border-left:1px solid #e2e8f0;padding:.75rem}.vn34-admin-map{min-height:0;position:relative}.vn34-basemap-bar{position:absolute;top:.65rem;right:.65rem;z-index:1000;display:flex;flex-direction:column;align-items:flex-end;gap:.35rem;max-width:calc(100% - 1.3rem);pointer-events:none}.vn34-basemap-warn{pointer-events:auto;background:#fef3c7f2;color:#92400e;border:1px solid #fcd34d;padding:.28rem .55rem;border-radius:8px;font-size:.72rem;font-weight:600;line-height:1.35;box-shadow:0 2px 8px #0f172a1f}.vn34-basemap-picker{pointer-events:auto;display:inline-flex;flex-wrap:wrap;justify-content:flex-end;gap:.25rem;padding:.25rem;border-radius:10px;background:#fffffff0;border:1px solid #e2e8f0;box-shadow:0 4px 14px #0f172a1f}.vn34-basemap-picker button{border:1px solid #cbd5e1;background:#f8fafc;color:#334155;border-radius:8px;padding:.32rem .55rem;font-size:.74rem;font-weight:600;cursor:pointer;white-space:nowrap}.vn34-basemap-picker button:hover{background:#f0fdfa;border-color:#5eead4;color:#0f766e}.vn34-basemap-picker button.active{background:#0d9488;border-color:#0d9488;color:#fff}.vn34-admin-map .leaflet-container{height:100%;width:100%}.vn34-admin-sidebar{padding:.65rem}.vn34-admin-sidebar h2{margin:0 0 .5rem;font-size:.85rem;color:#475569}.vn34-admin-search{width:100%;box-sizing:border-box;margin-bottom:.5rem;padding:.4rem .5rem;border:1px solid #cbd5e1;border-radius:6px;font-size:.82rem}.vn34-province-list{list-style:none;margin:0;padding:0}.vn34-province-list li button{width:100%;text-align:left;border:none;background:transparent;padding:.45rem .5rem;border-radius:6px;cursor:pointer;font-size:.8rem;line-height:1.35}.vn34-province-list li button:hover{background:#f1f5f9}.vn34-province-list li button.active{background:#ccfbf1;color:#0f766e;font-weight:600}.vn34-province-meta{display:block;font-size:.7rem;color:#64748b}.vn34-admin-stats{margin-top:.75rem;padding-top:.75rem;border-top:1px solid #e2e8f0;font-size:.75rem;color:#64748b;line-height:1.5}.vn34-editor-title{margin:0 0 .65rem;font-size:.92rem;font-weight:700}.vn34-editor-form label{display:block;margin-bottom:.55rem;font-size:.75rem;color:#475569}.vn34-editor-form input,.vn34-editor-form select,.vn34-editor-form textarea{display:block;width:100%;box-sizing:border-box;margin-top:.2rem;padding:.35rem .45rem;border:1px solid #cbd5e1;border-radius:6px;font-size:.8rem}.vn34-editor-form textarea{font-family:ui-monospace,monospace;min-height:140px;resize:vertical}.vn34-editor-actions{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.65rem}.vn34-editor-actions button{padding:.4rem .65rem;border-radius:6px;border:1px solid #cbd5e1;background:#f8fafc;cursor:pointer;font-size:.78rem}.vn34-editor-actions button.primary{background:#0d9488;border-color:#0d9488;color:#fff}.vn34-editor-actions button.danger{background:#fef2f2;border-color:#fecaca;color:#b91c1c}.vn34-admin-toolbar{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;padding:.5rem .75rem;background:#fff;border-top:1px solid #e2e8f0;font-size:.8rem}.vn34-admin-toolbar input{width:110px;padding:.3rem .45rem;border:1px solid #cbd5e1;border-radius:6px}.vn34-admin-toolbar button{padding:.35rem .6rem;border-radius:6px;border:1px solid #cbd5e1;background:#f8fafc;cursor:pointer}.vn34-admin-error{margin:.5rem .75rem;padding:.5rem .65rem;background:#fef2f2;color:#b91c1c;border-radius:6px;font-size:.8rem}.vn34-admin-test-result{flex:1;color:#334155;font-size:.78rem}.vn34-admin-muted{color:#94a3b8;font-size:.8rem}@media(max-width:960px){.vn34-admin-body{grid-template-columns:1fr;grid-template-rows:auto 1fr auto}.vn34-admin-sidebar{max-height:180px;border-right:none;border-bottom:1px solid #e2e8f0}.vn34-admin-editor{max-height:280px;border-left:none;border-top:1px solid #e2e8f0}}.loading{display:flex;align-items:center;justify-content:center;height:100vh;font-size:1.1rem;color:#64748b}*{box-sizing:border-box;margin:0;padding:0}body{font-family:Segoe UI,Roboto,system-ui,-apple-system,sans-serif;background:#f0f4f8;color:#1a2b3c}.leaflet-popup-content,.leaflet-container{font-family:Segoe UI,Roboto,system-ui,-apple-system,sans-serif}button{font-family:inherit;cursor:pointer}input,select,textarea,.leaflet-container{font-family:inherit}.priority-normal{background:#22c55e}.priority-safety_emergency{background:#ef4444}.priority-other{background:#f59e0b}
