:root{--color-bg: #f4efe6;--color-surface: #fbf8f1;--color-surface-raised: #ffffff;--color-surface-sunken: #efe9dd;--color-border: #e1d9c9;--color-border-strong: #c9c0b0;--color-text: #1c1815;--color-text-soft: #4a433b;--color-text-muted: #776e60;--color-text-faint: #a89e8c;--color-primary: #b0552f;--color-primary-strong: #8e4222;--color-primary-strong-hover: #6d3219;--color-primary-soft: #f0ddd0;--color-primary-contrast: #ffffff;--color-secondary: #28524c;--color-secondary-soft: #dbe6e2;--color-danger: #a23a2c;--color-danger-bg: #f2ddd7;--color-warning: #b07d24;--color-warning-bg: #f0e3c8;--color-success: #2e6b53;--color-success-bg: #dce8e0;--color-info: #28524c;--color-info-bg: #dbe6e2;--radius-sm: 6px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--shadow-xs: 0 1px 2px 0 rgba(28, 24, 21, .04);--shadow-sm: 0 1px 3px 0 rgba(28, 24, 21, .06), 0 1px 2px -1px rgba(28, 24, 21, .04);--shadow-md: 0 4px 6px -1px rgba(28, 24, 21, .07), 0 2px 4px -2px rgba(28, 24, 21, .05);--shadow-lg: 0 10px 15px -3px rgba(28, 24, 21, .08), 0 4px 6px -4px rgba(28, 24, 21, .04);--ease: cubic-bezier(.4, 0, .2, 1);--font-sans: "Archivo", -apple-system, "Segoe UI", Helvetica, Arial, sans-serif;--font-serif: "Spectral", Georgia, "Times New Roman", serif;--font-mono: "Spline Sans Mono", ui-monospace, "Cascadia Mono", "SF Mono", Consolas, monospace}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font-sans);background:var(--color-bg);color:var(--color-text);font-size:15px;line-height:1.5}h1,h2,h3{margin:0 0 .5em;line-height:1.2;font-family:var(--font-serif);font-weight:600;letter-spacing:-.01em}h4{margin:0 0 .5em;line-height:1.3;font-family:var(--font-sans);font-weight:600}.overline{font-family:var(--font-mono);font-weight:600;font-size:.7rem;text-transform:uppercase;letter-spacing:.12em;color:var(--color-text-muted)}p{margin:0 0 1em}a{color:var(--color-primary)}button,input,select,textarea{font-family:inherit;font-size:inherit}.app-shell{min-height:100%;display:flex;flex-direction:column}.app-header{background:#f4efe6e0;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--color-border);padding:.85rem 1.5rem;display:flex;align-items:center;justify-content:space-between;gap:1.25rem;flex-wrap:wrap;position:sticky;top:0;z-index:10}.app-header__brand{display:flex;align-items:center;gap:.6rem;color:var(--color-text);text-decoration:none;flex-shrink:0}.app-header__nav{display:flex;align-items:center;gap:.25rem;flex-wrap:wrap}.app-header__nav a{text-decoration:none;color:var(--color-text-soft);padding:.45rem .8rem;border-radius:var(--radius-sm);font-weight:500;font-size:.92rem;transition:background-color .15s var(--ease),color .15s var(--ease)}.app-header__nav a.active,.app-header__nav a:hover{background:var(--color-primary-soft);color:var(--color-primary-hover)}.app-header__user{display:flex;align-items:center;gap:.75rem;font-size:.85rem;color:var(--color-text-muted)}.app-main{flex:1;width:100%;max-width:1200px;margin:0 auto;padding:1.5rem}.page-header{margin-bottom:1.5rem}.page-header__subtitle{color:var(--color-text-muted);margin:0}.card{background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:var(--radius-xl);padding:1.25rem;box-shadow:var(--shadow-sm)}.card+.card{margin-top:1rem}.card__title{font-family:var(--font-sans);font-size:1.05rem;font-weight:600;margin-bottom:.75rem}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;padding:.6rem 1.1rem;border-radius:var(--radius-md);border:1px solid transparent;font-family:var(--font-sans);font-weight:600;cursor:pointer;transition:background-color .15s var(--ease),border-color .15s var(--ease),box-shadow .15s var(--ease)}.btn:disabled{cursor:not-allowed;opacity:.45}.btn:focus-visible{outline:none;box-shadow:0 0 0 2px var(--color-bg),0 0 0 4px #b0552f80}.btn-primary{background:var(--color-primary-strong);color:var(--color-primary-contrast)}.btn-primary:hover:not(:disabled){background:var(--color-primary-strong-hover)}.btn-secondary{background:var(--color-surface);color:var(--color-text);border-color:var(--color-text)}.btn-secondary:hover:not(:disabled){background:var(--color-surface-sunken)}.btn-block{width:100%}.btn-sm{padding:.4rem .7rem;font-size:.85rem;min-height:44px;min-width:44px}.list-plain{list-style:none;margin:0 0 1rem;padding:0;border-top:1px solid var(--color-border)}.list-plain__item{display:flex;align-items:center;justify-content:space-between;padding:.6rem 0;border-bottom:1px solid var(--color-border)}.field{margin-bottom:1rem}.field label{display:block;font-family:var(--font-mono);font-weight:600;text-transform:uppercase;letter-spacing:.08em;margin-bottom:.4rem;font-size:.72rem;color:var(--color-text-muted)}.field input[type=text],.field input[type=email],.field input[type=password],.field input[type=date],.field input[type=number],.field select{width:100%;padding:.6rem .7rem;border:1px solid var(--color-border-strong);border-radius:var(--radius-md);background:var(--color-surface-raised);color:var(--color-text);font-family:var(--font-sans)}.field input:focus,.field select:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px #b0552f2e}.field-hint{font-size:.8rem;color:var(--color-text-muted);margin-top:.3rem}.form-error{background:var(--color-danger-bg);color:var(--color-danger);border:1px solid var(--color-danger);border-radius:var(--radius-md);padding:.7rem .9rem;margin-bottom:1rem;font-size:.9rem}.dropzone{border:2px dashed var(--color-border-strong);border-radius:var(--radius-md);padding:1.5rem;text-align:center;cursor:pointer;background:var(--color-surface-sunken);transition:border-color .15s var(--ease),background-color .15s var(--ease)}.dropzone:hover,.dropzone--active{border-color:var(--color-primary);background:var(--color-primary-soft)}.dropzone__hint{color:var(--color-text-muted);font-size:.85rem;margin:.25rem 0 0}.dropzone__file{display:flex;align-items:center;justify-content:space-between;gap:.75rem;border:1px solid var(--color-border);border-radius:var(--radius-md);padding:.7rem .9rem;background:var(--color-surface)}.dropzone__file-name{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.badge{display:inline-flex;align-items:center;gap:.35rem;padding:.3rem .65rem;border-radius:999px;font-family:var(--font-mono);font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em}.badge-success{background:var(--color-success-bg);color:var(--color-success)}.badge-warning{background:var(--color-warning-bg);color:var(--color-warning)}.badge-danger{background:var(--color-danger-bg);color:var(--color-danger)}.badge-neutral{background:var(--color-surface-sunken);color:var(--color-text-muted)}.grade-pill{display:inline-flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;border-radius:50%;font-family:var(--font-serif);font-weight:700;font-size:1.25rem}.banner{border-radius:var(--radius-md);padding:.9rem 1.1rem;margin-bottom:1rem;font-size:.92rem;display:flex;gap:.6rem;align-items:flex-start}.banner-warning{background:var(--color-warning-bg);color:var(--color-warning);border:1px solid rgba(176,125,36,.35)}.banner-danger{background:var(--color-danger-bg);color:var(--color-danger);border:1px solid rgba(162,58,44,.3)}.banner-success{background:var(--color-success-bg);color:var(--color-success);border:1px solid rgba(46,107,83,.3)}.banner-info{background:var(--color-info-bg);color:var(--color-info);border:1px solid rgba(40,82,76,.3)}.banner__icon{font-size:1.1rem;line-height:1}.issue-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}.issue-item{display:flex;gap:.6rem;align-items:flex-start;border:1px solid var(--color-border);border-radius:var(--radius-md);padding:.6rem .8rem;font-size:.9rem}.issue-item__check{font-family:var(--font-mono);color:var(--color-text-muted);font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1rem}.stat-tile{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:1rem 1.1rem}.stat-tile__label{font-family:var(--font-mono);color:var(--color-text-muted);font-size:.68rem;margin-bottom:.4rem;font-weight:600;text-transform:uppercase;letter-spacing:.1em}.stat-tile__value{font-family:var(--font-serif);font-size:1.7rem;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:-.01em}.stat-tile__value--accent{color:var(--color-primary)}.comparison-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem}@media (max-width: 640px){.comparison-grid{grid-template-columns:1fr}}.comparison-col{border:1px solid var(--color-border);border-radius:var(--radius-md);padding:.9rem 1rem}.comparison-col--optimized{border-color:var(--color-primary);background:var(--color-success-bg)}.comparison-col h4{font-family:var(--font-mono);margin:0 0 .5rem;font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-muted)}.comparison-row{display:flex;justify-content:space-between;padding:.25rem 0;font-size:.92rem}.comparison-row strong{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-weight:600}.comparison-savings{margin-top:1rem;text-align:center;padding:1rem;border-radius:var(--radius-md);background:var(--color-primary-strong);color:var(--color-primary-contrast)}.comparison-savings__value{font-family:var(--font-serif);font-size:2.1rem;font-weight:600;line-height:1;font-variant-numeric:tabular-nums}.comparison-savings__label{font-size:.85rem;opacity:.9;margin-top:.35rem}.legend{display:flex;flex-wrap:wrap;gap:.5rem}.legend__item{display:flex;align-items:center;gap:.4rem;font-size:.85rem;border:1px solid var(--color-border);border-radius:999px;padding:.25rem .6rem}.legend__swatch{width:.85rem;height:.85rem;border-radius:50%;flex-shrink:0}.route-block{border:1px solid var(--color-border);border-radius:var(--radius-md);margin-bottom:.9rem;overflow:hidden}.route-block__header{display:flex;align-items:center;gap:.6rem;padding:.7rem .9rem;background:var(--color-surface-sunken);font-weight:600}.route-block__meta{font-weight:400;color:var(--color-text-muted);font-size:.85rem;margin-left:auto}.route-block__gmaps{flex-shrink:0;white-space:nowrap}.route-stops{list-style:none;margin:0;padding:.5rem .9rem .9rem;counter-reset:stop}.route-stops li{display:flex;align-items:center;gap:.6rem;padding:.35rem 0;font-size:.9rem;border-bottom:1px dashed var(--color-border)}.route-stops li:last-child{border-bottom:none}.route-stop__index{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;border-radius:50%;background:var(--color-surface-sunken);border:1px solid var(--color-border);font-family:var(--font-mono);font-size:.72rem;font-weight:600;flex-shrink:0}.table-wrap{overflow-x:auto}table.data-table{width:100%;border-collapse:collapse;font-size:.9rem}.data-table th,.data-table td{text-align:left;padding:.6rem .7rem;border-bottom:1px solid var(--color-border);white-space:nowrap}.data-table th{font-family:var(--font-mono);color:var(--color-text-muted);font-weight:600;font-size:.7rem;text-transform:uppercase;letter-spacing:.06em}.data-table td{font-variant-numeric:tabular-nums}.data-table tbody tr:hover{background:var(--color-primary-soft)}.map-container{height:480px;width:100%;border-radius:var(--radius-lg);overflow:hidden;border:1px solid var(--color-border)}.map-container--picker{height:320px;margin-bottom:.75rem}.location-search{display:flex;gap:.5rem;margin-bottom:.5rem}.location-search input[type=text]{flex:1;padding:.6rem .7rem;border:1px solid var(--color-border);border-radius:var(--radius-md);font-family:var(--font-sans);font-size:.9rem}.location-search__results{list-style:none;margin:0 0 .75rem;padding:0;border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden}.location-search__results li+li{border-top:1px solid var(--color-border)}.location-search__results button{display:block;width:100%;text-align:left;padding:.5rem .7rem;background:var(--color-surface-raised);border:none;font-size:.85rem;cursor:pointer}.location-search__results button:hover{background:var(--color-surface)}.spinner{width:1.4rem;height:1.4rem;border:3px solid var(--color-border-strong);border-top-color:var(--color-primary);border-radius:50%;animation:spin .8s linear infinite}.spinner-lg{width:3rem;height:3rem;border-width:4px}@keyframes spin{to{transform:rotate(360deg)}}.center-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;padding:3rem 1rem;text-align:center;color:var(--color-text-muted)}.button-row{display:flex;gap:.75rem;flex-wrap:wrap;margin-top:1rem}.text-muted{color:var(--color-text-muted)}.auth-shell{min-height:100%;display:flex}.auth-hero{flex:1;display:none;flex-direction:column;align-items:center;justify-content:center;position:relative;overflow:hidden;padding:3rem;background:linear-gradient(150deg,#081110,#1c3d38,#28524c);color:#f4efe6}.auth-hero__inner{position:relative;z-index:1;max-width:380px;text-align:center}.auth-hero__tag{font-family:var(--font-mono);font-weight:600;text-transform:uppercase;letter-spacing:.24em;font-size:.7rem;color:#dbe6e2cc;margin:.75rem 0 1rem}.auth-hero__tagline{font-size:1.05rem;line-height:1.55;color:#dbe6e2eb;margin-bottom:2rem}.auth-hero__features{display:grid;grid-template-columns:repeat(3,1fr);gap:.75rem}.auth-hero__feature{background:#ffffff14;border-radius:var(--radius-lg);padding:.9rem .6rem;font-size:.72rem;line-height:1.4;color:#f4efe6eb}.auth-hero__circle{position:absolute;border-radius:50%;background:#ffffff0d;pointer-events:none}.auth-form-panel{flex:1;display:flex;align-items:center;justify-content:center;min-height:100vh;padding:3rem 1.5rem;background:var(--color-surface)}.auth-form-panel__inner{width:100%;max-width:380px}.auth-mobile-logo{display:flex;margin-bottom:2rem}.auth-form-header{margin-bottom:2rem}.auth-footer{margin-top:1.5rem;text-align:center;font-size:.75rem;color:var(--color-text-faint)}@media (min-width: 1024px){.auth-hero{display:flex}.auth-mobile-logo{display:none}}
