.toast-viewport{position:fixed;top:1rem;right:1rem;z-index:9999;display:flex;flex-direction:column;gap:.6rem;width:min(360px,calc(100vw - 2rem));pointer-events:none}.toast{--toast-accent: var(--primary, #0d9488);pointer-events:auto;position:relative;display:flex;align-items:flex-start;gap:.65rem;padding:.85rem .9rem;background:var(--surface, #fff);border:1px solid var(--border, #e2e8f0);border-left:4px solid var(--toast-accent);border-radius:12px;box-shadow:0 12px 28px #0f172a29;overflow:hidden;cursor:pointer;animation:toast-in .28s cubic-bezier(.21,1.02,.73,1) both}.toast-leaving{animation:toast-out .26s ease forwards}.toast-success{--toast-accent: #059669}.toast-error{--toast-accent: var(--danger, #dc2626)}.toast-info{--toast-accent: var(--accent, #0284c7)}.toast-icon{flex-shrink:0;width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font-size:.8rem;font-weight:700;color:#fff;background:var(--toast-accent);margin-top:1px}.toast-message{flex:1;margin:0;font-size:.875rem;line-height:1.4;color:var(--text, #0f172a);word-break:break-word}.toast-close{flex-shrink:0;background:none;border:none;color:var(--muted, #64748b);font-size:1.15rem;line-height:1;cursor:pointer;padding:0 .1rem;transition:color .15s ease}.toast-close:hover{color:var(--text, #0f172a)}.toast-progress{position:absolute;left:0;bottom:0;height:3px;width:100%;transform-origin:left;background:var(--toast-accent);opacity:.6;animation:toast-progress 4s linear forwards}@keyframes toast-in{0%{opacity:0;transform:translate(110%) scale(.96)}to{opacity:1;transform:translate(0) scale(1)}}@keyframes toast-out{0%{opacity:1;transform:translate(0) scale(1)}to{opacity:0;transform:translate(110%) scale(.96)}}@keyframes toast-progress{0%{transform:scaleX(1)}to{transform:scaleX(0)}}@media (prefers-reduced-motion: reduce){.toast,.toast-leaving{animation-duration:.01ms}.toast-progress{display:none}}.top-progress{position:fixed;top:0;left:0;right:0;height:3px;z-index:9999;pointer-events:none;background:transparent}.top-progress-bar{height:100%;width:100%;transform-origin:left center;transform:scaleX(0);background:linear-gradient(90deg,var(--primary),var(--accent, var(--primary)));box-shadow:0 0 8px color-mix(in srgb,var(--primary) 70%,transparent);transition:transform .2s ease,opacity .35s ease}@media (prefers-reduced-motion: reduce){.top-progress-bar{transition:opacity .2s ease}}.offline-indicator{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;padding:.45rem .6rem;border-radius:var(--radius);background:color-mix(in srgb,var(--success) 14%,var(--surface));border:1px solid color-mix(in srgb,var(--success) 35%,var(--surface));font-size:.8rem}.offline-indicator.is-offline{background:color-mix(in srgb,var(--warning) 16%,var(--surface));border-color:color-mix(in srgb,var(--warning) 40%,var(--surface))}.offline-dot{width:.55rem;height:.55rem;border-radius:50%;background:var(--success);flex-shrink:0}.offline-indicator.is-offline .offline-dot{background:var(--warning)}.offline-label{flex:1;min-width:6rem;font-weight:600}.offline-sync-btn{white-space:nowrap}.app-with-sidebar{display:flex;min-height:100vh}.mobile-topbar{display:none}.nav-toggle{display:inline-flex;align-items:center;justify-content:center;width:2.75rem;height:2.75rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);font-size:1.4rem;cursor:pointer}.nav-toggle:focus-visible{outline:none;box-shadow:var(--focus-ring)}.sidebar-overlay{display:none}.sidebar{width:260px;flex-shrink:0;background:#0f172a;color:#e2e8f0;display:flex;flex-direction:column;padding:1.25rem 0;position:sticky;top:0;height:100vh}.sidebar-brand{display:flex;align-items:center;gap:.75rem;padding:0 1.25rem 1.25rem;border-bottom:1px solid #334155;margin-bottom:1rem}.sidebar-logo{width:40px;height:40px;border-radius:12px;background:linear-gradient(135deg,#0d9488,#0284c7);display:grid;place-items:center;font-size:1.4rem;font-weight:700;color:#fff}.sidebar-brand strong{display:block;font-size:.95rem}.sidebar-brand small{color:#94a3b8;font-size:.72rem}.nav-close{display:none;margin-left:auto;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;flex-shrink:0;border:1px solid #334155;border-radius:var(--radius);background:transparent;color:#e2e8f0;font-size:1.1rem;line-height:1;cursor:pointer}.nav-close:focus-visible{outline:none;box-shadow:var(--focus-ring)}.sidebar-nav{display:flex;flex-direction:column;gap:.25rem;padding:0 .75rem;flex:1}.nav-item{display:flex;align-items:center;gap:.15rem}.sidebar-nav a{display:flex;align-items:center;gap:.65rem;padding:.65rem .85rem;border-radius:10px;color:#cbd5e1;font-weight:600;font-size:.9rem;text-decoration:none;flex:1;min-width:0}.sidebar-nav a:hover{background:#1e293b;color:#fff}.sidebar-nav a.active{background:#0d9488;color:#fff}.nav-icon{flex-shrink:0;opacity:.9}.nav-grip{flex-shrink:0;cursor:grab;color:#94a3b8;font-size:.85rem;line-height:1;opacity:0;transition:opacity .15s ease}.nav-item:hover .nav-grip,.nav-item:focus-within .nav-grip{opacity:.7}.nav-dragging{opacity:.5}.dash-customize{display:flex;gap:.4rem;flex-wrap:wrap}.nav-label{flex:1}.nav-badge{flex-shrink:0;min-width:1.3rem;height:1.3rem;padding:0 .35rem;border-radius:999px;background:var(--danger);color:#fff;font-size:.72rem;font-weight:700;display:grid;place-items:center}.nav-toggle{position:relative}.nav-toggle-badge{position:absolute;top:-4px;right:-4px;min-width:1.1rem;height:1.1rem;padding:0 .3rem;border-radius:999px;background:var(--danger);color:#fff;font-size:.68rem;font-weight:700;display:grid;place-items:center;border:2px solid var(--surface)}.sidebar-footer{padding:1rem 1.25rem 0;border-top:1px solid #334155;display:flex;flex-direction:column;gap:.75rem}.sidebar-link-portal{color:#5eead4;font-size:.85rem;font-weight:600}.sidebar-user{display:flex;flex-direction:column;gap:.5rem;font-size:.85rem}.btn-sm{padding:.4rem .65rem;font-size:.8rem}.main-panel{flex:1;min-width:0;background:var(--bg)}.main-content{padding:1.5rem 1.25rem 3rem}@media (max-width: 768px){.app-with-sidebar{flex-direction:column}.mobile-topbar{display:flex;align-items:center;gap:.75rem;padding:.6rem .85rem;background:var(--surface);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:30}.mobile-brand{font-weight:700}}.topbar-offline{margin-left:auto;padding:.2rem .55rem;border-radius:999px;font-size:.72rem;font-weight:700;background:color-mix(in srgb,var(--warning) 22%,var(--surface));color:var(--warning-text, var(--text));border:1px solid color-mix(in srgb,var(--warning) 45%,var(--surface))}@media (max-width: 768px){.sidebar{position:fixed;top:0;left:0;bottom:0;height:100dvh;width:min(82vw,300px);z-index:50;transform:translate(-100%);transition:transform .25s ease;box-shadow:var(--shadow-lg)}.nav-open .sidebar{transform:translate(0)}.sidebar-overlay{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a80;z-index:40}.main-content{padding:1rem .6rem 2.5rem}.nav-close{display:inline-flex}}@media (max-width: 768px) and (prefers-reduced-motion: reduce){.sidebar{transition:none}}@media (min-width: 769px){.app-with-sidebar.menu-topbar{flex-direction:column}.menu-topbar .sidebar{position:sticky;top:0;z-index:30;width:100%;height:auto;flex-direction:row;align-items:center;gap:1rem;padding:.5rem 1.5rem;border-bottom:1px solid #334155}.menu-topbar .sidebar-brand{padding:0;margin:0;border-bottom:none;flex-shrink:0}.menu-topbar .sidebar-brand small{display:none}.menu-topbar .sidebar-nav{flex-direction:row;flex:1;align-items:center;gap:.25rem;padding:0;overflow-x:auto;scrollbar-width:thin}.menu-topbar .sidebar-nav a{white-space:nowrap;padding:.5rem .7rem}.menu-topbar .nav-grip{display:none}.menu-topbar .sidebar-footer{flex-direction:row;align-items:center;gap:.85rem;margin:0;padding:0;border-top:none;flex-shrink:0}.menu-topbar .sidebar-user{flex-direction:row;align-items:center;gap:.5rem}.menu-topbar .main-content{padding-top:1.5rem}}.theme-toggle{display:inline-flex;align-self:flex-start;width:fit-content;gap:.2rem;padding:.2rem;border-radius:999px;border:1px solid color-mix(in srgb,currentColor 35%,transparent);opacity:.85}.theme-toggle-btn{width:1.9rem;height:1.9rem;border:none;border-radius:50%;background:transparent;color:inherit;cursor:pointer;display:grid;place-items:center;font-size:.9rem;line-height:1;opacity:.6;transition:opacity .15s ease,background .15s ease}.theme-toggle-btn:hover{opacity:1}.theme-toggle-btn.active{opacity:1;background:var(--primary);color:var(--primary-contrast);box-shadow:0 0 0 1px var(--primary)}.theme-toggle-btn:focus-visible{outline:none;box-shadow:var(--focus-ring)}.patient-shell,.patient-app{min-height:100vh;background:radial-gradient(circle at top,rgba(2,132,199,.08),transparent 45%),var(--bg)}.patient-main{padding:2rem 1rem 3rem}.patient-brand{display:flex;align-items:center;gap:.75rem;color:inherit;flex-shrink:0}.patient-logo{width:42px;height:42px;border-radius:50%;background:#fce7f3;color:#db2777;display:grid;place-items:center;font-size:1.2rem;flex-shrink:0}.patient-brand strong{display:block}.patient-brand small{display:block;color:var(--muted);font-size:.75rem}.patient-signup-btn{background:#0284c7}.patient-user-name{font-size:.875rem;font-weight:600;color:var(--text)}.patient-logout{display:inline-flex;align-items:center;gap:.35rem}.patient-msg-badge{min-width:1.1rem;height:1.1rem;padding:0 .3rem;border-radius:999px;background:var(--danger);color:#fff;font-size:.68rem;font-weight:700;display:grid;place-items:center}.patient-pub-header{background:var(--surface);border-bottom:1px solid var(--border);padding:.7rem 0;position:sticky;top:0;z-index:30}.patient-pub-inner{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}.patient-pub-actions{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.patient-app{display:flex;flex-direction:column}.patient-bar{display:flex;align-items:center;gap:1rem;padding:.55rem 1.5rem;background:var(--surface);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:30}.patient-bar-brand{display:flex;align-items:center;flex-shrink:0}.patient-bar-brand .patient-brand small{display:none}.patient-nav{display:flex;align-items:center;gap:.25rem;flex:1}.patient-nav a{display:inline-flex;align-items:center;gap:.5rem;padding:.55rem .8rem;border-radius:10px;font-weight:600;font-size:.9rem;color:var(--muted);text-decoration:none;white-space:nowrap}.patient-nav a:hover{background:var(--surface-2);color:var(--text)}.patient-nav a.active{background:color-mix(in srgb,var(--primary) 14%,var(--surface));color:var(--primary-dark)}.patient-nav-icon{flex-shrink:0;opacity:.9}.patient-nav-label{flex:1}.patient-bar-foot{display:flex;align-items:center;gap:.75rem;flex-shrink:0}.patient-body{flex:1;min-width:0}.patient-mobile-top,.patient-nav-close,.patient-overlay{display:none}@media (min-width: 861px){.patient-app.menu-sidebar{flex-direction:row}.menu-sidebar .patient-bar{flex-direction:column;align-items:stretch;width:250px;flex-shrink:0;height:100vh;padding:1rem .75rem;border-bottom:none;border-right:1px solid var(--border)}.menu-sidebar .patient-bar-brand{padding:0 .4rem .75rem;margin-bottom:.5rem;border-bottom:1px solid var(--border)}.menu-sidebar .patient-bar-brand .patient-brand small{display:block}.menu-sidebar .patient-nav{flex-direction:column;align-items:stretch}.menu-sidebar .patient-bar-foot{flex-direction:column;align-items:stretch;border-top:1px solid var(--border);padding-top:.75rem}}@media (max-width: 860px){.patient-app{display:block}.patient-main{padding:1rem .6rem 2.5rem}.patient-bar{position:fixed;top:0;left:0;bottom:0;height:100dvh;width:min(82vw,300px);z-index:50;flex-direction:column;align-items:stretch;gap:.25rem;padding:1rem .75rem;border-bottom:none;border-right:1px solid var(--border);overflow-y:auto;transform:translate(-100%);transition:transform .25s ease;box-shadow:var(--shadow-lg)}.patient-app.nav-open .patient-bar{transform:translate(0)}.patient-bar-brand{justify-content:space-between;padding:0 .25rem .75rem;margin-bottom:.5rem;border-bottom:1px solid var(--border)}.patient-bar-brand .patient-brand small{display:block}.patient-nav{flex-direction:column;align-items:stretch}.patient-nav a{padding:.7rem .65rem;font-size:.95rem}.patient-bar-foot{flex-direction:column;align-items:stretch;margin-top:auto;border-top:1px solid var(--border);padding-top:.75rem}.patient-nav-close{display:inline-flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;flex-shrink:0;border:1px solid var(--border);border-radius:var(--radius);background:transparent;color:var(--text);cursor:pointer}.patient-overlay{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a80;z-index:40}.patient-mobile-top{display:flex;align-items:center;gap:.75rem;padding:.6rem .85rem;background:var(--surface);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:30}.patient-mobile-brand{font-weight:700}.patient-nav-toggle{position:relative;width:2.6rem;height:2.6rem;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);cursor:pointer}.patient-nav-toggle:focus-visible{outline:none;box-shadow:var(--focus-ring)}.patient-nav-toggle .patient-msg-badge{position:absolute;top:-4px;right:-4px;border:2px solid var(--surface)}}@media (max-width: 860px) and (prefers-reduced-motion: reduce){.patient-bar{transition:none}}.auth-page{min-height:100vh;display:grid;place-items:center;padding:2rem 1rem;background:radial-gradient(circle at top right,rgba(13,148,136,.12),transparent 40%),radial-gradient(circle at bottom left,rgba(2,132,199,.1),transparent 35%),var(--bg)}.auth-card{width:min(420px,100%)}.auth-shell{display:flex;flex-direction:column}.auth-shell--nurse{width:min(420px,100%)}.auth-shell--patient{width:min(440px,100%)}.auth-switch-btn{display:inline-flex;align-items:center;gap:.35rem;align-self:flex-start;margin-bottom:1rem;padding:.4rem .75rem;border:1.5px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);font-size:.85rem;font-weight:600;text-decoration:none;cursor:pointer;min-height:var(--tap-target);transition:border-color .15s ease,background .15s ease}.auth-switch-btn:hover{border-color:color-mix(in srgb,var(--primary) 45%,var(--border));background:color-mix(in srgb,var(--primary) 8%,var(--surface))}.auth-switch-btn:focus-visible{outline:none;box-shadow:var(--focus-ring)}.auth-card h1{margin:0 0 .35rem;font-size:1.6rem}.auth-sub{margin:0 0 1.25rem;color:var(--muted)}.auth-submit{width:100%}.auth-footer{margin:1rem 0 0;text-align:center;color:var(--muted);font-size:.9rem}.auth-footer a{color:var(--primary-dark);font-weight:600}.address-autocomplete{position:relative}.address-autocomplete input{width:100%;min-height:var(--tap-target);border:1px solid var(--border);border-radius:var(--radius);padding:.65rem .75rem;background:var(--surface);color:var(--text)}.address-autocomplete-status{display:block;margin-top:.35rem;font-size:.75rem;color:var(--muted)}.address-autocomplete-ok{color:var(--primary-dark);font-weight:600}.address-autocomplete-list{position:absolute;z-index:50;top:calc(100% + 4px);left:0;right:0;margin:0;padding:.35rem;list-style:none;background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow);max-height:240px;overflow-y:auto}.address-autocomplete-list li{margin:0}.address-autocomplete-list button{width:100%;text-align:left;border:none;background:transparent;border-radius:8px;padding:.55rem .65rem;cursor:pointer;display:flex;flex-direction:column;gap:.15rem}.address-autocomplete-list button:hover,.address-autocomplete-list button.active{background:color-mix(in srgb,var(--primary) 12%,var(--surface))}.address-label{font-size:.9rem;color:var(--text)}.address-meta{font-size:.75rem;color:var(--muted)}.address-autocomplete-hint{margin:.35rem 0 0;font-size:.72rem;color:var(--muted)}.dialog-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a73;display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem}.dialog{width:100%;max-width:420px;max-height:calc(100dvh - 2rem);display:flex;flex-direction:column;overflow:hidden;animation:dialog-in .2s ease}@keyframes dialog-in{0%{opacity:0;transform:scale(.96) translateY(8px)}to{opacity:1;transform:scale(1) translateY(0)}}.dialog-head{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-shrink:0}.dialog h2{margin:0 0 .5rem;font-size:1.15rem}.dialog-head h2{margin:0}.dialog-close{flex-shrink:0;display:grid;place-items:center;width:var(--tap-target);height:var(--tap-target);border:none;border-radius:999px;background:transparent;color:var(--text);font-size:1.6rem;line-height:1;cursor:pointer}.dialog-close:hover{background:var(--surface-2)}.dialog-close:focus-visible{outline:none;box-shadow:var(--focus-ring)}.dialog-content{overflow-y:auto;min-height:0;margin-top:.5rem}.dialog-message{margin:0 0 1rem;color:var(--muted);font-size:.9rem;line-height:1.5}.dialog-body{margin-bottom:.5rem}.dialog-body textarea,.dialog-body input[type=text]{width:100%;resize:vertical;font-family:inherit;padding:.5rem .65rem;border-radius:8px;border:1px solid var(--border);background:var(--surface);color:var(--text)}.dialog-actions{display:flex;gap:.5rem;justify-content:flex-end;margin-top:1rem;flex-wrap:wrap;flex-shrink:0}.dialog-actions .btn-danger-solid{background:var(--danger);color:var(--primary-contrast)}.dialog-actions .btn-danger-solid:hover{background:var(--danger-dark)}@media (max-width: 640px){.dialog-overlay{padding:0;align-items:stretch}.dialog{max-width:100%;width:100%;height:100dvh;max-height:100dvh;border-radius:0;padding:1rem 1.1rem calc(1rem + env(safe-area-inset-bottom));animation:sheet-in .22s ease}.dialog-head{padding-top:env(safe-area-inset-top)}.dialog h2,.dialog-head h2{font-size:1.3rem}.dialog-content{flex:1}.dialog-actions{flex-direction:column-reverse}.dialog-actions .btn{width:100%}}@keyframes sheet-in{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion: reduce){.dialog{animation:none}}.snap-picker{position:relative;display:inline-block}.snap-menu{position:absolute;z-index:1000;top:calc(100% + .4rem);left:0;display:grid;grid-template-columns:repeat(2,1fr);gap:.5rem;padding:.6rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);min-width:240px}.snap-thumb{display:flex;flex-direction:column;align-items:center;gap:.35rem;padding:.5rem;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;color:var(--text);font:inherit}.snap-thumb:hover,.snap-thumb:focus-visible{border-color:var(--primary);outline:none;box-shadow:var(--focus-ring)}.snap-thumb-grid{position:relative;width:100%;aspect-ratio:16 / 10;background:var(--surface);border-radius:6px}.snap-thumb-cell{position:absolute;background:color-mix(in srgb,var(--primary) 35%,var(--surface));border:1px solid color-mix(in srgb,var(--primary) 55%,var(--surface));border-radius:3px;transform:scale(.92)}.snap-thumb-label{font-size:.78rem;font-weight:600}.map-wrap{position:relative;display:flex;flex-direction:column}.map-wrap>.leaflet-container{flex:1 1 auto;min-height:320px;position:relative}.map-route-info{position:absolute;z-index:1000;top:.65rem;left:3.25rem;right:.65rem;background:#fffffff2;border:1px solid var(--border);border-radius:8px;padding:.35rem .65rem;font-size:.8rem;font-weight:600;color:var(--primary-dark);pointer-events:none}.map-route-warn{color:#b45309}.map-nav{display:flex;align-items:center;flex-wrap:wrap;gap:.4rem;padding:.5rem .65rem 0}.map-nav-label{font-size:.8rem;font-weight:600;color:var(--muted)}.map-nav-btn{text-decoration:none}.map-popup-tel{display:inline-block;margin-top:.35rem;font-weight:600;text-decoration:none;color:var(--primary-dark)}.map-locate-btn{position:absolute;left:.65rem;bottom:.65rem;z-index:1000;width:var(--tap-target);height:var(--tap-target);border-radius:50%;border:1px solid var(--border);background:var(--surface);color:var(--text);font-size:1.35rem;line-height:1;display:grid;place-items:center;box-shadow:var(--shadow-lg);cursor:pointer}.map-locate-btn:disabled{opacity:.45;cursor:not-allowed}.map-locate-active{background:var(--primary);color:var(--primary-contrast, #fff);border-color:transparent}.map-locate-btn:focus-visible{outline:none;box-shadow:var(--focus-ring),var(--shadow-lg)}.map-marker-pin{width:32px;height:32px;border-radius:50% 50% 50% 0;background:#0284c7;border:3px solid #fff;box-shadow:0 2px 8px #0f172a59;transform:rotate(-45deg);display:flex;align-items:center;justify-content:center}.map-marker-pin span{transform:rotate(45deg);color:#fff;font-weight:800;font-size:.95rem;line-height:1}.map-marker-first{background:#0d9488;width:38px;height:38px;border-width:3px}.map-marker-first span{font-size:1.05rem}.map-marker-done{background:#64748b;border-radius:50%;transform:none}.map-marker-done span{transform:none}.map-done-count{color:#64748b}.map-legend-done{background:#64748b}.map-legend{flex-shrink:0;display:flex;flex-wrap:wrap;gap:.75rem 1.25rem;padding:.5rem .75rem;font-size:.75rem;color:var(--muted);border-top:1px solid var(--border)}.map-legend-item{display:flex;align-items:center;gap:.35rem}.map-legend-dot{width:12px;height:12px;border-radius:50%;background:#0284c7}.map-legend-first{background:#0d9488}.map-marker-car{width:40px;height:40px;border-radius:50%;background:#fff;border:3px solid #0284c7;box-shadow:0 2px 10px #0284c773;display:flex;align-items:center;justify-content:center}.map-marker-car span{font-size:1.35rem;line-height:1}.map-legend-car{font-size:1rem;line-height:1}.map-geo-warn{color:#b45309;font-size:.7rem}.patient-select{position:relative}.patient-select input{width:100%}.patient-select-list{position:absolute;z-index:1000;top:calc(100% + 2px);left:0;right:0;margin:0;padding:.25rem;list-style:none;max-height:16rem;overflow-y:auto;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg, 0 8px 24px rgba(15, 23, 42, .18))}.patient-select-list li{margin:0}.patient-select-list button{display:flex;flex-direction:column;width:100%;gap:.1rem;padding:.5rem .6rem;border:0;border-radius:calc(var(--radius) - 2px);background:transparent;color:var(--text);text-align:left;cursor:pointer}.patient-select-list button:hover,.patient-select-list button.active{background:color-mix(in srgb,var(--primary) 14%,var(--surface))}.patient-select-name{font-weight:600}.patient-select-addr{font-size:.8rem;color:var(--muted)}.patient-select-empty{padding:.6rem;color:var(--muted);font-size:.875rem}.react-grid-layout{position:relative;transition:height .2s ease}.react-grid-item{transition:all .2s ease;transition-property:left,top,width,height}.react-grid-item img{pointer-events:none;-webkit-user-select:none;user-select:none}.react-grid-item.cssTransforms{transition-property:transform,width,height}.react-grid-item.resizing{transition:none;z-index:1;will-change:width,height}.react-grid-item.react-draggable-dragging{transition:none;z-index:3;will-change:transform}.react-grid-item.dropping{visibility:hidden}.react-grid-item.react-grid-placeholder{background:red;opacity:.2;transition-duration:.1s;z-index:2;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.react-grid-item.react-grid-placeholder.placeholder-resizing{transition:none}.react-grid-item>.react-resizable-handle{position:absolute;width:20px;height:20px}.react-grid-item>.react-resizable-handle:after{content:"";position:absolute;right:3px;bottom:3px;width:5px;height:5px;border-right:2px solid rgba(0,0,0,.4);border-bottom:2px solid rgba(0,0,0,.4)}.react-resizable-hide>.react-resizable-handle{display:none}.react-grid-item>.react-resizable-handle.react-resizable-handle-sw{bottom:0;left:0;cursor:sw-resize;transform:rotate(90deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-se{bottom:0;right:0;cursor:se-resize}.react-grid-item>.react-resizable-handle.react-resizable-handle-nw{top:0;left:0;cursor:nw-resize;transform:rotate(180deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-ne{top:0;right:0;cursor:ne-resize;transform:rotate(270deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-w,.react-grid-item>.react-resizable-handle.react-resizable-handle-e{top:50%;margin-top:-10px;cursor:ew-resize}.react-grid-item>.react-resizable-handle.react-resizable-handle-w{left:0;transform:rotate(135deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-e{right:0;transform:rotate(315deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-n,.react-grid-item>.react-resizable-handle.react-resizable-handle-s{left:50%;margin-left:-10px;cursor:ns-resize}.react-grid-item>.react-resizable-handle.react-resizable-handle-n{top:0;transform:rotate(225deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-s{bottom:0;transform:rotate(45deg)}.react-resizable{position:relative}.react-resizable-handle{position:absolute;width:20px;height:20px;background-repeat:no-repeat;background-origin:content-box;box-sizing:border-box;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2IDYiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYwMCIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI2cHgiIGhlaWdodD0iNnB4Ij48ZyBvcGFjaXR5PSIwLjMwMiI+PHBhdGggZD0iTSA2IDYgTCAwIDYgTCAwIDQuMiBMIDQgNC4yIEwgNC4yIDQuMiBMIDQuMiAwIEwgNiAwIEwgNiA2IEwgNiA2IFoiIGZpbGw9IiMwMDAwMDAiLz48L2c+PC9zdmc+);background-position:bottom right;padding:0 3px 3px 0}.react-resizable-handle-sw{bottom:0;left:0;cursor:sw-resize;transform:rotate(90deg)}.react-resizable-handle-se{bottom:0;right:0;cursor:se-resize}.react-resizable-handle-nw{top:0;left:0;cursor:nw-resize;transform:rotate(180deg)}.react-resizable-handle-ne{top:0;right:0;cursor:ne-resize;transform:rotate(270deg)}.react-resizable-handle-w,.react-resizable-handle-e{top:50%;margin-top:-10px;cursor:ew-resize}.react-resizable-handle-w{left:0;transform:rotate(135deg)}.react-resizable-handle-e{right:0;transform:rotate(315deg)}.react-resizable-handle-n,.react-resizable-handle-s{left:50%;margin-left:-10px;cursor:ns-resize}.react-resizable-handle-n{top:0;transform:rotate(225deg)}.react-resizable-handle-s{bottom:0;transform:rotate(45deg)}.tour-mobile{--mobile-topbar-h: 4rem}.tour-mobile-map{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1}.tour-mobile-map .map-wrap{height:100%;margin:0;padding:0;border:0;border-radius:0;box-shadow:none;animation:none}.tour-mobile-map .map-wrap .leaflet-container{height:100%;min-height:0;border-radius:0}.tour-mobile-map .map-placeholder{height:100%;margin:0;border:0;border-radius:0;padding:calc(var(--mobile-topbar-h) + 1rem) 1.5rem 1rem}.tour-mobile-map .map-route-info{top:var(--mobile-topbar-h);left:0;right:0;border-radius:0;padding:.5rem .85rem;text-align:center}.tour-mobile-map .leaflet-top{top:calc(var(--mobile-topbar-h) + 2.75rem)}.tour-mobile-map .map-legend{position:absolute;left:0;right:0;bottom:0;z-index:1000;justify-content:center;gap:.25rem .8rem;background:color-mix(in srgb,var(--surface) 92%,transparent);border-top:1px solid var(--border);padding:.35rem .6rem;font-size:.68rem}.tour-mobile-map .map-nav{position:absolute;left:0;right:0;bottom:1.9rem;z-index:1000;margin:0;padding:.45rem .6rem;gap:.5rem;flex-wrap:nowrap;justify-content:center;background:color-mix(in srgb,var(--surface) 92%,transparent);border-top:1px solid var(--border)}.tour-mobile-map .map-nav-label,.tour-mobile-map .map-nav-suffix{display:none}.tour-mobile-map .map-nav-btn{flex:1 1 0;min-width:0}.tour-mobile-map .leaflet-bottom{bottom:5rem}.tour-mobile-map .map-locate-btn{bottom:5.15rem}.tour-fabs{position:fixed;right:1rem;bottom:5.15rem;z-index:1100;display:flex;flex-direction:column;gap:.85rem}.mobile-stops-actions{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:.85rem}.mobile-stops-actions .btn{flex:1;min-width:8rem}.fab{width:3.4rem;height:3.4rem;border-radius:50%;border:1px solid var(--border);background:var(--surface);color:var(--text);display:grid;place-items:center;box-shadow:var(--shadow-lg);cursor:pointer}.fab:focus-visible{outline:none;box-shadow:var(--focus-ring),var(--shadow-lg)}.fab-primary{background:var(--primary);color:var(--primary-contrast, #fff);border-color:transparent}.tour-header{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1rem;flex-wrap:wrap}.tour-header h1{margin:0}.tour-header p{margin:.35rem 0 0;color:var(--muted);max-width:520px}.tour-explainer li{margin-bottom:.2rem}.info-banner{background:color-mix(in srgb,var(--success) 12%,var(--surface));color:var(--success-text);border:1px solid color-mix(in srgb,var(--success) 35%,var(--surface));border-radius:var(--radius);padding:.75rem 1rem;margin-bottom:1rem;font-size:.9rem}.tour-finished-banner a{color:var(--primary-dark);font-weight:600}.tour-finish-btn{background:var(--primary-dark)}.stop-visit-notes{margin:.35rem 0 0;font-size:.8rem;color:var(--muted);background:var(--surface-2);padding:.35rem .5rem;border-radius:6px}.stop-first{background:color-mix(in srgb,var(--primary) 10%,var(--surface));margin:0 -.5rem;padding:.5rem;border-radius:10px}.stop-start-label{display:inline-block;margin-left:.5rem;font-size:.7rem;font-weight:700;text-transform:uppercase;color:var(--primary-dark);background:color-mix(in srgb,var(--primary) 22%,var(--surface));padding:.1rem .4rem;border-radius:4px}.stop-done{opacity:.75;background:var(--surface-2);margin:0 -.5rem;padding:.5rem;border-radius:10px}.stop-done-label{display:inline-block;margin-left:.5rem;font-size:.7rem;font-weight:700;color:var(--muted);background:var(--secondary-bg);padding:.1rem .4rem;border-radius:4px}.stop-actions{display:flex;flex-direction:column;gap:.35rem;align-items:stretch}.stop-reorder-controls{display:flex;gap:.25rem;justify-content:center}.stop-reorder-btn{width:2rem;height:2rem;flex:1;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);cursor:pointer;font-size:.95rem;line-height:1;display:grid;place-items:center;transition:background .15s ease}.stop-reorder-btn:hover:not(:disabled){background:var(--surface-2)}.stop-reorder-btn:focus-visible{outline:none;box-shadow:var(--focus-ring)}.stop-reorder-btn:disabled{opacity:.4;cursor:not-allowed}.tour-actions{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}.date-input{border:1px solid var(--border);border-radius:var(--radius);padding:.6rem .75rem;min-height:var(--tap-target);background:var(--surface);color:var(--text)}.dash-grid{position:relative}.dash-widget{display:flex;flex-direction:column;overflow:hidden;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow)}.widget-head{display:flex;align-items:center;gap:.5rem;padding:.45rem .7rem;background:var(--surface-2);border-bottom:1px solid var(--border);cursor:grab;-webkit-user-select:none;user-select:none;flex-shrink:0}.widget-head:active{cursor:grabbing}.widget-head h3{margin:0;font-size:.9rem;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.widget-grip{color:var(--muted);font-size:.85rem;line-height:1}.widget-action{margin-left:auto;display:inline-flex;align-items:center;justify-content:center;width:1.7rem;height:1.7rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);cursor:pointer;font-size:.85rem;line-height:1;flex-shrink:0}.widget-action:hover{border-color:var(--primary)}.widget-action:focus-visible{outline:none;box-shadow:var(--focus-ring)}.widget-body{flex:1;min-height:0;overflow:auto;padding:.9rem 1rem}.map-widget .widget-body{padding:.4rem}.map-widget .map-wrap{height:100%}.react-grid-item.react-grid-placeholder{background:color-mix(in srgb,var(--primary) 30%,var(--surface));border-radius:var(--radius);opacity:.45}.tour-explainer{font-size:.875rem}.tour-explainer ul{margin:.35rem 0 0;padding-left:1.2rem;color:var(--muted)}.tour-form-card .hint{margin:1rem 0 0;font-size:.8rem;color:var(--muted)}.map-wrap{height:100%;padding:0;overflow:hidden}.map-placeholder{min-height:200px;display:grid;place-items:center}.stops-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.75rem}.stops-list li{display:flex;align-items:center;gap:.75rem;padding:.65rem 0;border-bottom:1px solid var(--border)}.stop-order{width:32px;height:32px;border-radius:50%;background:color-mix(in srgb,var(--primary) 20%,var(--surface));color:var(--primary-dark);font-weight:700;display:grid;place-items:center;flex-shrink:0}.stop-body{flex:1;min-width:0}.stop-quick-actions{display:flex;flex-wrap:wrap;gap:.4rem;margin:.35rem 0}.stop-quick-link{display:inline-flex;align-items:center;gap:.25rem;min-height:var(--tap-target);padding:.25rem .6rem;border:1px solid var(--border);border-radius:999px;background:var(--surface-2);color:var(--text);font-size:.8rem;font-weight:600;text-decoration:none}.stop-quick-link:hover{border-color:color-mix(in srgb,var(--primary) 45%,var(--border))}.stop-quick-link:focus-visible{outline:none;box-shadow:var(--focus-ring)}@media (max-width: 640px){.stops-list li{flex-wrap:wrap}.stop-body{flex:1 1 auto}.stop-actions{flex:1 1 100%;flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:flex-end}.stop-actions .btn{flex:1 1 auto;min-width:0}.stop-reorder-controls{flex:0 0 auto}.stop-first,.stop-done{margin:0}}.stops-reorder-hint{margin:0 0 .75rem;font-size:.8rem;color:var(--muted)}.stop-draggable{cursor:grab}.stop-drag-handle{flex-shrink:0;color:var(--muted);font-size:1.1rem;line-height:1;cursor:grab;-webkit-user-select:none;user-select:none}.stop-dragging{opacity:.5}.stop-drag-over{border-top:2px solid var(--primary, #0d9488)}.care-badge{display:inline-block;margin-top:.35rem;font-size:.75rem;font-weight:600;color:#fff;padding:.2rem .5rem;border-radius:6px}.tour-history-header{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1rem;flex-wrap:wrap}.tour-history-header h1{margin:0}.tour-history-header p{margin:.35rem 0 0;color:var(--muted)}.tour-history-grid{display:grid;grid-template-columns:minmax(260px,340px) 1fr;gap:1rem;align-items:start}@media (max-width: 800px){.tour-history-grid{grid-template-columns:1fr}}.history-day-list{list-style:none;margin:0;padding:0}.history-day-link{display:flex;justify-content:space-between;align-items:center;gap:.75rem;padding:.75rem;border-radius:10px;text-decoration:none;color:inherit;border:1px solid transparent}.history-day-link:hover{background:var(--surface-2)}.history-day-link.active{background:color-mix(in srgb,var(--primary) 10%,var(--surface));border-color:color-mix(in srgb,var(--primary) 35%,var(--surface))}.history-badge{font-size:.75rem;padding:.2rem .5rem;border-radius:999px;background:var(--surface-2);color:var(--muted);white-space:nowrap}.history-badge.badge-done{background:color-mix(in srgb,var(--success) 14%,var(--surface));color:var(--success-text)}.history-finished-banner{background:color-mix(in srgb,var(--success) 12%,var(--surface));color:var(--success-text);border:1px solid color-mix(in srgb,var(--success) 35%,var(--surface));border-radius:8px;padding:.5rem .75rem;font-size:.875rem;margin:0 0 1rem}.history-stops-list{list-style:none;margin:0;padding:0}.history-stops-list li{padding:.85rem 0;border-bottom:1px solid var(--border)}.history-stops-list li:last-child{border-bottom:none}.history-stop-head{display:flex;flex-direction:column;gap:.15rem;margin-bottom:.35rem}.history-visit-notes{margin:.5rem 0 0;padding:.5rem .65rem;background:var(--surface-2);border-radius:8px;font-size:.875rem}.history-not-done{font-size:.8rem;font-weight:600;color:var(--danger)}.history-stop-done .history-not-done{display:none}.patient-auth-wrap{display:flex;justify-content:center;padding:1rem 0 2rem}.patient-auth-card{width:100%;max-width:440px;padding:1.75rem}.patient-auth-badge{display:inline-block;background:color-mix(in srgb,var(--accent) 15%,var(--surface));color:var(--accent);font-size:.75rem;font-weight:700;padding:.25rem .65rem;border-radius:999px;margin-bottom:.75rem}.patient-auth-card h1{margin:0 0 .35rem;font-size:1.5rem}.patient-auth-sub{color:var(--muted);font-size:.9rem;margin:0 0 1.25rem}.patient-auth-submit{width:100%;margin-top:.5rem;background:var(--accent);color:var(--primary-contrast)}.patient-auth-footer{text-align:center;margin-top:1rem;font-size:.875rem;color:var(--muted)}.patient-home{max-width:720px;margin:0 auto}.patient-home .info-banner{background:color-mix(in srgb,var(--success) 12%,var(--surface));color:var(--success-text);border:1px solid color-mix(in srgb,var(--success) 35%,var(--surface));border-radius:var(--radius);padding:.75rem 1rem;margin-bottom:1rem;font-size:.9rem}.patient-hero{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:1.25rem 1.5rem;margin-bottom:1rem;background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 12%,var(--surface)),color-mix(in srgb,var(--primary) 12%,var(--surface)));border:1px solid color-mix(in srgb,var(--accent) 30%,var(--surface))}.patient-hero h1{margin:0 0 .35rem;font-size:1.35rem}.patient-hero p{margin:0;color:var(--muted);font-size:.9rem;max-width:360px}.patient-hero .btn-primary{background:var(--accent);color:var(--primary-contrast);white-space:nowrap}.patient-tabs{display:flex;gap:.35rem;margin-bottom:1rem;flex-wrap:wrap}.patient-tabs button{border:1px solid var(--border);background:var(--surface);padding:.5rem 1rem;border-radius:999px;font-size:.875rem;font-weight:600;cursor:pointer;color:var(--muted)}.patient-tabs button.active{background:var(--accent);border-color:var(--accent);color:var(--primary-contrast)}.patient-book-card h2{margin-top:0}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}.patient-address-hint{font-size:.85rem;margin:.5rem 0 1rem}.rdv-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.75rem}.rdv-card{border:1px solid var(--border);border-radius:12px;padding:1rem}.rdv-card-top{display:flex;justify-content:space-between;gap:.75rem;align-items:flex-start}.rdv-status{font-size:.75rem;font-weight:700;padding:.2rem .55rem;border-radius:999px;white-space:nowrap}.rdv-status-pending{background:color-mix(in srgb,var(--warning) 16%,var(--surface));color:var(--warning-text)}.rdv-status-accepted{background:color-mix(in srgb,var(--success) 14%,var(--surface));color:var(--success-text)}.rdv-status-declined{background:color-mix(in srgb,var(--danger) 14%,var(--surface));color:var(--danger-dark)}.rdv-care{color:var(--accent);font-weight:600;font-size:.9rem;margin-top:.35rem}.rdv-hint{margin:.5rem 0 0;font-size:.85rem;color:var(--muted)}.rdv-counter{margin-top:.6rem;padding:.6rem .75rem;border-radius:10px;background:color-mix(in srgb,var(--accent) 12%,var(--surface));border:1px solid color-mix(in srgb,var(--accent) 30%,var(--surface))}.rdv-counter-time{margin:0 0 .5rem;font-size:.9rem}.rdv-counter-actions{display:flex;gap:.4rem;flex-wrap:wrap}.rdv-decline{margin:.35rem 0 0;font-size:.85rem;color:var(--danger-dark)}.rdv-notes{margin:.5rem 0 0;padding:.5rem;background:var(--surface-2);border-radius:8px;font-size:.875rem}@media (max-width: 600px){.patient-hero{flex-direction:column;align-items:stretch}.field-row{grid-template-columns:1fr}}.nurse-search-picker{margin-bottom:1rem}.nurse-search-hint{margin:0 0 .75rem;font-size:.85rem;color:var(--muted)}.nurse-search-address{display:block;margin-top:.15rem;font-size:.8rem}.nurse-search-error{margin-bottom:.75rem;font-size:.85rem}.nurse-search-results{display:flex;flex-direction:column;gap:.5rem;max-height:280px;overflow-y:auto;border:1px solid var(--border);border-radius:12px;padding:.5rem;background:var(--surface-2)}.nurse-search-status{margin:.5rem;font-size:.875rem}.nurse-search-item{display:flex;align-items:center;justify-content:space-between;gap:.75rem;width:100%;text-align:left;border:2px solid transparent;border-radius:10px;padding:.75rem .85rem;background:var(--surface);cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease}.nurse-search-item:hover{border-color:color-mix(in srgb,var(--accent) 45%,var(--surface))}.nurse-search-item:focus-visible{outline:none;box-shadow:var(--focus-ring)}.nurse-search-item.selected{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent);background:color-mix(in srgb,var(--accent) 10%,var(--surface))}.nurse-search-item-main{display:flex;flex-direction:column;gap:.15rem}.nurse-search-distance{font-size:.8rem;color:var(--accent);font-weight:600}.nurse-search-selected-label{font-size:.75rem;font-weight:700;color:var(--accent);white-space:nowrap}.nurse-search-selected-external{margin-top:.5rem;font-size:.8rem}.profile-page h1{margin:0 0 .35rem}.profile-sub{margin:0 0 1.5rem;color:var(--muted)}.profile-sections{display:grid;gap:1.25rem;max-width:560px}.profile-section h2{margin:0 0 1rem;font-size:1.05rem}.profile-actions{display:flex;gap:.75rem;margin-top:.5rem}.profile-hint{margin:.5rem 0 0;color:var(--muted);font-size:.85rem}.chat-panel{display:grid;grid-template-columns:minmax(220px,300px) 1fr;gap:1rem;height:calc(100dvh - 7rem);min-height:420px}.chat-list{display:flex;flex-direction:column;gap:.5rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:.75rem;overflow-y:auto}.chat-new{display:flex;gap:.4rem}.chat-new select{flex:1;min-width:0;border:1px solid var(--border);border-radius:var(--radius);padding:.5rem;background:var(--surface);color:var(--text)}.chat-list ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.25rem}.chat-list-item{width:100%;text-align:left;display:flex;align-items:center;gap:.6rem;padding:.55rem .65rem;border:1px solid transparent;border-radius:var(--radius);background:transparent;color:inherit;cursor:pointer}.chat-list-item:hover{background:var(--surface-2)}.chat-list-item.active{background:color-mix(in srgb,var(--primary) 12%,var(--surface));border-color:color-mix(in srgb,var(--primary) 30%,var(--surface))}.chat-list-item:focus-visible{outline:none;box-shadow:var(--focus-ring)}.chat-avatar{flex-shrink:0;width:2.25rem;height:2.25rem;border-radius:50%;display:grid;place-items:center;font-size:.8rem;font-weight:700;color:#fff;background:linear-gradient(135deg,var(--primary),var(--accent, var(--primary)))}.chat-list-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:.1rem}.chat-list-row{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.chat-list-name{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-list-time{flex-shrink:0;font-size:.72rem;color:var(--muted)}.chat-list-preview{font-size:.8rem;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-list-item.unread .chat-list-name{font-weight:800}.chat-list-item.unread .chat-list-preview{color:var(--text);font-weight:600}.chat-load-more{width:100%;margin-top:.35rem;flex-shrink:0}.chat-list-unread{flex-shrink:0;min-width:1.25rem;height:1.25rem;padding:0 .35rem;border-radius:999px;background:var(--danger);color:#fff;font-size:.7rem;font-weight:700;display:grid;place-items:center}.chat-thread{display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}.chat-thread-head{display:flex;align-items:center;gap:.6rem;padding:.75rem 1rem;border-bottom:1px solid var(--border)}.chat-back{display:none}.chat-messages{flex:1;overflow-y:auto;padding:1rem;display:flex;flex-direction:column;gap:.5rem}.chat-msg{max-width:75%;align-self:flex-start;background:var(--surface-2);border-radius:14px 14px 14px 4px;padding:.5rem .75rem}.chat-msg.mine{align-self:flex-end;background:var(--primary);color:var(--primary-contrast);border-radius:14px 14px 4px}.chat-msg.from-cabinet{border-left:3px solid var(--accent)}.chat-msg-sender{display:block;font-size:.68rem;font-weight:700;color:var(--accent);margin-bottom:.15rem}.chat-msg-body{margin:0;font-size:.9rem;white-space:pre-wrap;word-break:break-word}.chat-msg-time{display:block;margin-top:.15rem;font-size:.68rem;opacity:.7;text-align:right}.chat-composer{display:flex;gap:.5rem;padding:.75rem;border-top:1px solid var(--border)}.chat-composer input{flex:1;min-height:var(--tap-target);border:1px solid var(--border);border-radius:999px;padding:.6rem 1rem;background:var(--surface);color:var(--text)}.chat-composer input:focus-visible{outline:none;border-color:var(--primary);box-shadow:var(--focus-ring)}.chat-thread-empty{margin:auto}@media (max-width: 760px){.chat-panel{position:fixed;left:0;right:0;bottom:0;top:var(--chat-mobile-top, 4rem);height:auto;grid-template-columns:1fr;gap:0;z-index:5}body:has(.demo-banner) .chat-panel{top:5.75rem}.chat-list,.chat-thread{border-radius:0}.chat-panel .chat-thread,.chat-panel.thread-open .chat-list{display:none}.chat-panel.thread-open .chat-thread{display:flex}.chat-back{display:inline-flex}}.staff-app{min-height:100vh;background:var(--bg);display:flex;flex-direction:column}.staff-bar{display:flex;align-items:center;gap:1rem;padding:.55rem 1.5rem;background:#0f172a;color:#e2e8f0;position:sticky;top:0;z-index:30}.staff-bar-brand{display:flex;align-items:center;flex-shrink:0}.staff-brand{display:flex;align-items:center;gap:.75rem;color:inherit}.staff-logo{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;font-size:1.2rem;color:#fff;flex-shrink:0}.staff-brand strong{display:block;font-size:.95rem}.staff-brand small{color:#94a3b8;font-size:.72rem}.staff-nav{display:flex;align-items:center;gap:.25rem;flex:1}.staff-nav-item{display:flex;align-items:center;gap:.15rem}.staff-nav-item.nav-dragging{opacity:.5}.staff-nav-grip{flex-shrink:0;cursor:grab;color:#64748b;font-size:.9rem;padding:0 .15rem;-webkit-user-select:none;user-select:none}.staff-nav a{display:inline-flex;align-items:center;gap:.5rem;padding:.5rem .8rem;border-radius:10px;font-weight:600;font-size:.9rem;color:#cbd5e1;text-decoration:none;white-space:nowrap;flex:1;min-width:0}.staff-nav a:hover{background:#1e293b;color:#fff}.staff-nav a.active{background:var(--primary);color:#fff}.staff-nav-icon{flex-shrink:0;opacity:.9}.staff-nav-label{flex:1}.staff-nav-badge{flex-shrink:0;min-width:1.3rem;height:1.3rem;padding:0 .35rem;border-radius:999px;background:var(--danger);color:#fff;font-size:.72rem;font-weight:700;display:grid;place-items:center}.staff-bar-foot{display:flex;align-items:center;gap:.75rem;flex-shrink:0}.staff-user-name{font-size:.875rem;font-weight:600}.staff-logout{display:inline-flex;align-items:center;gap:.35rem}.staff-body{flex:1;min-width:0}.staff-main{padding:1.5rem 1rem 3rem}@media (max-width: 860px){.staff-main{padding:.85rem .6rem 1.5rem}}.staff-mobile-top,.staff-nav-close,.staff-overlay{display:none}@media (min-width: 861px){.staff-app.menu-sidebar{flex-direction:row}.menu-sidebar .staff-bar{flex-direction:column;align-items:stretch;width:250px;flex-shrink:0;height:100vh;padding:1rem .75rem}.menu-sidebar .staff-bar-brand{padding:0 .4rem .75rem;margin-bottom:.5rem;border-bottom:1px solid #334155}.menu-sidebar .staff-nav{flex-direction:column;align-items:stretch}.menu-sidebar .staff-bar-foot{flex-direction:column;align-items:stretch;border-top:1px solid #334155;padding-top:.75rem}}@media (min-width: 861px){.staff-app:not(.menu-sidebar) .staff-nav-grip{display:none}}@media (max-width: 860px){.staff-app{display:block}.staff-bar{position:fixed;top:0;left:0;bottom:0;height:100dvh;width:min(82vw,300px);z-index:50;flex-direction:column;align-items:stretch;gap:.25rem;padding:1rem .75rem;overflow-y:auto;transform:translate(-100%);transition:transform .25s ease;box-shadow:var(--shadow-lg)}.staff-app.nav-open .staff-bar{transform:translate(0)}.staff-bar-brand{justify-content:space-between;padding:0 .25rem .75rem;margin-bottom:.5rem;border-bottom:1px solid #334155}.staff-nav{flex-direction:column;align-items:stretch}.staff-nav a{padding:.7rem .65rem;font-size:.95rem}.staff-bar-foot{flex-direction:column;align-items:stretch;margin-top:auto;border-top:1px solid #334155;padding-top:.75rem}.staff-nav-close{display:inline-flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;flex-shrink:0;border:1px solid #334155;border-radius:var(--radius);background:transparent;color:#e2e8f0;cursor:pointer}.staff-overlay{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a80;z-index:40}.staff-mobile-top{display:flex;align-items:center;gap:.75rem;padding:.6rem .85rem;background:var(--surface);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:30}.staff-mobile-brand{font-weight:700}.staff-nav-toggle{width:2.6rem;height:2.6rem;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);cursor:pointer}.staff-nav-toggle:focus-visible{outline:none;box-shadow:var(--focus-ring)}}@media (max-width: 860px) and (prefers-reduced-motion: reduce){.staff-bar{transition:none}}.cabinet-page{display:flex;flex-direction:column;gap:1.25rem}.cabinet-page>h1{margin:0}.cab-section h2{margin:0 0 .75rem;font-size:1.05rem;display:flex;align-items:center;gap:.5rem}.cab-list{list-style:none;margin:0 0 1rem;padding:0;display:flex;flex-direction:column;gap:.5rem}.cab-list li{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.6rem 0;border-bottom:1px solid var(--border)}.cab-list li:last-child{border-bottom:none}.cab-row-actions{display:flex;gap:.5rem;flex-shrink:0;flex-wrap:wrap}.muted{color:var(--muted);font-size:.85rem}.cab-forms{display:grid;grid-template-columns:1.3fr 1fr;gap:1.25rem;border-top:1px solid var(--border);padding-top:1rem}.cab-forms h3{margin:0 0 .5rem;font-size:.95rem}.cab-invite-hint{margin-top:.5rem}.cab-planning-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:.75rem;flex-wrap:wrap}.cab-planning-head input[type=date]{max-width:200px}.cab-planning-tools{display:flex;gap:1rem;flex-wrap:wrap;margin-bottom:.85rem}.cab-planning-tool{display:flex;align-items:center;gap:.5rem;font-size:.85rem;color:var(--muted)}.cab-planning-tool select{min-height:var(--tap-target);border:1px solid var(--border);border-radius:var(--radius);padding:.3rem .5rem;background:var(--surface);color:var(--text)}.cab-assign select{min-height:var(--tap-target);border:1px solid var(--border);border-radius:var(--radius);padding:.4rem .6rem;background:var(--surface);color:var(--text)}.cab-pill{background:var(--warning);color:#fff;border-radius:999px;font-size:.75rem;padding:.1rem .5rem}.cab-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.85rem}.cab-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:.9rem 1rem}.cab-card .v{font-size:1.7rem;font-weight:800;color:var(--primary-dark);line-height:1.1}.cab-card .l{color:var(--muted);font-size:.8rem;margin-top:.15rem}.cab-card.live .v{color:var(--success)}.cab-card.live .l:before{content:"● ";color:var(--success)}.cab-stats-grid{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}.cab-stats-grid div{background:var(--surface-2);border-radius:var(--radius);padding:.75rem;text-align:center}.cab-stats-grid .v{display:block;font-size:1.5rem;font-weight:800;color:var(--primary-dark)}.cab-stats-grid .l{font-size:.8rem;color:var(--muted)}@media (max-width: 720px){.cab-forms{grid-template-columns:1fr}}@media (max-width: 560px){.cab-list li{flex-direction:column;align-items:flex-start}}:root{--primary: #0d9488;--primary-dark: #0f766e;--primary-contrast: #ffffff;--accent: #0284c7;--danger: #dc2626;--danger-dark: #b91c1c;--success: #047857;--warning: #b45309;--warning-text: #92400e;--bg: #f4f7fb;--surface: #ffffff;--surface-2: #f8fafc;--text: #0f172a;--muted: #55657a;--border: #e2e8f0;--secondary-bg: #e2e8f0;--secondary-bg-hover: #cbd5e1;--secondary-text: #0f172a;--error-bg: #fef2f2;--error-border: #fecaca;--error-text: #b91c1c;--success-bg: #ecfdf5;--success-border: #a7f3d0;--success-text: #047857;--shadow: 0 10px 30px rgba(15, 23, 42, .08);--shadow-lg: 0 16px 38px rgba(15, 23, 42, .12);--radius-sm: 8px;--radius: 12px;--radius-lg: 16px;--focus-ring: 0 0 0 3px rgba(13, 148, 136, .4);--tap-target: 2.75rem;--demo-banner-h: 28px;color-scheme:light;font-family:DM Sans,system-ui,sans-serif;color:var(--text);background:var(--bg)}:root[data-theme=dark]{--primary: #2dd4bf;--primary-dark: #14b8a6;--primary-contrast: #042f2a;--accent: #38bdf8;--danger: #f87171;--danger-dark: #ef4444;--success: #34d399;--warning: #fbbf24;--warning-text: #fcd34d;--bg: #0b1220;--surface: #131c2e;--surface-2: #1b2740;--text: #e7edf5;--muted: #9fb0c7;--border: #2a3850;--secondary-bg: #243049;--secondary-bg-hover: #2f3e5c;--secondary-text: #e7edf5;--error-bg: #2a1416;--error-border: #7f1d1d;--error-text: #fca5a5;--success-bg: #0c2a22;--success-border: #14532d;--success-text: #6ee7b7;--shadow: 0 10px 30px rgba(0, 0, 0, .45);--shadow-lg: 0 16px 38px rgba(0, 0, 0, .55);--focus-ring: 0 0 0 3px rgba(45, 212, 191, .5);color-scheme:dark}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:var(--bg);color:var(--text);overflow-x:clip;-webkit-text-size-adjust:100%}img,video,canvas{max-width:100%;height:auto}a{color:inherit;text-decoration:none}a:focus-visible,[tabindex]:focus-visible,summary:focus-visible{outline:2px solid var(--primary);outline-offset:2px;border-radius:4px}button,input,select,textarea{font:inherit}.skip-link{position:absolute;left:.75rem;top:-3rem;z-index:10000;background:var(--primary);color:var(--primary-contrast);padding:.6rem 1rem;border-radius:var(--radius-sm);font-weight:600;transition:top .15s ease}.skip-link:focus{top:.75rem}.container{width:min(1100px,100% - 2rem);margin:0 auto}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow);padding:1.25rem;animation:fade-in-up .35s ease both;transition:transform .2s ease,box-shadow .2s ease}@media (max-width: 640px){.container{width:100%}.card:not(.dialog){margin-left:-.6rem;margin-right:-.6rem;border:none;border-bottom:1px solid var(--border);border-radius:0;box-shadow:none}:has(>.card){gap:0!important}}.card:not(:has(form)):hover{transform:translateY(-3px);box-shadow:var(--shadow-lg)}@keyframes fade-in-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.stops-list li,.patient-list li,.care-type-list li,.rdv-list li,.request-list li,.history-day-list li,.history-stops-list li{animation:fade-in-up .3s ease both}.stops-list li:nth-child(2),.patient-list li:nth-child(2),.care-type-list li:nth-child(2),.rdv-list li:nth-child(2),.request-list li:nth-child(2),.history-day-list li:nth-child(2),.history-stops-list li:nth-child(2){animation-delay:.05s}.stops-list li:nth-child(3),.patient-list li:nth-child(3),.care-type-list li:nth-child(3),.rdv-list li:nth-child(3),.request-list li:nth-child(3),.history-day-list li:nth-child(3),.history-stops-list li:nth-child(3){animation-delay:.1s}.stops-list li:nth-child(n+4),.patient-list li:nth-child(n+4),.care-type-list li:nth-child(n+4),.rdv-list li:nth-child(n+4),.request-list li:nth-child(n+4),.history-day-list li:nth-child(n+4),.history-stops-list li:nth-child(n+4){animation-delay:.15s}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;min-height:var(--tap-target);border:1px solid transparent;border-radius:var(--radius);padding:.6rem 1rem;cursor:pointer;font-weight:600;line-height:1.2;transition:transform .15s ease,background .15s ease,opacity .15s ease}.btn:active{transform:scale(.98)}.btn:focus-visible{outline:none;box-shadow:var(--focus-ring)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--primary);color:var(--primary-contrast)}.btn-primary:hover:not(:disabled){background:var(--primary-dark)}.btn-secondary{background:var(--secondary-bg);color:var(--secondary-text)}.btn-secondary:hover:not(:disabled){background:var(--secondary-bg-hover)}.load-more-btn{display:block;width:100%;margin-top:1rem}.btn-danger{background:color-mix(in srgb,var(--danger) 15%,var(--surface));color:var(--danger)}.btn-danger:hover:not(:disabled){background:color-mix(in srgb,var(--danger) 25%,var(--surface))}.btn-sm{min-height:2.25rem;padding:.4rem .7rem;font-size:.85rem}.field{display:flex;flex-direction:column;gap:.35rem;margin-bottom:1rem}.field label{font-size:.875rem;font-weight:600;color:var(--muted)}.field input,.field select,.field textarea{width:100%;max-width:100%;min-height:var(--tap-target);border:1px solid var(--border);border-radius:var(--radius);padding:.6rem .75rem;background:var(--surface);color:var(--text);transition:border-color .15s ease,box-shadow .15s ease}.field input:focus-visible,.field select:focus-visible,.field textarea:focus-visible{outline:none;border-color:var(--primary);box-shadow:var(--focus-ring)}.field textarea{min-height:90px;resize:vertical}.error-banner{background:var(--error-bg);color:var(--error-text);border:1px solid var(--error-border);border-radius:var(--radius);padding:.75rem 1rem;margin-bottom:1rem}.success-banner{background:var(--success-bg);color:var(--success-text);border:1px solid var(--success-border);border-radius:var(--radius);padding:.75rem 1rem;margin-bottom:1rem}.empty{color:var(--muted);text-align:center;padding:2rem 1rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media (max-width: 768px){input,select,textarea{font-size:16px}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}.card:hover{transform:none}}:root[data-motion=reduce] *,:root[data-motion=reduce] *:before,:root[data-motion=reduce] *:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}:root[data-motion=reduce] .card:hover{transform:none}.demo-banner{position:fixed;top:0;left:0;right:0;height:var(--demo-banner-h);z-index:1200;display:flex;align-items:center;justify-content:center;gap:.4rem;background:var(--warning);color:#fff;font-size:.72rem;font-weight:700;letter-spacing:.02em;text-transform:uppercase;padding:0 .75rem;text-align:center;pointer-events:none;box-shadow:0 1px 4px #0000002e}.demo-banner .demo-banner-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}body.demo-mode{padding-top:var(--demo-banner-h)}body.demo-mode .sidebar,body.demo-mode .mobile-topbar,body.demo-mode .patient-bar,body.demo-mode .patient-pub-header,body.demo-mode .patient-mobile-top,body.demo-mode .staff-bar,body.demo-mode .staff-mobile-top,body.demo-mode .top-progress,body.demo-mode .tour-mobile-map{top:var(--demo-banner-h)}@media (min-width: 769px){body.demo-mode .app-with-sidebar:not(.menu-topbar) .sidebar{height:calc(100vh - var(--demo-banner-h))}}@media (min-width: 861px){body.demo-mode .menu-sidebar .staff-bar,body.demo-mode .menu-sidebar .patient-bar{height:calc(100vh - var(--demo-banner-h))}}
