:root{--color-primary: #2E7D32;--color-primary-dark: #1B5E20;--color-secondary: #FBC02D;--color-white: #FFFFFF;--color-background: #F5F5F5;--color-text: #333333;--color-text-light: #757575;--color-error: #D32F2F;--border-radius: 8px;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .12), 0 1px 2px rgba(0, 0, 0, .24);--shadow-md: 0 4px 6px rgba(0, 0, 0, .1);--font-family: "Inter", system-ui, -apple-system, sans-serif}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-family);background-color:var(--color-background);color:var(--color-text);line-height:1.5;-webkit-font-smoothing:antialiased}a{text-decoration:none;color:inherit}button{font-family:inherit;cursor:pointer;border:none;outline:none}h1,h2,h3,h4,h5,h6{font-weight:600;margin-bottom:.5em;color:var(--color-primary-dark)}.container{max-width:1200px;margin:0 auto;padding:0 1rem}@media(min-width:769px){.mobile-header,.mobile-nav-overlay{display:none!important}}@media(max-width:768px){.desktop-sidebar{display:none!important}.mobile-header{display:flex!important}.route-layout{flex-direction:column!important;height:calc(100vh - 64px)!important}.route-sidebar{width:100%!important;flex:1!important;max-height:45vh;border-right:none!important;border-bottom:1px solid #e5e7eb}.route-map{width:100%!important;flex:1!important;min-height:300px;padding:.5rem!important}.settings-page{padding:1rem!important}.container{padding:0 .75rem}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.spin{animation:spin 1s linear infinite}.app-state-page{min-height:calc(100vh - 2rem);display:grid;place-items:center;padding:2rem 1rem}.app-state-panel{width:min(100%,520px);padding:2.5rem 2rem;text-align:center;background:#fff;border:1px solid #e5e7eb;border-radius:var(--border-radius);box-shadow:var(--shadow-md)}.app-state-icon{width:56px;height:56px;margin:0 auto 1.25rem;display:grid;place-items:center;border-radius:50%}.app-state-icon-loading{color:var(--color-primary);background:#e3f3e5}.app-state-icon-error{color:#b42318;background:#fee4e2}.app-state-eyebrow{margin-bottom:.35rem;color:var(--color-primary);font-size:.75rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.app-state-panel h1{margin-bottom:.55rem;color:#1f2937;font-size:1.45rem}.app-state-panel>p:not(.app-state-eyebrow){margin:0 auto;max-width:38ch;color:#64748b;font-size:.95rem}.app-state-skeletons{display:grid;gap:.55rem;width:min(100%,290px);margin:1.75rem auto 0}.app-state-skeletons span,.dashboard-skeleton,.dashboard-loading-card span,.dashboard-loading-card i,.dashboard-loading-card em,.dashboard-loading-chart i,.dashboard-loading-chart span{display:block;background:#e8eef0;border-radius:5px;animation:statePulse 1.5s ease-in-out infinite}.app-state-skeletons span:nth-child(2),.dashboard-loading-card i:nth-child(2){animation-delay:.15s}.app-state-skeletons span:nth-child(3),.dashboard-loading-card i:nth-child(3){animation-delay:.3s}.app-state-skeletons span{height:9px}.app-state-retry,.dashboard-inline-state button{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;margin-top:1.5rem;padding:.7rem 1rem;color:#fff;background:var(--color-primary);border:1px solid var(--color-primary);border-radius:var(--border-radius);font-size:.9rem;font-weight:700;transition:background-color .15s ease,transform .15s ease}.app-state-retry:hover,.dashboard-inline-state button:hover{background:var(--color-primary-dark);transform:translateY(-1px)}.dashboard-loading-page{max-width:1200px;margin:0 auto;padding:2rem}.dashboard-loading-heading{margin-bottom:2rem}.dashboard-skeleton-title{width:170px;height:29px;margin-bottom:.7rem}.dashboard-skeleton-subtitle{width:250px;height:12px}.dashboard-loading-grid{display:grid;gap:1.5rem}.dashboard-loading-grid-stats{grid-template-columns:repeat(2,minmax(0,1fr));margin-bottom:2rem}.dashboard-loading-card{min-height:106px;display:flex;align-items:center;gap:1rem;padding:1.5rem;background:#fff;border:1px solid #e5e7eb;border-radius:var(--border-radius);box-shadow:var(--shadow-sm)}.dashboard-loading-card>span{width:48px;height:48px;flex:0 0 auto;border-radius:50%}.dashboard-loading-card>div{flex:1}.dashboard-loading-card i{width:72%;height:12px;margin-bottom:.65rem}.dashboard-loading-card i:last-child{width:42%;height:21px;margin-bottom:0}.dashboard-loading-status{min-height:82px;margin-bottom:2rem}.dashboard-loading-status>span{width:40px;height:40px}.dashboard-loading-status em{width:76px;height:24px;margin-left:auto}.dashboard-loading-grid-charts{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-loading-chart{height:350px;padding:1.5rem;background:#fff;border:1px solid #e5e7eb;border-radius:var(--border-radius);box-shadow:var(--shadow-sm)}.dashboard-loading-chart i{width:42%;height:16px;margin-bottom:1.5rem}.dashboard-loading-chart span{width:100%;height:260px;border-radius:6px}.dashboard-loading-caption{display:flex;align-items:center;justify-content:center;gap:.75rem;margin-top:2rem;color:#475569}.dashboard-loading-caption .app-state-icon{width:40px;height:40px;margin:0}.dashboard-loading-caption strong,.dashboard-loading-caption p{display:block;margin:0}.dashboard-loading-caption strong{color:#1f2937;font-size:.95rem}.dashboard-loading-caption p{color:#64748b;font-size:.8rem}.dashboard-inline-state{display:flex;align-items:center;gap:.65rem;margin-bottom:1.25rem;padding:.8rem 1rem;border-radius:var(--border-radius);font-size:.86rem}.dashboard-inline-error{color:#9f1239;background:#fff1f2;border:1px solid #fecdd3}.dashboard-inline-loading{color:#166534;background:#f0fdf4;border:1px solid #bbf7d0}.dashboard-inline-state button{margin:0 0 0 auto;padding:.45rem .7rem;font-size:.78rem}@keyframes statePulse{0%,to{opacity:.55}50%{opacity:1}}@media(max-width:700px){.dashboard-loading-page{padding:1rem .75rem}.dashboard-loading-grid-stats,.dashboard-loading-grid-charts{grid-template-columns:1fr}.dashboard-loading-chart{height:280px}.dashboard-loading-chart span{height:190px}.dashboard-loading-caption{align-items:flex-start}}@media(prefers-reduced-motion:reduce){.spin,.app-state-skeletons span,.dashboard-skeleton,.dashboard-loading-card span,.dashboard-loading-card i,.dashboard-loading-card em,.dashboard-loading-chart i,.dashboard-loading-chart span{animation:none}}
