/* CDO Rail 0.3.4 — LAB-native composition.
 * LAB owns shared controls, route pair, reservation mode, notes, eyebrow and page shell.
 * Rail owns only rail-specific composition, fare calendar and journey result presentation. */
.cdo-rail-public,
.cdo-rail-public *{box-sizing:border-box}

.cdo-rail-public{
    width:100%;
    min-width:0;
    color:var(--cdo-ds-color-text);
    font-family:var(--cdo-ds-font-body);
}

.cdo-rail-surface{
    display:grid;
    gap:calc(var(--cdo-ds-space-lg) * 2);
    min-width:0;
}

.cdo-rail-search-flow{
    display:grid;
    min-width:0;
}

.cdo-rail-search-step{
    display:grid;
    gap:var(--cdo-ds-space-lg);
    min-width:0;
    padding-block:calc(var(--cdo-ds-space-lg) + var(--cdo-ds-space-sm));
}

.cdo-rail-search-step:first-child{padding-top:0}
.cdo-rail-search-step:last-child{padding-bottom:0}

.cdo-rail-search-step__body{
    display:grid;
    gap:var(--cdo-ds-space-md);
    min-width:0;
}

.cdo-rail-detail-grid{
    display:grid;
    grid-template-columns:repeat(auto-fit,minmax(calc(var(--cdo-ds-space-lg) * 10),1fr));
    gap:var(--cdo-ds-space-md);
    align-items:end;
    min-width:0;
}

.cdo-rail-search-action{
    display:flex;
    justify-content:flex-end;
}

.cdo-rail-search-button{
    min-width:calc(var(--cdo-ds-space-lg) * 9);
    cursor:pointer;
}

.cdo-rail-calendar,
.cdo-rail-results{
    display:grid;
    gap:var(--cdo-ds-space-md);
    min-width:0;
}

.cdo-rail-calendar-head,
.cdo-rail-results-head{
    display:flex;
    align-items:flex-end;
    justify-content:space-between;
    gap:var(--cdo-ds-space-md);
    min-width:0;
}

.cdo-rail-section-title{
    display:grid;
    gap:var(--cdo-ds-space-xs);
    min-width:0;
}

.cdo-rail-section-title h2{
    margin:0;
    color:var(--cdo-ds-color-heading);
    font-family:var(--cdo-ds-font-heading);
    font-size:calc(var(--cdo-ds-text-title) * 1.65);
    line-height:1.12;
    letter-spacing:-.03em;
    font-weight:var(--cdo-ds-weight-heading);
}

.cdo-rail-calendar-status,
.cdo-rail-results-meta{
    margin:0;
    color:var(--cdo-ds-color-muted);
    font-size:var(--cdo-ds-text-small);
    line-height:1.4;
    font-weight:400;
}

.cdo-rail-date-strip{
    display:grid;
    grid-template-columns:repeat(7,minmax(0,1fr));
    gap:var(--cdo-ds-space-sm);
    min-width:0;
}

.cdo-rail-date-card{
    all:unset;
    box-sizing:border-box;
    appearance:none;
    -webkit-appearance:none;
    display:grid;
    grid-template-rows:auto auto 1fr;
    align-items:center;
    justify-items:center;
    gap:var(--cdo-ds-space-xs);
    min-width:0;
    min-height:calc(var(--cdo-ds-space-lg) * 4.5);
    margin:0;
    padding:var(--cdo-ds-space-sm);
    border:1px solid var(--cdo-ds-color-border);
    border-radius:var(--cdo-ds-radius-control);
    background:var(--cdo-ds-color-surface);
    color:var(--cdo-ds-color-heading);
    box-shadow:none;
    cursor:pointer;
    font-family:var(--cdo-ds-font-body);
    text-align:center;
    transition:border-color .15s ease,background-color .15s ease,transform .15s ease;
}

.cdo-rail-date-card:hover{
    border-color:var(--cdo-ds-color-secondary);
    background:color-mix(in srgb,var(--cdo-ds-color-secondary) 7%,var(--cdo-ds-color-surface));
}

.cdo-rail-date-card:focus-visible{
    outline:2px solid var(--cdo-ds-color-secondary);
    outline-offset:2px;
}

.cdo-rail-date-card:active{transform:scale(.985)}

.cdo-rail-date-card.is-active{
    border-color:var(--cdo-ds-color-secondary);
    background:color-mix(in srgb,var(--cdo-ds-color-secondary) 10%,var(--cdo-ds-color-surface));
}

.cdo-rail-date-label,
.cdo-rail-date-from{
    color:var(--cdo-ds-color-muted);
    line-height:1.2;
    font-weight:var(--cdo-ds-weight-strong);
    text-transform:none;
    letter-spacing:.015em;
}
.cdo-rail-date-label{font-size:var(--cdo-ds-text-small)}
.cdo-rail-date-from{font-size:var(--cdo-ds-text-caption);margin-top:var(--cdo-ds-space-xs)}

.cdo-rail-date-price{
    align-self:center;
    color:var(--cdo-ds-color-heading);
    font-size:calc(var(--cdo-ds-text-title) * 1.25);
    line-height:1;
    font-weight:var(--cdo-ds-weight-heading);
    letter-spacing:-.02em;
}

.cdo-rail-date-card.is-active>.cdo-rail-date-price{color:var(--cdo-ds-color-secondary)}
.cdo-rail-date-card.is-unavailable{cursor:not-allowed;background:var(--cdo-ds-color-surface-soft)}
.cdo-rail-date-card.is-unavailable:hover{border-color:var(--cdo-ds-color-border);background:var(--cdo-ds-color-surface-soft)}

.cdo-rail-results-controls{
    display:grid;
    justify-items:end;
    gap:var(--cdo-ds-space-sm);
    width:min(100%,calc(var(--cdo-ds-space-lg) * 11));
    flex:0 0 auto;
}

.cdo-rail-sort-wrap{
    width:100%;
}

.cdo-rail-fees-toggle{
    display:inline-flex;
    align-items:center;
    justify-content:flex-end;
    gap:var(--cdo-ds-space-xs);
    color:var(--cdo-ds-color-text);
    font-size:var(--cdo-ds-text-small);
    line-height:1.35;
    font-weight:var(--cdo-ds-weight-strong);
    cursor:pointer;
    user-select:none;
}

.cdo-rail-fees-toggle>input{
    width:18px;
    height:18px;
    margin:0;
    flex:0 0 auto;
    accent-color:var(--cdo-ds-color-primary);
}

.cdo-rail-results-state{
    padding:var(--cdo-ds-space-md);
    border:1px solid var(--cdo-ds-color-border);
    border-radius:var(--cdo-ds-radius-control);
    background:var(--cdo-ds-color-surface-soft);
    color:var(--cdo-ds-color-muted);
    font-size:var(--cdo-ds-text-small);
    line-height:1.5;
}

.cdo-rail-results-state[hidden]{display:none}
.cdo-rail-results-state.is-error{color:var(--cdo-ds-color-danger);border-color:color-mix(in srgb,var(--cdo-ds-color-danger) 30%,var(--cdo-ds-color-border));background:color-mix(in srgb,var(--cdo-ds-color-danger) 6%,var(--cdo-ds-color-surface))}
.cdo-rail-results-state.is-loading{color:var(--cdo-ds-color-heading)}
.cdo-rail-results-state.is-empty{color:var(--cdo-ds-color-muted)}

.cdo-rail-journey-list{
    display:grid;
    gap:var(--cdo-ds-space-md);
    min-width:0;
}

.cdo-rail-result-card{
    overflow:hidden;
    min-width:0;
    border:1px solid var(--cdo-ds-color-border);
    border-radius:var(--cdo-ds-radius-card);
    background:var(--cdo-ds-color-surface);
    color:var(--cdo-ds-color-heading);
    box-shadow:none;
}

.cdo-rail-result-top{
    display:grid;
    grid-template-columns:minmax(0,1fr) minmax(calc(var(--cdo-ds-space-lg) * 8),1.2fr) minmax(0,1fr);
    align-items:center;
    gap:var(--cdo-ds-space-md);
    padding:var(--cdo-ds-space-md) var(--cdo-ds-space-lg);
    border-bottom:1px solid var(--cdo-ds-color-border);
}

.cdo-rail-result-time{
    display:grid;
    gap:var(--cdo-ds-space-xs);
    min-width:0;
}

.cdo-rail-result-time:last-child{text-align:right}


.cdo-rail-result-time-label{
    color:var(--cdo-ds-color-muted);
    font-size:var(--cdo-ds-text-caption);
    line-height:1.1;
    font-weight:var(--cdo-ds-weight-strong);
    text-transform:uppercase;
    letter-spacing:.055em;
}

.cdo-rail-result-time>strong{
    color:var(--cdo-ds-color-heading);
    font-size:calc(var(--cdo-ds-text-title) * 1.55);
    line-height:1;
    font-weight:var(--cdo-ds-weight-heading);
    letter-spacing:-.035em;
}

.cdo-rail-result-time>span{
    overflow:hidden;
    color:var(--cdo-ds-color-muted);
    font-size:var(--cdo-ds-text-small);
    line-height:1.3;
    text-overflow:ellipsis;
    white-space:nowrap;
}

.cdo-rail-result-path{
    display:grid;
    grid-template-rows:auto auto auto;
    align-items:center;
    justify-items:center;
    gap:var(--cdo-ds-space-xs);
    min-width:0;
    color:var(--cdo-ds-color-muted);
    text-align:center;
}

.cdo-rail-result-path>span,
.cdo-rail-result-path>small{
    font-size:var(--cdo-ds-text-small);
    line-height:1.25;
}

.cdo-rail-result-path>i{
    display:block;
    width:100%;
    height:1px;
    background:var(--cdo-ds-color-neutral-border);
}

.cdo-rail-result-fares{
    display:grid;
    grid-template-columns:repeat(auto-fit,minmax(calc(var(--cdo-ds-space-lg) * 9),1fr));
    min-width:0;
}

.cdo-rail-public-fare{
    all:unset;
    box-sizing:border-box;
    appearance:none;
    -webkit-appearance:none;
    width:100%;
    margin:0;
    border-top:0;
    border-bottom:0;
    border-left:0;
    text-align:left;
    font:inherit;
    cursor:pointer;
    display:grid;
    gap:var(--cdo-ds-space-sm);
    min-width:0;
    padding:var(--cdo-ds-space-md) var(--cdo-ds-space-lg);
    border-right:1px solid var(--cdo-ds-color-border);
    border-bottom:1px solid var(--cdo-ds-color-border);
    background:var(--cdo-ds-color-surface);
}

.cdo-rail-public-fare:last-child{border-right:0}
.cdo-rail-public-fare:hover{background:color-mix(in srgb,var(--cdo-ds-color-secondary) 5%,var(--cdo-ds-color-surface))}
.cdo-rail-public-fare:focus-visible{outline:none;background:color-mix(in srgb,var(--cdo-ds-color-secondary) 7%,var(--cdo-ds-color-surface))}
.cdo-rail-public-fare.is-selected{background:color-mix(in srgb,var(--cdo-ds-color-success) 11%,var(--cdo-ds-color-surface))}
.cdo-rail-public-fare:disabled{cursor:not-allowed;opacity:.55}
.cdo-rail-fare-action{display:inline-flex;align-items:center;gap:var(--cdo-ds-space-xs);margin-top:var(--cdo-ds-space-sm);color:var(--cdo-ds-color-primary);font-size:var(--cdo-ds-text-caption);font-weight:var(--cdo-ds-weight-strong);text-transform:uppercase;letter-spacing:.025em}
.cdo-rail-public-fare.is-selected .cdo-rail-fare-action{color:var(--cdo-ds-color-success)}
.cdo-rail-fare-action>i{font-size:1em;line-height:1}
.cdo-rail-public-fare.is-loading{cursor:progress;background:color-mix(in srgb,var(--cdo-ds-color-secondary) 5%,var(--cdo-ds-color-surface))}

.cdo-rail-fare-label{
    display:grid;
    gap:2px;
}

.cdo-rail-fare-label>span{
    color:var(--cdo-ds-color-heading);
    font-size:var(--cdo-ds-text-body);
    line-height:1.2;
    font-weight:var(--cdo-ds-weight-heading);
}

.cdo-rail-fare-label>small,
.cdo-rail-fare-main>span,
.cdo-rail-fare-child,
.cdo-rail-fare-bottom{
    color:var(--cdo-ds-color-muted);
    font-size:var(--cdo-ds-text-caption);
    line-height:1.35;
}

.cdo-rail-fare-main{
    display:grid;
    gap:var(--cdo-ds-space-xs);
}

.cdo-rail-fare-price-row{
    display:flex;
    align-items:baseline;
    gap:var(--cdo-ds-space-sm);
    flex-wrap:wrap;
}

.cdo-rail-fare-price-row>strong{
    color:var(--cdo-ds-color-heading);
    font-size:calc(var(--cdo-ds-text-title) * 1.55);
    line-height:1;
    font-weight:var(--cdo-ds-weight-heading);
    letter-spacing:-.035em;
}

.cdo-rail-fare-price-row>del{
    color:var(--cdo-ds-color-muted);
    font-size:var(--cdo-ds-text-small);
}

.cdo-rail-fare-child>strong{color:var(--cdo-ds-color-heading);font-weight:var(--cdo-ds-weight-strong)}

.cdo-rail-fare-bottom{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:var(--cdo-ds-space-sm);
    flex-wrap:wrap;
}

.cdo-rail-fare-seat{
    display:inline-flex;
    align-items:center;
    padding:calc(var(--cdo-ds-space-xs) / 2) var(--cdo-ds-space-xs);
    border-radius:var(--cdo-ds-radius-pill);
    background:color-mix(in srgb,var(--cdo-ds-color-warning) 13%,var(--cdo-ds-color-surface));
    color:color-mix(in srgb,var(--cdo-ds-color-warning) 72%,var(--cdo-ds-color-heading));
    font-size:var(--cdo-ds-text-caption);
    font-weight:var(--cdo-ds-weight-strong);
    line-height:1.2;
}

.cdo-rail-result-note,
.cdo-rail-no-fares{
    padding:var(--cdo-ds-space-sm) var(--cdo-ds-space-lg);
    background:var(--cdo-ds-color-surface-soft);
    color:var(--cdo-ds-color-muted);
    font-size:var(--cdo-ds-text-caption);
    line-height:1.45;
}

.cdo-rail-commerce{
    display:grid;
    gap:var(--cdo-ds-space-md);
    min-width:0;
    padding-top:0;
    scroll-margin-top:calc(var(--cdo-ds-space-lg) * 4);
}

.cdo-rail-commerce[hidden]{display:none}

.cdo-rail-commerce-head{
    display:flex;
    align-items:flex-end;
    justify-content:space-between;
    gap:var(--cdo-ds-space-md);
}

.cdo-rail-selection-list{
    display:grid;
    grid-template-columns:repeat(auto-fit,minmax(calc(var(--cdo-ds-space-lg) * 12),1fr));
    gap:var(--cdo-ds-space-sm);
    min-width:0;
}

.cdo-rail-selection-card{
    display:grid;
    gap:var(--cdo-ds-space-sm);
    min-width:0;
    padding:var(--cdo-ds-space-md);
    border:1px solid var(--cdo-ds-color-border);
    border-radius:var(--cdo-ds-radius-card);
    background:var(--cdo-ds-color-surface);
    box-shadow:none;
}

.cdo-rail-selection-card__top{
    display:grid;
    gap:var(--cdo-ds-space-xs);
}

.cdo-rail-selection-card__top>span{
    color:var(--cdo-ds-color-primary);
    font-size:var(--cdo-ds-text-caption);
    line-height:1.2;
    font-weight:var(--cdo-ds-weight-strong);
    text-transform:uppercase;
    letter-spacing:.04em;
}

.cdo-rail-selection-card__top>strong{
    color:var(--cdo-ds-color-heading);
    font-size:var(--cdo-ds-text-body);
    line-height:1.25;
    font-weight:var(--cdo-ds-weight-heading);
}

.cdo-rail-selection-card__meta{
    display:flex;
    flex-wrap:wrap;
    gap:var(--cdo-ds-space-xs) var(--cdo-ds-space-md);
    color:var(--cdo-ds-color-muted);
    font-size:var(--cdo-ds-text-caption);
    line-height:1.4;
}

.cdo-rail-selection-card__price{
    display:flex;
    align-items:flex-end;
    justify-content:space-between;
    gap:var(--cdo-ds-space-md);
    padding-top:var(--cdo-ds-space-sm);
    border-top:1px solid var(--cdo-ds-color-border);
}

.cdo-rail-selection-card__price>small{
    color:var(--cdo-ds-color-muted);
    font-size:var(--cdo-ds-text-caption);
}

.cdo-rail-selection-card__price>strong{
    color:var(--cdo-ds-color-heading);
    font-size:calc(var(--cdo-ds-text-title) * 1.25);
    line-height:1;
    font-weight:var(--cdo-ds-weight-heading);
    letter-spacing:-.025em;
}

.cdo-rail-payment-wrap{
    display:block;
    width:100%;
    min-width:0;
}

.cdo-rail-payment-wrap[hidden]{display:none}
.cdo-rail-payment-mount{width:100%;min-width:0}

.cdo-rail-return-results{
    display:grid;
    gap:var(--cdo-ds-space-md);
    margin-top:calc(var(--cdo-ds-space-lg) * 2);
    padding-top:calc(var(--cdo-ds-space-lg) * 2);
    border-top:1px solid var(--cdo-ds-color-border);
}

.cdo-rail-return-results[hidden]{display:none}

@media(max-width:760px){
    .cdo-rail-surface{gap:calc(var(--cdo-ds-space-lg) + var(--cdo-ds-space-md))}
    .cdo-rail-search-step{padding-block:var(--cdo-ds-space-lg)}
    .cdo-rail-detail-grid{grid-template-columns:1fr}
    .cdo-rail-search-action{display:grid;justify-content:stretch}
    .cdo-rail-search-button{width:100%;min-width:0}
    .cdo-rail-calendar-head,.cdo-rail-results-head{align-items:stretch;flex-direction:column}
    .cdo-rail-results-controls,.cdo-rail-sort-wrap{width:100%}
    .cdo-rail-results-controls{justify-items:stretch}
    .cdo-rail-fees-toggle{justify-content:flex-start}
    .cdo-rail-date-strip{
        grid-template-columns:none;
        grid-auto-flow:column;
        grid-auto-columns:minmax(calc(var(--cdo-ds-space-lg) * 6),1fr);
        overflow-x:auto;
        overscroll-behavior-inline:contain;
        padding-bottom:var(--cdo-ds-space-xs);
    }
    .cdo-rail-result-top{grid-template-columns:1fr auto 1fr;padding:var(--cdo-ds-space-md)}
    .cdo-rail-result-path{min-width:calc(var(--cdo-ds-space-lg) * 4)}
    .cdo-rail-result-path>small{font-size:var(--cdo-ds-text-caption)}
    .cdo-rail-result-fares{grid-template-columns:1fr}
    .cdo-rail-public-fare{border-right:0;padding:var(--cdo-ds-space-md)}
    .cdo-rail-result-note,.cdo-rail-no-fares{padding:var(--cdo-ds-space-sm) var(--cdo-ds-space-md)}
    .cdo-rail-selection-list{grid-template-columns:1fr}
    .cdo-rail-selection-card__price{align-items:flex-start;flex-direction:column}
}

/* 0.5.4 — surgical fare hover isolation only.
 * Prevent Products/theme hover rules from drawing the purple outline while preserving
 * the 0.5.2 visual baseline for focus, active state, geometry and date cards. */
.cdo-products-wrap .cdo-rail-public button.cdo-rail-public-fare:hover{
    border-width:0 1px 1px 0;
    border-color:var(--cdo-ds-color-border);
    outline:0;
    box-shadow:none;
}
.cdo-products-wrap .cdo-rail-public button.cdo-rail-public-fare:last-child:hover{
    border-right-width:0;
}
@media(max-width:760px){
    .cdo-products-wrap .cdo-rail-public button.cdo-rail-public-fare:hover{border-right-width:0}
}

/* 0.6.1 commerce bridge: Rail owns only row/status composition.
 * The CTA itself is rendered by LAB/Products in embedded context and must not
 * receive Rail visual overrides. */
.cdo-rail-public .cdo-rail-cart-action{
    display:flex;
    align-items:center;
    gap:12px;
    flex-wrap:wrap;
    margin-top:16px;
}
.cdo-rail-public .cdo-rail-cart-action[hidden]{display:none;}
.cdo-rail-public .cdo-rail-cart-status{
    margin:0;
    font-size:13px;
    line-height:1.45;
    color:var(--cdo-ds-color-muted);
}
