.journey-planner{max-width:1200px;margin:0 auto}.journey-planner-tabs{display:flex;gap:1rem;margin-bottom:2rem;border-bottom:2px solid var(--cftw-color-border)}.journey-planner-tabs .tab{padding:.75rem 1.5rem;background:none;border:none;border-bottom:3px solid transparent;font-size:1rem;font-weight:500;color:var(--cftw-color-text-secondary);cursor:pointer;transition:all .2s ease}.journey-planner-tabs .tab:hover:not(:disabled){color:var(--cftw-color-text-primary)}.journey-planner-tabs .tab.active{color:var(--cftw-color-primary);border-bottom-color:var(--cftw-color-primary)}.journey-planner-tabs .tab:disabled{opacity:.5;cursor:not-allowed}.journey-planner-search{display:grid;gap:2rem}.search-form{display:grid;gap:1.5rem;background:var(--cftw-color-surface);padding:2rem;border-radius:var(--cftw-radius-lg);box-shadow:var(--cftw-shadow-sm)}.form-group{display:flex;flex-direction:column;gap:.5rem}.form-group label{font-weight:500;color:var(--cftw-color-text-primary)}.form-group input[type=datetime-local],.form-group input[type=text]{width:100%;padding:.75rem 1rem;border:1px solid var(--cftw-color-border);border-radius:var(--cftw-radius-md);font-size:1rem;transition:border-color .2s ease}.form-group input:focus{outline:none;border-color:var(--cftw-color-primary);box-shadow:0 0 0 3px rgba(0,123,255,.1)}.swap-button{align-self:center;width:40px;height:40px;border-radius:50%;border:1px solid var(--cftw-color-border);background:var(--cftw-color-background);cursor:pointer;font-size:1.25rem;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.swap-button:hover{background:var(--cftw-color-surface-hover);border-color:var(--cftw-color-primary)}.mode-selector{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.75rem}.mode-option{display:flex;align-items:center;gap:.5rem;padding:.5rem;border-radius:var(--cftw-radius-sm);cursor:pointer;transition:background-color .2s ease}.mode-option:hover{background:var(--cftw-color-surface-hover)}.mode-option input[type=checkbox]{width:18px;height:18px;cursor:pointer}.mode-option span{display:flex;align-items:center;gap:.5rem}.checkbox-label{display:flex;align-items:center;gap:.75rem;cursor:pointer}.checkbox-label input[type=checkbox]{width:18px;height:18px;cursor:pointer}.search-button{width:100%;margin-top:1rem}.fare-info{background:var(--cftw-color-info-light);padding:1.5rem;border-radius:var(--cftw-radius-lg);border:1px solid var(--cftw-color-info)}.fare-info h3{margin:0 0 1rem;color:var(--cftw-color-text-primary)}.fare-info p{margin:0 0 1rem;line-height:1.6}.fare-links{display:flex;gap:1.5rem;flex-wrap:wrap}.journey-planner-results{display:grid;gap:1.5rem}.results-list{display:grid;gap:1rem}.journey-result{padding:1.5rem;transition:all .2s ease;cursor:pointer}.journey-result:hover{box-shadow:var(--cftw-shadow-md);transform:translateY(-2px)}.journey-header{justify-content:space-between;margin-bottom:1rem;padding-bottom:1rem;border-bottom:1px solid var(--cftw-color-border)}.journey-header,.journey-times{display:flex;align-items:center}.journey-times{gap:1rem;font-size:1.125rem;font-weight:500}.departure-time{color:var(--cftw-color-success)}.arrow{color:var(--cftw-color-text-secondary)}.arrival-time{color:var(--cftw-color-text-primary)}.journey-duration{font-size:1rem;color:var(--cftw-color-text-secondary);font-weight:500}.journey-legs{display:grid;gap:.75rem;margin-bottom:1rem}.journey-leg{display:flex;align-items:flex-start;gap:1rem;padding:.75rem;background:var(--cftw-color-background);border-radius:var(--cftw-radius-sm)}.mode-icon{font-size:1.5rem;line-height:1}.leg-details{flex:1;display:grid;gap:.25rem}.leg-line{font-weight:500;color:var(--cftw-color-text-primary)}.leg-stops{font-size:.875rem}.leg-description,.leg-stops{color:var(--cftw-color-text-secondary)}.leg-duration{font-size:.875rem;color:var(--cftw-color-text-tertiary)}.journey-fare{display:flex;justify-content:space-between;align-items:center;padding-top:1rem;border-top:1px solid var(--cftw-color-border);font-size:.875rem}.fare-zones{font-weight:500;color:var(--cftw-color-text-secondary)}.fare-amount{color:var(--cftw-color-text-primary)}.no-results{text-align:center;padding:3rem;color:var(--cftw-color-text-secondary)}.back-button{width:auto;align-self:flex-start}@media (max-width:768px){.search-form{padding:1.5rem}.mode-selector{grid-template-columns:1fr}.journey-header{flex-direction:column;align-items:flex-start;gap:.5rem}.journey-times{font-size:1rem}.fare-links{flex-direction:column;gap:.75rem}.journey-fare{flex-direction:column;align-items:flex-start;gap:.5rem}}:root{--tv-train-color:#0072ce;--tv-tram-color:#78be20;--tv-bus-color:#ff6900;--tv-vline-color:#8b4f9f}.journey-leg[data-mode=train] .mode-icon{color:var(--tv-train-color)}.journey-leg[data-mode=tram] .mode-icon{color:var(--tv-tram-color)}.journey-leg[data-mode=bus] .mode-icon{color:var(--tv-bus-color)}.journey-leg[data-mode=vline] .mode-icon{color:var(--tv-vline-color)}.view-map-button{width:100%;margin-top:1rem}.journey-planner-map{display:grid;gap:1.5rem}.map-container{background:var(--cftw-color-surface);border-radius:var(--cftw-radius-lg);overflow:hidden;box-shadow:var(--cftw-shadow-sm)}.map-placeholder{min-height:600px;display:flex;flex-direction:column}.map-header{padding:1.5rem;border-bottom:1px solid var(--cftw-color-border)}.map-header h3{margin:0 0 .5rem;color:var(--cftw-color-text-primary)}.map-header p{margin:0}.map-content{flex:1;padding:1.5rem;display:flex;align-items:center;justify-content:center;background:var(--cftw-color-background)}.journey-map-svg{width:100%;max-width:800px;height:auto;border:1px solid var(--cftw-color-border);border-radius:var(--cftw-radius-md);background:white}.map-legend{padding:1.5rem;border-top:1px solid var(--cftw-color-border)}.map-legend h4{margin:0 0 1rem;font-size:.875rem;text-transform:uppercase;color:var(--cftw-color-text-secondary)}.legend-items{display:flex;flex-wrap:wrap;gap:1.5rem}.legend-item{display:flex;align-items:center;gap:.5rem;font-size:.875rem;color:var(--cftw-color-text-secondary)}.legend-icon{width:16px;height:16px;border-radius:50%;display:inline-block}.map-info{padding:1.5rem;text-align:center;background:var(--cftw-color-info-light);border-top:1px solid var(--cftw-color-info)}.map-controls{display:flex;gap:1rem;justify-content:center}@media (max-width:768px){.map-content{padding:1rem}.legend-items{gap:1rem}.map-controls{flex-direction:column}.map-controls button{width:100%}}