@import"https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700;800&family=JetBrains+Mono:wght@500&display=swap";@import"https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&display=swap";.user-menu-container[data-v-17da8b34]{display:flex;align-items:center;gap:.75rem}.user-menu[data-v-17da8b34]{display:flex;align-items:center;gap:.5rem;padding:.25rem .5rem;border-radius:8px;border:1px solid rgba(255,255,255,.18);background:#ffffff0d;cursor:pointer;transition:all .2s ease}.user-menu[data-v-17da8b34]:hover{border-color:#ffffff4d;background:#ffffff14}.avatar[data-v-17da8b34]{width:28px;height:28px;border-radius:50%;background:linear-gradient(120deg,var(--color-primary, #457b9d),var(--color-accent, #e94560));display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.8rem;color:#fff}.user-meta[data-v-17da8b34]{display:flex;flex-direction:column;gap:.1rem}.user-name[data-v-17da8b34]{font-weight:600;font-size:.9rem;line-height:1}.user-email[data-v-17da8b34]{font-size:.75rem;opacity:.7;line-height:1}.chevron[data-v-17da8b34]{font-size:.8rem;opacity:.7;transition:transform .2s ease}.user-menu:hover .chevron[data-v-17da8b34]{opacity:1}.ghost-btn[data-v-17da8b34]{text-decoration:none;padding:.65rem .95rem;border-radius:12px;border:1px solid rgba(255,255,255,.18);color:var(--color-text, #e0e6ed);background:transparent;transition:border .2s ease,background .2s ease;cursor:pointer;font-size:.95rem;font-weight:500}.ghost-btn[data-v-17da8b34]:hover{border-color:var(--color-accent, #e94560);background:#e945601a}.primary-btn[data-v-17da8b34]{text-decoration:none;background:linear-gradient(120deg,var(--color-primary, #457b9d),var(--color-accent, #e94560));color:#fff;border:none;border-radius:12px;padding:.65rem .95rem;font-weight:600;cursor:pointer;box-shadow:0 10px 30px #0e346059;transition:transform .1s ease,box-shadow .15s ease;font-size:.95rem}.primary-btn[data-v-17da8b34]:hover{transform:translateY(-1px);box-shadow:0 14px 32px #0e346073}.user-dropdown-portal[data-v-17da8b34]{position:fixed;background:#0f1624;border:1px solid rgba(255,255,255,.12);border-radius:12px;box-shadow:0 16px 40px #00000059;overflow:hidden;z-index:1500;min-width:200px}.user-dropdown-portal a[data-v-17da8b34],.user-dropdown-portal button[data-v-17da8b34]{display:block;width:100%;padding:.75rem 1rem;text-align:left;background:none;border:none;color:var(--color-text, #e0e6ed);text-decoration:none;cursor:pointer;transition:background .15s ease;font-size:.95rem}.user-dropdown-portal a[data-v-17da8b34]:hover,.user-dropdown-portal button[data-v-17da8b34]:hover{background:#ffffff0f}.landing[data-v-6652c20b]{font-family:Outfit,sans-serif;background:#fafbfc;color:#1a1a2e;min-height:100vh;overflow-x:hidden}.nav[data-v-6652c20b]{position:absolute;top:0;left:0;right:0;padding:1.5rem 4rem;z-index:100;display:flex;justify-content:space-between;align-items:center}.logo[data-v-6652c20b]{font-size:1.75rem;font-weight:700;letter-spacing:-.02em}.logo-transit[data-v-6652c20b]{color:#264653}.logo-kit[data-v-6652c20b]{color:#e63946}.hero[data-v-6652c20b]{position:relative;min-height:100vh;display:grid;grid-template-columns:1fr 1fr;align-items:center;padding:6rem 4rem 4rem;gap:4rem;background:radial-gradient(ellipse 80% 50% at 50% -20%,rgba(42,157,143,.08),transparent),radial-gradient(ellipse 60% 40% at 80% 60%,rgba(230,57,70,.06),transparent),linear-gradient(180deg,#fff,#f0f4f8)}.hero-content[data-v-6652c20b]{max-width:600px}.hero-badge[data-v-6652c20b]{display:inline-block;padding:.5rem 1rem;background:#2a9d8f1a;border:1px solid rgba(42,157,143,.25);border-radius:100px;font-size:.85rem;font-weight:500;color:#2a9d8f;margin-bottom:1.5rem;letter-spacing:.02em}.hero h1[data-v-6652c20b]{font-size:4rem;font-weight:800;line-height:1.1;margin-bottom:1.5rem;background:linear-gradient(135deg,#1a1a2e,#264653);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.hero-subtitle[data-v-6652c20b]{font-size:1.25rem;line-height:1.7;color:#5a6670;margin-bottom:2.5rem;max-width:500px}.hero-note[data-v-6652c20b]{font-size:.875rem;color:#8a9199;margin-top:1rem}.hero-visual[data-v-6652c20b]{display:flex;justify-content:center;align-items:center}.schema-preview[data-v-6652c20b]{width:100%;max-width:500px;aspect-ratio:4/3;background:linear-gradient(135deg,#fff,#f8fafc);border-radius:20px;border:1px solid rgba(38,70,83,.12);padding:2rem;box-shadow:0 0 0 1px #2646530d,0 20px 50px #2646531a,0 0 100px #2a9d8f0d}.transit-diagram[data-v-6652c20b]{width:100%;height:100%}.subscribe-form[data-v-6652c20b]{display:flex;gap:.75rem;max-width:460px}.subscribe-form input[data-v-6652c20b]{flex:1;padding:1rem 1.25rem;background:#fff;border:1px solid #d0d7de;border-radius:12px;color:#1a1a2e;font-size:1rem;font-family:inherit;outline:none;transition:all .2s}.subscribe-form input[data-v-6652c20b]::placeholder{color:#8a9199}.subscribe-form input[data-v-6652c20b]:focus{border-color:#2a9d8f;box-shadow:0 0 0 3px #2a9d8f1a}.subscribe-form button[data-v-6652c20b]{padding:1rem 1.75rem;background:linear-gradient(135deg,#2a9d8f,#238b7e);border:none;border-radius:12px;color:#fff;font-size:1rem;font-weight:600;font-family:inherit;cursor:pointer;transition:all .2s;white-space:nowrap}.subscribe-form button[data-v-6652c20b]:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 10px 30px #2a9d8f4d}.subscribe-form button[data-v-6652c20b]:disabled{opacity:.7;cursor:not-allowed}.form-error[data-v-6652c20b]{color:#e63946;font-size:.875rem;margin-top:.75rem}.form-success[data-v-6652c20b]{color:#2a9d8f;font-size:1rem;font-weight:500;padding:1rem 1.5rem;background:#2a9d8f1a;border:1px solid rgba(42,157,143,.25);border-radius:12px;max-width:460px}.features[data-v-6652c20b]{padding:8rem 4rem;background:#fff}.section-header[data-v-6652c20b]{text-align:center;margin-bottom:4rem}.section-header h2[data-v-6652c20b]{font-size:2.75rem;font-weight:700;margin-bottom:1rem;color:#1a1a2e}.section-header p[data-v-6652c20b]{font-size:1.2rem;color:#5a6670}.features-grid[data-v-6652c20b]{display:grid;grid-template-columns:repeat(3,1fr);gap:2rem;max-width:1200px;margin:0 auto}.feature-card[data-v-6652c20b]{padding:2rem;background:#fafbfc;border:1px solid #e8ecf0;border-radius:16px;transition:all .3s}.feature-card[data-v-6652c20b]:hover{border-color:#2a9d8f66;transform:translateY(-4px);box-shadow:0 20px 40px #26465314}.feature-icon[data-v-6652c20b]{width:48px;height:48px;display:flex;align-items:center;justify-content:center;background:#2a9d8f1a;border-radius:12px;margin-bottom:1.25rem;color:#2a9d8f}.feature-icon svg[data-v-6652c20b]{width:24px;height:24px}.feature-card h3[data-v-6652c20b]{font-size:1.25rem;font-weight:600;margin-bottom:.75rem;color:#1a1a2e}.feature-card p[data-v-6652c20b]{font-size:.95rem;line-height:1.7;color:#5a6670}.workflow[data-v-6652c20b]{padding:8rem 4rem;background:linear-gradient(180deg,#fff,#f0f4f8)}.workflow-steps[data-v-6652c20b]{display:flex;align-items:flex-start;justify-content:center;gap:1rem;max-width:1200px;margin:0 auto;flex-wrap:wrap}.workflow-step[data-v-6652c20b]{flex:1;min-width:200px;max-width:250px;text-align:center;padding:2rem 1.5rem}.step-number[data-v-6652c20b]{font-family:JetBrains Mono,monospace;font-size:3rem;font-weight:500;color:#2a9d8f40;margin-bottom:1rem}.workflow-step h3[data-v-6652c20b]{font-size:1.25rem;font-weight:600;margin-bottom:.75rem;color:#1a1a2e}.workflow-step p[data-v-6652c20b]{font-size:.9rem;line-height:1.6;color:#5a6670}.workflow-connector[data-v-6652c20b]{width:60px;height:2px;background:linear-gradient(90deg,#2a9d8f66,#2a9d8f1a);margin-top:4rem}.community[data-v-6652c20b]{padding:8rem 4rem;background:radial-gradient(ellipse 80% 60% at 20% 100%,rgba(42,157,143,.06),transparent),#fafbfc}.community-content[data-v-6652c20b]{max-width:900px;margin:0 auto;text-align:center}.community h2[data-v-6652c20b]{font-size:2.5rem;font-weight:700;margin-bottom:1.5rem;color:#1a1a2e}.community>p[data-v-6652c20b],.community-content>p[data-v-6652c20b]{font-size:1.15rem;line-height:1.8;color:#5a6670;margin-bottom:3rem}.community-stats[data-v-6652c20b]{display:flex;justify-content:center;gap:4rem;flex-wrap:wrap}.stat[data-v-6652c20b]{display:flex;flex-direction:column;align-items:center;gap:.5rem}.stat-value[data-v-6652c20b]{font-size:1.5rem;font-weight:700;color:#2a9d8f}.stat-label[data-v-6652c20b]{font-size:.9rem;color:#8a9199}.faq[data-v-6652c20b]{padding:8rem 4rem;background:#fff}.faq-grid[data-v-6652c20b]{display:grid;grid-template-columns:repeat(2,1fr);gap:2rem;max-width:1100px;margin:0 auto}.faq-item[data-v-6652c20b]{padding:1.75rem;background:#fafbfc;border:1px solid #e8ecf0;border-radius:12px;transition:all .2s}.faq-item[data-v-6652c20b]:hover{border-color:#2a9d8f4d}.faq-item h3[data-v-6652c20b]{font-size:1.1rem;font-weight:600;color:#1a1a2e;margin-bottom:.75rem;line-height:1.4}.faq-item p[data-v-6652c20b]{font-size:.95rem;line-height:1.7;color:#5a6670;margin:0}.cta[data-v-6652c20b]{padding:6rem 4rem;background:linear-gradient(135deg,#264653,#1a3a47);text-align:center}.cta h2[data-v-6652c20b]{font-size:2.5rem;font-weight:700;margin-bottom:.75rem;color:#fff}.cta>p[data-v-6652c20b]{font-size:1.15rem;color:#ffffffbf;margin-bottom:2rem}.subscribe-form-cta[data-v-6652c20b]{justify-content:center;max-width:500px;margin:0 auto}.subscribe-form-cta input[data-v-6652c20b]{background:#ffffff1a;border-color:#ffffff40;color:#fff}.subscribe-form-cta input[data-v-6652c20b]::placeholder{color:#ffffff80}.subscribe-form-cta input[data-v-6652c20b]:focus{background:#ffffff26;border-color:#ffffff80;box-shadow:none}.subscribe-form-cta button[data-v-6652c20b]{background:#2a9d8f}.subscribe-form-cta button[data-v-6652c20b]:hover:not(:disabled){background:#35b8a8;box-shadow:0 10px 30px #0000004d}.form-success-cta[data-v-6652c20b]{background:#2a9d8f33;border-color:#2a9d8f66;color:#fff}.footer[data-v-6652c20b]{padding:4rem;background:#1a1a2e;text-align:center}.footer-content[data-v-6652c20b]{max-width:600px;margin:0 auto}.footer .logo[data-v-6652c20b]{margin-bottom:1rem}.footer .logo-transit[data-v-6652c20b]{color:#f0f0f5}.footer p[data-v-6652c20b]{color:#8a9199;font-size:.9rem}.copyright[data-v-6652c20b]{margin-top:2rem;font-size:.8rem!important}@media (max-width: 1024px){.hero[data-v-6652c20b]{grid-template-columns:1fr;text-align:center;padding:6rem 2rem 4rem}.hero-content[data-v-6652c20b]{max-width:100%}.hero h1[data-v-6652c20b]{font-size:3rem}.hero-subtitle[data-v-6652c20b]{max-width:100%}.subscribe-form[data-v-6652c20b]{max-width:100%;justify-content:center}.hero-visual[data-v-6652c20b]{order:-1;margin-bottom:2rem}.schema-preview[data-v-6652c20b]{max-width:400px}.features-grid[data-v-6652c20b]{grid-template-columns:repeat(2,1fr)}.faq-grid[data-v-6652c20b]{grid-template-columns:1fr}.workflow-connector[data-v-6652c20b]{display:none}}@media (max-width: 768px){.nav[data-v-6652c20b]{padding:1rem 1.5rem}.hero[data-v-6652c20b]{padding:5rem 1.5rem 3rem}.hero h1[data-v-6652c20b]{font-size:2.25rem}.subscribe-form[data-v-6652c20b]{flex-direction:column}.subscribe-form button[data-v-6652c20b]{width:100%}.features[data-v-6652c20b],.workflow[data-v-6652c20b],.community[data-v-6652c20b],.faq[data-v-6652c20b],.cta[data-v-6652c20b]{padding:4rem 1.5rem}.features-grid[data-v-6652c20b]{grid-template-columns:1fr}.section-header h2[data-v-6652c20b]{font-size:2rem}.community-stats[data-v-6652c20b]{gap:2rem}.cta h2[data-v-6652c20b]{font-size:1.75rem}}.city-page{display:flex;flex-direction:column;height:100vh}.sidebar{width:280px;background:#1a1a2e;padding:.5rem;overflow-y:auto}#map{position:absolute;top:36px;left:0;right:0;bottom:0}.map-header{position:absolute;top:0;left:0;right:0;z-index:1001;padding:8px 12px;background:linear-gradient(180deg,#1a1a2ee6,#1a1a2e59);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-bottom:1px solid rgba(255,255,255,.08);display:flex;justify-content:space-between;align-items:center}.map-header-left{display:flex;align-items:center;gap:1rem;flex-wrap:nowrap}.map-title{color:var(--color-text);font-weight:600;font-size:.95rem}.map-controls{position:absolute;top:56px;right:10px;z-index:1000;display:flex;flex-direction:column;gap:10px}.project-section,.scenario-section{display:flex;flex-direction:column;gap:.25rem;margin-bottom:.25rem}.schema-selector{margin-bottom:1rem;padding-bottom:1rem;border-bottom:1px solid rgba(255,255,255,.1);display:flex;flex-direction:column;gap:.5rem}.schema-selector label{font-size:.875rem;font-weight:500;color:var(--color-text);opacity:.8}.schema-selector select{background:#0000004d;color:var(--color-text);border:1px solid var(--color-primary);border-radius:4px;padding:.5rem;font-size:.875rem;cursor:pointer;outline:none;transition:all .2s}.schema-selector select:hover{background:#00000080;border-color:var(--color-primary-light)}.schema-selector select:focus{border-color:var(--color-primary-light)}.label{font-size:.75rem;font-weight:600;color:#ffffff80;text-transform:uppercase;letter-spacing:.5px;margin:0}.section-header{display:flex;align-items:flex-start;justify-content:space-between;margin:.75rem .25rem .25rem}.label-with-toggle{display:flex;align-items:center;gap:.25rem;cursor:pointer;padding:.15rem .25rem;margin:-.15rem -.25rem;border-radius:4px;transition:background .2s}.label-with-toggle:hover{background:#ffffff0a}.label-with-toggle:hover .collapse-btn{color:#ffffffb3}.collapse-btn{color:#ffffff80;font-size:.625rem;transition:transform .2s;line-height:1}.collapse-btn.collapsed{transform:rotate(-90deg)}.settings-btn{background:transparent;border:none;color:#ffffff80;font-size:.75rem;font-weight:400;padding:.2rem .5rem;cursor:pointer;border-radius:4px;transition:all .2s}.settings-btn:hover{background:#ffffff0a;color:#ffffffb3}.settings-btn.active{background:#00baff1f;color:#9de1ff}.active-scenario-label{color:var(--color-text);font-size:.875rem;text-transform:capitalize;background:#00baff1f;padding:.25rem .5rem;border-radius:4px}.context-item{display:flex;align-items:center;gap:.5rem;padding:.25rem .5rem;min-height:24px;width:100%;background:transparent;border:none;color:inherit;text-align:left;cursor:pointer;border-radius:4px}.context-item:hover{background:#ffffff0a}.context-item.active{background:#00baff1f}.context-pill{margin-left:auto;background:#00baff33;color:#9de1ff;border-radius:8px;padding:.1rem .4rem;font-size:.7rem;flex-shrink:0}.network-dot{width:10px;height:10px;border-radius:50%;background:var(--color-primary);flex-shrink:0}.network-name{color:var(--color-text);font-size:.875rem;text-transform:capitalize;flex:1}.segment-count{color:#ffffff80;font-size:.875rem;margin-left:auto}.empty-message{color:var(--color-text-muted);font-size:.9rem;padding:.5rem 0}.network-edit-buttons{display:flex;gap:.5rem;align-items:center}.network-edit-btn{display:flex;align-items:center;gap:.4rem;background:#1a1a2ecc;color:var(--color-text);padding:.4rem .75rem;border-radius:6px;font-size:.875rem;font-weight:500;border:1px solid rgba(0,186,255,.3);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);cursor:pointer;transition:all .2s;outline:none}.network-edit-btn svg{flex-shrink:0}.network-edit-btn:hover{background:#1a1a2e;border-color:var(--color-primary)}.network-edit-btn:focus{outline:none}.network-edit-btn.active{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.network-edit-btn.delete-btn{background:#b42828cc;border-color:#b42828}.network-edit-btn.delete-btn:hover{background:#b42828;border-color:#d43030}.route-create-container{position:relative;display:flex;gap:.5rem;align-items:center}.create-route-btn{white-space:nowrap}.transport-dropdown{position:absolute;top:100%;left:0;margin-top:.25rem;background:#1a1a2ef2;border:1px solid rgba(0,186,255,.3);border-radius:6px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);min-width:180px;max-height:500px;overflow-y:auto;z-index:1002;box-shadow:0 4px 12px #0000004d}.transport-dropdown-item{padding:.5rem .75rem;color:var(--color-text);font-size:.875rem;cursor:pointer;transition:background .2s;border-bottom:1px solid rgba(255,255,255,.05)}.transport-dropdown-item.non-leaf{color:#ffffff80}.transport-dropdown-item:last-child{border-bottom:none}.transport-dropdown-item:hover{background:#00baff1f}.toggle-view-btn{background:#4a9eff26;border:1px solid var(--color-primary);color:var(--color-primary);padding:6px 12px;border-radius:6px;font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s}.toggle-view-btn:hover{background:#4a9eff40}.zoom-level-display{background:#1a1a2ee6;color:var(--color-text);padding:.5rem .75rem;border-radius:6px;font-size:.875rem;font-weight:500;border:1px solid var(--color-primary);pointer-events:none;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.render-mode-selector{background:#1a1a2ee6;color:var(--color-text);padding:.5rem .75rem;border-radius:6px;font-size:.875rem;border:1px solid var(--color-primary);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;gap:.5rem}.render-mode-selector label{font-weight:500;white-space:nowrap}.render-mode-selector select{background:#0000004d;color:var(--color-text);border:1px solid var(--color-primary);border-radius:4px;padding:.25rem .5rem;font-size:.875rem;cursor:pointer;outline:none}.render-mode-selector select:hover{background:#00000080}.render-mode-selector select:focus{border-color:var(--color-primary-light)}.generate-test-btn{background:#1a1a2ee6;color:var(--color-text);padding:.5rem .75rem;border-radius:6px;font-size:.875rem;font-weight:500;border:1px solid var(--color-primary);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);cursor:pointer;transition:all .2s}.generate-test-btn:hover{background:#1a1a2e;border-color:var(--color-primary-light)}.generate-test-btn.active{background:var(--color-primary);color:#fff}.upload-geopackage-btn{background:#1a1a2ee6;color:var(--color-text);padding:.5rem .75rem;border-radius:6px;font-size:.875rem;font-weight:500;border:1px solid var(--color-primary);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);cursor:pointer;transition:all .2s;display:inline-flex;align-items:center;position:relative}.upload-geopackage-btn:hover{background:#1a1a2e;border-color:var(--color-primary-light)}.selection-hint{background:#1a1a2ee6;color:var(--color-text);padding:.5rem .75rem;border-radius:6px;font-size:.75rem;border:1px solid var(--color-primary);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);text-align:center}.copy-btn,.close-btn-secondary{padding:.5rem 1rem;border-radius:4px;font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s;border:1px solid var(--color-primary)}.copy-btn{background:var(--color-primary);color:#fff}.copy-btn:hover{background:var(--color-primary-light)}.close-btn-secondary{background:#ffffff1a;color:var(--color-text)}.close-btn-secondary:hover{background:#fff3}.retry-btn{background:#fff;color:#e94560;border:none;border-radius:6px;padding:.5rem 1rem;font-weight:600;cursor:pointer;transition:all .2s}.retry-btn:hover{background:#ffffffe6;transform:translateY(-1px)}.map-header-right{display:flex;align-items:center;gap:.5rem}.map-style-btn{display:flex;align-items:center;gap:.4rem;background:#1a1a2ecc;color:var(--color-text);padding:.4rem .75rem;border-radius:6px;font-size:.875rem;font-weight:500;border:1px solid rgba(0,186,255,.3);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);cursor:pointer;transition:all .2s;outline:none}.map-style-btn svg{flex-shrink:0}.map-style-btn:hover{background:#1a1a2e;border-color:var(--color-primary)}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:2000;padding:2rem}.modal-content{background:#1a1a2e;border:1px solid var(--color-primary);border-radius:8px;max-width:800px;width:100%;max-height:90vh;display:flex;flex-direction:column;box-shadow:0 4px 20px #00000080}.modal-header{padding:1rem 1.5rem;border-bottom:1px solid rgba(255,255,255,.1);display:flex;justify-content:space-between;align-items:center}.modal-header h2{margin:0;font-size:1.25rem;color:var(--color-text)}.close-btn{background:none;border:none;color:var(--color-text);font-size:1.5rem;cursor:pointer;padding:0;width:2rem;height:2rem;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:background .2s}.close-btn:hover{background:#ffffff1a}.modal-body{padding:1.5rem;overflow:auto;flex:1}.modal-body pre{margin:0;padding:1rem;background:#0000004d;border-radius:4px;overflow-x:auto}.modal-body code{color:#e0e0e0;font-family:Courier New,monospace;font-size:.875rem;line-height:1.5;white-space:pre}.modal-footer{padding:1rem 1.5rem;border-top:1px solid rgba(255,255,255,.1);display:flex;gap:.75rem;justify-content:flex-end}.error-notification{position:fixed;bottom:20px;right:20px;z-index:2000;background:#e94560f2;border:1px solid rgba(255,255,255,.3);border-radius:12px;box-shadow:0 8px 24px #0006;max-width:400px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:all .3s ease}.error-notification.expanded{max-width:600px}.error-header{display:flex;align-items:center;gap:.75rem;padding:1rem 1.25rem;cursor:pointer;-webkit-user-select:none;user-select:none}.error-header:hover{background:#ffffff1a;border-radius:12px 12px 0 0}.error-icon{font-size:1.25rem}.error-title{flex:1;font-weight:600;color:#fff}.error-close{background:none;border:none;color:#fff;font-size:1.5rem;cursor:pointer;padding:0;width:2rem;height:2rem;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:background .2s}.error-close:hover{background:#fff3}.error-body{padding:1rem 1.25rem;border-top:1px solid rgba(255,255,255,.2);margin-top:.5rem}.error-body pre{margin:0 0 1rem;padding:.75rem;background:#0000004d;border-radius:6px;overflow-x:auto;color:#fff;font-size:.85rem;max-height:200px;overflow-y:auto}.upload-notification{position:fixed;top:80px;right:20px;z-index:10000;padding:1rem 2.5rem 1rem 1.25rem;border-radius:8px;font-size:.95rem;box-shadow:0 4px 12px #0000004d;animation:slideIn .3s ease}.upload-notification.success{background:#4caf50f2;color:#fff;border:1px solid rgba(76,175,80,1)}.upload-notification.error{background:#f44336f2;color:#fff;border:1px solid rgba(244,67,54,1)}.close-notification{position:absolute;top:50%;right:.5rem;transform:translateY(-50%);background:none;border:none;color:#fff;font-size:1.5rem;cursor:pointer;padding:0;width:1.5rem;height:1.5rem;display:flex;align-items:center;justify-content:center;opacity:.7;transition:opacity .2s}.close-notification:hover{opacity:1}@keyframes slideIn{0%{transform:translate(400px);opacity:0}to{transform:translate(0);opacity:1}}:deep(.clickable-stop){cursor:pointer!important;user-select:none!important;-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important}:deep(.clickable-stop:hover){filter:brightness(1.3)}:deep(.draggable-stop){cursor:pointer!important}:deep(.dragging-stop){cursor:grabbing!important;pointer-events:none!important}:deep(.leaflet-container){outline:none!important}:deep(.leaflet-container.dragging-active){cursor:grabbing!important}:deep(.leaflet-marker-icon),:deep(.leaflet-interactive){user-select:none!important;-webkit-user-select:none!important;outline:none!important}:deep(.leaflet-interactive:focus),:deep(.leaflet-interactive:active),:deep(path.leaflet-interactive:focus),:deep(path.leaflet-interactive:active){outline:none!important;box-shadow:none!important;stroke:inherit!important;fill:inherit!important}.transport-types-panel[data-v-7dfad8af]{padding:1rem;background:#16213e;height:100%;overflow-y:auto;overflow-x:hidden}.error-notification[data-v-7dfad8af]{background:#f4433626;border:1px solid rgba(244,67,54,.3);color:#ff6b6b;padding:.5rem .75rem;border-radius:4px;margin-bottom:1rem;display:inline-flex;justify-content:space-between;align-items:center;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);font-size:.875rem;width:100%}.error-text[data-v-7dfad8af]{flex:1}.error-close[data-v-7dfad8af]{background:none;border:none;color:#ff6b6b;font-size:18px;cursor:pointer;padding:0;width:18px;height:18px;line-height:18px;opacity:.7;transition:opacity .2s;margin-left:.5rem}.error-close[data-v-7dfad8af]:hover{opacity:1}.types-grid[data-v-7dfad8af]{background:#0003;border-radius:6px;overflow:hidden;border:1px solid rgba(255,255,255,.05);display:inline-block;min-width:700px}.grid-header[data-v-7dfad8af]{display:grid;grid-template-columns:minmax(200px,auto) 130px 100px 90px;gap:8px;padding:.3rem .75rem;background:#0000004d;border-bottom:1px solid rgba(255,255,255,.1);font-weight:600;color:#ffffff80;font-size:.7rem;text-transform:uppercase;letter-spacing:.5px;line-height:1.1}.grid-row[data-v-7dfad8af]{display:grid;grid-template-columns:minmax(200px,auto) 130px 100px 90px;gap:8px;padding:.25rem .75rem;border-bottom:1px solid rgba(255,255,255,.05);align-items:center;transition:background .2s;line-height:1.1}.grid-row[data-v-7dfad8af]:hover{background:#ffffff08}.grid-row.level-0[data-v-7dfad8af]{font-weight:600;color:var(--color-text)}.grid-row.level-1[data-v-7dfad8af]{font-weight:500;color:var(--color-text)}.grid-row.level-2[data-v-7dfad8af]{color:var(--color-text-muted)}.col-name[data-v-7dfad8af]{display:flex;align-items:center;gap:6px}.name-text[data-v-7dfad8af]{cursor:pointer;text-transform:capitalize}.name-text[data-v-7dfad8af]:hover{color:var(--color-primary-light)}.name-input[data-v-7dfad8af]{background:#0000004d;border:1px solid var(--color-primary);color:var(--color-text);padding:.3rem .5rem;border-radius:3px;font-size:.875rem;flex:1}.col-color[data-v-7dfad8af]{display:flex;align-items:center;gap:4px}.color-display[data-v-7dfad8af]{width:44px;height:24px;border-radius:3px;cursor:pointer;border:1px solid rgba(255,255,255,.15);transition:border-color .2s}.color-display[data-v-7dfad8af]:hover{border-color:var(--color-primary)}.clear-color-btn[data-v-7dfad8af]{background:#0000004d;border:1px solid rgba(255,255,255,.1);color:#ffffff80;width:20px;height:20px;border-radius:3px;cursor:pointer;font-size:14px;display:flex;align-items:center;justify-content:center;transition:all .2s}.clear-color-btn[data-v-7dfad8af]:hover{background:#f4433633;border-color:#f443364d;color:#ff6b6b}.add-color-btn[data-v-7dfad8af]{background:#0000004d;border:1px solid rgba(255,255,255,.1);color:#ffffff80;width:28px;height:28px;border-radius:3px;cursor:pointer;font-size:14px;display:flex;align-items:center;justify-content:center;transition:all .2s}.add-color-btn[data-v-7dfad8af]:hover{background:#2e7d324d;border-color:#2e7d3280;color:#66bb6a}.color-input[data-v-7dfad8af]{width:60px;height:28px;border:1px solid var(--color-primary);border-radius:3px;cursor:pointer;background:#0000004d}.col-capacity[data-v-7dfad8af]{color:var(--color-text-muted)}.capacity-text[data-v-7dfad8af]{cursor:pointer}.capacity-text[data-v-7dfad8af]:hover{color:var(--color-text)}.capacity-input[data-v-7dfad8af]{background:#0000004d;border:1px solid rgba(255,255,255,.2);color:var(--color-text);padding:.3rem .5rem;border-radius:3px;font-size:.875rem;width:70px}.empty-cell[data-v-7dfad8af]{color:#fff3;cursor:pointer;font-size:.875rem}.empty-cell[data-v-7dfad8af]:hover{color:#fff6}.col-actions[data-v-7dfad8af]{display:flex;gap:4px;justify-content:flex-end}.action-btn[data-v-7dfad8af]{background:#0000004d;border:1px solid rgba(255,255,255,.1);color:#ffffffb3;width:28px;height:28px;border-radius:3px;cursor:pointer;font-size:14px;display:flex;align-items:center;justify-content:center;transition:all .2s}.action-btn[data-v-7dfad8af]:hover{background:#ffffff1a;color:var(--color-text)}.add-btn[data-v-7dfad8af]:hover{background:#2e7d324d;border-color:#2e7d3280;color:#66bb6a}.delete-btn[data-v-7dfad8af]:hover{background:#d32f2f4d;border-color:#d32f2f80;color:#ef5350}.save-btn[data-v-7dfad8af]{background:#2e7d324d;border-color:#2e7d3280;color:#66bb6a}.save-btn[data-v-7dfad8af]:hover{background:#2e7d3280}.cancel-btn[data-v-7dfad8af]{background:#0000004d;border-color:#fff3}.cancel-btn[data-v-7dfad8af]:hover{background:#00000080}input[data-v-7dfad8af]:focus{outline:none;border-color:var(--color-primary-light)}input[type=color][data-v-7dfad8af]{padding:2px}input[type=color][data-v-7dfad8af]::-webkit-color-swatch-wrapper{padding:2px}input[type=color][data-v-7dfad8af]::-webkit-color-swatch{border:none;border-radius:2px}.button-wrapper[data-v-7dfad8af]{margin-top:.75rem;width:100%}.add-top-level-btn[data-v-7dfad8af]{background:#0000004d;border:1px solid rgba(255,255,255,.1);color:#ffffffb3;padding:.5rem 1rem;border-radius:4px;cursor:pointer;font-size:.875rem;transition:all .2s;font-weight:500;display:block}.add-top-level-btn[data-v-7dfad8af]:hover{background:#2e7d324d;border-color:#2e7d3280;color:#66bb6a}body{font-family:Space Grotesk,Segoe UI,system-ui,-apple-system,sans-serif}.projects-page[data-v-4c9683b3]{display:flex;flex-direction:column;min-height:100vh;background:radial-gradient(120% 120% at 10% 10%,rgba(69,123,157,.14),transparent),radial-gradient(120% 120% at 90% 0%,rgba(233,69,96,.12),transparent),var(--color-bg)}.projects-hero[data-v-4c9683b3]{position:relative;overflow:hidden;padding:2.5rem 2rem 1rem}.hero-overlay[data-v-4c9683b3]{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(120deg,#457b9d4d,#e9456033);filter:blur(90px);opacity:.6}.hero-content[data-v-4c9683b3]{position:relative;display:flex;gap:2rem;align-items:flex-start;justify-content:space-between}.hero-text h1[data-v-4c9683b3]{font-size:2.3rem;letter-spacing:-.02em;margin:.35rem 0;color:var(--color-text)}.subtitle[data-v-4c9683b3]{color:var(--color-text-muted);max-width:520px}.eyebrow[data-v-4c9683b3]{text-transform:uppercase;letter-spacing:.08em;font-weight:700;color:var(--color-accent);font-size:.8rem}.hero-tags[data-v-4c9683b3]{display:flex;gap:.4rem;margin-top:.75rem;flex-wrap:wrap}.pill[data-v-4c9683b3]{display:inline-flex;align-items:center;gap:.3rem;border-radius:999px;padding:.35rem .75rem;background:#ffffff0f;border:1px solid rgba(255,255,255,.08);font-weight:600;font-size:.85rem}.pill.muted[data-v-4c9683b3]{background:#ffffff0a}.hero-stats[data-v-4c9683b3]{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.75rem;width:420px;max-width:100%}.stat-card[data-v-4c9683b3]{background:#16213eb3;border:1px solid rgba(255,255,255,.1);border-radius:14px;padding:.9rem 1rem;box-shadow:0 16px 40px #00000047}.stat-card .label[data-v-4c9683b3]{color:var(--color-text-muted);font-size:.85rem;margin-bottom:.35rem}.stat-card .value[data-v-4c9683b3]{font-size:1.6rem;font-weight:700;color:var(--color-text)}.projects-main[data-v-4c9683b3]{flex:1;padding:0 2rem 2rem;display:flex;flex-direction:column;gap:1rem}.panel[data-v-4c9683b3]{background:#16213ed9;border:1px solid rgba(255,255,255,.08);border-radius:18px;padding:1.5rem;box-shadow:0 20px 60px #00000059;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.panel-header[data-v-4c9683b3]{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1rem}.actions[data-v-4c9683b3]{display:flex;align-items:center;gap:1rem}.legend[data-v-4c9683b3]{display:flex;align-items:center;gap:.5rem;color:var(--color-text-muted);font-size:.9rem}.dot[data-v-4c9683b3]{width:10px;height:10px;border-radius:50%;display:inline-block}.dot-schemas[data-v-4c9683b3]{background:var(--color-accent)}.dot-routes[data-v-4c9683b3]{background:#5ac8fa}.form-grid[data-v-4c9683b3]{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem;align-items:end}label[data-v-4c9683b3]{display:flex;flex-direction:column;gap:.35rem;font-weight:600}label span[data-v-4c9683b3]{color:#aab6c8;font-size:.9rem}input[data-v-4c9683b3]{background:#0f1324b3;border:1px solid rgba(255,255,255,.08);border-radius:10px;padding:.75rem .85rem;color:var(--color-text);font-size:1rem;transition:border .2s ease,box-shadow .2s ease}input[data-v-4c9683b3]:focus{outline:none;border-color:#ffc773;box-shadow:0 0 0 3px #ffc77340}.city-field[data-v-4c9683b3]{position:relative}.suggestions[data-v-4c9683b3]{position:absolute;left:0;right:0;top:100%;margin-top:.35rem;z-index:30;background:#0f1730;border:1px solid rgba(255,255,255,.08);border-radius:12px;box-shadow:0 16px 40px #00000059;max-height:240px;overflow:auto}.suggestions ul[data-v-4c9683b3]{list-style:none;padding:0;margin:0}.suggestions li[data-v-4c9683b3]{padding:.65rem .85rem;cursor:pointer;transition:background .15s ease}.suggestions li[data-v-4c9683b3]:hover{background:#ffffff0f}.suggestion-status[data-v-4c9683b3]{padding:.65rem .85rem;color:var(--color-text-muted)}.primary-btn[data-v-4c9683b3]{background:linear-gradient(120deg,var(--color-primary),var(--color-accent));color:#fff;border:none;border-radius:12px;padding:.85rem 1.2rem;font-weight:700;cursor:pointer;box-shadow:0 10px 30px #0e346059;transition:transform .1s ease,box-shadow .15s ease,opacity .15s}.primary-btn[data-v-4c9683b3]:disabled{opacity:.6;cursor:not-allowed;box-shadow:none}.primary-btn[data-v-4c9683b3]:not(:disabled):hover{transform:translateY(-1px);box-shadow:0 14px 32px #0e346073}.ghost-btn[data-v-4c9683b3]{text-decoration:none;padding:.65rem .95rem;border-radius:12px;border:1px solid rgba(255,255,255,.18);color:var(--color-text);background:transparent;transition:border .2s ease,background .2s ease}.ghost-btn[data-v-4c9683b3]:hover{border-color:var(--color-accent);background:#e945601a}.form-error[data-v-4c9683b3]{color:#ff8f70;margin-top:.8rem}.projects-list .cards[data-v-4c9683b3]{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,340px));justify-content:center;gap:1.1rem}.cards.masonry[data-v-4c9683b3]{grid-template-columns:repeat(auto-fit,minmax(240px,340px));grid-auto-rows:1fr}.project-card[data-v-4c9683b3]{position:relative;overflow:hidden;border-radius:14px;border:1px solid rgba(255,255,255,.08);background:linear-gradient(145deg,#1a1a2ef2,#0f1730f2);transition:transform .15s ease,box-shadow .2s ease;max-width:360px}.project-card[data-v-4c9683b3]:hover{transform:translateY(-2px);box-shadow:0 16px 32px #00000059}.card-accent[data-v-4c9683b3]{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(120deg,#457b9d59,#e9456040);opacity:.15}.card-body[data-v-4c9683b3]{position:relative;padding:1rem 1.1rem;display:flex;flex-direction:column;gap:.6rem}.card-top[data-v-4c9683b3]{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.city-label[data-v-4c9683b3]{color:#aab6c8;font-size:.95rem}.card-meta[data-v-4c9683b3]{display:flex;gap:1rem;flex-wrap:wrap}.meta-block[data-v-4c9683b3]{display:inline-flex;align-items:center;gap:.35rem;padding:.45rem .65rem;border-radius:10px;background:#ffffff0a}.meta-label[data-v-4c9683b3]{color:var(--color-text-muted)}.meta-value[data-v-4c9683b3]{font-weight:700;color:var(--color-text)}.loading[data-v-4c9683b3],.empty-card[data-v-4c9683b3]{color:var(--color-text-muted);padding:1rem 0}.empty-card[data-v-4c9683b3]{border:1px dashed rgba(255,255,255,.1);border-radius:12px;padding:1.5rem;text-align:center}.modal-backdrop[data-v-4c9683b3]{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);display:grid;place-items:center;z-index:50}.modal[data-v-4c9683b3]{background:#0f1624;border:1px solid rgba(255,255,255,.12);border-radius:18px;padding:1.5rem;width:min(720px,92vw);box-shadow:0 24px 60px #00000073}.modal-header[data-v-4c9683b3]{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem}.modal-actions[data-v-4c9683b3]{margin-top:1rem;display:flex;justify-content:flex-end;gap:.75rem}.dashboard-page[data-v-1f98e449]{min-height:100vh;background:var(--color-bg);color:var(--color-text)}.app-header[data-v-1f98e449]{background:var(--color-surface);border-bottom:1px solid rgba(255,255,255,.1)}.header-content[data-v-1f98e449]{display:flex;justify-content:space-between;align-items:center;padding:.05rem 2rem;width:100%}.title[data-v-1f98e449]{font-size:1.5rem;font-weight:600;margin:0;line-height:1}.dashboard-nav[data-v-1f98e449]{max-width:1800px;margin:0 auto;padding:0 2rem;display:flex;gap:.5rem;border-bottom:1px solid rgba(255,255,255,.1)}.nav-tab[data-v-1f98e449]{background:none;border:none;color:var(--color-text-muted);padding:1rem 1.5rem;font-size:.95rem;font-weight:500;cursor:pointer;border-bottom:2px solid transparent;transition:all .2s;display:flex;align-items:center;gap:.5rem}.nav-tab[data-v-1f98e449]:hover{color:var(--color-text);background:#ffffff08}.nav-tab.active[data-v-1f98e449]{color:var(--color-text);border-bottom-color:#60a5fa}.count[data-v-1f98e449]{background:#60a5fa33;color:#60a5fa;padding:.15rem .5rem;border-radius:12px;font-size:.75rem;font-weight:600;min-width:1.5rem;text-align:center}.nav-tab.active .count[data-v-1f98e449]{background:#60a5fa4d}.dashboard-content[data-v-1f98e449]{padding:2rem;max-width:1800px;margin:0 auto}.loading[data-v-bf517091],.error[data-v-bf517091]{padding:3rem 2rem;text-align:center;font-size:1.1rem}.error[data-v-bf517091]{color:#ef4444;background:#ef44441a;border-radius:6px;border:1px solid rgba(239,68,68,.3)}.projects-grid[data-v-bf517091]{display:grid;grid-template-columns:auto auto auto auto auto auto auto auto auto auto;gap:1rem;background:#0003;border-radius:6px;overflow:hidden;border:1px solid rgba(255,255,255,.05);padding:0 .75rem;align-items:center;position:relative}.projects-grid[data-v-bf517091]:before{content:"";position:absolute;top:0;left:0;right:0;height:calc(1rem + 1.2em + 2px);background:#0006;border-bottom:2px solid rgba(255,255,255,.1);z-index:0}.grid-header-cell[data-v-bf517091]{padding:.5rem 0;font-weight:600;color:#ffffff80;font-size:.7rem;text-transform:uppercase;letter-spacing:.5px;line-height:1.2;position:relative;z-index:1}.grid-cell[data-v-bf517091]{padding:.25rem 0;line-height:1.8;font-size:.9rem;border-bottom:1px solid rgba(255,255,255,.05)}.grid-row-wrapper[data-v-bf517091]{display:contents}.grid-row-wrapper:hover>.grid-cell[data-v-bf517091]:first-child:before{content:"";position:absolute;left:-.75rem;right:-999999px;top:0;bottom:0;background:#ffffff08;z-index:-1}.grid-row-wrapper:last-child>.grid-cell[data-v-bf517091]{border-bottom:none}.grid-cell[data-v-bf517091]{position:relative}.col-name[data-v-bf517091]{font-weight:500}.col-city[data-v-bf517091],.col-owner[data-v-bf517091]{color:var(--color-text-muted)}.col-number[data-v-bf517091]{text-align:right;font-variant-numeric:tabular-nums}.col-actions[data-v-bf517091]{display:flex;justify-content:flex-end}.project-link[data-v-bf517091]{background:#60a5fa26;color:#60a5fa;border:1px solid rgba(96,165,250,.3);padding:.25rem .75rem;border-radius:4px;font-size:.85rem;font-weight:500;cursor:pointer;transition:all .15s ease}.project-link[data-v-bf517091]:hover{background:#60a5fa40;color:#93c5fd;border-color:#60a5fa80}@media (max-width: 1400px){.projects-grid[data-v-bf517091]{font-size:.85rem}.grid-header[data-v-bf517091],.grid-row[data-v-bf517091]{padding:.4rem .5rem}.grid-header[data-v-bf517091]{font-size:.65rem}}.loading[data-v-0af6e99b],.error[data-v-0af6e99b]{padding:3rem 2rem;text-align:center;font-size:1.1rem}.error[data-v-0af6e99b]{color:#ef4444;background:#ef44441a;border-radius:6px;border:1px solid rgba(239,68,68,.3)}.users-grid[data-v-0af6e99b]{display:grid;grid-template-columns:auto auto auto auto auto 1fr;gap:1rem;background:#0003;border-radius:6px;overflow:hidden;border:1px solid rgba(255,255,255,.05);padding:0 .75rem;align-items:center;position:relative}.users-grid[data-v-0af6e99b]:before{content:"";position:absolute;top:0;left:0;right:0;height:calc(1rem + 1.2em + 2px);background:#0006;border-bottom:2px solid rgba(255,255,255,.1);z-index:0}.grid-header-cell[data-v-0af6e99b]{padding:.5rem 0;font-weight:600;color:#ffffff80;font-size:.7rem;text-transform:uppercase;letter-spacing:.5px;line-height:1.2;position:relative;z-index:1}.grid-cell[data-v-0af6e99b]{padding:.25rem 0;line-height:1.8;font-size:.9rem;border-bottom:1px solid rgba(255,255,255,.05);position:relative}.grid-row-wrapper[data-v-0af6e99b]{display:contents}.grid-row-wrapper:hover>.grid-cell[data-v-0af6e99b]:first-child:before{content:"";position:absolute;left:-.75rem;right:-999999px;top:0;bottom:0;background:#ffffff08;z-index:-1}.grid-row-wrapper:last-child>.grid-cell[data-v-0af6e99b]{border-bottom:none}.col-name[data-v-0af6e99b]{font-weight:500}.col-email[data-v-0af6e99b],.col-org[data-v-0af6e99b]{color:var(--color-text-muted)}.col-projects[data-v-0af6e99b]{color:var(--color-text-muted);font-size:.85rem}.project-link[data-v-0af6e99b]{color:#60a5fa;text-decoration:none;transition:color .15s}.project-link[data-v-0af6e99b]:hover{color:#93c5fd;text-decoration:underline}.separator[data-v-0af6e99b]{color:var(--color-text-muted)}.col-number[data-v-0af6e99b]{text-align:right;font-variant-numeric:tabular-nums}@media (max-width: 1400px){.users-grid[data-v-0af6e99b]{font-size:.85rem}.grid-header-cell[data-v-0af6e99b],.grid-cell[data-v-0af6e99b]{padding:.4rem .5rem}.grid-header-cell[data-v-0af6e99b]{font-size:.65rem}}.auth-page[data-v-71d780d6]{display:flex;align-items:center;justify-content:center;min-height:100vh;background:var(--color-bg);padding:2rem}.auth-card[data-v-71d780d6]{background:var(--color-surface);border:1px solid var(--color-primary);border-radius:12px;padding:2rem;width:min(420px,100%);box-shadow:0 20px 60px #00000059}.auth-card h1[data-v-71d780d6]{margin-bottom:.25rem}.subtitle[data-v-71d780d6]{color:var(--color-text-muted);margin-bottom:1.5rem}.auth-form[data-v-71d780d6]{display:flex;flex-direction:column;gap:1rem}label[data-v-71d780d6]{display:flex;flex-direction:column;gap:.35rem;font-weight:600}label span[data-v-71d780d6]{color:var(--color-text-muted);font-size:.9rem}input[data-v-71d780d6]{background:#0f1730;border:1px solid var(--color-primary);border-radius:8px;padding:.75rem .85rem;color:var(--color-text);font-size:1rem}input[data-v-71d780d6]:focus{outline:2px solid var(--color-accent);border-color:var(--color-accent)}button[data-v-71d780d6]{background:var(--color-accent);color:#fff;border:none;border-radius:8px;padding:.9rem;font-size:1rem;font-weight:700;cursor:pointer;transition:opacity .15s ease}button[data-v-71d780d6]:disabled{opacity:.6;cursor:not-allowed}.form-error[data-v-71d780d6]{color:var(--color-accent);margin-top:.25rem}.auth-switch[data-v-71d780d6]{margin-top:1.25rem;color:var(--color-text-muted)}.auth-switch a[data-v-71d780d6]{color:var(--color-accent);font-weight:600}.oauth-divider[data-v-71d780d6]{display:flex;align-items:center;margin:1.5rem 0;color:var(--color-text-muted);text-transform:uppercase;font-size:.85rem;font-weight:600}.oauth-divider[data-v-71d780d6]:before,.oauth-divider[data-v-71d780d6]:after{content:"";flex:1;border-bottom:1px solid var(--color-primary)}.oauth-divider span[data-v-71d780d6]{padding:0 1rem}.google-button-container[data-v-71d780d6]{display:flex;justify-content:center;margin-bottom:1rem}.auth-page[data-v-dbb1061c]{display:flex;align-items:center;justify-content:center;min-height:100vh;background:var(--color-bg);padding:2rem}.auth-card[data-v-dbb1061c]{background:var(--color-surface);border:1px solid var(--color-primary);border-radius:12px;padding:2rem;width:min(440px,100%);box-shadow:0 20px 60px #00000059}.auth-card h1[data-v-dbb1061c]{margin-bottom:.25rem}.subtitle[data-v-dbb1061c]{color:var(--color-text-muted);margin-bottom:1.5rem}.auth-form[data-v-dbb1061c],.auth-form form[data-v-dbb1061c]{display:flex;flex-direction:column;gap:1rem}label[data-v-dbb1061c]{display:flex;flex-direction:column;gap:.35rem;font-weight:600}label span[data-v-dbb1061c]{color:var(--color-text-muted);font-size:.9rem}input[data-v-dbb1061c]{background:#0f1730;border:1px solid var(--color-primary);border-radius:8px;padding:.75rem .85rem;color:var(--color-text);font-size:1rem}input[data-v-dbb1061c]:focus{outline:2px solid var(--color-accent);border-color:var(--color-accent)}button[data-v-dbb1061c]{border:none;border-radius:8px;padding:.9rem;font-size:1rem;font-weight:700;cursor:pointer;transition:opacity .15s ease}.signup-buttons[data-v-dbb1061c]{display:flex;flex-direction:column;gap:.75rem}.btn-primary[data-v-dbb1061c]{background:var(--color-accent);color:#fff}.btn-google[data-v-dbb1061c]{background:#fff;color:#1f1f1f;border:1px solid var(--color-primary)}.btn-google[data-v-dbb1061c]:hover{background:#f8f8f8}.btn-email[data-v-dbb1061c]{background:var(--color-accent);color:#fff}.btn-back[data-v-dbb1061c]{background:transparent;color:var(--color-text-muted);border:1px solid var(--color-primary);margin-top:.5rem}.btn-back[data-v-dbb1061c]:hover{background:#ffffff0d}button[data-v-dbb1061c]:disabled{opacity:.6;cursor:not-allowed}.form-error[data-v-dbb1061c]{color:var(--color-accent);margin-top:.25rem}.auth-switch[data-v-dbb1061c]{margin-top:1.25rem;color:var(--color-text-muted)}.auth-switch a[data-v-dbb1061c]{color:var(--color-accent);font-weight:600}.auth-page[data-v-cf1be026]{display:flex;align-items:center;justify-content:center;min-height:100vh;background:var(--color-bg);padding:2rem}.auth-card[data-v-cf1be026]{background:var(--color-surface);border:1px solid var(--color-primary);border-radius:12px;padding:2rem;width:min(440px,100%);box-shadow:0 20px 60px #00000059}.auth-card h1[data-v-cf1be026]{margin-bottom:.25rem}.subtitle[data-v-cf1be026]{color:var(--color-text-muted);margin-bottom:1.5rem}.auth-form[data-v-cf1be026]{display:flex;flex-direction:column;gap:1rem}.form-row[data-v-cf1be026]{display:grid;grid-template-columns:1fr 1fr;gap:1rem}label[data-v-cf1be026]{display:flex;flex-direction:column;gap:.35rem;font-weight:600}label span[data-v-cf1be026]{color:var(--color-text-muted);font-size:.9rem}input[data-v-cf1be026]{background:#0f1730;border:1px solid var(--color-primary);border-radius:8px;padding:.75rem .85rem;color:var(--color-text);font-size:1rem}input[data-v-cf1be026]:focus{outline:2px solid var(--color-accent);border-color:var(--color-accent)}button[data-v-cf1be026]{background:var(--color-accent);color:#fff;border:none;border-radius:8px;padding:.9rem;font-size:1rem;font-weight:700;cursor:pointer;transition:opacity .15s ease}button[data-v-cf1be026]:disabled{opacity:.6;cursor:not-allowed}.form-error[data-v-cf1be026]{color:var(--color-accent);margin-top:.25rem}:root{--color-bg: #1a1a2e;--color-surface: #16213e;--color-primary: #0f3460;--color-accent: #e94560;--color-text: #eaeaea;--color-text-muted: #a0a0a0;--sidebar-width: 320px}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Segoe UI,system-ui,-apple-system,sans-serif;background:var(--color-bg);color:var(--color-text);min-height:100vh}.ghost-btn,.primary-btn{text-decoration:none;padding:.55rem .95rem;border-radius:8px;font-weight:600;border:1px solid var(--color-primary);transition:all .15s ease}.ghost-btn{background:transparent;color:var(--color-text)}.ghost-btn:hover{border-color:var(--color-accent);color:var(--color-accent)}.primary-btn{background:var(--color-accent);color:#fff;border-color:var(--color-accent)}.primary-btn:hover{opacity:.9}.user-menu{position:relative;display:flex;align-items:center;gap:.55rem;cursor:pointer;padding:.35rem .5rem;border-radius:10px;transition:background .15s ease}.user-menu:hover{background:#ffffff0a}.avatar{width:34px;height:34px;border-radius:50%;background:var(--color-accent);color:#fff;display:grid;place-items:center;font-weight:800}.user-meta{display:flex;flex-direction:column;line-height:1.2}.user-name{font-weight:700}.user-email,.chevron{color:var(--color-text-muted);font-size:.85rem}.user-menu .dropdown,.dropdown-portal{position:fixed;background:var(--color-surface);border:1px solid var(--color-primary);border-radius:10px;min-width:180px;box-shadow:0 12px 30px #00000073;display:flex;flex-direction:column;overflow:hidden;z-index:9999}.dropdown a,.dropdown button,.dropdown-portal a,.dropdown-portal button{padding:.9rem 1rem;text-align:left;background:transparent;border:none;color:var(--color-text);text-decoration:none;cursor:pointer;transition:background .1s ease}.dropdown a:hover,.dropdown button:hover,.dropdown-portal a:hover,.dropdown-portal button:hover{background:#ffffff0f}.dropdown .upload-option,.dropdown-portal .upload-option{position:relative;padding:.9rem 1rem;text-align:left;background:transparent;border:none;color:var(--color-text);cursor:pointer;transition:background .1s ease;display:block;width:100%}.dropdown .upload-option:hover,.dropdown-portal .upload-option:hover{background:#ffffff0f}.dropdown .upload-option span,.dropdown-portal .upload-option span{pointer-events:none}.dropdown .upload-option input[type=file],.dropdown-portal .upload-option input[type=file]{position:absolute;opacity:0;width:100%;height:100%;top:0;left:0;cursor:pointer}.app-header{background:var(--color-surface);padding:.4rem 1.5rem;border-bottom:1px solid var(--color-primary);display:flex;align-items:center;justify-content:space-between;gap:1rem;position:relative;overflow:visible;z-index:5}.app-header-left{display:flex;align-items:center;gap:.75rem}.header-actions{display:flex;align-items:center;gap:.75rem;overflow:visible}.app-header h1{font-size:1.25rem;font-weight:600;color:var(--color-accent);line-height:1}.app-header .city-name{font-size:1.1rem;color:var(--color-text-muted);line-height:1}.main-content{display:flex;flex:1;overflow:hidden}.sidebar{width:var(--sidebar-width);background:var(--color-surface);border-right:1px solid var(--color-primary);display:flex;flex-direction:column;overflow:hidden}.sidebar-header{padding:1rem;border-bottom:1px solid var(--color-primary)}.sidebar-header h2{font-size:.875rem;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted)}.transport-filters{display:flex;flex-wrap:wrap;gap:.5rem;padding:1rem;border-bottom:1px solid var(--color-primary)}.transport-btn{padding:.4rem .75rem;border:none;border-radius:4px;font-size:.8rem;font-weight:500;cursor:pointer;transition:all .2s;text-transform:capitalize}.transport-btn.active{color:#fff}.transport-btn:not(.active){background:var(--color-primary);color:var(--color-text-muted)}.transport-btn:hover:not(.active){background:var(--color-accent);color:#fff}.route-list{flex:1;overflow-y:auto;padding:.5rem}.route-item{display:flex;align-items:center;gap:.75rem;padding:.6rem .75rem;border-radius:6px;cursor:pointer;transition:background .15s}.route-item:hover{background:var(--color-primary)}.route-item.highlighted{background:var(--color-accent)}.route-number{font-weight:600;font-size:.95rem;min-width:3rem}.route-type{font-size:.75rem;color:var(--color-text-muted);text-transform:capitalize}.map-container{flex:1;position:relative}.map-container #map{position:absolute;top:0;left:0;right:0;bottom:0}.map-container .leaflet-container{height:100%;width:100%;background:var(--color-bg)}.leaflet-control-zoom a{background:var(--color-surface)!important;color:var(--color-text)!important;border-color:var(--color-primary)!important}.leaflet-control-zoom a:hover{background:var(--color-primary)!important}.leaflet-control-attribution{background:#1a1a2ecc!important;color:var(--color-text-muted)!important}.leaflet-control-attribution a{color:var(--color-accent)!important}.loading{display:flex;align-items:center;justify-content:center;height:100%;color:var(--color-text-muted)}.loading:after{content:"";width:24px;height:24px;margin-left:.75rem;border:2px solid var(--color-primary);border-top-color:var(--color-accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.error{padding:2rem;text-align:center;color:var(--color-accent);max-width:800px;margin:2rem auto}.error h2{margin-bottom:1rem}.error pre{background:var(--color-surface);padding:1rem;border-radius:8px;text-align:left;overflow-x:auto;white-space:pre-wrap;word-break:break-word;font-size:.875rem;margin-bottom:1rem}.error button{background:var(--color-accent);color:#fff;border:none;padding:.75rem 1.5rem;border-radius:6px;cursor:pointer;font-size:1rem}.error button:hover{opacity:.9}
