body { background: #f1f4f9; font-family: 'Inter', system-ui, -apple-system, Roboto, sans-serif; }

#app-loader {
    position: fixed; inset: 0; background: #1e3c72;
    display: flex; align-items: center; justify-content: center; z-index: 9999;
}

/* Логин */
.auth-wrap {
    min-height: 100vh; display: flex; align-items: center; justify-content: center;
    background: linear-gradient(135deg, #1e3c72 0%, #2a5298 100%); padding: 1rem;
}
.auth-card { background: #fff; padding: 2rem 1.5rem; border-radius: 16px; box-shadow: 0 10px 30px rgba(0,0,0,.2); width: 100%; max-width: 380px; }

/* Шапка */
.app-header {
    background: linear-gradient(135deg, #1e3c72 0%, #2a5298 100%); color: #fff;
    padding: .85rem 1rem; display: flex; align-items: center; justify-content: space-between;
    position: sticky; top: 0; z-index: 100; box-shadow: 0 2px 8px rgba(0,0,0,.15);
}

/* Станция */
.station-block { border-radius: 12px; overflow: hidden; box-shadow: 0 2px 8px rgba(0,0,0,.05); background: #fff; }
.station-head {
    display: flex; align-items: center; gap: .25rem;
    background: #eef2f8; padding: .6rem .9rem; font-weight: 700; color: #1e3c72; font-size: .95rem;
}

/* Блок «время в билете не по расписанию»: время рейса меняли после продаж */
.station-head.stray { background: #fde2e2; color: #842029; }

/* Строка пассажира — крупная, для пальца */
.pax-row {
    display: flex; align-items: center; gap: .75rem;
    padding: .7rem .9rem; border-top: 1px solid #f0f2f6; cursor: pointer; transition: background .12s;
    -webkit-tap-highlight-color: transparent;
}
.pax-row:active { background: #eef4ff; }
.pax-row.boarded { background: #f0fbf3; }
.pax-seat {
    flex: 0 0 46px; height: 46px; border-radius: 10px;
    background: #1e3c72; color: #fff; font-weight: 700; font-size: 1.1rem;
    display: flex; align-items: center; justify-content: center;
}
.pax-row.boarded .pax-seat { background: #16a34a; }
.pax-check { flex: 0 0 auto; font-size: 1.6rem; }

.form-control-lg, .form-select-lg, .btn-lg { border-radius: 12px; }
