*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;scroll-behavior:smooth}body{font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;line-height:1.5;color:var(--text-primary);background:var(--bg-primary);overflow:hidden;height:100vh;transition:background-color .2s ease,color .2s ease}a{color:inherit;text-decoration:none}button{cursor:pointer;border:none;background:none;font:inherit;color:inherit}select,input{font:inherit}ul,ol{list-style:none}img{display:block;max-width:100%}:root{--bg-primary: #ffffff;--bg-secondary: #f8fafc;--bg-tertiary: #f1f5f9;--bg-hover: #f1f5f9;--bg-active: #e2e8f0;--bg-card: #ffffff;--bg-overlay: rgba(0, 0, 0, .4);--text-primary: #0f172a;--text-secondary: #475569;--text-tertiary: #94a3b8;--text-inverse: #ffffff;--border-primary: #e2e8f0;--border-secondary: #f1f5f9;--border-focus: #3b82f6;--accent: #2563eb;--accent-hover: #1d4ed8;--accent-light: #eff6ff;--accent-border: #bfdbfe;--accent-shadow: rgba(37, 99, 235, .2);--green-bg: #dcfce7;--green-text: #15803d;--green-solid: #16a34a;--amber-bg: #fef3c7;--amber-text: #b45309;--amber-border: #fde68a;--amber-solid: #d97706;--red-bg: #fee2e2;--red-text: #b91c1c;--red-solid: #dc2626;--orange-bg: #fff7ed;--orange-text: #c2410c;--orange-border: #fed7aa;--emerald-bg: #ecfdf5;--emerald-text: #047857;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .05);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .07), 0 2px 4px -2px rgba(0, 0, 0, .05);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .08), 0 4px 6px -4px rgba(0, 0, 0, .05);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .1), 0 8px 10px -6px rgba(0, 0, 0, .05);--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 20px;--radius-2xl: 24px;--radius-full: 9999px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--topbar-height: 64px;--sidebar-width: 340px;--transition-fast: .15s ease;--transition-normal: .2s ease;--transition-slow: .3s ease}[data-theme=dark]{--bg-primary: #0f172a;--bg-secondary: #1e293b;--bg-tertiary: #334155;--bg-hover: #1e293b;--bg-active: #334155;--bg-card: #1e293b;--bg-overlay: rgba(0, 0, 0, .6);--text-primary: #f1f5f9;--text-secondary: #94a3b8;--text-tertiary: #64748b;--text-inverse: #0f172a;--border-primary: #334155;--border-secondary: #1e293b;--accent-light: rgba(37, 99, 235, .15);--accent-border: rgba(37, 99, 235, .4);--green-bg: rgba(22, 163, 74, .15);--green-text: #4ade80;--amber-bg: rgba(217, 119, 6, .1);--amber-text: #fbbf24;--amber-border: rgba(217, 119, 6, .3);--red-bg: rgba(220, 38, 38, .15);--red-text: #f87171;--orange-bg: rgba(234, 88, 12, .15);--orange-text: #fb923c;--orange-border: rgba(234, 88, 12, .3);--emerald-bg: rgba(4, 120, 87, .15);--emerald-text: #34d399;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .3);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .4);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .4);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .5)}.text-xs{font-size:.75rem;line-height:1rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.font-medium{font-weight:500}.font-semibold{font-weight:600}.font-bold{font-weight:700}.font-black{font-weight:900}.tracking-tight{letter-spacing:-.025em}.tracking-widest{letter-spacing:.1em}.uppercase{text-transform:uppercase}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes ping{75%,to{transform:scale(2);opacity:0}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes slideDown{0%{transform:translateY(-20px);opacity:0}to{transform:translateY(0);opacity:1}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.animate-ping{animation:ping 1.5s cubic-bezier(0,0,.2,1) infinite}.animate-fade-in{animation:fadeIn .3s ease forwards}.animate-slide-up{animation:slideUp .35s cubic-bezier(.32,.72,0,1) forwards}.scrollbar-hide::-webkit-scrollbar{display:none}.scrollbar-hide{-ms-overflow-style:none;scrollbar-width:none}.custom-scrollbar::-webkit-scrollbar{width:4px}.custom-scrollbar::-webkit-scrollbar-track{background:transparent}.custom-scrollbar::-webkit-scrollbar-thumb{background:var(--border-primary);border-radius:var(--radius-full)}.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}.app-layout{display:flex;flex-direction:column;height:100vh;background:var(--bg-primary);transition:background-color var(--transition-normal)}.app-main{display:flex;flex:1;overflow:hidden;position:relative}.map-wrapper{flex:1;position:relative}@media(max-width:1023px){.map-wrapper{padding-bottom:88px}}body.page-body{overflow:auto!important;height:auto!important}.page-layout{min-height:100vh;background:var(--bg-secondary);transition:background-color var(--transition-normal);overflow:auto}.page-content{max-width:896px;margin:0 auto;padding:var(--space-12) var(--space-6)}.page-content-wide{max-width:1024px;margin:0 auto;padding:var(--space-10) var(--space-4)}@media(min-width:640px){.page-content-wide{padding:var(--space-10) var(--space-6)}}.topbar{height:var(--topbar-height);background:var(--bg-primary);border-bottom:1px solid var(--border-primary);display:flex;align-items:center;justify-content:space-between;padding:0 var(--space-4);position:sticky;top:0;z-index:50;transition:background-color var(--transition-normal),border-color var(--transition-normal)}.topbar-logo{display:flex;align-items:center;gap:var(--space-3)}.topbar-logo-icon{background:var(--accent);padding:var(--space-2);border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;color:#fff}.topbar-logo-icon svg{width:20px;height:20px}.topbar-title{font-size:1.25rem;font-weight:700;color:var(--text-primary);display:none}@media(min-width:640px){.topbar-title{display:block}}.topbar-nav{display:flex;align-items:center;gap:var(--space-2)}@media(min-width:640px){.topbar-nav{gap:var(--space-4)}}.topbar-link{display:flex;align-items:center;gap:var(--space-1);color:var(--text-secondary);padding:var(--space-2) var(--space-2);border-radius:var(--radius-sm);transition:color var(--transition-fast),background-color var(--transition-fast)}.topbar-link:hover{color:var(--accent)}.topbar-link svg{width:18px;height:18px;flex-shrink:0}.topbar-link-text{display:none;font-size:.875rem;font-weight:500}@media(min-width:1024px){.topbar-link-text{display:inline}}.topbar-divider{width:1px;height:24px;background:var(--border-primary);margin:0 var(--space-1)}.lang-switcher{display:flex;align-items:center;gap:var(--space-1)}.lang-btn{font-size:.75rem;font-weight:700;padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);transition:all var(--transition-fast);color:var(--text-tertiary);text-decoration:none}.lang-btn:hover{background:var(--bg-hover)}.lang-btn.active{background:var(--accent);color:#fff}.theme-toggle{padding:var(--space-2);border-radius:var(--radius-full);color:var(--text-secondary);transition:background-color var(--transition-fast),color var(--transition-fast)}.theme-toggle:hover{background:var(--bg-hover)}.theme-toggle svg{width:20px;height:20px}.sidebar{display:none;flex-direction:column;width:var(--sidebar-width);flex-shrink:0;height:calc(100vh - var(--topbar-height));border-right:1px solid var(--border-primary);z-index:30;overflow:hidden;background:var(--bg-primary);transition:background-color var(--transition-normal),border-color var(--transition-normal)}@media(min-width:1024px){.sidebar{display:flex}}.sidebar-content{display:flex;flex-direction:column;height:100%;overflow:hidden}.sidebar-city{padding:var(--space-4) var(--space-4) var(--space-3);border-bottom:1px solid var(--border-secondary)}.sidebar-label{font-size:.625rem;font-weight:700;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.1em;margin-bottom:var(--space-2);display:block}.city-select-wrap{position:relative}.city-select{width:100%;background:var(--bg-tertiary);border:1px solid var(--border-primary);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);padding-right:40px;font-size:.875rem;font-weight:600;color:var(--text-primary);appearance:none;cursor:pointer;transition:all var(--transition-fast);outline:none}.city-select:focus{border-color:var(--border-focus);box-shadow:0 0 0 3px var(--accent-shadow)}.city-select-arrow{position:absolute;right:12px;top:50%;transform:translateY(-50%);color:var(--text-tertiary);pointer-events:none}.city-select-arrow svg{width:16px;height:16px}.sidebar-filters{padding:var(--space-3) var(--space-4);display:flex;flex-direction:column;gap:10px;border-bottom:1px solid var(--border-secondary)}.search-wrap{position:relative}.search-icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--text-tertiary)}.search-icon svg{width:14px;height:14px}.search-input{width:100%;background:var(--bg-tertiary);border:1px solid var(--border-primary);border-radius:var(--radius-md);padding:10px 12px 10px 36px;font-size:.875rem;color:var(--text-primary);transition:all var(--transition-fast);outline:none}.search-input::placeholder{color:var(--text-tertiary)}.search-input:focus{border-color:var(--border-focus);box-shadow:0 0 0 3px var(--accent-shadow)}.category-pills{display:flex;gap:6px;overflow-x:auto;padding-bottom:2px}.category-pill{padding:6px 12px;border-radius:var(--radius-sm);font-size:.75rem;font-weight:700;white-space:nowrap;transition:all var(--transition-fast);min-height:32px;display:flex;align-items:center;background:var(--bg-tertiary);color:var(--text-secondary)}.category-pill:hover{background:var(--bg-active)}.category-pill.active{background:var(--accent);color:#fff;box-shadow:0 2px 4px var(--accent-shadow)}.sidebar-scroll{flex:1;overflow-y:auto}.section-header{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-4) var(--space-4) var(--space-2)}.section-header svg{width:13px;height:13px;color:var(--text-tertiary)}.section-header-label{font-size:.625rem;font-weight:700;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.1em}.route-list{padding:0 var(--space-3) var(--space-3);display:flex;flex-direction:column;gap:var(--space-2)}.favorites-toggle{width:100%;display:flex;align-items:center;gap:var(--space-2);padding:var(--space-4) var(--space-4) var(--space-2);transition:background-color var(--transition-fast);text-align:left}.favorites-toggle:hover{background:var(--bg-hover)}.favorites-toggle-label{font-size:.625rem;font-weight:700;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.1em;flex:1}.disclaimer{margin:0 var(--space-4) var(--space-4);background:var(--amber-bg);border:1px solid var(--amber-border);border-radius:var(--radius-lg);padding:var(--space-4)}.disclaimer-inner{display:flex;align-items:flex-start;gap:var(--space-3)}.disclaimer-icon{color:var(--amber-solid);flex-shrink:0;margin-top:2px}.disclaimer-icon svg{width:16px;height:16px}.disclaimer-title{font-size:.75rem;font-weight:700;color:var(--amber-text);margin-bottom:var(--space-1)}.disclaimer-text{font-size:.6875rem;color:var(--amber-text);line-height:1.6;opacity:.9}.disclaimer-link{display:inline-flex;align-items:center;gap:var(--space-1);margin-top:var(--space-2);font-size:.6875rem;font-weight:700;color:var(--amber-text)}.disclaimer-link:hover{text-decoration:underline}.disclaimer-link svg{width:10px;height:10px}.sidebar-controls{border-top:1px solid var(--border-secondary);padding:var(--space-4);display:flex;flex-direction:column;gap:var(--space-3);background:var(--bg-primary);flex-shrink:0}.controls-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-2)}.control-btn{display:flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-3);background:var(--bg-tertiary);border-radius:var(--radius-md);font-size:.75rem;font-weight:600;color:var(--text-secondary);transition:all var(--transition-fast)}.control-btn:hover{background:var(--bg-active)}.control-btn:active{transform:scale(.95)}.control-btn:disabled{opacity:.4;cursor:not-allowed}.control-btn svg{width:14px;height:14px;flex-shrink:0}.checkpoint-toggle{width:100%;display:flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-3);border-radius:var(--radius-md);font-size:.75rem;font-weight:600;border:2px solid var(--border-primary);color:var(--text-secondary);transition:all var(--transition-fast)}.checkpoint-toggle:hover{border-color:var(--text-tertiary)}.checkpoint-toggle:active{transform:scale(.95)}.checkpoint-toggle.active{background:var(--accent-light);border-color:var(--accent-border);color:var(--accent)}.checkpoint-toggle svg{width:14px;height:14px}.practice-btn{width:100%;display:flex;align-items:center;justify-content:center;gap:var(--space-2);padding:14px;border-radius:var(--radius-md);font-size:.875rem;font-weight:700;transition:all var(--transition-fast);background:var(--accent);color:#fff;box-shadow:0 4px 12px var(--accent-shadow)}.practice-btn:hover{background:var(--accent-hover)}.practice-btn:active{transform:scale(.95)}.practice-btn:disabled{opacity:.4;cursor:not-allowed;box-shadow:none}.practice-btn svg{width:15px;height:15px}.practice-btn.stop{background:var(--red-solid);box-shadow:0 4px 12px #dc262633}.practice-btn.stop:hover{background:#b91c1c}.practice-btn-secondary{margin-top:var(--space-2);padding:11px;background:var(--bg-primary);color:var(--accent);border:1px solid var(--accent);box-shadow:none}.practice-btn-secondary:hover{background:var(--accent-light)}.practice-btn[hidden]{display:none}.empty-state{padding:var(--space-10) var(--space-4);text-align:center}.empty-state-icon{width:64px;height:64px;background:var(--bg-tertiary);border:2px dashed var(--border-primary);border-radius:var(--radius-full);display:flex;align-items:center;justify-content:center;margin:0 auto var(--space-4);color:var(--text-tertiary)}.empty-state-icon svg{width:26px;height:26px}.empty-state-title{font-size:.875rem;font-weight:700;color:var(--text-primary);margin-bottom:var(--space-2)}.empty-state-desc{font-size:.75rem;color:var(--text-tertiary);line-height:1.6;margin-bottom:var(--space-4)}.empty-state-link{display:inline-flex;align-items:center;gap:6px;font-size:.75rem;font-weight:700;color:var(--accent);background:var(--accent-light);padding:10px 16px;border-radius:var(--radius-md);transition:background-color var(--transition-fast)}.empty-state-link:hover{background:var(--accent-border)}.empty-state-link svg{width:12px;height:12px}.bottom-drawer-area{display:block}@media(min-width:1024px){.bottom-drawer-area{display:none}}.mini-bar{position:fixed;bottom:0;left:0;right:0;z-index:40;background:var(--bg-primary);border-top:2px solid var(--border-primary);box-shadow:var(--shadow-xl);cursor:pointer;user-select:none}.mini-bar-handle{display:flex;justify-content:center;padding:var(--space-2) 0 var(--space-1)}.mini-bar-handle-line{width:40px;height:4px;background:var(--text-tertiary);border-radius:var(--radius-full);opacity:.5}.mini-bar-content{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-4) var(--space-4)}.mini-bar-icon{width:40px;height:40px;border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;flex-shrink:0;background:var(--bg-tertiary);color:var(--text-tertiary)}.mini-bar-icon.has-route{background:var(--accent);color:#fff}.mini-bar-icon svg{width:18px;height:18px}.mini-bar-info{flex:1;text-align:left;min-width:0}.mini-bar-subtitle{font-size:.6875rem;color:var(--text-tertiary);font-weight:500}.mini-bar-title{font-size:.875rem;font-weight:700;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mini-bar-title.placeholder{color:var(--text-tertiary)}.mini-bar-open-btn{flex-shrink:0;background:var(--accent);color:#fff;padding:10px 16px;border-radius:var(--radius-md);font-weight:700;font-size:.875rem;display:flex;align-items:center;gap:var(--space-2);box-shadow:0 4px 12px var(--accent-shadow)}.mini-bar-open-btn svg{width:16px;height:16px}.drawer-overlay{position:fixed;inset:0;background:var(--bg-overlay);backdrop-filter:blur(4px);z-index:50;opacity:0;pointer-events:none;transition:opacity var(--transition-slow)}.drawer-overlay.open{opacity:1;pointer-events:auto}.drawer-panel{position:fixed;bottom:0;left:0;right:0;z-index:50;background:var(--bg-primary);border-radius:var(--radius-2xl) var(--radius-2xl) 0 0;height:88vh;transform:translateY(100%);transition:transform .35s cubic-bezier(.32,.72,0,1);display:flex;flex-direction:column;overflow:hidden;outline:none}.drawer-panel.open{transform:translateY(0)}.drawer-handle{display:flex;justify-content:center;padding:var(--space-3) 0 var(--space-1);flex-shrink:0}.drawer-handle-line{width:48px;height:6px;background:var(--text-tertiary);border-radius:var(--radius-full);opacity:.4}.drawer-body{flex:1;overflow:hidden}.seo-block{margin:0 var(--space-4) var(--space-4);padding:var(--space-4) 0 0;border-top:1px solid var(--border-primary);color:var(--text-secondary);font-size:.75rem;line-height:1.6}.seo-title{font-size:.9375rem;font-weight:700;line-height:1.35;color:var(--text-primary);margin-bottom:var(--space-2)}.seo-intro{margin-bottom:var(--space-3)}.seo-subtitle{font-size:.6875rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--text-tertiary);margin:var(--space-3) 0 var(--space-2)}.seo-subtitle a{color:inherit;text-decoration:none}.seo-subtitle a:hover{color:var(--accent)}.seo-streets p{color:var(--text-secondary)}.seo-turn{color:var(--text-tertiary)}.seo-pdf{display:inline-block;margin-top:var(--space-2);font-weight:600;color:var(--accent);text-decoration:none}.seo-pdf:hover{text-decoration:underline}.seo-chip-group{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-1);margin-bottom:var(--space-2)}.seo-chip-label{width:100%;font-weight:600;color:var(--text-secondary)}.seo-chip{padding:2px var(--space-2);border:1px solid var(--border-primary);border-radius:var(--radius-full);color:var(--text-secondary);text-decoration:none;white-space:nowrap;transition:background var(--transition-fast),color var(--transition-fast),border-color var(--transition-fast)}.seo-chip:hover{background:var(--accent-light);border-color:var(--accent-border);color:var(--accent)}.seo-chip[aria-current=page]{background:var(--accent);border-color:var(--accent);color:var(--text-inverse)}.route-card{position:relative;border:2px solid var(--border-primary);border-radius:var(--radius-lg);padding:var(--space-4);cursor:pointer;transition:all var(--transition-normal);background:var(--bg-card)}.route-card:hover{border-color:var(--accent-border)}.route-card:active{transform:scale(.98)}.route-card.selected{border-color:var(--accent);background:var(--accent-light);box-shadow:var(--shadow-md)}.route-card-dot{display:none;position:absolute;top:12px;right:12px;width:8px;height:8px;border-radius:var(--radius-full);background:var(--accent);box-shadow:0 0 0 3px var(--accent-border)}.route-card.selected .route-card-dot{display:block}.route-card-badges{display:flex;align-items:flex-start;gap:var(--space-2);flex-wrap:wrap;margin-bottom:10px}.badge{display:inline-flex;align-items:center;font-size:.75rem;font-weight:700;padding:2px 8px;border-radius:6px;line-height:20px}.badge-number{background:var(--text-primary);color:var(--bg-primary)}.badge-sector{background:var(--bg-tertiary);color:var(--text-secondary);font-weight:500}.badge-category{background:var(--accent-light);color:var(--accent)}.badge-demo{font-size:.625rem;text-transform:uppercase;letter-spacing:.05em;background:var(--orange-bg);color:var(--orange-text)}.badge-custom{font-size:.625rem;text-transform:uppercase;letter-spacing:.05em;background:var(--emerald-bg);color:var(--emerald-text)}.favorite-btn{margin-left:auto;padding:var(--space-1);margin-right:-4px;margin-top:-4px;border-radius:var(--radius-sm);transition:background-color var(--transition-fast)}.favorite-btn:hover{background:var(--bg-hover)}.favorite-btn svg{width:15px;height:15px}.favorite-btn .heart-empty{color:var(--text-tertiary);opacity:.5}.favorite-btn .heart-filled{color:var(--red-solid);fill:var(--red-solid)}.route-card-title{font-size:.875rem;font-weight:600;color:var(--text-primary);margin-bottom:var(--space-3);line-height:1.4}.route-card-stats{display:flex;align-items:center;gap:var(--space-3);font-size:.75rem;color:var(--text-tertiary)}.route-card-stat{display:flex;align-items:center;gap:6px}.route-card-stat svg{width:11px;height:11px}.difficulty-badge{margin-left:auto;font-size:.625rem;font-weight:700;padding:2px 8px;border-radius:var(--radius-full)}.difficulty-easy{background:var(--emerald-bg);color:var(--emerald-text)}.difficulty-medium{background:var(--amber-bg);color:var(--amber-text)}.difficulty-hard{background:var(--red-bg);color:var(--red-text)}#map{position:absolute;inset:0;z-index:1}.leaflet-marker-custom{background:none!important;border:none!important}.user-marker{position:relative;display:flex;align-items:center;justify-content:center}.user-marker-ping{position:absolute;width:32px;height:32px;background:#2563eb33;border-radius:var(--radius-full);animation:ping 1.5s cubic-bezier(0,0,.2,1) infinite}.user-marker-dot{width:16px;height:16px;background:var(--accent);border:2px solid white;border-radius:var(--radius-full);box-shadow:var(--shadow-lg);position:relative;z-index:2}.marker-start{width:32px;height:32px;background:var(--green-solid);border:2px solid white;border-radius:var(--radius-full);display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-lg);color:#fff}.marker-finish{width:32px;height:32px;background:var(--red-solid);border:2px solid white;border-radius:var(--radius-full);display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-lg);color:#fff}.marker-start svg,.marker-finish svg{width:16px;height:16px}.checkpoint-marker{display:flex;flex-direction:column;align-items:center}.checkpoint-tooltip{background:var(--bg-card);padding:4px 8px;border-radius:var(--radius-sm);box-shadow:var(--shadow-md);border:1px solid var(--border-primary);margin-bottom:4px;opacity:0;transition:opacity var(--transition-fast);white-space:nowrap;font-size:.625rem;font-weight:700;color:var(--text-primary);pointer-events:none}.checkpoint-marker:hover .checkpoint-tooltip{opacity:1}.checkpoint-dot{width:24px;height:24px;background:var(--accent);border:2px solid white;border-radius:var(--radius-full);display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-lg);font-size:.625rem;font-weight:700;color:#fff}.compass{position:absolute;bottom:24px;right:24px;display:none;flex-direction:column;align-items:center;gap:var(--space-2);z-index:10}@media(min-width:1024px){.compass{display:flex}}.compass-ring{width:48px;height:48px;background:#fffc;backdrop-filter:blur(12px);border-radius:var(--radius-full);box-shadow:var(--shadow-lg);border:1px solid var(--border-primary);display:flex;align-items:center;justify-content:center;transition:transform var(--transition-normal);position:relative}[data-theme=dark] .compass-ring{background:#0f172acc}.compass-ring svg{width:24px;height:24px;color:var(--accent)}.compass-north{position:absolute;top:4px;width:4px;height:8px;background:var(--red-solid);border-radius:var(--radius-full)}.compass-degrees{font-size:.625rem;font-weight:700;color:var(--text-tertiary);text-transform:uppercase;background:#ffffff80;padding:2px 8px;border-radius:var(--radius-sm);backdrop-filter:blur(4px)}[data-theme=dark] .compass-degrees{background:#0f172a80}.practice-overlay{position:absolute;top:var(--space-4);left:var(--space-4);right:var(--space-4);z-index:20;animation:slideDown .3s ease forwards}@media(min-width:640px){.practice-overlay{left:auto;right:var(--space-4);width:320px}}.practice-card{background:#ffffffe6;backdrop-filter:blur(12px);padding:var(--space-4);border-radius:var(--radius-lg);box-shadow:var(--shadow-xl);border:1px solid rgba(226,232,240,.5)}[data-theme=dark] .practice-card{background:#0f172ae6;border-color:#33415580}.practice-header{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-3)}.practice-pulse{width:12px;height:12px;background:var(--red-solid);border-radius:var(--radius-full);animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.practice-title{font-weight:700;color:var(--text-primary);text-transform:uppercase;letter-spacing:-.025em;font-size:.875rem}.practice-body{display:flex;flex-direction:column;gap:var(--space-4)}.practice-detail-label{font-size:.75rem;color:var(--text-tertiary);text-transform:uppercase;font-weight:600;margin-bottom:var(--space-1)}.practice-detail-value{font-size:.875rem;font-weight:700;color:var(--text-primary)}.practice-stats{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4)}.practice-stat-value{font-size:1.125rem;font-weight:900}.practice-stat-value.accent{color:var(--accent)}.practice-progress-bar{width:100%;height:8px;background:var(--bg-tertiary);border-radius:var(--radius-full);overflow:hidden}.practice-progress-fill{height:100%;background:var(--accent);border-radius:var(--radius-full);transition:width 1s ease}.practice-voice-btn{margin-left:auto;flex-shrink:0;width:36px;height:36px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-full);border:1px solid var(--border-primary);background:var(--bg-primary);color:var(--text-tertiary);transition:all var(--transition-fast)}.practice-voice-btn svg{width:18px;height:18px}.practice-voice-btn .voice-on{display:none}.practice-voice-btn[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:#fff}.practice-voice-btn[aria-pressed=true] .voice-on{display:block}.practice-voice-btn[aria-pressed=true] .voice-off,.practice-nav-hint{display:none}.practice-overlay.nav-mode .practice-next{display:grid;grid-template-columns:auto 1fr;grid-template-areas:"icon dist" "icon text";column-gap:var(--space-3);row-gap:2px;align-items:center;padding:var(--space-4)}.practice-overlay.nav-mode .practice-next-icon{grid-area:icon;width:64px;height:64px}.practice-overlay.nav-mode .practice-next-icon svg{width:38px;height:38px}.practice-overlay.nav-mode .practice-next-dist{grid-area:dist;font-size:1.625rem;line-height:1.1}.practice-overlay.nav-mode .practice-next-text{grid-area:text}.practice-overlay.nav-mode .practice-next-text .practice-detail-label{display:none}.practice-overlay.nav-mode .practice-next-action{font-size:1rem}.practice-overlay.nav-mode .practice-next-action span{font-size:.875rem}@media(min-width:640px){.practice-overlay.nav-mode{width:360px}}.map-wrapper:has(.practice-overlay.nav-mode) .step-card{display:none}@media(max-width:639px){.practice-overlay.nav-mode .practice-card{padding:var(--space-3)}.practice-overlay.nav-mode .practice-header{margin-bottom:var(--space-2)}.practice-overlay.nav-mode .practice-stats{margin-top:var(--space-2)}.practice-overlay.nav-mode .practice-stats .practice-detail-label{display:none}.practice-overlay.nav-mode .practice-stat-value{font-size:.9375rem}}.practice-overlay.nav-mode .practice-nav-hint{display:block;margin-top:var(--space-3);font-size:.6875rem;line-height:1.4;color:var(--text-tertiary)}.user-marker-arrow{position:relative;z-index:2;width:30px;height:30px;display:flex;align-items:center;justify-content:center;transition:transform .6s ease}.user-marker-arrow svg{width:26px;height:26px;fill:var(--accent);stroke:#fff;stroke-width:2;stroke-linejoin:round;filter:drop-shadow(0 2px 3px rgba(15,23,42,.35))}.gps-sim{position:fixed;left:50%;bottom:8px;transform:translate(-50%);z-index:1000;display:flex;align-items:center;gap:4px;padding:4px 8px;border-radius:var(--radius-md);background:#0f172a;color:#e2e8f0;font-size:12px;box-shadow:var(--shadow-lg)}.gps-sim button{padding:2px 8px;border-radius:6px;background:#1e293b;color:inherit}.gps-sim button.on{background:#2563eb}.map-fab-group{position:absolute;right:var(--space-4);bottom:100px;display:flex;flex-direction:column;gap:var(--space-2);z-index:15}@media(min-width:1024px){.map-fab-group{bottom:80px}}.map-fab{width:44px;height:44px;background:var(--bg-primary);border:1px solid var(--border-primary);border-radius:var(--radius-md);box-shadow:var(--shadow-md);display:flex;align-items:center;justify-content:center;color:var(--text-secondary);transition:all var(--transition-fast)}.map-fab:hover{background:var(--bg-hover);box-shadow:var(--shadow-lg)}.map-fab:active{transform:scale(.9)}.map-fab svg{width:20px;height:20px}.leaflet-control-zoom{display:none!important}.leaflet-control-attribution{font-size:10px!important;opacity:.6}.route-flow{--flow-offset: 0px;stroke-dasharray:16 12;stroke-dashoffset:var(--flow-offset);animation:route-flow-dash 1.4s linear infinite}@keyframes route-flow-dash{0%{stroke-dashoffset:var(--flow-offset)}to{stroke-dashoffset:calc(var(--flow-offset) - 28px)}}@media(prefers-reduced-motion:reduce){.route-flow{animation:none}}.checkpoint-container{position:relative;width:24px;height:24px}.checkpoint-arrow-container{position:absolute;top:0;left:0;width:24px;height:24px;pointer-events:none;display:flex;justify-content:center;align-items:center;z-index:1;transition:transform var(--transition-normal)}.checkpoint-arrow-pointer{position:absolute;top:-8px;left:50%;transform:translate(-50%);width:12px;height:12px;display:flex;align-items:center;justify-content:center;color:var(--accent)}[data-theme=dark] .checkpoint-arrow-pointer{color:var(--accent)}.checkpoint-arrow-pointer svg{width:12px;height:12px;display:block}.about-hero{text-align:center;margin-bottom:var(--space-12);padding-top:var(--space-4)}.about-hero h1{font-size:2.25rem;font-weight:900;color:var(--text-primary);letter-spacing:-.025em;margin-bottom:var(--space-4)}.about-hero p{font-size:1.125rem;color:var(--text-secondary)}.about-grid{display:grid;gap:var(--space-8);margin-bottom:var(--space-12)}@media(min-width:768px){.about-grid{grid-template-columns:1fr 1fr}}.about-card{background:var(--bg-card);padding:var(--space-8);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);border:1px solid var(--border-secondary)}.about-card-icon{width:48px;height:48px;border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;margin-bottom:var(--space-6)}.about-card-icon.info{background:var(--accent-light);color:var(--accent)}.about-card-icon.warning{background:var(--amber-bg);color:var(--amber-solid)}.about-card-icon svg{width:24px;height:24px}.about-card h3{font-size:1.25rem;font-weight:700;color:var(--text-primary);margin-bottom:var(--space-3)}.about-card p{color:var(--text-secondary);line-height:1.7;font-size:.9375rem}.about-steps h2{font-size:1.5rem;font-weight:700;color:var(--text-primary);margin-bottom:var(--space-8)}.steps-grid{display:grid;gap:var(--space-6)}@media(min-width:640px){.steps-grid{grid-template-columns:repeat(3,1fr)}}.step{display:flex;flex-direction:column;align-items:center;text-align:center;padding:var(--space-6)}.step-number{width:40px;height:40px;border-radius:var(--radius-full);background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;margin-bottom:var(--space-4)}.step h4{font-weight:700;color:var(--text-primary);margin-bottom:var(--space-2)}.step p{font-size:.75rem;color:var(--text-tertiary)}.sources-title{font-size:1.875rem;font-weight:700;color:var(--text-primary);margin-bottom:var(--space-8)}.sources-grid{display:grid;gap:var(--space-4)}.source-card{background:var(--bg-card);padding:var(--space-6);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);border:1px solid var(--border-secondary);display:flex;align-items:center;justify-content:space-between;transition:border-color var(--transition-fast)}.source-card:hover{border-color:var(--accent)}.source-card-left{display:flex;align-items:center;gap:var(--space-4)}.source-icon{background:var(--bg-secondary);padding:var(--space-3);border-radius:var(--radius-md);color:var(--text-tertiary);transition:color var(--transition-fast)}.source-card:hover .source-icon{color:var(--accent)}.source-icon svg{width:20px;height:20px}.source-card h3{font-weight:700;color:var(--text-primary);transition:color var(--transition-fast)}.source-card:hover h3{color:var(--accent)}.source-card p{font-size:.875rem;color:var(--text-tertiary);margin-top:2px}.source-card-arrow{color:var(--text-tertiary);opacity:.5;transition:all var(--transition-fast)}.source-card:hover .source-card-arrow{color:var(--accent);opacity:1}.source-card-arrow svg{width:18px;height:18px}.note-box{margin-top:var(--space-12);background:var(--accent-light);padding:var(--space-8);border-radius:var(--radius-xl);border:1px solid var(--accent-border)}.note-box-inner{display:flex;gap:var(--space-4);align-items:flex-start}.note-box-icon{background:var(--accent);padding:var(--space-2);border-radius:var(--radius-sm);color:#fff;flex-shrink:0}.note-box-icon svg{width:20px;height:20px}.note-box h4{font-weight:700;color:var(--accent);margin-bottom:var(--space-2)}.note-box p{font-size:.875rem;color:var(--text-secondary);line-height:1.7}.admin-header{display:flex;align-items:center;gap:var(--space-4);margin-bottom:var(--space-8)}.admin-icon{width:48px;height:48px;background:var(--text-primary);border-radius:var(--radius-lg);display:flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--bg-primary)}.admin-icon svg{width:22px;height:22px}.admin-header h1{font-size:1.5rem;font-weight:700;color:var(--text-primary)}@media(min-width:640px){.admin-header h1{font-size:1.875rem}}.admin-header p{font-size:.875rem;color:var(--text-tertiary);margin-top:2px}.stats-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-3);margin-bottom:var(--space-8)}@media(min-width:640px){.stats-grid{grid-template-columns:repeat(4,1fr)}}.stat-card{background:var(--bg-card);border:1px solid var(--border-primary);border-radius:var(--radius-lg);padding:var(--space-4)}.stat-icon{width:32px;height:32px;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;margin-bottom:var(--space-3);color:#fff}.stat-icon svg{width:15px;height:15px}.stat-icon.blue{background:var(--accent)}.stat-icon.green{background:var(--green-solid)}.stat-icon.violet{background:#7c3aed}.stat-icon.amber{background:var(--amber-solid)}.stat-value{font-size:1.5rem;font-weight:900;color:var(--text-primary)}.stat-label{font-size:.75rem;color:var(--text-tertiary);margin-top:2px}.admin-section{background:var(--bg-card);border:1px solid var(--border-primary);border-radius:var(--radius-xl);overflow:hidden;margin-bottom:var(--space-6)}.admin-section-header{padding:var(--space-4) var(--space-6);border-bottom:1px solid var(--border-secondary)}.admin-section-header h2{font-weight:700;color:var(--text-primary);display:flex;align-items:center;gap:var(--space-2)}.admin-section-header h2 svg{width:16px;height:16px}.admin-section-header p{font-size:.75rem;color:var(--text-tertiary);margin-top:var(--space-1)}.city-list-item{width:100%;display:flex;align-items:center;gap:var(--space-3);padding:var(--space-4) var(--space-6);text-align:left;transition:background-color var(--transition-fast);border-bottom:1px solid var(--border-secondary)}.city-list-item:hover{background:var(--bg-hover)}.city-list-item:last-child{border-bottom:none}.city-dot{width:8px;height:8px;border-radius:var(--radius-full);flex-shrink:0}.city-dot.has-data{background:var(--green-solid)}.city-dot.no-data{background:var(--text-tertiary);opacity:.4}.city-name{font-weight:600;color:var(--text-primary);flex:1}.city-count{font-size:.75rem;color:var(--text-tertiary)}.city-chevron{color:var(--text-tertiary);margin-left:var(--space-1)}.city-chevron svg{width:14px;height:14px}.admin-route-list{padding:0 var(--space-6) var(--space-4);display:flex;flex-direction:column;gap:var(--space-2)}.admin-route-item{display:flex;align-items:center;gap:var(--space-3);background:var(--bg-secondary);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4)}.admin-route-number{font-size:.75rem;font-weight:700;background:var(--bg-active);color:var(--text-secondary);padding:2px 8px;border-radius:6px}.admin-route-info{flex:1;min-width:0}.admin-route-title{font-size:.875rem;font-weight:600;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-route-meta{font-size:.6875rem;color:var(--text-tertiary)}.code-block{border-radius:var(--radius-lg);overflow:hidden;border:1px solid var(--border-primary)}.code-block-header{display:flex;align-items:center;justify-content:space-between;padding:10px var(--space-4);background:#1e293b}.code-block-title{font-size:.75rem;color:#94a3b8;font-family:monospace}.copy-btn{display:flex;align-items:center;gap:6px;padding:6px 12px;background:#334155;border-radius:var(--radius-sm);color:#fff;font-size:.75rem;font-weight:500;transition:background-color var(--transition-fast)}.copy-btn:hover{background:#475569}.copy-btn svg{width:13px;height:13px}.code-block pre{background:#0f172a;color:#cbd5e1;padding:var(--space-5);overflow-x:auto;font-size:.75rem;font-family:SF Mono,Fira Code,monospace;line-height:1.7;white-space:pre-wrap}.field-table{width:100%;font-size:.875rem;min-width:520px}.field-table th{text-align:left;padding:var(--space-3) var(--space-4) var(--space-3) 0;font-size:.625rem;font-weight:700;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.1em}.field-table td{padding:10px var(--space-4) 10px 0;vertical-align:top;border-top:1px solid var(--border-secondary)}.field-name{font-size:.75rem;font-weight:700;color:var(--accent);font-family:monospace}.field-required{font-size:.5625rem;font-weight:700;color:var(--red-solid);text-transform:uppercase;margin-left:4px}.field-type{font-size:.625rem;font-family:monospace;color:var(--text-tertiary);background:var(--bg-tertiary);padding:2px 6px;border-radius:4px}.field-desc{font-size:.75rem;color:var(--text-secondary)}.official-banner{background:var(--accent);border-radius:var(--radius-xl);padding:var(--space-6);color:#fff}.official-banner-inner{display:flex;align-items:flex-start;gap:var(--space-4)}.official-banner h3{font-weight:700;margin-bottom:var(--space-1)}.official-banner p{font-size:.875rem;opacity:.85;margin-bottom:var(--space-4)}.official-banner-link{display:inline-flex;align-items:center;gap:var(--space-2);background:#fff3;padding:10px 16px;border-radius:var(--radius-md);font-weight:700;font-size:.875rem;transition:background-color var(--transition-fast)}.official-banner-link:hover{background:#ffffff4d}.official-banner-link svg{width:13px;height:13px}:root{--turn-left: #0284c7;--turn-right: #d97706;--turn-uturn: #dc2626;--turn-roundabout: #16a34a;--turn-straight: #64748b;--turn-start: #16a34a;--turn-finish: #dc2626;--route-gradient: linear-gradient(90deg, #2563eb, #7c3aed, #db2777)}[data-theme=dark]{--turn-left: #38bdf8;--turn-right: #fbbf24;--turn-uturn: #f87171;--turn-roundabout: #4ade80;--turn-straight: #94a3b8}.step-left{--turn: var(--turn-left)}.step-right{--turn: var(--turn-right)}.step-uturn{--turn: var(--turn-uturn)}.step-roundabout{--turn: var(--turn-roundabout)}.step-straight,.step-route{--turn: var(--turn-straight)}.step-start{--turn: var(--turn-start)}.step-finish{--turn: var(--turn-finish)}.route-arrow{width:14px;height:14px;display:flex;align-items:center;justify-content:center;pointer-events:none}.route-arrow svg{width:100%;height:100%;fill:none;stroke:#fff;stroke-width:4.5;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 0 1px rgba(15,23,42,.7))}.route-arrow-big{width:18px;height:18px}.step-marker{width:22px;height:22px;border-radius:var(--radius-full);background:var(--turn, var(--accent));border:2px solid #ffffff;box-shadow:var(--shadow-md);color:#fff;font-size:.625rem;font-weight:800;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:transform var(--transition-fast)}.step-marker:hover{transform:scale(1.15)}.step-marker.active{width:40px;height:40px;border-width:3px;box-shadow:0 0 0 6px color-mix(in srgb,var(--turn) 30%,transparent),var(--shadow-lg);animation:step-pop .25s ease}.step-marker.active svg{width:22px;height:22px}@keyframes step-pop{0%{transform:scale(.6)}to{transform:scale(1)}}.leaflet-tooltip.step-tooltip{background:var(--bg-card);color:var(--text-primary);border:1px solid var(--border-primary);border-radius:var(--radius-sm);box-shadow:var(--shadow-md);font-family:inherit;font-size:.75rem;padding:6px 10px}.leaflet-tooltip.step-tooltip:before{display:none}.marker-start svg,.marker-finish svg{width:15px;height:15px}.step-card{position:absolute;z-index:18;left:var(--space-3);right:68px;bottom:100px;display:grid;grid-template-columns:auto 1fr auto;align-items:stretch;gap:2px;background:var(--bg-card);border:1px solid var(--border-primary);border-radius:var(--radius-lg);box-shadow:var(--shadow-xl);overflow:hidden;animation:slideDown .25s ease}.step-card[hidden]{display:none}@media(min-width:1024px){.step-card{left:50%;right:auto;bottom:var(--space-6);width:min(520px,calc(100% - 160px));transform:translate(-50%)}}.step-card-nav{width:48px;display:flex;align-items:center;justify-content:center;color:var(--text-secondary);transition:background-color var(--transition-fast)}.step-card-nav:hover:not(:disabled){background:var(--bg-hover);color:var(--accent)}.step-card-nav:disabled{opacity:.3;cursor:default}.step-card-nav svg{width:22px;height:22px}.step-card-main{display:flex;align-items:center;gap:var(--space-3);padding:10px 4px;text-align:left;min-width:0}.step-card-icon{flex-shrink:0;width:44px;height:44px;border-radius:var(--radius-md);background:var(--turn, var(--accent));color:#fff;display:flex;align-items:center;justify-content:center}.step-card-icon svg{width:26px;height:26px}.step-card-text{display:flex;flex-direction:column;min-width:0}.step-card-counter{font-size:.6875rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--text-tertiary)}.step-card-action{font-size:1rem;font-weight:800;color:var(--text-primary);line-height:1.25}.step-card-detail{font-size:.8125rem;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.step-card-overview{grid-column:1 / -1;padding:7px;font-size:.75rem;font-weight:700;color:var(--accent);border-top:1px solid var(--border-primary);background:var(--bg-secondary)}.step-card-overview:hover{background:var(--accent-light)}.step-card-overview[hidden]{display:none}@media(max-width:1023px){body.has-step-card .leaflet-bottom.leaflet-left{margin-bottom:100px}}.sidebar-content.view-route .sidebar-filters,.sidebar-content.view-route .route-list-view{display:none}.route-details:empty{display:none}.route-details{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-3) var(--space-3) var(--space-4)}.route-details .section-header{padding:var(--space-2) var(--space-1) 0}.route-back{align-self:flex-start;display:inline-flex;align-items:center;gap:4px;padding:6px 10px 6px 6px;border-radius:var(--radius-sm);font-size:.8125rem;font-weight:600;color:var(--accent)}.route-back:hover{background:var(--accent-light)}.route-back svg{width:16px;height:16px}.route-detail-head{border:2px solid var(--accent);background:var(--accent-light);border-radius:var(--radius-lg);padding:var(--space-4)}.route-detail-title{font-size:1rem;font-weight:800;color:var(--text-primary);margin-bottom:var(--space-2);line-height:1.3}.route-detail-pdf{display:inline-flex;align-items:center;gap:6px;margin-top:var(--space-3);font-size:.75rem;font-weight:700;color:var(--accent)}.route-detail-pdf:hover{text-decoration:underline}.route-detail-pdf svg{width:14px;height:14px}.route-legend{display:flex;align-items:center;gap:var(--space-3);font-size:.6875rem;line-height:1.35;color:var(--text-tertiary)}.route-legend-bar{flex-shrink:0;width:44px;height:6px;border-radius:var(--radius-full);background:var(--route-gradient)}.route-loading{font-size:.8125rem;color:var(--text-tertiary);padding:var(--space-2) 0}.step-list{display:flex;flex-direction:column;gap:2px}.step-row{width:100%;display:flex;align-items:center;gap:var(--space-3);padding:8px 10px 8px 8px;border-radius:var(--radius-md);text-align:left;border:1px solid transparent;transition:background-color var(--transition-fast),border-color var(--transition-fast)}.step-row:hover{background:var(--bg-hover)}.step-row.active{background:var(--accent-light);border-color:var(--accent-border)}.step-row-icon{flex-shrink:0;width:32px;height:32px;border-radius:var(--radius-sm);background:var(--turn);color:#fff;display:flex;align-items:center;justify-content:center}.step-row-icon svg{width:18px;height:18px}.step-row-text{flex:1;min-width:0;display:flex;flex-direction:column}.step-row-text b{font-size:.8125rem;font-weight:700;color:var(--text-primary)}.step-row-text small{font-size:.75rem;color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.step-row-dist{flex-shrink:0;font-size:.6875rem;font-weight:600;color:var(--text-tertiary);font-variant-numeric:tabular-nums}.official-desc{border:1px solid var(--border-primary);border-radius:var(--radius-md);padding:var(--space-3);font-size:.75rem;color:var(--text-secondary);line-height:1.6}.official-desc summary{cursor:pointer;font-weight:700;color:var(--text-primary)}.official-desc p{margin-top:var(--space-2)}.official-turn{font-weight:800;color:var(--accent)}.practice-header{flex-wrap:wrap}.practice-status{margin-left:auto;font-size:.75rem;font-weight:700}.practice-on{color:var(--green-solid)}.practice-off{color:var(--red-solid)}.practice-muted{color:var(--text-tertiary)}.practice-next{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3);border-radius:var(--radius-md);background:var(--bg-secondary)}.practice-next-icon{flex-shrink:0;width:48px;height:48px;border-radius:var(--radius-md);background:var(--turn, var(--accent));color:#fff;display:flex;align-items:center;justify-content:center}.practice-next-icon:empty{background:var(--bg-tertiary)}.practice-next-icon svg{width:28px;height:28px}.practice-next-text{flex:1;min-width:0}.practice-next-action{font-size:.875rem;color:var(--text-primary);line-height:1.3}.practice-next-action span{display:block;color:var(--text-secondary);font-size:.75rem}.practice-next-dist{flex-shrink:0;font-size:1.125rem;font-weight:900;color:var(--accent);white-space:nowrap}.practice-body{display:none}.practice-card{display:flex;flex-direction:column;gap:var(--space-3)}.practice-header{margin-bottom:0}.review-panel{position:absolute;top:var(--space-4);right:var(--space-4);z-index:19;width:min(340px,calc(100% - 32px));background:var(--bg-card);border:1px solid var(--border-primary);border-left:4px solid var(--green-solid);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);font-size:.8125rem}.review-panel[hidden]{display:none}.review-panel.has-problems{border-left-color:var(--amber-solid)}.review-head{width:100%;display:flex;align-items:center;gap:var(--space-2);padding:10px 12px;font-weight:700;color:var(--text-primary);text-align:left}.review-title{flex:1}.review-count{font-weight:800;color:var(--amber-text)}.review-panel:not(.has-problems) .review-count{color:var(--green-text)}.review-caret{color:var(--text-tertiary);transition:transform var(--transition-fast)}.review-panel.collapsed .review-caret{transform:rotate(-90deg)}.review-panel.collapsed .review-body{display:none}.review-body{padding:0 12px 12px;max-height:min(46vh,420px);overflow-y:auto}.review-list{display:flex;flex-direction:column;gap:6px;margin-bottom:10px}.review-list li{position:relative;padding-left:16px;line-height:1.4;color:var(--text-secondary)}.review-list li:before{content:"⚠";position:absolute;left:0;color:var(--amber-solid);font-size:.75rem}.review-list li.ok:before{content:"✓";color:var(--green-solid)}.review-pdf-btn{width:100%;padding:8px;border-radius:var(--radius-sm);background:var(--accent-light);color:var(--accent);font-weight:700;font-size:.75rem}.review-pdf-btn:hover{background:var(--accent-border)}.review-pdf-btn[hidden]{display:none}.pdf-panel{position:absolute;top:0;right:0;bottom:0;width:46%;z-index:25;display:flex;flex-direction:column;background:var(--bg-secondary);border-left:1px solid var(--border-primary);box-shadow:var(--shadow-xl)}.pdf-panel[hidden]{display:none}.pdf-panel-head{display:flex;align-items:center;gap:var(--space-3);padding:8px 12px;border-bottom:1px solid var(--border-primary);background:var(--bg-card);font-size:.8125rem}.pdf-panel-title{flex:1;font-weight:700}.pdf-panel-open{color:var(--accent);font-weight:600}.pdf-panel-close{font-size:1rem;color:var(--text-secondary);padding:2px 6px;border-radius:var(--radius-sm)}.pdf-panel-close:hover{background:var(--bg-hover)}.pdf-panel-frame{flex:1;width:100%;border:0;background:#fff}@media(min-width:1024px){body.has-pdf-panel #map{right:46%}body.has-pdf-panel .review-panel,body.has-pdf-panel .map-fab-group,body.has-pdf-panel .compass{right:calc(46% + 16px)}body.has-pdf-panel .step-card{left:27%;width:min(460px,calc(54% - 40px))}}@media(max-width:1023px){.pdf-panel{width:100%;bottom:88px}}
