:root{--color-primary:#2563eb;--color-primary-50:#eff6ff;--color-primary-100:#dbeafe;--color-primary-200:#bfdbfe;--color-primary-500:#3b82f6;--color-primary-600:#2563eb;--color-primary-700:#1d4ed8;--color-success:#059669;--color-success-50:#ecfdf5;--color-success-100:#d1fae5;--color-success-600:#059669;--color-success-700:#047857;--color-warning:#d97706;--color-warning-50:#fffbeb;--color-warning-100:#fef3c7;--color-warning-600:#d97706;--color-warning-700:#b45309;--color-danger:#dc2626;--color-danger-50:#fef2f2;--color-danger-100:#fee2e2;--color-danger-600:#dc2626;--color-danger-700:#b91c1c;--color-gray-50:#f8fafc;--color-gray-100:#f1f5f9;--color-gray-200:#e2e8f0;--color-gray-300:#cbd5e1;--color-gray-400:#94a3b8;--color-gray-500:#64748b;--color-gray-600:#475569;--color-gray-700:#334155;--color-gray-800:#1e293b;--color-gray-900:#0f172a;--color-white:#fff;--space-1:0.25rem;--space-2:0.5rem;--space-3:0.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--space-10:2.5rem;--space-12:3rem;--radius-sm:0.375rem;--radius-md:0.5rem;--radius-lg:0.75rem;--radius-xl:1rem;--radius-2xl:1.25rem;--radius-full:9999px;--text-xs:0.75rem;--text-sm:0.8125rem;--text-base:0.9375rem;--text-lg:1.0625rem;--text-xl:1.25rem;--text-2xl:1.5rem;--text-3xl:1.875rem;--text-4xl:2.25rem;--font-normal:400;--font-medium:500;--font-semibold:600;--font-bold:700;--leading-tight:1.25;--leading-normal:1.5;--leading-relaxed:1.625;--shadow-xs:0 1px 2px 0 rgba(0,0,0,.05);--shadow-sm:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--shadow-md:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--shadow-lg:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--shadow-xl:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--shadow-inner:inset 0 2px 4px 0 rgba(0,0,0,.05);--shadow-ring:0 0 0 3px var(--color-primary-200);--shadow-ring-danger:0 0 0 3px var(--color-danger-100);--ease-out:cubic-bezier(0.16,1,0.3,1);--ease-in-out:cubic-bezier(0.4,0,0.2,1);--duration-fast:150ms;--duration-normal:200ms;--duration-slow:300ms;--z-dropdown:50;--z-sticky:100;--z-modal:200;--z-toast:300}*,:after,:before{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,Segoe UI,Roboto,Oxygen,Ubuntu,sans-serif;font-size:var(--text-base);line-height:var(--leading-normal);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:linear-gradient(135deg,var(--color-gray-50) 0,#eef2f7 100%);color:var(--color-gray-800);min-height:100vh}canvas,img,picture,svg,video{display:block;max-width:100%}button,input,select,textarea{font:inherit}h1,h2,h3,h4,h5,h6,p{overflow-wrap:break-word}button{cursor:pointer}a{color:inherit;text-decoration:none}a,button,input,select,textarea{touch-action:manipulation;-webkit-tap-highlight-color:transparent}@supports (padding:env(safe-area-inset-top)){body{padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}}:focus{outline:none}:focus-visible{outline:none;box-shadow:var(--shadow-ring)}::selection{background-color:var(--color-primary-200);color:var(--color-gray-900)}.page{max-width:800px}.page,.page-narrow{padding:var(--space-4);padding-bottom:6rem;margin:0 auto}.page-narrow{max-width:560px}.page-center{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:var(--space-4)}.stack{gap:var(--space-4)}.stack,.stack-sm{display:flex;flex-direction:column}.stack-sm{gap:var(--space-3)}.stack-xs{flex-direction:column}.row,.stack-xs{display:flex;gap:var(--space-2)}.row{align-items:center}.row-between{display:flex;justify-content:space-between;align-items:flex-start}.row-wrap{display:flex;flex-wrap:wrap;gap:var(--space-2);align-items:center}.flex-1{flex:1 1}.shrink-0{flex-shrink:0}.grid-2{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:var(--space-3);gap:var(--space-3)}.grid-address{grid-template-columns:1fr 80px 100px;grid-gap:var(--space-2)}.grid-address,.grid-time{display:grid;gap:var(--space-2)}.grid-time{grid-template-columns:1fr 1fr auto;grid-gap:var(--space-2);align-items:end}.relative{position:relative}.text-center{text-align:center}.text-left{text-align:left}.w-full{width:100%}.title{font-size:var(--text-4xl);font-weight:var(--font-bold);letter-spacing:-.025em}.heading,.title{color:var(--color-gray-900);line-height:var(--leading-tight)}.heading{font-size:var(--text-2xl);font-weight:var(--font-semibold);letter-spacing:-.015em}.heading-sm{font-size:var(--text-lg);line-height:var(--leading-tight)}.heading-sm,.subheading{font-weight:var(--font-semibold);color:var(--color-gray-800)}.subheading{font-size:var(--text-xl)}.section-title{font-size:var(--text-xs);color:var(--color-gray-500);text-transform:uppercase;letter-spacing:.05em}.name,.section-title{font-weight:var(--font-semibold)}.name{font-size:var(--text-lg);color:var(--color-gray-900)}.text-body{color:var(--color-gray-700);font-size:var(--text-base)}.text-muted{color:var(--color-gray-500);font-size:var(--text-sm)}.text-small{color:var(--color-gray-400)}.text-small,.text-xs{font-size:var(--text-xs)}.font-medium{font-weight:var(--font-medium)}.font-semibold{font-weight:var(--font-semibold)}.text-success{color:var(--color-success-600)}.text-warning{color:var(--color-warning-700)}.text-danger{color:var(--color-danger-600)}.text-primary{color:var(--color-primary-600)}.card{padding:var(--space-6);border-radius:var(--radius-xl);border:1px solid var(--color-gray-100)}.card,.card-sm{background:var(--color-white);box-shadow:var(--shadow-sm)}.card-sm{padding:var(--space-4);border-radius:var(--radius-lg);border:1px solid var(--color-gray-100)}.card-bordered{background:var(--color-white);padding:var(--space-3) var(--space-4);border:1px solid var(--color-gray-200);border-radius:var(--radius-lg);transition:all var(--duration-fast) var(--ease-out)}.card-bordered:hover{border-color:var(--color-gray-300);box-shadow:var(--shadow-sm)}.card-selected{background:var(--color-primary-50);border:2px solid var(--color-primary-500);box-shadow:var(--shadow-ring)}.overflow-hidden{overflow:hidden}.overflow-auto{overflow:auto}.max-h-300{max-height:300px}.card-success{background:linear-gradient(135deg,var(--color-success-50) 0,var(--color-success-100) 100%);border:1px solid var(--color-success-100)}.card-warning{background:linear-gradient(135deg,var(--color-warning-50) 0,var(--color-warning-100) 100%);border:1px solid var(--color-warning-100)}.card-primary{background:linear-gradient(135deg,var(--color-primary-50) 0,var(--color-primary-100) 100%);border:1px solid var(--color-primary-100)}.border-left-danger{border-left:3px solid var(--color-danger-600)}.border-left-primary{border-left:3px solid var(--color-primary-600)}.bg-white{background-color:var(--color-white)}.bg-muted{background-color:var(--color-gray-50)}.bg-success{background:linear-gradient(135deg,var(--color-success-50) 0,var(--color-success-100) 100%)}.bg-warning{background:linear-gradient(135deg,var(--color-warning-50) 0,var(--color-warning-100) 100%)}.bg-danger{background:linear-gradient(135deg,var(--color-danger-50) 0,var(--color-danger-100) 100%)}.bg-primary{background:linear-gradient(135deg,var(--color-primary-50) 0,var(--color-primary-100) 100%)}.label{font-size:var(--text-sm);color:var(--color-gray-700)}.label,.label-small{display:block;font-weight:var(--font-medium);margin-bottom:var(--space-1)}.label-small{font-size:var(--text-xs);color:var(--color-gray-500)}.input{width:100%;padding:var(--space-2) var(--space-3);background:var(--color-white);border:1px solid var(--color-gray-300);border-radius:var(--radius-md);font-size:var(--text-base);color:var(--color-gray-900);transition:all var(--duration-fast) var(--ease-out);box-shadow:var(--shadow-xs)}.input::placeholder{color:var(--color-gray-400)}.input:hover{border-color:var(--color-gray-400)}.input:focus{border-color:var(--color-primary-500);box-shadow:var(--shadow-ring)}.input-lg{padding:var(--space-3) var(--space-4)}.input-time{padding:var(--space-2);background:var(--color-white);border:1px solid var(--color-gray-300);border-radius:var(--radius-md);font-size:var(--text-sm);box-shadow:var(--shadow-xs);transition:all var(--duration-fast) var(--ease-out)}.input-time:focus{border-color:var(--color-primary-500);box-shadow:var(--shadow-ring)}.input-error{border-color:var(--color-danger-600)!important}.input-error:focus{box-shadow:var(--shadow-ring-danger)!important}.select{width:100%;padding:var(--space-2) var(--space-3);background:var(--color-white);border:1px solid var(--color-gray-300);border-radius:var(--radius-md);font-size:var(--text-base);color:var(--color-gray-900);box-shadow:var(--shadow-xs);cursor:pointer;transition:all var(--duration-fast) var(--ease-out)}.select:hover{border-color:var(--color-gray-400)}.select:focus{border-color:var(--color-primary-500);box-shadow:var(--shadow-ring)}.textarea{width:100%;padding:var(--space-2) var(--space-3);background:var(--color-white);border:1px solid var(--color-gray-300);border-radius:var(--radius-md);font-size:var(--text-base);color:var(--color-gray-900);resize:vertical;min-height:5rem;box-shadow:var(--shadow-xs);transition:all var(--duration-fast) var(--ease-out)}.textarea:focus{border-color:var(--color-primary-500);box-shadow:var(--shadow-ring)}.checkbox-row{display:flex;align-items:center;gap:var(--space-2);cursor:pointer}.checkbox{width:1.125rem;height:1.125rem;accent-color:var(--color-primary-600);cursor:pointer}.error-text{color:var(--color-danger-600);font-size:var(--text-xs);margin-top:var(--space-1);font-weight:var(--font-medium)}.form-section{border-bottom:1px solid var(--color-gray-100);padding-bottom:var(--space-5);margin-bottom:var(--space-5)}.form-section:last-of-type{border-bottom:none;margin-bottom:0;padding-bottom:0}.form-actions{display:flex;gap:var(--space-3);margin-top:var(--space-6)}.form-actions>*{flex:1 1}.btn{display:inline-flex;align-items:center;justify-content:center;padding:var(--space-2) var(--space-4);border-radius:var(--radius-md);border:none;font-weight:var(--font-semibold);font-size:var(--text-sm);line-height:1.5;transition:all var(--duration-fast) var(--ease-out);white-space:nowrap}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none!important}.btn:active:not(:disabled){transform:scale(.98)}.btn-primary{background:linear-gradient(180deg,var(--color-primary-500) 0,var(--color-primary-600) 100%);color:var(--color-white);box-shadow:var(--shadow-sm),inset 0 1px 0 hsla(0,0%,100%,.1)}.btn-primary:hover:not(:disabled){background:linear-gradient(180deg,var(--color-primary-600) 0,var(--color-primary-700) 100%);box-shadow:var(--shadow-md)}.btn-success{background:linear-gradient(180deg,var(--color-success) 0,var(--color-success-700) 100%);color:var(--color-white);box-shadow:var(--shadow-sm)}.btn-success:hover:not(:disabled){box-shadow:var(--shadow-md)}.btn-danger{background:var(--color-danger-50);color:var(--color-danger-600);border:1px solid var(--color-danger-100)}.btn-danger:hover:not(:disabled){background:var(--color-danger-100)}.btn-warning{background:linear-gradient(180deg,var(--color-warning) 0,var(--color-warning-700) 100%);color:var(--color-white);box-shadow:var(--shadow-sm)}.btn-secondary{background:var(--color-white);color:var(--color-gray-700);border:1px solid var(--color-gray-200);box-shadow:var(--shadow-xs)}.btn-secondary:hover:not(:disabled){background:var(--color-gray-50);border-color:var(--color-gray-300)}.btn-ghost{background:transparent;color:var(--color-primary-600);padding:var(--space-1) var(--space-2)}.btn-ghost:hover:not(:disabled){background:var(--color-primary-50)}.btn-call{background:var(--color-success-50);color:var(--color-success-700);border:1px solid var(--color-success-100)}.btn-call:hover:not(:disabled){background:var(--color-success-100)}.btn-sm{padding:var(--space-1) var(--space-3)}.btn-sm,.btn-xs{font-size:var(--text-xs)}.btn-xs{padding:var(--space-1) var(--space-2)}.btn-block{width:100%}.toggle-btn{padding:var(--space-1) var(--space-3);border-radius:var(--radius-md);border:1px solid var(--color-gray-200);background:var(--color-white);color:var(--color-gray-600);font-size:var(--text-xs);font-weight:var(--font-medium);transition:all var(--duration-fast) var(--ease-out);box-shadow:var(--shadow-xs)}.toggle-btn:hover{border-color:var(--color-gray-300);background:var(--color-gray-50)}.toggle-btn-active{background:linear-gradient(180deg,var(--color-primary-500) 0,var(--color-primary-600) 100%);color:var(--color-white);border-color:var(--color-primary-600);box-shadow:var(--shadow-sm)}.toggle-btn-success{background:linear-gradient(180deg,var(--color-success) 0,var(--color-success-700) 100%);color:var(--color-white);border-color:var(--color-success-700)}.toggle-btn-danger{background:linear-gradient(180deg,var(--color-danger) 0,var(--color-danger-700) 100%);color:var(--color-white);border-color:var(--color-danger-700)}.toggle-btn-flex{flex:1 1;padding:var(--space-2)}.badge{display:inline-flex;align-items:center;padding:.125rem var(--space-2);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:var(--font-semibold);line-height:1.5}.badge-sm{font-size:.625rem;padding:.0625rem var(--space-1)}.badge-primary{background:var(--color-primary-100);color:var(--color-primary-700)}.badge-success{background:var(--color-success-100);color:var(--color-success-700)}.badge-danger{background:var(--color-danger-100);color:var(--color-danger-700)}.badge-warning{background:var(--color-warning-100);color:var(--color-warning-700)}.badge-muted{background:var(--color-gray-100);color:var(--color-gray-600)}.status-on-time{background:var(--color-success-100);color:var(--color-success-700)}.status-tight{background:var(--color-warning-100);color:var(--color-warning-700)}.status-impossible,.status-late{background:var(--color-danger-100);color:var(--color-danger-700)}.bottom-nav{position:fixed;bottom:0;left:0;right:0;background:hsla(0,0%,100%,.9);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-top:1px solid var(--color-gray-100);padding:var(--space-3) var(--space-4);display:flex;justify-content:space-around;z-index:var(--z-sticky)}.nav-link{display:flex;flex-direction:column;align-items:center;gap:var(--space-1);color:var(--color-gray-400);font-size:var(--text-xs);font-weight:var(--font-medium);transition:color var(--duration-fast) var(--ease-out);padding:var(--space-1) var(--space-2);border-radius:var(--radius-md)}.nav-link:hover{color:var(--color-gray-600)}.nav-link-active{color:var(--color-primary-600);font-weight:var(--font-semibold)}.nav-link-logout{margin-left:auto;color:var(--color-gray-400)}.alert{padding:var(--space-3) var(--space-4);border-radius:var(--radius-lg);font-size:var(--text-sm);font-weight:var(--font-medium)}.alert-error{background:var(--color-danger-50);color:var(--color-danger-700);border:1px solid var(--color-danger-100)}.alert-success{background:var(--color-success-50);color:var(--color-success-700);border:1px solid var(--color-success-100)}.alert-warning{background:var(--color-warning-50);color:var(--color-warning-700);border:1px solid var(--color-warning-100)}.dropdown{position:absolute;top:calc(100% + 4px);left:0;right:0;background:var(--color-white);border:1px solid var(--color-gray-200);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);z-index:var(--z-dropdown);list-style:none;padding:var(--space-1);margin:0;max-height:320px;overflow:auto}.dropdown-item{padding:var(--space-2) var(--space-3);cursor:pointer;font-size:var(--text-sm);border-radius:var(--radius-md);color:var(--color-gray-700);transition:all var(--duration-fast) var(--ease-out)}.dropdown-item:hover{background:var(--color-gray-50);color:var(--color-gray-900)}.dropdown-loading{padding:var(--space-4);color:var(--color-gray-500);font-size:var(--text-sm);text-align:center}.modal-overlay{position:fixed;inset:0;background:rgba(15,23,42,.6);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;padding:var(--space-4);z-index:var(--z-modal);animation:fadeIn var(--duration-fast) var(--ease-out)}.modal{background:var(--color-white);border-radius:var(--radius-2xl);padding:var(--space-6);width:100%;max-width:500px;max-height:90vh;overflow:auto;box-shadow:var(--shadow-xl);animation:slideUp var(--duration-normal) var(--ease-out)}.modal-title{font-size:var(--text-xl);font-weight:var(--font-bold);color:var(--color-gray-900);margin-bottom:var(--space-5)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(16px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.list-item{padding:var(--space-3);border-radius:var(--radius-lg);border:1px solid var(--color-gray-100)}.list-item,.list-item-sm{background:var(--color-gray-50)}.list-item-sm{padding:var(--space-2) var(--space-3);border-radius:var(--radius-md)}.spinner{width:1.25rem;height:1.25rem;border:2px solid var(--color-gray-200);border-top-color:var(--color-primary-600);border-radius:50%;animation:spin .8s linear infinite}.spinner-sm{width:1rem;height:1rem}.spinner-inline{position:absolute;right:var(--space-3);top:50%;transform:translateY(-50%)}@keyframes spin{to{transform:rotate(1turn)}}@keyframes spin-center{to{transform:translateY(-50%) rotate(1turn)}}.timeline-item{display:flex;gap:var(--space-3)}.timeline-item-sm{margin-bottom:var(--space-1)}.timeline-item-lg{margin-bottom:var(--space-4)}.timeline-time{width:48px;text-align:right;padding-top:2px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.timeline-marker{flex-direction:column;width:28px}.timeline-dot,.timeline-marker{display:flex;align-items:center}.timeline-dot{border-radius:50%;justify-content:center;font-size:var(--text-xs);box-shadow:var(--shadow-sm)}.timeline-dot-lg{width:28px;height:28px}.timeline-dot-sm{width:10px;height:10px}.timeline-line{width:2px;flex:1 1;background:var(--color-gray-200);min-height:8px;border-radius:1px}.timeline-line-lg{min-height:20px}.timeline-content{flex:1 1;padding-bottom:var(--space-1)}.link-card{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-3) var(--space-4);background:var(--color-white);border:1px solid var(--color-gray-100);border-radius:var(--radius-lg);transition:all var(--duration-fast) var(--ease-out);box-shadow:var(--shadow-xs)}.link-card:hover{border-color:var(--color-primary-200);box-shadow:var(--shadow-sm);transform:translateY(-1px)}.link-icon{width:2.5rem;height:2.5rem;background:linear-gradient(135deg,var(--color-primary-500) 0,var(--color-primary-600) 100%);color:var(--color-white);border-radius:var(--radius-lg);display:flex;align-items:center;justify-content:center;font-weight:var(--font-bold);font-size:var(--text-base);flex-shrink:0;box-shadow:var(--shadow-sm)}.mt-xs{margin-top:var(--space-1)}.mt-sm{margin-top:var(--space-2)}.mt-md{margin-top:var(--space-3)}.mt-lg{margin-top:var(--space-4)}.mt-xl{margin-top:var(--space-6)}.mb-xs{margin-bottom:var(--space-1)}.mb-sm{margin-bottom:var(--space-2)}.mb-md{margin-bottom:var(--space-3)}.mb-lg{margin-bottom:var(--space-4)}.mb-xl{margin-bottom:var(--space-6)}.ml-sm{margin-left:var(--space-2)}.mr-sm{margin-right:var(--space-2)}.p-lg{padding:var(--space-4)}.p-xl{padding:var(--space-6)}.gap-xs{gap:var(--space-1)}.gap-sm{gap:var(--space-2)}.gap-md{gap:var(--space-3)}.gap-lg{gap:var(--space-4)}.legend{display:flex;justify-content:space-between;font-size:var(--text-xs);color:var(--color-gray-400);margin-top:var(--space-1);padding:0 var(--space-1)}