:root {
    --gp-gradient-home: linear-gradient(135deg, #2563eb 0%, #4f46e5 48%, #7c3aed 100%);
    --gp-gradient-go: linear-gradient(110deg, #047857 0%, #0f766e 52%, #2563eb 100%);
    --gp-gradient-watch: linear-gradient(110deg, #0e7490 0%, #2563eb 52%, #7c3aed 100%);
    --gp-gradient-quiet: linear-gradient(110deg, #475569 0%, #4f46e5 100%);
}

*, *::before, *::after {
    box-sizing: border-box;
}

body {
    margin: 0;
    background: #0b1020;
    color: #e5e7eb;
    font-family: Inter, Arial, Helvetica, sans-serif;
    line-height: 1.5;
}

a {
    color: #7dd3fc;
    text-decoration: none;
}

a:hover {
    text-decoration: underline;
}

.site-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    padding: 16px 24px;
    background: #111827;
    border-bottom: 1px solid #1f2937;
    position: sticky;
    top: 0;
    z-index: 20;
}

.brand {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.brand strong {
    font-size: 1.25rem;
}

.tagline {
    color: #94a3b8;
    font-size: 0.85rem;
}

.site-header nav:not(.site-nav) {
    display: flex;
    gap: 14px;
    flex-wrap: wrap;
    align-items: center;
}

.site-header nav:not(.site-nav) a {
    color: #cbd5e1;
}

.site-header nav:not(.site-nav) a.active,
.site-header nav:not(.site-nav) a.cta-link {
    color: #fff;
    background: #0284c7;
    padding: 8px 12px;
    border-radius: 999px;
    text-decoration: none;
}

.page {
    max-width: 100%;
    margin: 0 auto;
    padding: 24px;
}

body.map-page {
    background: #f8fafc;
    color: #0f172a;
}

body.map-page a {
    color: #0369a1;
}

body.map-page .site-header {
    background: #ffffff;
    border-bottom-color: #d1d5db;
    color: #0f172a;
}

body.map-page .site-header nav a {
    color: #475569;
}

body.map-page .site-header nav a.active,
body.map-page .site-header nav a.cta-link {
    color: #fff;
    background: #0369a1;
}

body.map-page .page {
    background: #f8fafc;
    padding: 0;
}

body.map-page #map {
    background: #ffffff;
}

body.map-page .radar-box {
    background: rgba(255,255,255,0.96);
    color: #0f172a;
    border-color: #cbd5e1;
    box-shadow: 0 16px 48px rgba(15, 23, 42, 0.08);
}

.hero {
    display: grid;
    grid-template-columns: 1.2fr 0.8fr;
    gap: 32px;
    margin-bottom: 32px;
    padding: 32px 28px;
    background: linear-gradient(135deg, rgba(2, 132, 199, 0.15) 0%, rgba(168, 85, 247, 0.1) 100%);
    border-radius: 24px;
    border: 1px solid rgba(100, 116, 139, 0.2);
}

.hero-copy h1 {
    font-size: clamp(1.8rem, 3.5vw, 2.4rem);
    margin: 0 0 12px;
    background: linear-gradient(135deg, #e0f2fe 0%, #ddd6fe 100%);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
    font-weight: 800;
}

.hero-copy p {
    color: #cbd5e1;
    max-width: 52ch;
    font-size: 1.05rem;
    line-height: 1.6;
}

.badge {
    display: inline-block;
    background: linear-gradient(135deg, #172554 0%, #1e3a5f 100%);
    color: #93c5fd;
    padding: 6px 14px;
    border-radius: 999px;
    font-size: 0.85rem;
    margin-bottom: 14px;
    border: 1px solid rgba(147, 197, 253, 0.2);
    font-weight: 600;
}

.hero-actions {
    display: flex;
    gap: 16px;
    flex-wrap: wrap;
    margin-top: 24px;
}

.button {
    display: inline-block;
    background: linear-gradient(135deg, #0284c7 0%, #0369a1 100%);
    color: #fff;
    padding: 14px 24px;
    border-radius: 14px;
    text-decoration: none;
    border: none;
    cursor: pointer;
    font-weight: 600;
    font-size: 0.95rem;
    transition: all 0.3s ease;
    box-shadow: 0 4px 16px rgba(2, 132, 199, 0.3);
}

.button:hover {
    transform: translateY(-2px);
    box-shadow: 0 6px 24px rgba(2, 132, 199, 0.5);
    background: linear-gradient(135deg, #0369a1 0%, #034e89 100%);
}

.button.ghost {
    background: transparent;
    border: 2px solid #7dd3fc;
    color: #7dd3fc;
    box-shadow: none;
}

.button.ghost:hover {
    background: rgba(125, 211, 252, 0.1);
    border-color: #38bdf8;
}

.hero-card,
.panel,
.promo-box,
.card,
.login-box {
    background: linear-gradient(135deg, #111827 0%, #0f172a 100%);
    border: 1px solid rgba(147, 197, 253, 0.15);
    border-radius: 20px;
    padding: 28px;
    backdrop-filter: blur(10px);
    box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3);
    transition: all 0.3s ease;
}

.hero-card {
    border: 2px solid rgba(2, 132, 199, 0.3);
}

.hero-card h2 {
    font-size: 1.3rem;
    margin: 0 0 16px;
    color: #e0f2fe;
}

.hero-card:hover {
    border-color: rgba(2, 132, 199, 0.6);
    box-shadow: 0 12px 40px rgba(2, 132, 199, 0.2);
}

.checklist {
    margin: 0;
    padding-left: 20px;
    color: #cbd5e1;
    list-style: none;
}

.checklist li {
    padding: 8px 0;
    position: relative;
    font-size: 1rem;
}

.checklist li:before {
    content: "✓";
    position: absolute;
    left: -20px;
    color: #22c55e;
    font-weight: 700;
}

.panel {
    margin-bottom: 32px;
}

.panel-head {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 16px;
    flex-wrap: wrap;
    margin-bottom: 20px;
}

.panel h2 {
    font-size: 1.5rem;
    margin: 0;
    color: #e0f2fe;
}

.station-tabs {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
}

.station-tab {
    display: inline-block;
    background: #0f172a;
    color: #cbd5e1;
    border: 1px solid #334155;
    border-radius: 999px;
    padding: 8px 12px;
    cursor: pointer;
    text-decoration: none;
}

.station-tab.active {
    background: #0284c7;
    border-color: #0284c7;
    color: #fff;
}

.train-board {
    overflow-x: auto;
}

.train-head,
.train-row {
    display: grid;
    grid-template-columns: 70px 1.2fr 1fr 80px;
    gap: 10px;
    padding: 10px 0;
    border-bottom: 1px solid #1f2937;
    min-width: 520px;
}

.train-head {
    color: #94a3b8;
    font-size: 0.85rem;
}

.train-row.delayed {
    color: #fca5a5;
}

.demand-strip {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
    margin-bottom: 16px;
}

.demand-chip {
    background: #0f172a;
    border: 1px solid #334155;
    border-radius: 12px;
    padding: 10px 14px;
    min-width: 110px;
}

.demand-chip strong {
    display: block;
}

.demand-chip.level-green { border-color: #22c55e; }
.demand-chip.level-yellow { border-color: #f59e0b; }
.demand-chip.level-red { border-color: #ef4444; }
.demand-chip.level-purple { border-color: #a855f7; }

.two-col {
    display: grid;
    grid-template-columns: 1.2fr 0.8fr;
    gap: 24px;
}

.two-col > div > h2 {
    font-size: 1.3rem;
    margin: 0 0 20px;
    color: #e0f2fe;
}

.event-list {
    display: flex;
    flex-direction: column;
    gap: 12px;
    margin-bottom: 16px;
}

.event-item {
    display: grid;
    grid-template-columns: 100px 1fr;
    gap: 14px;
    padding: 14px;
    border-bottom: none;
    background: rgba(15, 23, 42, 0.6);
    border-radius: 12px;
    border: 1px solid rgba(147, 197, 253, 0.1);
    transition: all 0.2s ease;
}

.event-item:hover {
    background: rgba(15, 23, 42, 1);
    border-color: rgba(147, 197, 253, 0.3);
}

.event-time {
    color: #38bdf8;
    font-weight: 700;
    font-size: 1rem;
}

.event-item strong {
    color: #e0f2fe;
}

/* Compact train list na starcie */
.train-list-compact {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.train-row-compact {
    display: grid;
    grid-template-columns: 70px 1fr 80px;
    gap: 12px;
    align-items: center;
    padding: 12px;
    background: rgba(15, 23, 42, 0.6);
    border-radius: 10px;
    border-left: 3px solid #0284c7;
    transition: all 0.2s ease;
}

.train-row-compact:hover {
    background: rgba(15, 23, 42, 1);
    border-left-color: #38bdf8;
    transform: translateX(4px);
}

.trc-time {
    font-size: 0.95rem;
    color: #e0f2fe;
}

.trc-meta {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.trc-train {
    font-size: 0.9rem;
    color: #e0f2fe;
    font-weight: 600;
}

.trc-route {
    font-size: 0.75rem;
    color: #94a3b8;
}

.muted {
    color: #94a3b8;
}

.small {
    font-size: 0.85rem;
}

.notice {
    background: #451a03;
    border: 1px solid #92400e;
    padding: 12px;
    border-radius: 12px;
}

.site-footer {
    max-width: 1280px;
    margin: 0 auto;
    color: #64748b;
    font-size: 0.78rem;
}

.site-footer p {
    margin: 0;
}

.site-footer a {
    color: #60a5fa;
    font-weight: 750;
    text-decoration: none;
}

.site-footer a:hover,
.site-footer a:focus-visible {
    color: #a5b4fc;
    text-decoration: underline;
    text-underline-offset: 3px;
}

.site-footer--desktop {
    margin-top: 18px;
    padding: 22px 24px 0;
    overflow: hidden;
    border: 1px solid rgba(125, 211, 252, 0.18);
    border-radius: 20px 20px 0 0;
    background:
        linear-gradient(120deg, rgba(56, 189, 248, 0.05), transparent 34%, rgba(139, 92, 246, 0.06)),
        rgba(8, 15, 30, 0.96);
    box-shadow: 0 -8px 34px rgba(2, 8, 23, 0.2);
}

.site-footer__grid {
    display: grid;
    grid-template-columns: minmax(260px, 1.35fr) minmax(280px, 1.15fr) minmax(190px, 0.8fr);
    gap: 30px;
    align-items: start;
}

.site-footer__brand-line {
    display: flex;
    align-items: center;
    gap: 11px;
}

.site-footer__logo {
    display: grid;
    width: 42px;
    height: 42px;
    place-items: center;
    flex: 0 0 auto;
    border: 1px solid rgba(129, 140, 248, 0.34);
    border-radius: 13px;
    background: var(--gp-gradient-home);
    font-size: 1.2rem;
    box-shadow: 0 6px 18px rgba(79, 70, 229, 0.25);
}

.site-footer__brand-line strong,
.site-footer__brand-line small {
    display: block;
}

.site-footer__brand-line strong {
    color: #f8fafc;
    font-size: 1rem;
}

.site-footer__brand-line small {
    margin-top: 1px;
    color: #94a3b8;
    font-size: 0.68rem;
}

.site-footer__brand p {
    max-width: 440px;
    margin-top: 11px;
    color: #8191a7;
    font-size: 0.72rem;
    line-height: 1.55;
}

.site-footer__nav > strong,
.site-footer__system > strong {
    display: block;
    margin-bottom: 9px;
    color: #cbd5e1;
    font-size: 0.68rem;
    font-weight: 900;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

.site-footer__nav > div {
    display: flex;
    flex-wrap: wrap;
    gap: 7px 16px;
}

.site-footer__nav a,
.site-footer__system span,
.site-footer__system a {
    font-size: 0.72rem;
}

.site-footer__system {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 5px;
}

.site-footer__system > strong {
    margin-bottom: 4px;
}

.site-footer__system span {
    color: #94a3b8;
}

.site-footer__system i {
    display: inline-block;
    width: 7px;
    height: 7px;
    margin-right: 5px;
    border-radius: 50%;
    background: #22c55e;
    box-shadow: 0 0 9px rgba(34, 197, 94, 0.65);
}

.site-footer__bottom {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    margin-top: 18px;
    padding: 10px 0;
    border-top: 1px solid rgba(148, 163, 184, 0.12);
    color: #65758b;
    font-size: 0.66rem;
}

.site-footer__bottom a,
.site-footer--mobile a {
    color: inherit;
    text-decoration: none;
}

.site-footer__bottom a:hover,
.site-footer--mobile a:hover {
    color: #7dd3fc;
}

.site-footer--mobile {
    display: none;
}

@media (max-width: 767px) {
    .site-footer--desktop {
        display: none;
    }

    .site-footer--mobile {
        display: block;
        margin: 0;
        padding: 9px 12px max(9px, env(safe-area-inset-bottom));
        border-top: 1px solid rgba(148, 163, 184, 0.12);
        color: #64748b;
        font-size: 0.68rem;
        text-align: center;
    }

    .site-footer--mobile p {
        margin: 2px 0;
    }
}

.login-box {
    width: min(420px, calc(100% - 32px));
    margin: 80px auto;
}

input,
button,
select {
    width: 100%;
    padding: 14px;
    margin: 10px 0;
    border-radius: 10px;
    border: 1px solid #334155;
    background: #0f172a;
    color: #fff;
}

button {
    background: #0284c7;
    border: none;
    cursor: pointer;
}

.error {
    background: #7f1d1d;
    padding: 10px;
    border-radius: 10px;
    margin: 10px 0;
}

.auth-body {
    min-height: 100vh;
    background: #0b1020;
}

.auth-top {
    max-width: 1100px;
    margin: 0 auto;
    padding: 16px 20px;
}

.auth-brand {
    display: inline-flex;
    flex-direction: column;
    gap: 2px;
    text-decoration: none;
    color: inherit;
}

.auth-brand strong {
    font-size: 1rem;
    color: #f8fafc;
}

.auth-brand span {
    font-size: 0.72rem;
    color: #94a3b8;
}

.auth-page {
    display: flex;
    align-items: flex-start;
    justify-content: center;
    padding: 12px 16px 32px;
}

.auth-box {
    width: min(440px, 100%);
    margin: 0;
    padding: 24px 22px;
}

.auth-box h1 {
    margin: 0 0 8px;
    font-size: 1.35rem;
    color: #f8fafc;
}

.auth-box .muted {
    margin: 0 0 16px;
    font-size: 0.88rem;
    color: #94a3b8;
    line-height: 1.45;
}

.auth-form {
    margin-top: 4px;
}

.form-field {
    display: block;
    margin-bottom: 4px;
}

.form-label {
    display: block;
    margin: 0 0 6px;
    font-size: 0.78rem;
    font-weight: 600;
    color: #cbd5e1;
}

.optional-label {
    color: #64748b;
    font-size: 0.72rem;
    font-weight: normal;
    margin-left: 4px;
}

.auth-form input,
.auth-form select,
.auth-form button {
    margin: 0;
}

.auth-form .btn-primary,
.auth-form button[type="submit"] {
    margin-top: 14px;
    font-weight: 700;
}

.plan-summary {
    margin: 16px 0 20px;
    padding: 0;
    list-style: none;
}

.plan-summary li {
    padding: 6px 0;
    color: #cbd5e1;
    font-size: 0.9rem;
}

.form-check {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    margin: 14px 0 4px;
    font-size: 0.76rem;
    color: #94a3b8;
    line-height: 1.4;
    cursor: pointer;
}

.form-check input {
    width: auto;
    margin: 3px 0 0;
    flex-shrink: 0;
}

.auth-switch {
    margin: 18px 0 0;
    text-align: center;
    font-size: 0.86rem;
    color: #94a3b8;
}

.auth-switch a {
    font-weight: 600;
}

.auth-forgot {
    margin: 2px 0 0;
    text-align: right;
    font-size: .8rem;
}

.auth-forgot a {
    color: #7dd3fc;
    font-weight: 700;
}

.auth-notice--success {
    margin: 12px 0;
    color: #bbf7d0;
    background: rgba(20, 83, 45, .72);
    border-color: rgba(74, 222, 128, .55);
    line-height: 1.45;
}

.auth-security-note,
.auth-password-rules {
    margin: 14px 0 0;
    padding: 11px 13px;
    border: 1px solid #7dd3fc;
    border-radius: 13px;
    background: linear-gradient(135deg, #e0f2fe 0%, #dbeafe 100%);
    color: #0c4a6e;
    font-size: .79rem;
    font-weight: 700;
    line-height: 1.45;
    box-shadow: inset 0 1px 0 rgba(255,255,255,.8), 0 5px 14px rgba(14,116,144,.08);
}
.auth-password-rules { margin: 7px 0 12px; }
.auth-password-rules strong { color: #082f49; font-weight: 900; }

.auth-honeypot {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    overflow: hidden !important;
    clip: rect(0, 0, 0, 0) !important;
    clip-path: inset(50%) !important;
    white-space: nowrap !important;
}

.auth-footer {
    text-align: center;
    padding: 8px 16px max(10px, env(safe-area-inset-bottom));
}

.coming-soon {
    max-width: 520px;
    margin: 24px auto 40px;
    padding: 36px 28px;
    text-align: center;
    background: var(--panel);
    border: 1px solid var(--border);
    border-radius: 22px;
    box-shadow: 0 16px 40px rgba(2, 8, 23, 0.2);
}

.coming-soon--compact {
    max-width: none;
    margin: 0 0 24px;
    padding: 20px 18px;
    text-align: left;
}

.coming-soon-icon {
    font-size: 2.8rem;
    line-height: 1;
    margin-bottom: 12px;
}

.coming-soon h1 {
    margin: 0 0 12px;
    font-size: clamp(1.8rem, 5vw, 2.4rem);
    color: #f8fafc;
    letter-spacing: -0.02em;
}

.coming-soon-lead {
    margin: 0 0 10px;
    color: #cbd5e1;
    line-height: 1.5;
    font-size: 0.95rem;
}

.coming-soon-badge {
    display: inline-block;
    margin: 0 0 10px;
    padding: 4px 10px;
    border-radius: 999px;
    background: rgba(139, 92, 246, 0.2);
    border: 1px solid rgba(167, 139, 250, 0.35);
    color: #c4b5fd;
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.08em;
}

.coming-soon-actions {
    display: flex;
    gap: 10px;
    justify-content: center;
    flex-wrap: wrap;
    margin-top: 22px;
}

.coming-soon-actions .button {
    width: auto;
    margin: 0;
    padding: 12px 18px;
    display: inline-block;
    text-align: center;
    text-decoration: none;
    border-radius: 10px;
    font-weight: 600;
}

@media (max-width: 767px) {
    .auth-page {
        padding-top: 4px;
    }

    .auth-box {
        padding: 18px 16px;
        border-radius: 16px;
    }

    .auth-box h1 {
        font-size: 1.2rem;
    }
}

.cards {
    display: flex;
    gap: 20px;
    flex-wrap: wrap;
}

.card {
    width: min(100%, 280px);
}

.hot {
    border-color: #ef4444;
}

#map {
    height: calc(100vh - 72px);
}

.map-page header {
    height: 70px;
    padding: 0 24px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    background: #111827;
}

.radar-box {
    position: absolute;
    right: 24px;
    top: 92px;
    background: #111827;
    padding: 16px;
    border-radius: 16px;
    z-index: 999;
    width: 260px;
    border: 1px solid #1f2937;
}

:root {
    color-scheme: dark;
    --bg: #060816;
    --bg-grad-1: rgba(96, 165, 250, 0.14);
    --bg-grad-2: rgba(139, 92, 246, 0.15);
    --bg-alt: #0e1428;
    --panel: rgba(12, 18, 35, 0.82);
    --panel-strong: #10182f;
    --text: #f8fafc;
    --text-soft: #e2e8f0;
    --muted: #94a3b8;
    --accent: #60a5fa;
    --accent-soft: #93c5fd;
    --accent-2: #8b5cf6;
    --border: rgba(148, 163, 184, 0.2);
    --header-bg: rgba(6, 8, 22, 0.82);
    --input-bg: #0f172a;
    --link: #7dd3fc;
    --shadow: rgba(2, 8, 23, 0.35);
    --hero-text: #f8fafc;
    --hero-sub: #dbeafe;
    --eyebrow: #93c5fd;
    --dash-card-bg: linear-gradient(135deg, #111827 0%, #0f172a 100%);
    --dash-card-border: rgba(2, 132, 199, 0.3);
    --dash-shadow: rgba(0, 0, 0, 0.3);
    --map-shell-bg: #060816;
    --map-panel-bg: rgba(6, 8, 22, 0.98);
    --map-header-bg: rgba(6, 8, 22, 0.94);
}

body {
    background:
        radial-gradient(circle at top left, rgba(96, 165, 250, 0.24), transparent 34%),
        radial-gradient(circle at top right, rgba(139, 92, 246, 0.24), transparent 30%),
        #060816;
}

.page {
    max-width: 1280px;
    margin: 0 auto;
    padding: 28px 24px 56px;
}

.notice {
    background: rgba(2, 132, 199, 0.14);
    border: 1px solid rgba(125, 211, 252, 0.24);
    color: #e0f2fe;
    border-radius: 16px;
    padding: 12px 14px;
    margin-bottom: 20px;
}

.dashboard-hero,
.events-hero-card {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 20px;
    padding: 28px 30px;
    margin-bottom: 24px;
    border-radius: 28px;
    background: linear-gradient(135deg, rgba(2, 132, 199, 0.35) 0%, rgba(139, 92, 246, 0.24) 100%);
    border: 1px solid rgba(125, 211, 252, 0.28);
    box-shadow: 0 24px 60px rgba(2, 8, 23, 0.32);
}

.hero-kicker {
    display: inline-block;
    margin-bottom: 6px;
    padding: 5px 10px;
    border-radius: 999px;
    background: rgba(15, 23, 42, 0.45);
    color: #7dd3fc;
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.08em;
}

.dashboard-hero h1,
.events-hero-card h1 {
    margin: 0 0 8px;
    font-size: clamp(1.4rem, 2.4vw, 2rem);
    line-height: 1.15;
    color: #f8fafc;
}

.dashboard-hero p,
.events-hero-card p {
    margin: 0;
    color: #dbeafe;
    max-width: 62ch;
}

.hero-actions-stack {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
}

.dashboard-page,
.events-page {
    position: relative;
}

.page.dashboard-page,
.page.events-page {
    background: linear-gradient(145deg, rgba(9, 14, 29, 0.97) 0%, rgba(12, 19, 35, 0.96) 100%);
    border: 1px solid rgba(125, 211, 252, 0.22);
    border-radius: 34px;
    box-shadow: 0 30px 90px rgba(2, 8, 23, 0.45);
    padding: 30px 30px 48px;
    position: relative;
    overflow: hidden;
}

@media (min-width: 861px) {
    .page.dashboard-page {
        padding: 16px 16px 34px;
    }
}

.page.dashboard-page::before,
.page.events-page::before {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: inherit;
    pointer-events: none;
    background: linear-gradient(120deg, rgba(96, 165, 250, 0.08), transparent 40%, rgba(139, 92, 246, 0.08));
}

.dashboard-page::before,
.events-page::before {
    content: "";
    position: fixed;
    inset: 0;
    pointer-events: none;
    z-index: -1;
    background:
        radial-gradient(circle at top left, rgba(96, 165, 250, 0.14), transparent 28%),
        radial-gradient(circle at top right, rgba(139, 92, 246, 0.14), transparent 24%);
}

.dashboard-page .section-head,
.events-page .page-head {
    margin-bottom: 20px;
    padding: 6px 0 10px;
}

.dashboard-page .cc-map-card,
.dashboard-page .cc-alert,
.dashboard-page .stat-card,
.dashboard-page .pkp-panel,
.dashboard-page .coming-soon--compact,
.events-page .coming-soon,
.events-page #events-map,
.events-page .event-list-card,
.events-page .event-filter-pill {
    background: linear-gradient(135deg, rgba(17, 24, 39, 0.98) 0%, rgba(9, 15, 30, 0.98) 100%);
    border: 1px solid rgba(125, 211, 252, 0.24);
    box-shadow: 0 24px 64px rgba(2, 8, 23, 0.34);
    backdrop-filter: blur(20px);
}

.dashboard-page .cc-map-card,
.dashboard-page .cc-alert,
.dashboard-page .stat-card,
.dashboard-page .pkp-panel,
.dashboard-page .coming-soon--compact,
.events-page .coming-soon,
.events-page .event-list-card {
    position: relative;
    overflow: hidden;
    transform: translateZ(0);
}

.dashboard-page .cc-map-card::before,
.dashboard-page .cc-alert::before,
.dashboard-page .stat-card::before,
.dashboard-page .pkp-panel::before,
.dashboard-page .coming-soon--compact::before,
.events-page .coming-soon::before,
.events-page .event-list-card::before {
    content: "";
    position: absolute;
    inset: 0 0 auto 0;
    height: 3px;
    background: linear-gradient(90deg, #38bdf8, #8b5cf6);
    opacity: 1;
}

.dashboard-page .cc-map-card,
.events-page #events-map {
    border-radius: 24px;
    overflow: hidden;
}

.dashboard-page .cc-alert,
.dashboard-page .stat-card,
.dashboard-page .pkp-panel,
.dashboard-page .coming-soon--compact,
.events-page .coming-soon,
.events-page .event-list-card,
.events-page .event-filter-pill {
    border-radius: 18px;
}

.dashboard-page .stat-card,
.dashboard-page .cc-alert,
.dashboard-page .pkp-panel,
.events-page .event-list-card {
    transition: transform 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease;
}

.dashboard-page .stat-card:hover,
.events-page .event-list-card:hover {
    transform: translateY(-2px);
    border-color: rgba(125, 211, 252, 0.32);
    box-shadow: 0 24px 56px rgba(2, 8, 23, 0.28);
}

.events-page .page-head {
    padding-top: 4px;
}

.events-page .page-head h1 {
    font-size: clamp(1.7rem, 3.4vw, 2.35rem);
    letter-spacing: -0.02em;
    margin-bottom: 10px;
}

.events-page .page-head .muted {
    color: #cbd5e1;
    font-size: 0.95rem;
}

.events-page .event-filter-pill {
    font-size: 0.82rem;
    padding: 8px 14px;
    border: 1px solid rgba(125, 211, 252, 0.16);
    color: #cbd5e1;
    text-decoration: none;
    transition: transform 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease;
}

.events-page .event-filter-pill:hover {
    transform: translateY(-1px);
    border-color: rgba(125, 211, 252, 0.32);
}

.events-page .event-filter-pill.is-active {
    background: linear-gradient(135deg, #0284c7 0%, #7c3aed 100%);
    color: #fff;
    border-color: rgba(125, 211, 252, 0.32);
    box-shadow: 0 10px 24px rgba(2, 132, 199, 0.24);
}

.events-page .event-filter-pill.ghost {
    background: rgba(15, 23, 42, 0.7);
}

.events-page #events-map {
    border: 1px solid rgba(125, 211, 252, 0.18);
    margin-bottom: 24px;
}

.events-page .event-list-card {
    padding: 16px;
}

.events-page .event-list-card strong {
    color: #f8fafc;
}

.events-page .event-list-card .muted {
    color: #94a3b8;
}

.events-page .events-empty-state {
    max-width: 680px;
}

.site-header {
    background: rgba(6, 8, 22, 0.9);
    backdrop-filter: blur(20px);
    border-bottom: 1px solid rgba(125, 211, 252, 0.16);
    box-shadow: 0 10px 36px rgba(2, 8, 23, 0.24);
}

.site-header nav a {
    padding: 8px 12px;
    border-radius: 999px;
    transition: all 0.2s ease;
    color: #cbd5e1;
}

.site-header nav a:hover,
.site-header nav a.active {
    background: rgba(2, 132, 199, 0.2);
    color: #f8fafc;
}

.site-header nav a:hover {
    background: rgba(96, 165, 250, 0.12);
    color: var(--text);
    text-decoration: none;
}

.site-header .site-nav a:hover {
    background: rgba(96, 165, 250, 0.12);
    color: var(--text);
    text-decoration: none;
}

.hero {
    grid-template-columns: minmax(0, 1.15fr) minmax(320px, 0.85fr);
    padding: 36px;
    background: linear-gradient(135deg, rgba(96, 165, 250, 0.2), rgba(139, 92, 246, 0.14));
    border: 1px solid var(--border);
    box-shadow: 0 20px 60px rgba(2, 8, 23, 0.35);
}

.hero-copy h1 {
    font-size: clamp(2rem, 3.6vw, 2.9rem);
    color: var(--text);
    letter-spacing: -0.02em;
}

.hero-copy p {
    color: #dbeafe;
}

.hero-metrics {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
    margin-top: 24px;
}

.metric-card,
.hero-panel,
.insight-card,
.promo-box,
.upcoming-card,
.board-card,
.panel,
.hero-card,
.card,
.login-box {
    background: var(--panel);
    border: 1px solid var(--border);
    border-radius: 22px;
    box-shadow: 0 16px 40px rgba(2, 8, 23, 0.2);
    backdrop-filter: blur(12px);
}

.metric-card {
    padding: 16px;
}

.metric-label,
.eyebrow {
    display: block;
    color: #93c5fd;
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    margin-bottom: 8px;
}

.metric-card strong {
    display: block;
    font-size: 1.05rem;
    color: var(--text);
    margin-bottom: 4px;
}

.metric-note {
    color: var(--muted);
    font-size: 0.9rem;
}

.hero-panel {
    padding: 24px;
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.hero-panel-head {
    display: flex;
    align-items: start;
    justify-content: space-between;
    gap: 12px;
}

.hero-panel h2 {
    margin: 0;
    font-size: 1.3rem;
    color: var(--text);
}

.status-pill {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 8px 12px;
    border-radius: 999px;
    background: rgba(34, 197, 94, 0.16);
    color: #bbf7d0;
    font-size: 0.8rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.1em;
}

.status-pill::before {
    content: "●";
    color: #4ade80;
}

.demand-strip {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
}

.demand-chip {
    background: rgba(15, 23, 42, 0.8);
    border: 1px solid rgba(148, 163, 184, 0.18);
    border-radius: 14px;
    padding: 12px 14px;
    min-width: 88px;
}

.demand-chip strong {
    display: block;
    font-size: 1.05rem;
    margin-bottom: 2px;
    color: var(--text);
}

.demand-chip span {
    color: var(--muted);
    font-size: 0.85rem;
}

.demand-chip.level-blue { border-color: rgba(96, 165, 250, 0.4); }
.demand-chip.level-green { border-color: rgba(74, 222, 128, 0.4); }
.demand-chip.level-purple { border-color: rgba(168, 85, 247, 0.4); }

.checklist {
    margin: 0;
    padding-left: 18px;
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.checklist li {
    color: #e2e8f0;
}

.checklist li::before {
    color: #60a5fa;
}

.insight-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 16px;
    margin-bottom: 24px;
}

.insight-card {
    padding: 20px;
}

.insight-icon {
    width: 46px;
    height: 46px;
    display: grid;
    place-items: center;
    border-radius: 14px;
    background: linear-gradient(135deg, rgba(96, 165, 250, 0.22), rgba(139, 92, 246, 0.22));
    font-size: 1.2rem;
    margin-bottom: 10px;
}

.insight-card h3,
.promo-box h3,
.upcoming-card h3 {
    margin: 0 0 8px;
    color: var(--text);
    font-size: 1.08rem;
}

.insight-card p,
.promo-box p,
.upcoming-card p,
.event-copy p {
    margin: 0;
    color: var(--muted);
    line-height: 1.55;
}

.insight-card a,
.panel-link {
    display: inline-block;
    margin-top: 12px;
    color: #93c5fd;
    font-weight: 600;
}

.panel {
    padding: 24px;
    margin-bottom: 24px;
}

.panel-head.compact {
    margin-bottom: 14px;
}

.panel-head h2,
.board-card h2 {
    color: var(--text);
}

.station-tab {
    background: rgba(15, 23, 42, 0.85);
    color: #cbd5e1;
    border: 1px solid rgba(148, 163, 184, 0.2);
}

.station-tab.active {
    background: linear-gradient(135deg, var(--accent), #2563eb);
    border-color: transparent;
}

.button {
    border-radius: 14px;
    box-shadow: 0 10px 24px rgba(37, 99, 235, 0.22);
}

.button.ghost {
    border-color: rgba(147, 197, 253, 0.35);
    color: #bfdbfe;
}

.two-col {
    grid-template-columns: minmax(0, 1.15fr) minmax(300px, 0.85fr);
    gap: 18px;
}

.sidebar-stack {
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.promo-box,
.upcoming-card {
    padding: 18px;
}

.hero-actions.stacked {
    flex-direction: column;
    align-items: stretch;
    margin-top: 16px;
}

.event-list {
    display: flex;
    flex-direction: column;
    gap: 10px;
    margin-top: 4px;
}

.event-item {
    display: flex;
    gap: 12px;
    padding: 12px;
    border-radius: 14px;
    background: rgba(15, 23, 42, 0.75);
    border: 1px solid rgba(148, 163, 184, 0.14);
}

.event-time {
    color: #60a5fa;
    font-weight: 700;
    font-size: 0.95rem;
    min-width: 42px;
}

.event-copy strong {
    color: var(--text);
}

.train-row-compact {
    background: rgba(15, 23, 42, 0.72);
    border-left-color: rgba(96, 165, 250, 0.7);
}

.train-row-compact:hover {
    background: rgba(15, 23, 42, 0.95);
    border-left-color: #60a5fa;
}

.status-now {
    color: #4ade80;
    font-weight: 700;
}

.status-upcoming {
    color: #38bdf8;
    font-weight: 700;
}

@media (max-width: 960px) {
    .hero,
    .two-col,
    .insight-grid {
        grid-template-columns: 1fr;
    }

    .hero-metrics {
        grid-template-columns: 1fr;
    }
}

/* ── Mobile-first layout ─────────────────────────────────────────────── */
.site-header-top {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    flex-wrap: nowrap;
    width: 100%;
}

.city-badge {
    max-width: 92px;
    overflow: hidden;
    padding: 2px 6px;
    font-size: 10.5px;
    text-overflow: ellipsis;
    border-radius: 999px;
    border: 1px solid var(--border);
    color: var(--muted);
    text-decoration: none;
    white-space: nowrap;
    flex-shrink: 0;
}

.city-badge:hover {
    border-color: #0284c7;
    color: #e0f2fe;
}

.plan-badge {
    font-size: 9.5px;
    font-weight: 700;
    padding: 2px 6px;
    border-radius: 999px;
    border: 1px solid var(--border);
    text-transform: uppercase;
    letter-spacing: 0.06em;
    flex-shrink: 0;
}

.plan-badge--free {
    color: #94a3b8;
    background: rgba(148, 163, 184, 0.1);
}

.plan-badge--pro {
    color: #6ee7b7;
    background: rgba(16, 185, 129, 0.12);
    border-color: rgba(16, 185, 129, 0.35);
}

.plan-badge--premium {
    color: #fcd34d;
    background: rgba(250, 204, 21, 0.12);
    border-color: rgba(250, 204, 21, 0.35);
}

.cc-plan-strip {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    font-size: 0.72rem;
}

.cc-airport-locked {
    margin-bottom: 0;
}

.site-nav {
    display: none;
    flex-direction: row;
    flex-wrap: nowrap;
    align-items: stretch;
    justify-content: space-between;
    gap: 3px;
    width: 100%;
    padding-top: 6px;
    margin-top: 6px;
    border-top: 1px solid var(--border);
    overflow: hidden;
}

.site-nav a {
    flex: 1 1 0;
    min-width: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 6px 2px;
    border-radius: 8px;
    font-size: clamp(0.58rem, 2.65vw, 0.72rem);
    font-weight: 600;
    text-align: center;
    white-space: nowrap;
    min-height: 32px;
    box-sizing: border-box;
    color: var(--muted);
    text-decoration: none;
    line-height: 1.1;
}

.site-header .site-nav a.active {
    color: #fff;
    background: rgba(96, 165, 250, 0.22);
    padding: 6px 2px;
    border-radius: 8px;
    text-decoration: none;
}

.site-nav .nav-admin {
    display: none;
}

.site-header {
    flex-direction: row;
    align-items: center;
    padding: 3px 8px;
    padding-top: max(3px, env(safe-area-inset-top));
    gap: 0;
}

.site-header .brand {
    display: flex;
    flex-direction: row;
    align-items: baseline;
    gap: 4px;
    min-width: 0;
    flex: 1;
    overflow: hidden;
}

.site-header .brand strong {
    flex: 0 0 auto;
    font-size: 12px;
    line-height: 1;
}

.site-header .tagline {
    min-width: 0;
    margin: 0;
    overflow: hidden;
    font-size: 7px;
    line-height: 1;
    color: var(--muted);
    text-overflow: ellipsis;
    white-space: nowrap;
}

.button,
.station-tab,
.station-tab-like {
    min-height: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.hero-actions .button {
    width: 100%;
    text-align: center;
    box-sizing: border-box;
}

.panel-head {
    flex-direction: column;
    align-items: stretch;
}

.station-tabs {
    overflow-x: auto;
    flex-wrap: nowrap;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    padding-bottom: 4px;
}

.station-tabs::-webkit-scrollbar {
    display: none;
}

.station-tab {
    flex-shrink: 0;
    white-space: nowrap;
}

.train-row-compact {
    grid-template-columns: 58px 1fr 72px;
    gap: 8px;
    padding: 10px;
}

@media (min-width: 768px) {
    .site-header {
        flex-direction: row;
        align-items: center;
        justify-content: space-between;
        padding: 4px 14px;
        flex-wrap: nowrap;
        gap: 6px;
    }

    .site-header-top {
        width: 100%;
        flex: 1 1 auto;
    }

    .site-header .brand strong {
        font-size: 14px;
    }

    .site-header .tagline {
        font-size: 8px;
    }

    .city-badge {
        max-width: 140px;
        padding: 3px 8px;
        font-size: 10px;
    }

    .site-nav {
        flex: 1 1 auto;
        justify-content: flex-end;
        width: auto;
        padding-top: 0;
        margin-top: 0;
        border-top: none;
        gap: 8px;
    }

    .site-nav a {
        flex: 0 0 auto;
        display: inline-flex;
        padding: 8px 12px;
        font-size: inherit;
        min-height: auto;
        min-width: auto;
    }

    .site-header .site-nav a.active {
        padding: 8px 12px;
        border-radius: 999px;
    }

    .site-nav .nav-admin {
        display: inline-flex;
    }

    .hero-actions .button {
        width: auto;
    }

    .panel-head {
        flex-direction: row;
        align-items: center;
    }
}

/* ── ŁapKurs 5.6.2: wspolna marka i drugie miejsce reklamowe ───── */
.gp-app-brand {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    min-width: 0;
    color: #f8fafc;
    text-decoration: none;
    white-space: nowrap;
}
.gp-app-brand:hover { color: #fff; text-decoration: none; }
.gp-app-brand__mark {
    position: relative;
    display: grid;
    place-items: center;
    flex: 0 0 auto;
    width: 31px;
    height: 31px;
    border: 1px solid rgba(86, 216, 255, .46);
    border-radius: 10px;
    background: linear-gradient(145deg, rgba(86, 216, 255, .22), rgba(77, 140, 255, .17));
    color: #56d8ff;
    box-shadow: 0 0 24px rgba(86, 216, 255, .14), inset 0 1px 0 rgba(255,255,255,.16);
}
.gp-app-brand__mark::after { content: ''; position: absolute; inset: 4px; border: 1px solid rgba(255,255,255,.12); border-radius: 6px; }
.gp-app-brand__mark svg { width: 17px; height: 17px; }
.gp-app-brand__copy { display: grid; min-width: 0; line-height: 1; }
.gp-app-brand__name { font-size: 14px; font-weight: 900; letter-spacing: -.4px; }
.gp-app-brand__name em { color: #56d8ff; font-style: normal; }
.gp-app-brand__copy small { max-width: 155px; margin-top: 3px; overflow: hidden; color: #94a3b8; font-size: 7px; font-weight: 650; text-overflow: ellipsis; white-space: nowrap; }
.gp-app-brand--header { flex: 0 0 auto; margin-left: 2px; }
.gp-app-brand--map { flex: 0 0 auto; max-width: 42%; }
.gp-app-brand--map .gp-app-brand__copy small { max-width: min(190px, 28vw); }
.gp-app-brand--footer .gp-app-brand__mark { width: 37px; height: 37px; }
.auth-brand.gp-app-brand { flex-direction: row; gap: 8px; }
.auth-brand .gp-app-brand__mark { color: #56d8ff; }
.auth-brand .gp-app-brand__name { color: #f8fafc; font-size: 15px; }
.auth-brand .gp-app-brand__name em { color: #56d8ff; }
.auth-brand .gp-app-brand__copy small { color: #94a3b8; font-size: 7px; }

.site-header-actions { display: flex; align-items: center; flex: 0 0 auto; gap: 5px; min-width: 0; }
.app-header-ad {
    display: flex;
    align-items: center;
    min-width: 0;
    height: 28px;
    flex: 1 1 auto;
    overflow: hidden;
    border: 1px solid rgba(56, 189, 248, .2);
    border-radius: 9px;
    background: linear-gradient(90deg, rgba(14, 116, 144, .12), rgba(79, 70, 229, .13));
}
.app-header-ad__label {
    align-self: stretch;
    display: inline-flex;
    align-items: center;
    flex: 0 0 auto;
    padding: 0 7px;
    background: linear-gradient(135deg, #047857, #16a34a);
    color: #fff;
    font-size: 7px;
    font-weight: 950;
    letter-spacing: .08em;
}
.app-header-ad--promo .app-header-ad__label { background: linear-gradient(135deg, #7c3aed, #2563eb); }
.app-header-ad--empty .app-header-ad__label { background: linear-gradient(135deg, #0e7490, #2563eb); }
.app-header-ad__viewport { min-width: 0; flex: 1; overflow: hidden; padding: 0 9px; }
.app-header-ad__viewport > span,
.app-header-ad__viewport > a {
    display: block;
    overflow: hidden;
    color: #dbeafe;
    font-size: 9px;
    font-weight: 800;
    line-height: 26px;
    text-decoration: none;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.app-header-ad__viewport > a { color: #a5b4fc; }
.site-header-top .app-header-ad { margin: 0 4px; }
.map-app-header .app-header-ad { height: 32px; }
.map-app-header .app-header-ad__viewport > span,
.map-app-header .app-header-ad__viewport > a { font-size: 10px; line-height: 30px; }

@media (max-width: 620px) {
    .gp-app-brand--header .gp-app-brand__copy small { display: none; }
    .gp-app-brand--header .gp-app-brand__mark { width: 29px; height: 29px; }
    .gp-app-brand--header .gp-app-brand__name { font-size: 12px; }
    .site-header-top .app-header-ad__label { display: none; }
    .site-header-top .app-header-ad { margin: 0 2px; }
    .site-header-top .app-header-ad__viewport { padding: 0 5px; }
    .site-header-top .app-header-ad__viewport > span,
    .site-header-top .app-header-ad__viewport > a { font-size: 8px; }
    .site-header-actions .city-badge { display: none; }
}
@media (max-width: 410px) {
    .site-header-actions .plan-badge { display: none; }
    .gp-app-brand--map { max-width: 47%; }
    .gp-app-brand--map .gp-app-brand__mark { width: 29px; height: 29px; }
    .gp-app-brand--map .gp-app-brand__name { font-size: 12px; }
    .gp-app-brand--map .gp-app-brand__copy small { max-width: 36vw; font-size: 6.5px; }
    .map-app-header .app-header-ad__label { padding: 0 5px; font-size: 6px; }
    .map-app-header .app-header-ad__viewport { padding: 0 6px; }
    .map-app-header .app-header-ad__viewport > span,
    .map-app-header .app-header-ad__viewport > a { font-size: 8px; }
}

/* ── Dashboard 3.4: zwarty widok „Gdzie jechać teraz?” ──────────────── */
.demand-now {
    position: relative;
    z-index: 1;
    margin-bottom: 14px;
    padding: 18px;
    border: 1px solid rgba(56, 189, 248, 0.24);
    border-radius: 26px;
    background:
        radial-gradient(circle at 90% 0, rgba(139, 92, 246, 0.16), transparent 34%),
        linear-gradient(145deg, rgba(8, 15, 30, 0.98), rgba(12, 20, 37, 0.98));
    box-shadow: 0 22px 70px rgba(2, 8, 23, 0.38);
    overflow: hidden;
}

.demand-now::before {
    content: "";
    position: absolute;
    inset: 0 0 auto;
    height: 3px;
    background: linear-gradient(90deg, #22c55e, #38bdf8 48%, #a855f7);
}

.demand-now__head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 24px;
    margin-bottom: 12px;
}

.demand-now__kicker-row {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 5px 10px;
    margin-bottom: 4px;
}

.demand-now__kicker {
    display: block;
    color: #67e8f9;
    font-size: 0.7rem;
    font-weight: 900;
    letter-spacing: 0.14em;
}

.demand-now__head h1 {
    margin: 0 0 7px;
    color: #f8fafc;
    font-size: clamp(1.65rem, 4vw, 2.45rem);
    line-height: 1.05;
    letter-spacing: -0.035em;
}

.demand-now__head p {
    max-width: 720px;
    margin: 0;
    color: #b8c5d8;
    font-size: 0.9rem;
    line-height: 1.5;
}

.demand-now__headline {
    min-width: 0;
}

.telegram-home-status {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    align-items: center;
    gap: 8px;
    min-width: 190px;
    padding: 8px 11px;
    border: 1px solid rgba(148, 163, 184, 0.28);
    border-radius: 14px;
    background: rgba(15, 23, 42, 0.58);
    color: #cbd5e1;
    text-decoration: none;
    box-shadow: 0 8px 22px rgba(2, 8, 23, 0.18);
}

.telegram-home-status__icon {
    display: grid;
    width: 30px;
    height: 30px;
    place-items: center;
    border-radius: 50%;
    background: linear-gradient(135deg, #38bdf8, #2563eb 55%, #8b5cf6);
    color: #ffffff;
    font-size: 0.9rem;
    box-shadow: 0 0 18px rgba(56, 189, 248, 0.38);
    transform: rotate(-18deg);
}

.telegram-home-status strong,
.telegram-home-status small {
    display: block;
}

.telegram-home-status strong {
    color: #e2e8f0;
    font-size: 0.76rem;
    line-height: 1.2;
}

.telegram-home-status small {
    margin-top: 2px;
    color: #94a3b8;
    font-size: 0.62rem;
    line-height: 1.25;
}

.telegram-home-status--active {
    border-color: rgba(34, 211, 238, 0.48);
    background: linear-gradient(135deg, rgba(5, 150, 105, 0.16), rgba(37, 99, 235, 0.14));
}

.telegram-home-status--active strong {
    color: #5eead4;
}

.telegram-home-status--paused {
    border-color: rgba(245, 158, 11, 0.45);
}

.demand-now__refresh {
    color: #8090a6;
    font-size: 0.68rem;
    white-space: nowrap;
}

.font-size-controls {
    display: inline-flex;
    gap: 2px;
    padding: 2px;
    border: 1px solid rgba(148, 163, 184, 0.2);
    border-radius: 10px;
    background: rgba(15, 23, 42, 0.62);
}

.font-size-controls button {
    min-width: 28px;
    min-height: 26px;
    padding: 2px 4px;
    border: 1px solid rgba(56, 189, 248, 0.25);
    border-radius: 7px;
    background: rgba(56, 189, 248, 0.1);
    color: #bae6fd;
    font: inherit;
    font-size: 0.72rem;
    font-weight: 850;
    cursor: pointer;
}

.font-size-controls button:hover,
.font-size-controls button:focus-visible {
    border-color: #38bdf8;
    background: rgba(56, 189, 248, 0.18);
    outline: none;
}

.font-size-controls button:disabled {
    opacity: 0.38;
    cursor: default;
}

.font-size-controls--header {
    flex: 0 0 auto;
    margin: 0;
    gap: 1px;
    padding: 1px;
    border-radius: 8px;
}

.font-size-controls--header button {
    width: 22px;
    min-width: 22px;
    height: 22px;
    min-height: 22px;
    padding: 0;
    border-radius: 6px;
    font-size: 10px;
    line-height: 1;
}

.source-health {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 8px;
    margin-bottom: 9px;
}

.source-health__item {
    display: flex;
    align-items: center;
    gap: 9px;
    min-width: 0;
    padding: 7px 10px;
    border: 1px solid rgba(148, 163, 184, 0.14);
    border-radius: 12px;
    background: rgba(15, 23, 42, 0.56);
}

.source-health__dot {
    width: 9px;
    height: 9px;
    flex: 0 0 auto;
    border-radius: 50%;
    background: #64748b;
    box-shadow: 0 0 0 4px rgba(100, 116, 139, 0.12);
}

.source-health__item span:last-child {
    min-width: 0;
}

.source-health__item strong,
.source-health__item small {
    display: block;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.source-health__item strong {
    color: #e2e8f0;
    font-size: 0.73rem;
}

.source-health__item small {
    margin-top: 2px;
    color: #7f8da2;
    font-size: 0.62rem;
}

.source-health__item--fresh .source-health__dot {
    background: #22c55e;
    box-shadow: 0 0 0 4px rgba(34, 197, 94, 0.13), 0 0 12px rgba(34, 197, 94, 0.45);
}

.source-health__item--manual .source-health__dot {
    background: #38bdf8;
    box-shadow: 0 0 0 4px rgba(56, 189, 248, 0.13);
}

.source-health__item--stale .source-health__dot {
    background: #ef4444;
    box-shadow: 0 0 0 4px rgba(239, 68, 68, 0.13);
}

.source-health__item--stale {
    border-color: rgba(239, 68, 68, 0.48);
    background: rgba(127, 29, 29, 0.18);
}

.source-health__item--stale strong {
    color: #fecaca;
}

.source-health__item--missing .source-health__dot,
.source-health__item--off .source-health__dot {
    background: #f59e0b;
    box-shadow: 0 0 0 4px rgba(245, 158, 11, 0.13);
}

.recommendation-grid {
    display: grid;
    grid-template-columns: minmax(0, 1.35fr) repeat(2, minmax(0, 0.825fr));
    gap: 9px;
    margin-top: 9px;
    align-items: stretch;
}

.recommendation-grid--multi-city {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.recommendation-grid--multi-city .recommendation-card--primary {
    grid-column: auto;
    padding: 42px 14px 13px;
}

.recommendation-grid--multi-city .recommendation-card--primary .recommendation-card__icon {
    width: 38px;
    height: 38px;
    font-size: 1.2rem;
}

.recommendation-grid--multi-city .recommendation-card--primary .recommendation-card__title h2 {
    font-size: 0.98rem;
}

.recommendation-grid--multi-city .recommendation-card--primary .recommendation-card__score b {
    font-size: 1.1rem;
}

.recommendation-card {
    position: relative;
    display: flex;
    flex-direction: column;
    min-width: 0;
    padding: 42px 14px 13px;
    border: 1px solid color-mix(in srgb, var(--reco-color, #38bdf8) 45%, rgba(148, 163, 184, 0.18));
    border-radius: 18px;
    background:
        linear-gradient(155deg, color-mix(in srgb, var(--reco-color, #38bdf8) 11%, transparent), transparent 45%),
        rgba(6, 12, 25, 0.92);
    box-shadow: 0 12px 28px rgba(2, 8, 23, 0.32);
    overflow: hidden;
    transition: transform 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease;
}

.recommendation-card:hover {
    transform: translateY(-2px);
    border-color: color-mix(in srgb, var(--reco-color, #38bdf8) 68%, rgba(255, 255, 255, 0.18));
    box-shadow: 0 18px 42px rgba(2, 8, 23, 0.42);
}

.recommendation-card--primary {
    padding: 42px 14px 13px;
    background:
        radial-gradient(circle at 100% 0, color-mix(in srgb, var(--reco-color, #38bdf8) 22%, transparent), transparent 42%),
        linear-gradient(155deg, color-mix(in srgb, var(--reco-color, #38bdf8) 13%, transparent), transparent 52%),
        rgba(5, 11, 24, 0.98);
    box-shadow: 0 22px 54px rgba(2, 8, 23, 0.45);
}

.recommendation-card::before {
    content: none;
    position: absolute;
    inset: 0 0 auto;
    height: 3px;
    background: var(--reco-color, #38bdf8);
}

.recommendation-card__topbar {
    position: absolute;
    inset: 0 0 auto;
    min-height: 30px;
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    align-items: center;
    gap: 8px;
    padding: 4px 9px;
    background: var(--gp-gradient-home);
    color: #ffffff;
    box-shadow:
        inset 0 1px rgba(255, 255, 255, 0.2),
        inset 0 -1px rgba(15, 23, 42, 0.16);
}

.recommendation-card__topbar--go {
    background: var(--gp-gradient-go);
}

.recommendation-card__topbar--prepare {
    background: var(--gp-gradient-home);
}

.recommendation-card__topbar--watch {
    background: var(--gp-gradient-watch);
}

.recommendation-card__topbar--quiet {
    background: var(--gp-gradient-quiet);
}

.recommendation-card__action {
    display: inline-flex;
    align-items: center;
    min-height: 0;
    margin: 0;
    padding: 0;
    border: 0;
    border-radius: 0;
    background: transparent;
    color: #ffffff;
    font-size: 0.66rem;
    font-weight: 950;
    letter-spacing: 0.1em;
    white-space: nowrap;
}

.recommendation-card__action::before {
    content: "";
    width: 6px;
    height: 6px;
    margin-right: 6px;
    border-radius: 50%;
    background: currentColor;
    box-shadow: 0 0 12px currentColor;
}

.recommendation-card__action--go {
    color: #ffffff;
}

.recommendation-card__action--prepare {
    color: #ffffff;
}

.recommendation-card__action--quiet {
    color: #ffffff;
}

.recommendation-card__context {
    min-width: 0;
    overflow: hidden;
    color: rgba(255, 255, 255, 0.88);
    font-size: 0.58rem;
    font-weight: 950;
    letter-spacing: 0.11em;
    text-align: center;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.recommendation-card__quick {
    min-width: 0;
    display: flex;
    align-items: center;
    justify-content: flex-end;
    justify-self: end;
    gap: 4px;
    font-size: 0.62rem;
    white-space: nowrap;
}

.recommendation-card__quick small {
    overflow: hidden;
    color: rgba(255, 255, 255, 0.72);
    font-size: inherit;
    font-weight: 800;
    letter-spacing: 0.05em;
    text-overflow: ellipsis;
}

.recommendation-card__quick a {
    color: #ffffff;
    font-size: inherit;
    font-weight: 900;
    text-decoration: none;
}

.recommendation-card__top {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    align-items: center;
    gap: 8px;
    padding-right: 2px;
}

.recommendation-card__icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 38px;
    height: 38px;
    flex: 0 0 auto;
    border: 1px solid color-mix(in srgb, var(--reco-color, #38bdf8) 38%, transparent);
    border-radius: 12px;
    background: color-mix(in srgb, var(--reco-color, #38bdf8) 14%, rgba(15, 23, 42, 0.92));
    font-size: 1.2rem;
}

.recommendation-card__title {
    min-width: 0;
}

.recommendation-card__eyebrow {
    display: block;
    margin-bottom: 3px;
    color: var(--reco-color, #38bdf8);
    font-size: 0.58rem;
    font-weight: 900;
    letter-spacing: 0.13em;
}

.recommendation-card__title h2,
.recommendation-card--empty h2 {
    margin: 0;
    color: #f8fafc;
    font-size: 0.98rem;
    line-height: 1.18;
}

.recommendation-card__title > strong {
    display: block;
    margin-top: 4px;
    overflow: hidden;
    color: #aebdd1;
    font-size: 0.69rem;
    font-weight: 650;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.recommendation-card__score {
    display: flex;
    align-items: baseline;
    gap: 1px;
    margin-top: 0;
    color: var(--reco-color, #38bdf8);
}

.recommendation-card__score b {
    font-size: 1.1rem;
    line-height: 1;
}

.recommendation-card__score span {
    color: #718096;
    font-size: 0.55rem;
}

.recommendation-card__timing {
    margin-top: 9px;
    padding: 8px 10px;
    border-radius: 10px;
    background: rgba(15, 23, 42, 0.76);
    color: #f8fafc;
    font-size: 0.73rem;
    font-weight: 800;
    line-height: 1.35;
}

.recommendation-card__reason {
    min-height: 3em;
    margin: 8px 0;
    color: #93a4bb;
    font-size: 0.69rem;
    line-height: 1.45;
}

.recommendation-card__bar {
    height: 4px;
    overflow: hidden;
    border-radius: 99px;
    background: rgba(148, 163, 184, 0.14);
}

.recommendation-card__bar span {
    display: block;
    height: 100%;
    border-radius: inherit;
    background: linear-gradient(90deg, color-mix(in srgb, var(--reco-color, #38bdf8) 72%, white), var(--reco-color, #38bdf8));
}

.recommendation-card__meta {
    display: flex;
    justify-content: space-between;
    gap: 8px;
    margin-top: 6px;
    color: #7f8da2;
    font-size: 0.61rem;
}

.recommendation-card__meta strong {
    color: #cbd5e1;
}

.recommendation-card__foot {
    display: flex;
    align-items: flex-end;
    justify-content: flex-start;
    gap: 10px;
    margin-top: auto;
    padding-top: 10px;
    border-top: 1px solid rgba(148, 163, 184, 0.12);
}

.recommendation-card__foot small {
    color: #6f8096;
    font-size: 0.6rem;
}

.recommendation-card--primary .recommendation-card__action {
    font-size: 0.68rem;
}

.recommendation-card--primary .recommendation-card__icon {
    width: 42px;
    height: 42px;
    border-radius: 13px;
    font-size: 1.22rem;
}

.recommendation-card--primary .recommendation-card__title h2 {
    font-size: clamp(1rem, 1.8vw, 1.18rem);
}

.recommendation-card--primary .recommendation-card__title > strong {
    margin-top: 6px;
    font-size: 0.8rem;
}

.recommendation-card--primary .recommendation-card__score b {
    font-size: 1.45rem;
}

.recommendation-card--primary .recommendation-card__score span {
    font-size: 0.67rem;
}

.recommendation-card--primary .recommendation-card__timing {
    margin-top: 8px;
    padding: 8px 10px;
    font-size: 0.78rem;
}

.recommendation-card--primary .recommendation-card__reason {
    min-height: 0;
    margin: 7px 0;
    font-size: 0.72rem;
    line-height: 1.38;
}

.recommendation-card--primary .recommendation-card__bar {
    height: 4px;
}

.recommendation-card--primary .recommendation-card__meta {
    font-size: 0.72rem;
}

.recommendation-card--primary .recommendation-card__foot small {
    font-size: 0.68rem;
}

.recommendation-card--empty {
    grid-column: 1 / -1;
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 14px;
    --reco-color: #64748b;
}

@media (min-width: 921px) and (max-width: 1100px) {
    .recommendation-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .recommendation-card--primary {
        grid-column: 1 / -1;
    }
}

.recommendation-card--empty p {
    margin: 6px 0 0;
    color: #94a3b8;
    font-size: 0.76rem;
}

.demand-now__note {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    align-items: start;
    gap: 9px;
    margin-top: 13px;
    padding: 9px 11px;
    border: 1px solid rgba(148, 163, 184, 0.12);
    border-radius: 12px;
    background: rgba(2, 8, 23, 0.32);
}

.demand-now__note p {
    margin: 0;
    color: #8191a7;
    font-size: 0.65rem;
    line-height: 1.45;
}

.demand-now__note-copy {
    display: grid;
    gap: 1px;
}

.demand-now__note .demand-now__note-last {
    display: flex;
    align-items: baseline;
    gap: 12px;
}

.demand-now__note-icon {
    display: grid;
    place-items: center;
    width: 18px;
    height: 18px;
    border: 1px solid rgba(56, 189, 248, 0.45);
    border-radius: 50%;
    color: #67e8f9;
    font-size: 0.68rem;
    font-weight: 900;
}

.demand-now__note strong {
    color: #b9c6d8;
}

#recommendations-updated {
    margin-left: auto;
    color: #65758b;
    font-size: 0.6rem;
    white-space: nowrap;
}

.airport-arrival-countdown {
    color: #67e8f9;
    font-weight: 750;
}

/* Oś sygnałów na najbliższą część zmiany. */
.demand-timeline {
    margin-top: 11px;
    padding: 12px 13px 9px;
    border: 1px solid rgba(148, 163, 184, 0.14);
    border-radius: 16px;
    background: rgba(2, 8, 23, 0.38);
}

.demand-timeline__head {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 18px;
    margin-bottom: 2px;
}

.demand-timeline__head > div:first-child > span {
    display: block;
    margin-bottom: 2px;
    color: #67e8f9;
    font-size: 0.58rem;
    font-weight: 900;
    letter-spacing: 0.14em;
}

.demand-timeline__head h2 {
    margin: 0;
    color: #eaf2ff;
    font-size: 0.94rem;
}

.demand-timeline__legend {
    display: grid;
    gap: 1px;
    padding-bottom: 1px;
}

.demand-timeline__legend small {
    color: #718096;
    font-size: 0.58rem;
    line-height: 1.32;
    text-align: right;
}

.demand-timeline__legend b {
    font-size: 0.68rem;
}

.demand-timeline__viewport {
    overflow-x: auto;
    overscroll-behavior-x: contain;
    scrollbar-width: thin;
    scrollbar-color: rgba(148, 163, 184, 0.22) transparent;
}

.demand-timeline__rail {
    --timeline-axis-y: 244px;
    --timeline-progress-y: 300px;
    --timeline-rail-height: 320px;
    position: relative;
    min-width: 780px;
    height: var(--timeline-rail-height);
    margin-top: 2px;
    transition: height 0.2s ease;
}

.demand-timeline__clock span,
.demand-timeline__progress span {
    position: absolute;
    left: clamp(30px, var(--tick), calc(100% - 30px));
    transform: translateX(-50%);
    color: #76869c;
    font-size: 0.56rem;
    white-space: nowrap;
}

.demand-timeline__clock span {
    top: 4px;
    z-index: 1;
}

.demand-timeline__clock span::after {
    content: "";
    position: absolute;
    top: 21px;
    left: 50%;
    width: 1px;
    height: calc(var(--timeline-progress-y) - 24px);
    transform: translateX(-50%);
    background: repeating-linear-gradient(
        to bottom,
        rgba(100, 116, 139, 0.22) 0 3px,
        transparent 3px 7px
    );
    pointer-events: none;
}

.demand-timeline__clock span::before {
    content: "";
    position: absolute;
    top: calc(var(--timeline-axis-y) - 4px);
    left: 50%;
    z-index: 2;
    width: 7px;
    height: 7px;
    transform: translate(-50%, -50%);
    border: 1px solid #ffffff;
    border-radius: 50%;
    background: #475569;
    box-shadow: 0 1px 4px rgba(15, 23, 42, 0.22);
}

.demand-timeline__line {
    position: absolute;
    top: var(--timeline-axis-y);
    right: 38px;
    left: 38px;
    height: 2px;
    border-radius: 99px;
    background: linear-gradient(90deg, #22c55e 0%, #38bdf8 38%, #8b5cf6 72%, #475569 100%);
    box-shadow: 0 0 18px rgba(56, 189, 248, 0.14);
}

.demand-timeline__now-marker {
    position: absolute;
    top: 25px;
    left: clamp(38px, var(--timeline-now), calc(100% - 38px));
    z-index: 1;
    width: 2px;
    height: calc(var(--timeline-progress-y) - 25px);
    transform: translateX(-50%);
    border: 0;
    border-radius: 99px;
    background: linear-gradient(to bottom, rgba(34, 197, 94, 0.14), #22c55e 34%, #22c55e 52%, rgba(56, 189, 248, 0.16));
    box-shadow: 0 0 9px rgba(34, 197, 94, 0.32);
    pointer-events: none;
    transition: left 0.38s ease-out;
}

.demand-timeline__now-marker::before {
    content: "";
    position: absolute;
    top: calc(var(--timeline-axis-y) - 25px);
    left: 50%;
    width: 10px;
    height: 10px;
    transform: translate(-50%, -50%);
    border: 2px solid #ffffff;
    border-radius: 50%;
    background: #22c55e;
    box-shadow: 0 0 0 3px rgba(34, 197, 94, 0.22), 0 0 14px rgba(34, 197, 94, 0.48);
}

.demand-timeline__now-marker.is-ticking::before {
    animation: gp-timeline-now-tick 0.7s ease-out;
}

@keyframes gp-timeline-now-tick {
    0% { box-shadow: 0 0 0 0 rgba(34, 197, 94, 0.52), 0 0 12px rgba(34, 197, 94, 0.42); }
    100% { box-shadow: 0 0 0 9px rgba(34, 197, 94, 0), 0 0 16px rgba(34, 197, 94, 0.46); }
}

.demand-timeline__signal {
    position: absolute;
    top: 246px;
    left: clamp(92px, var(--timeline-pos), calc(100% - 92px));
    z-index: 3;
    display: grid;
    grid-template-columns: 34px minmax(0, 1fr) auto;
    align-items: center;
    gap: 7px;
    width: 184px;
    min-height: 49px;
    padding: 6px 7px;
    transform: translateX(-50%);
    border: 1px solid color-mix(in srgb, var(--reco-color, #38bdf8) 48%, rgba(148, 163, 184, 0.18));
    border-radius: 12px;
    background: rgba(8, 15, 29, 0.98);
    color: #e2e8f0;
    box-shadow: 0 8px 22px rgba(2, 8, 23, 0.38);
    text-decoration: none;
}

.demand-timeline__signal::after {
    content: "";
    position: absolute;
    bottom: 100%;
    left: 50%;
    width: 1px;
    height: 120px;
    background: color-mix(in srgb, var(--reco-color, #38bdf8) 65%, transparent);
}

.demand-timeline__signal:hover {
    border-color: var(--reco-color, #38bdf8);
    color: #fff;
}

.demand-timeline__pin {
    display: grid;
    place-items: center;
    width: 30px;
    height: 30px;
    margin: 0;
    border-radius: 9px;
    background: color-mix(in srgb, var(--reco-color, #38bdf8) 16%, rgba(15, 23, 42, 0.92));
    font-size: 0.98rem;
}

.demand-timeline__signal-copy {
    min-width: 0;
}

.demand-timeline__signal-copy strong,
.demand-timeline__signal-copy small {
    display: block;
}

.demand-timeline__signal-copy strong {
    font-size: 0.67rem;
    white-space: nowrap;
}

.demand-timeline__signal-copy small {
    overflow: hidden;
    margin-top: 2px;
    color: #8b99ad;
    font-size: 0.52rem;
    font-weight: 750;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.demand-timeline__signal-copy i {
    display: inline-grid;
    place-items: center;
    width: 13px;
    height: 13px;
    margin-left: 2px;
    border: 1px solid currentColor;
    border-radius: 50%;
    font-style: normal;
    font-size: 0.48rem;
    cursor: help;
}

.demand-timeline__signal em {
    padding: 3px 5px;
    border-radius: 999px;
    background: color-mix(in srgb, var(--reco-color, #38bdf8) 14%, rgba(15, 23, 42, 0.9));
    color: var(--reco-color, #38bdf8);
    font-size: 0.48rem;
    font-style: normal;
    font-weight: 900;
    letter-spacing: 0.04em;
}

.demand-timeline__arrival {
    --arrival-top: 34px;
    --arrival-shift: -18px;
    --arrival-anchor-offset: 18px;
    --arrival-gap: 63px;
    --arrival-stem: 64px;
    --arrival-angle: -13deg;
    --arrival-color: #38bdf8;
    position: absolute;
    top: var(--arrival-top);
    left: clamp(34px, var(--timeline-pos), calc(100% - 34px));
    z-index: 2;
    display: inline-flex;
    align-items: center;
    gap: 3px;
    min-width: 64px;
    min-height: 27px;
    padding: 4px 8px;
    transform: translateX(-50%) translateX(var(--arrival-shift));
    border: 1px solid color-mix(in srgb, var(--arrival-color) 55%, rgba(148, 163, 184, 0.2));
    border-radius: 999px;
    background: rgba(8, 15, 29, 0.98);
    color: color-mix(in srgb, var(--arrival-color) 72%, white);
    box-shadow: 0 5px 12px rgba(2, 8, 23, 0.28);
    text-decoration: none;
    transition: transform 0.18s ease, border-color 0.18s ease, background 0.18s ease;
    white-space: nowrap;
}

.demand-timeline__arrival--flight { --arrival-color: #a855f7; }
.demand-timeline__arrival--lane-1 { --arrival-top: 63px; --arrival-shift: 0px; --arrival-anchor-offset: 0px; --arrival-gap: 34px; --arrival-stem: 34px; --arrival-angle: 0deg; }
.demand-timeline__arrival--lane-2 { --arrival-top: 92px; --arrival-shift: 0px; --arrival-anchor-offset: 0px; --arrival-gap: 5px; --arrival-stem: 5px; --arrival-angle: 0deg; }
.demand-timeline__arrival--lane-3 { --arrival-top: 137px; --arrival-shift: 0px; --arrival-anchor-offset: 0px; --arrival-gap: 13px; --arrival-stem: 13px; --arrival-angle: 0deg; }
.demand-timeline__arrival--lane-4 { --arrival-top: 170px; --arrival-shift: 0px; --arrival-anchor-offset: 0px; --arrival-gap: 46px; --arrival-stem: 46px; --arrival-angle: 0deg; }
.demand-timeline__arrival--lane-5 { --arrival-top: 203px; --arrival-shift: 0px; --arrival-anchor-offset: 0px; --arrival-gap: 79px; --arrival-stem: 79px; --arrival-angle: 0deg; }

.demand-timeline__arrival::after {
    content: "";
    position: absolute;
    top: 100%;
    left: 50%;
    width: 1px;
    height: var(--arrival-stem);
    transform: rotate(var(--arrival-angle));
    transform-origin: top;
    background: linear-gradient(color-mix(in srgb, var(--arrival-color) 48%, transparent), color-mix(in srgb, var(--arrival-color) 14%, transparent));
}

/* Pociąg prowadzi do dokładnego punktu czasu cienką, czarną linią. */
.demand-timeline__arrival--train::after {
    width: 1px;
    background: #111111;
    opacity: 0.78;
}

.demand-timeline__arrival--flight::after {
    width: 1px;
    background: color-mix(in srgb, var(--arrival-color) 76%, #475569);
    opacity: 0.76;
}

/* 6.1.18: po pełnym rozmieszczeniu dymków prosta kreska CSS jest zastępowana
   trasą SVG prowadzoną korytarzami pomiędzy etykietami. Dzięki temu łącznik
   nigdy nie przecina godziny ani sąsiedniego dymku. */
.demand-timeline__rail[data-connectors-routed="1"] .demand-timeline__arrival::after {
    display: none;
}

.demand-timeline__connectors {
    position: absolute;
    inset: 0;
    z-index: 1;
    overflow: visible;
    pointer-events: none;
}

.demand-timeline__connector {
    fill: none;
    stroke-width: 1px;
    stroke-linecap: round;
    stroke-linejoin: round;
    pointer-events: none;
}

.demand-timeline__connector--train {
    stroke: #111111;
    opacity: 0.78;
}

.demand-timeline__connector--flight {
    stroke: color-mix(in srgb, #a855f7 76%, #475569);
    opacity: 0.76;
}

/* Kropka wskazuje dokładną minutę na osi, nawet gdy etykieta odsuwa się w bok. */
.demand-timeline__arrival::before {
    content: "";
    position: absolute;
    top: calc(100% + var(--arrival-gap));
    left: calc(50% + var(--arrival-anchor-offset));
    z-index: 3;
    width: 6px;
    height: 6px;
    transform: translate(-50%, -50%);
    border: 1px solid #ffffff;
    border-radius: 50%;
    background: var(--arrival-color);
    box-shadow: 0 0 0 2px color-mix(in srgb, var(--arrival-color) 18%, transparent);
    pointer-events: none;
}

.demand-timeline__arrival--train::before {
    background: #111111;
    box-shadow: 0 0 0 2px rgba(17, 17, 17, 0.12);
}

.demand-timeline__arrival--below::after {
    top: auto;
    bottom: 100%;
    transform-origin: bottom;
}

.demand-timeline__arrival--below::before {
    top: auto;
    bottom: calc(100% + var(--arrival-gap));
    transform: translate(-50%, 50%);
}

.demand-timeline__arrival:hover,
.demand-timeline__arrival:focus-visible {
    z-index: 5;
    border-color: var(--arrival-color);
    background: color-mix(in srgb, var(--arrival-color) 34%, #07101f);
    color: #ffffff;
    outline: none;
}

.demand-timeline__arrival span {
    font-size: 0.78rem;
    line-height: 1;
}

.demand-timeline__arrival strong {
    font-size: 0.78rem;
    line-height: 1;
}

.demand-timeline__arrival em {
    padding: 2px 8px;
    border-radius: 999px;
    background: linear-gradient(120deg, #450a0a 0%, #7f1d1d 35%, #b91c1c 100%);
    color: #ffffff;
    font-size: 0.78rem;
    font-style: normal;
    font-weight: 800;
    letter-spacing: 0.02em;
    line-height: 1;
    box-shadow: 0 2px 8px rgba(185, 28, 28, 0.38);
}

.demand-timeline__arrival[aria-expanded="true"] {
    z-index: 5;
    border-color: var(--arrival-color);
    background: color-mix(in srgb, var(--arrival-color) 34%, #07101f);
    color: #ffffff;
    outline: none;
}

.demand-timeline__arrival--delayed {
    border-color: rgba(248, 113, 113, 0.7);
    box-shadow: 0 5px 14px rgba(127, 29, 29, 0.28);
}

.demand-timeline__arrival--past {
    --arrival-color: #64748b;
    opacity: 0.88;
    border-style: dashed;
}

.demand-timeline__arrival .demand-timeline__past {
    padding: 2px 5px;
    border-radius: 999px;
    background: rgba(100, 116, 139, 0.18);
    color: currentColor;
    font-size: 0.56rem;
    font-weight: 850;
    line-height: 1;
}

.timeline-arrival-detail[hidden] {
    display: none;
}

.timeline-arrival-detail {
    position: fixed;
    z-index: 11990;
    width: min(370px, calc(100vw - 24px));
    max-height: min(620px, calc(100dvh - 24px));
    overflow: auto;
    padding: 17px;
    border: 1px solid rgba(56, 189, 248, 0.36);
    border-radius: 17px;
    background: rgba(8, 15, 29, 0.98);
    color: #e5edf8;
    box-shadow: 0 18px 55px rgba(2, 8, 23, 0.52);
    backdrop-filter: blur(18px);
    -webkit-backdrop-filter: blur(18px);
}

.timeline-arrival-detail__head {
    display: flex;
    justify-content: space-between;
    padding-right: 34px;
}

.timeline-arrival-detail__head span {
    color: #38bdf8;
    font-size: 0.61rem;
    font-weight: 900;
    letter-spacing: 0.1em;
}

.timeline-arrival-detail__head h2 {
    margin: 3px 0 12px;
    color: #f8fafc;
    font-size: 1rem;
    line-height: 1.25;
}

.timeline-arrival-detail__close {
    position: absolute;
    top: 10px;
    right: 10px;
    display: grid;
    place-items: center;
    width: 30px;
    min-width: 30px;
    height: 30px;
    margin: 0;
    padding: 0;
    border: 1px solid rgba(148, 163, 184, 0.3);
    border-radius: 50%;
    background: rgba(30, 41, 59, 0.88);
    color: #e2e8f0;
    font-size: 1.15rem;
    line-height: 1;
    cursor: pointer;
}

.timeline-arrival-detail dl {
    display: grid;
    gap: 0;
    margin: 0;
}

.timeline-arrival-detail__row {
    display: grid;
    grid-template-columns: minmax(112px, 0.8fr) minmax(0, 1.2fr);
    gap: 12px;
    padding: 8px 0;
    border-top: 1px solid rgba(148, 163, 184, 0.14);
}

.timeline-arrival-detail__row dt,
.timeline-arrival-detail__row dd {
    margin: 0;
    font-size: 0.74rem;
    line-height: 1.42;
}

.timeline-arrival-detail__row dt {
    color: #94a3b8;
    font-weight: 700;
}

.timeline-arrival-detail__row dd {
    color: #f1f5f9;
    font-weight: 780;
    overflow-wrap: anywhere;
}

.timeline-arrival-detail__row--delayed {
    margin: 3px -7px;
    padding: 8px 7px;
    border: 1px solid rgba(248, 113, 113, 0.38);
    border-radius: 10px;
    background: linear-gradient(115deg, rgba(69, 10, 10, 0.84), rgba(127, 29, 29, 0.62) 52%, rgba(185, 28, 28, 0.42));
    box-shadow: inset 0 1px rgba(254, 202, 202, 0.08);
}

.timeline-arrival-detail__row--delayed dt {
    color: #fecaca;
}

.timeline-arrival-detail__row--delayed dd {
    color: #ffffff;
    font-weight: 900;
}

.timeline-arrival-detail__note {
    margin: 11px 0 0;
    padding: 9px 10px;
    border-radius: 10px;
    background: rgba(56, 189, 248, 0.11);
    color: #bae6fd;
    font-size: 0.72rem;
    line-height: 1.42;
}

.timeline-arrival-detail__cta {
    display: flex;
    justify-content: center;
    margin-top: 13px;
    padding: 10px 12px;
    border-radius: 11px;
    background: linear-gradient(135deg, #0284c7, #4f46e5);
    color: #ffffff;
    font-size: 0.76rem;
    font-weight: 850;
    text-decoration: none;
}

.timeline-arrival-detail__cta-row {
    display: flex;
    gap: 8px;
    align-items: center;
    margin-top: 13px;
}

.timeline-arrival-detail__cta-row .timeline-arrival-detail__cta {
    flex: 1;
    margin-top: 0;
}

.timeline-arrival-detail__collapse {
    width: 42px;
    height: 42px;
    border-radius: 12px;
    border: 1px solid rgba(255, 255, 255, 0.15);
    background: rgba(15, 23, 42, 0.75);
    color: #cbd5e1;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.05rem;
    box-shadow: 0 2px 10px rgba(2, 8, 23, 0.25);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
}

.timeline-arrival-detail__collapse:hover {
    background: rgba(30, 41, 59, 0.95);
    color: #ffffff;
    border-color: rgba(255, 255, 255, 0.28);
}

@media (max-width: 767px) {
    .timeline-arrival-detail {
        top: auto !important;
        right: 10px;
        bottom: calc(72px + env(safe-area-inset-bottom));
        left: 10px !important;
        width: auto;
        max-height: min(56dvh, 440px);
        padding: 15px;
        border-radius: 17px;
    }

    .timeline-arrival-detail__row {
        grid-template-columns: minmax(105px, 0.82fr) minmax(0, 1.18fr);
        gap: 9px;
        padding: 7px 0;
    }
}

.demand-timeline__arrival-empty {
    position: absolute;
    top: 76px;
    left: 50%;
    margin: 0;
    transform: translateX(-50%);
    color: #718096;
    font-size: 0.66rem;
    white-space: nowrap;
}

.demand-timeline__progress {
    position: absolute;
    top: var(--timeline-progress-y);
    right: 38px;
    left: 38px;
    height: 2px;
    border-radius: 99px;
    background: linear-gradient(90deg, #a855f7, #38bdf8 50%, #22c55e);
}

.demand-timeline__progress span {
    top: 9px;
}

.demand-timeline__empty {
    position: absolute;
    top: 217px;
    right: 0;
    bottom: 42px;
    left: 0;
    display: grid;
    place-items: center;
    margin: 0;
    color: #718096;
    font-size: 0.75rem;
}

/* Skróty są celowo osobnym „paskiem narzędzi”, a nie kolejnym menu. */
.dash-toolbelt {
    position: relative;
    z-index: 1;
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 10px;
    margin: 0 0 22px;
}

.dash-tool {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    align-items: center;
    gap: 10px;
    min-width: 0;
    padding: 13px 14px;
    border: 1px solid color-mix(in srgb, var(--tool-color, #38bdf8) 25%, rgba(148, 163, 184, 0.16));
    border-radius: 15px;
    background: linear-gradient(145deg, color-mix(in srgb, var(--tool-color, #38bdf8) 8%, transparent), rgba(8, 15, 29, 0.92));
    color: #e2e8f0;
    text-decoration: none;
    box-shadow: 0 10px 28px rgba(2, 8, 23, 0.25);
    transition: transform 0.18s ease, border-color 0.18s ease, box-shadow 0.18s ease;
}

.dash-tool:hover {
    transform: translateY(-2px);
    border-color: color-mix(in srgb, var(--tool-color, #38bdf8) 58%, rgba(255, 255, 255, 0.16));
    color: #fff;
    box-shadow: 0 14px 34px rgba(2, 8, 23, 0.34);
    text-decoration: none;
}

.dash-tool__icon {
    display: grid;
    place-items: center;
    width: 38px;
    height: 38px;
    border-radius: 12px;
    background: color-mix(in srgb, var(--tool-color, #38bdf8) 13%, rgba(15, 23, 42, 0.9));
    font-size: 1.1rem;
}

.dash-tool strong,
.dash-tool small {
    display: block;
}

.dash-tool strong {
    color: #f1f5f9;
    font-size: 0.77rem;
}

.dash-tool small {
    margin-top: 2px;
    overflow: hidden;
    color: #75859b;
    font-size: 0.6rem;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.dash-tool > b {
    color: var(--tool-color, #38bdf8);
    font-size: 1rem;
}

.cc-map-placeholder {
    display: flex;
    flex: 1;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    min-height: 220px;
    padding: 20px;
    color: #94a3b8;
    text-align: center;
}

.cc-map-placeholder > span {
    margin-bottom: 8px;
    font-size: 2rem;
}

.cc-map-placeholder strong {
    color: #e2e8f0;
}

.cc-map-placeholder small {
    max-width: 360px;
    margin-top: 6px;
}

.panel-heading-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    margin-bottom: 12px;
}

.panel-heading-row h2 {
    margin-bottom: 0;
}

.panel-heading-row > a {
    color: #67e8f9;
    font-size: 0.72rem;
    font-weight: 750;
    text-decoration: none;
}

.data-mode-badge {
    padding: 5px 9px;
    border: 1px solid rgba(34, 197, 94, 0.25);
    border-radius: 999px;
    background: rgba(34, 197, 94, 0.08);
    color: #86efac;
    font-size: 0.62rem;
    font-weight: 800;
    white-space: nowrap;
}

.airport-manual-status {
    display: flex;
    flex-direction: column;
    gap: 2px;
    margin-bottom: 8px;
    padding: 9px 11px;
    border: 1px solid rgba(56, 189, 248, 0.24);
    border-radius: 11px;
    background: rgba(56, 189, 248, 0.07);
}

.airport-manual-status strong {
    color: #bae6fd;
    font-size: 0.72rem;
}

.airport-manual-status span {
    color: #7f91a8;
    font-size: 0.64rem;
}

.airport-manual-status--fresh {
    border-color: rgba(34, 197, 94, 0.28);
    background: rgba(34, 197, 94, 0.07);
}

.airport-manual-status--fresh strong {
    color: #86efac;
}

.airport-manual-status--old,
.airport-manual-status--stale,
.airport-manual-status--missing {
    border-color: rgba(245, 158, 11, 0.3);
    background: rgba(245, 158, 11, 0.07);
}

.airport-manual-status--old strong,
.airport-manual-status--stale strong,
.airport-manual-status--missing strong {
    color: #fcd34d;
}

.gp-mini-demand-marker {
    background: transparent !important;
    border: 0 !important;
}

.gp-mini-demand-pin {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    width: 64px;
    height: 64px;
    border: 3px solid #fff;
    border-radius: 50%;
    background: var(--pin-color, #38bdf8);
    color: #fff;
    box-shadow: 0 0 18px color-mix(in srgb, var(--pin-color, #38bdf8) 68%, transparent), 0 4px 10px rgba(0, 0, 0, 0.42);
    line-height: 1;
}

.gp-mini-demand-pin span {
    font-size: 0.95rem;
}

.gp-mini-demand-pin b {
    margin-top: 2px;
    font-size: 1.05rem;
}

.gp-mini-demand-pin small {
    margin-top: 2px;
    font-size: 0.48rem;
    font-weight: 800;
}

@media (max-width: 920px) {
    .recommendation-grid {
        grid-template-columns: 1fr;
    }

    .recommendation-card__reason {
        min-height: 0;
    }

    .recommendation-card--primary {
        grid-row: auto;
    }

    .dash-toolbelt {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 680px) {
    .page.dashboard-page {
        padding: 0 12px 38px;
        border-radius: 0 0 20px 20px;
    }

    .demand-now {
        margin-bottom: 9px;
        padding: 11px 10px 9px;
        border-radius: 0 0 18px 18px;
    }

    .demand-now__head {
        display: grid;
        grid-template-columns: minmax(0, 1fr) auto;
        align-items: end;
        gap: 7px;
        margin-bottom: 8px;
    }

    .demand-now__head h1 {
        font-size: 1.55rem;
        margin-bottom: 0;
    }

    .demand-now__head--with-telegram h1 {
        font-size: clamp(1.3rem, 5.8vw, 1.48rem);
    }

    .telegram-home-status {
        min-width: 0;
        max-width: 142px;
        gap: 6px;
        padding: 6px 8px;
        border-radius: 12px;
    }

    .telegram-home-status__icon {
        width: 25px;
        height: 25px;
        font-size: 0.76rem;
    }

    .telegram-home-status strong {
        font-size: 0.68rem;
    }

    .telegram-home-status small {
        overflow: hidden;
        max-width: 110px;
        font-size: 0.55rem;
        text-overflow: ellipsis;
        white-space: nowrap;
    }

    .demand-now__head p {
        font-size: 0.76rem;
    }

    .source-health {
        display: flex;
        gap: 4px;
        overflow-x: auto;
        padding-bottom: 1px;
        scrollbar-width: none;
    }

    .source-health::-webkit-scrollbar {
        display: none;
    }

    .source-health__item {
        min-width: 190px;
        padding: 6px 8px;
    }

    .recommendation-grid {
        gap: 7px;
    }

    .recommendation-grid--multi-city {
        grid-template-columns: 1fr;
    }

    .recommendation-grid--multi-city .recommendation-card,
    .recommendation-grid--multi-city .recommendation-card--primary {
        min-height: 0;
        padding: 37px 10px 9px;
    }

    .recommendation-grid--multi-city .recommendation-card__timing {
        margin-top: 4px;
        padding: 6px 8px;
    }

    .recommendation-grid--multi-city .recommendation-card__reason {
        display: -webkit-box;
        overflow: hidden;
        margin: 5px 0;
        -webkit-box-orient: vertical;
        -webkit-line-clamp: 2;
    }

    .recommendation-card {
        padding: 38px 11px 10px;
        border-radius: 15px;
    }

    .recommendation-card--primary {
        padding: 40px 12px 11px;
    }

    .recommendation-card__action {
        font-size: 0.68rem;
    }

    .recommendation-card__topbar {
        gap: 5px;
    }

    .recommendation-card__context {
        font-size: 0.56rem;
    }

    .recommendation-card__top {
        grid-template-columns: auto minmax(0, 1fr) auto;
        gap: 7px;
    }

    .recommendation-card__icon {
        width: 34px;
        height: 34px;
        border-radius: 10px;
        font-size: 1rem;
    }

    .recommendation-card__title h2 {
        font-size: 1.04rem;
    }

    .recommendation-card--primary .recommendation-card__title h2 {
        font-size: clamp(0.84rem, 4.5vw, 1rem);
        letter-spacing: -0.035em;
        white-space: nowrap;
    }

    .recommendation-card__title > strong {
        font-size: 0.78rem;
    }

    .recommendation-card__score b {
        font-size: 1.3rem;
    }

    .recommendation-card__timing {
        margin-top: 5px;
        padding: 7px 8px;
        font-size: 0.82rem;
    }

    .recommendation-card__reason {
        margin: 6px 0;
        font-size: 0.77rem;
    }

    .recommendation-card__meta {
        font-size: 0.7rem;
    }

    .recommendation-card__foot small,
    .recommendation-card__quick {
        font-size: 0.7rem;
    }

    .source-health__item strong {
        font-size: 0.82rem;
    }

    .source-health__item small {
        font-size: 0.7rem;
    }

    .demand-now__note p {
        font-size: 0.74rem;
    }

    #recommendations-updated {
        font-size: 0.68rem;
    }

    .demand-timeline {
        padding-right: 12px;
        padding-left: 12px;
    }

    .demand-timeline__viewport {
        overflow-x: auto;
        overflow-y: hidden;
        scrollbar-width: none;
        -webkit-overflow-scrolling: touch;
        touch-action: pan-x pan-y;
    }

    .demand-timeline__viewport::-webkit-scrollbar {
        display: none;
    }

    .demand-timeline__rail {
        width: max(190%, 720px);
        min-width: max(190%, 720px);
    }

    .demand-timeline__clock span {
        left: var(--tick);
    }

    .demand-timeline__clock span:first-child {
        transform: none;
    }

    .demand-timeline__clock span:last-child {
        transform: translateX(-100%);
    }

    .demand-timeline__clock span:not(:first-child):not(:last-child) {
        transform: translateX(-50%);
    }

    .demand-timeline__clock span:nth-last-child(2) {
        transform: translateX(-50%);
    }

    .demand-timeline__clock span:first-child::after {
        left: 0;
    }

    .demand-timeline__clock span:last-child::after {
        left: 100%;
    }

    .demand-timeline__clock span:not(:first-child):not(:last-child)::after {
        left: 50%;
    }

    .demand-timeline__clock span:nth-last-child(2)::after {
        left: 50%;
    }

    .demand-timeline__clock span:nth-child(even) {
        top: 13px;
    }

    .demand-timeline__clock span:nth-child(even)::after {
        top: 12px;
    }

    .demand-timeline__clock span,
    .demand-timeline__progress span {
        left: clamp(18px, var(--tick), calc(100% - 18px));
    }

    .demand-timeline__line,
    .demand-timeline__progress {
        right: 18px;
        left: 18px;
    }

    .demand-timeline__now-marker {
        left: clamp(18px, var(--timeline-now), calc(100% - 18px));
    }

    .demand-timeline__arrival {
        left: clamp(34px, var(--timeline-pos), calc(100% - 34px));
    }

    .demand-timeline__signal {
        left: clamp(90px, var(--timeline-pos), calc(100% - 90px));
        grid-template-columns: 34px minmax(0, 1fr);
        grid-template-areas:
            "pin copy"
            "pin tag";
        width: 176px;
        min-height: 61px;
    }

    .demand-timeline__pin {
        grid-area: pin;
    }

    .demand-timeline__signal-copy {
        grid-area: copy;
    }

    .demand-timeline__signal em {
        grid-area: tag;
        justify-self: start;
        margin-top: -2px;
    }

    .demand-timeline__head {
        align-items: flex-start;
        gap: 8px;
    }

    .demand-timeline__head h2 {
        font-size: 1.06rem;
    }

    .demand-timeline__head > div:first-child {
        flex: 1 1 auto;
        min-width: 0;
    }

    .demand-timeline__legend {
        flex: 0 0 154px;
    }

    .demand-timeline__legend small {
        font-size: 0.61rem;
    }

    .demand-now__note .demand-now__note-last {
        gap: 8px;
    }

    .panel-heading-row {
        align-items: flex-start;
    }

    .train-row-dash small {
        display: block;
        margin-top: 2px;
    }
}

@media (max-width: 380px) {
    .recommendation-card__top {
        gap: 4px;
    }

    .recommendation-card__icon,
    .recommendation-card--primary .recommendation-card__icon {
        width: 32px;
        height: 32px;
        border-radius: 9px;
        font-size: 0.92rem;
    }

    .recommendation-card--primary .recommendation-card__title h2 {
        max-width: 100%;
        font-size: 0.84rem;
        line-height: 1.08;
        white-space: normal;
    }

    .recommendation-card__score b,
    .recommendation-card--primary .recommendation-card__score b {
        font-size: 1.08rem;
    }

}

@media (max-width: 520px) {
    .dash-toolbelt {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 7px;
    }

    .dash-tool {
        grid-template-columns: auto minmax(0, 1fr) auto;
        gap: 7px;
        padding: 9px 8px;
        border-radius: 13px;
    }

    .dash-tool__icon {
        width: 33px;
        height: 33px;
        border-radius: 10px;
        font-size: 0.96rem;
    }

    .dash-tool strong {
        font-size: 0.75rem;
    }

    .dash-tool small {
        margin-top: 1px;
        font-size: 0.6rem;
        line-height: 1.2;
        white-space: normal;
    }

    .dash-tool > b {
        font-size: 0.82rem;
    }
}

@media (max-width: 860px) {
    .page {
        padding: 8px 8px 32px;
        padding-bottom: max(32px, env(safe-area-inset-bottom));
    }
    .page.dashboard-page,
    .page.events-page {
        padding: 16px 12px 24px !important;
        border-radius: 20px !important;
    }

    .hero {
        padding: 20px 18px;
        border-radius: 18px;
    }

    .hero-copy h1 {
        font-size: 1.65rem;
    }

    .hero-metrics {
        grid-template-columns: 1fr;
    }

    .panel {
        padding: 18px 16px;
        border-radius: 18px;
    }

    .insight-card,
    .promo-box,
    .upcoming-card,
    .board-card {
        padding: 16px;
    }
}

/* ── Map page (mobile-first, full screen) ────────────────────────────── */
body.map-app {
    overflow: hidden;
    height: 100%;
    height: 100dvh;
    background: var(--map-shell-bg);
}

body.map-app .map-shell {
    display: flex;
    flex-direction: column;
    height: 100dvh;
    height: 100vh;
}

.map-app-header {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding: 5px 10px;
    padding-top: max(5px, env(safe-area-inset-top));
    background: rgba(6, 8, 22, 0.94);
    backdrop-filter: blur(16px);
    border-bottom: 1px solid var(--border);
    z-index: 1000;
}

.map-app-header .brand-mini {
    font-weight: 700;
    font-size: 13px;
    color: var(--text);
    white-space: nowrap;
}

.map-app-header .brand-mini span {
    color: var(--muted);
    font-weight: 500;
    font-size: 8px;
    line-height: 1;
    display: block;
}

.map-app-header nav {
    display: flex;
    gap: 6px;
    align-items: center;
}

.map-app-header nav a {
    color: var(--muted);
    font-size: 0.78rem;
    padding: 8px 10px;
    border-radius: 10px;
    text-decoration: none;
    min-height: 36px;
    display: inline-flex;
    align-items: center;
}

.map-app-header nav a.active {
    color: #fff;
    background: rgba(96, 165, 250, 0.22);
}

.map-stage {
    position: relative;
    flex: 1;
    min-height: 0;
}

.map-loading {
    position: absolute;
    inset: 0;
    z-index: 12000;
    display: grid;
    place-items: center;
    padding: 20px;
    background:
        radial-gradient(circle at 50% 46%, rgba(14, 165, 233, 0.18), transparent 34%),
        linear-gradient(145deg, rgba(2, 6, 23, 0.94), rgba(8, 15, 34, 0.92));
    backdrop-filter: blur(8px);
    transition: opacity 0.34s ease, visibility 0.34s ease;
}

.map-loading.is-ready {
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
}

.map-loading__hud {
    position: relative;
    width: min(310px, calc(100vw - 44px));
    padding: 28px 24px 23px;
    border: 1px solid rgba(56, 189, 248, 0.32);
    background: rgba(3, 10, 26, 0.82);
    color: #e0f2fe;
    box-shadow: 0 24px 70px rgba(2, 8, 23, 0.55), inset 0 0 36px rgba(14, 165, 233, 0.06);
    text-align: center;
}

.map-loading__corner {
    position: absolute;
    width: 24px;
    height: 24px;
    border-color: #38bdf8;
    border-style: solid;
}
.map-loading__corner--tl { top: -1px; left: -1px; border-width: 2px 0 0 2px; }
.map-loading__corner--tr { top: -1px; right: -1px; border-width: 2px 2px 0 0; }
.map-loading__corner--bl { bottom: -1px; left: -1px; border-width: 0 0 2px 2px; }
.map-loading__corner--br { right: -1px; bottom: -1px; border-width: 0 2px 2px 0; }

.map-loading__radar {
    position: relative;
    display: grid;
    place-items: center;
    width: 92px;
    height: 92px;
    margin: 0 auto 17px;
    border: 1px solid rgba(56, 189, 248, 0.42);
    border-radius: 50%;
    background: radial-gradient(circle, rgba(56, 189, 248, 0.12) 0 3px, transparent 4px);
    box-shadow: 0 0 32px rgba(14, 165, 233, 0.15), inset 0 0 22px rgba(14, 165, 233, 0.11);
}

.map-loading__radar::before,
.map-loading__radar::after {
    content: "";
    position: absolute;
    border-radius: 50%;
}

.map-loading__radar::before {
    inset: 11px;
    border: 1px dashed rgba(125, 211, 252, 0.34);
    animation: gp-map-radar 2.8s linear infinite;
}

.map-loading__radar::after {
    inset: -6px;
    border-top: 2px solid #22d3ee;
    border-right: 2px solid transparent;
    animation: gp-map-radar 1.1s linear infinite;
}

.map-loading__radar span {
    position: relative;
    z-index: 1;
    color: #f0f9ff;
    font-size: 2.25rem;
    font-weight: 950;
    line-height: 1;
    text-shadow: 0 0 20px rgba(56, 189, 248, 0.78);
}

.map-loading__hud strong,
.map-loading__hud small {
    display: block;
}

.map-loading__hud strong {
    font-size: 0.95rem;
    letter-spacing: 0.05em;
    text-transform: uppercase;
}

.map-loading__hud small {
    margin-top: 6px;
    color: #8fa9c2;
    font-size: 0.7rem;
    line-height: 1.4;
}

.map-loading__progress {
    height: 3px;
    margin-top: 18px;
    overflow: hidden;
    background: rgba(148, 163, 184, 0.16);
}

.map-loading__progress span {
    display: block;
    width: 42%;
    height: 100%;
    background: linear-gradient(90deg, transparent, #38bdf8, #a855f7, transparent);
    animation: gp-map-loading-progress 1.25s ease-in-out infinite;
}

#map-loading-retry {
    margin-top: 16px;
    padding: 8px 14px;
    border: 1px solid rgba(248, 113, 113, 0.55);
    border-radius: 9px;
    background: rgba(127, 29, 29, 0.34);
    color: #fee2e2;
    font-weight: 800;
    cursor: pointer;
}

.map-loading.is-error .map-loading__radar {
    border-color: rgba(248, 113, 113, 0.7);
    box-shadow: 0 0 30px rgba(239, 68, 68, 0.18);
}
.map-loading.is-error .map-loading__radar::after { border-top-color: #f87171; animation: none; }
.map-loading.is-error .map-loading__radar span { color: #fecaca; text-shadow: 0 0 18px rgba(239, 68, 68, 0.55); }

@keyframes gp-map-radar { to { transform: rotate(360deg); } }
@keyframes gp-map-loading-progress {
    from { transform: translateX(-130%); }
    to { transform: translateX(340%); }
}

body.map-app #map {
    width: 100%;
    height: 100%;
}

#map-status {
    position: absolute;
    bottom: max(16px, env(safe-area-inset-bottom));
    left: 50%;
    transform: translateX(-50%);
    z-index: 999;
    background: rgba(6, 8, 22, 0.92);
    color: var(--muted);
    padding: 7px 14px;
    border-radius: 999px;
    font-size: 0.72rem;
    border: 1px solid var(--border);
    pointer-events: none;
    white-space: nowrap;
    max-width: calc(100% - 24px);
    overflow: hidden;
    text-overflow: ellipsis;
}

.map-legend-wrap {
    position: absolute;
    top: 12px;
    left: 12px;
    z-index: 999;
}

.map-tools {
    position: absolute;
    bottom: 24px;
    right: 12px;
    z-index: 999;
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.map-tool {
    width: 36px;
    height: 36px;
    border-radius: 8px;
    border: 1px solid var(--border);
    background: rgba(6, 8, 22, 0.94);
    color: #e5e7eb;
    font-size: 0.95rem;
    cursor: pointer;
    backdrop-filter: blur(10px);
    line-height: 1;
    padding: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 4px 12px rgba(0,0,0,0.5);
    transition: transform 0.15s ease, border-color 0.15s ease;
}

.map-tool:active {
    transform: scale(0.95);
}

.map-tool--sos {
    width: auto;
    padding: 0 8px;
    font-size: 0.7rem;
    font-weight: 900;
    color: #fca5a5;
}

.map-tool.is-on {
    border-color: #14b8a6;
    box-shadow: 0 0 0 2px rgba(20, 184, 166, 0.35), 0 4px 12px rgba(0,0,0,0.5);
    background: rgba(20, 184, 166, 0.15);
}

.map-tool--sos.is-on {
    border-color: #dc2626;
    box-shadow: 0 0 0 2px rgba(220, 38, 38, 0.35), 0 4px 12px rgba(0,0,0,0.5);
    background: rgba(220, 38, 38, 0.2);
    color: #fff;
}

/* Expandable events slider */
.map-tool-expandable {
    position: relative;
    display: flex;
    align-items: center;
}

.map-tool-slider {
    display: flex;
    gap: 6px;
    position: absolute;
    right: 42px; /* 36px width + 6px gap */
    top: 0;
    height: 36px;
    align-items: center;
    
    /* Animation transition */
    transform: scaleX(0);
    transform-origin: right;
    opacity: 0;
    visibility: hidden;
    transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.2s ease, visibility 0s linear 0.25s;
    pointer-events: none;
    z-index: 1000;
}

.map-tool-slider.open {
    transform: scaleX(1);
    opacity: 1;
    visibility: visible;
    transition-delay: 0s;
    pointer-events: auto;
}

.map-tool-sub {
    width: 36px;
    height: 36px;
    border-radius: 8px;
    border: 1px solid var(--border);
    background: rgba(6, 8, 22, 0.94);
    color: #e5e7eb;
    font-size: 1.1rem;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    backdrop-filter: blur(10px);
    box-shadow: 0 4px 12px rgba(0,0,0,0.5);
    transition: background 0.15s ease, transform 0.15s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}

.map-tool-sub:hover {
    background: rgba(255, 255, 255, 0.12);
    transform: scale(1.15);
}

.map-tool-sub:active {
    transform: scale(0.95);
}

/* Floating Toast Notification */
.gp-toast {
    position: fixed;
    bottom: 90px;
    left: 50%;
    transform: translate(-50%, 20px);
    background: rgba(11, 16, 32, 0.95);
    border: 1px solid var(--border);
    color: #fff;
    padding: 10px 18px;
    border-radius: 10px;
    font-size: 0.76rem;
    font-weight: 600;
    z-index: 10000;
    opacity: 0;
    transition: transform 0.35s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.35s ease;
    box-shadow: 0 4px 16px rgba(0,0,0,0.6);
    pointer-events: none;
    text-align: center;
    max-width: 90%;
    backdrop-filter: blur(8px);
}
.gp-toast.visible {
    opacity: 1;
    transform: translate(-50%, 0);
}
.gp-toast--error {
    border-color: #ef4444;
    color: #f87171;
}

.map-live-stack {
    position: absolute;
    top: 62px;
    left: 12px;
    z-index: 998;
    display: flex;
    flex-direction: column;
    gap: 8px;
    max-width: min(280px, calc(100vw - 24px));
}

.map-live-stack[hidden] {
    display: none !important;
}

.map-live-card {
    background: rgba(6, 8, 22, 0.94);
    border: 1px solid var(--border);
    border-radius: 12px;
    padding: 10px 12px;
    backdrop-filter: blur(10px);
    font-size: 0.78rem;
    color: #e5e7eb;
}

.map-live-card[hidden] {
    display: none !important;
}

.map-live-card--traffic {
    border-color: color-mix(in srgb, var(--traffic-color, #22c55e) 45%, var(--border));
}

.map-live-head {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 8px;
    margin-bottom: 8px;
    font-size: 0.72rem;
}

.map-live-score {
    font-weight: 800;
    color: var(--traffic-color, #22c55e);
}

.map-live-wx-row {
    display: flex;
    align-items: center;
    gap: 10px;
}

.map-live-wx-icon {
    font-size: 1.6rem;
    line-height: 1;
}

.map-live-wx-temp {
    font-size: 1.2rem;
    font-weight: 800;
    line-height: 1.1;
}

.map-live-muted {
    color: var(--muted);
    font-size: 0.7rem;
}

.map-live-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-top: 8px;
    font-size: 0.68rem;
    color: var(--muted);
}

.map-live-factors {
    margin: 8px 0 0;
    padding-left: 16px;
    font-size: 0.65rem;
    color: var(--muted);
}

.map-live-bar {
    height: 5px;
    background: rgba(255, 255, 255, 0.08);
    border-radius: 999px;
    margin-top: 8px;
    overflow: hidden;
}

.map-live-bar > span {
    display: block;
    height: 100%;
    border-radius: 999px;
}

@media (max-width: 480px) {
    .map-tools {
        top: auto;
        bottom: 24px;
        right: 12px;
        flex-direction: column;
    }

    .map-live-stack {
        top: auto;
        bottom: 200px;
        left: 12px;
        right: 12px;
        max-width: none;
        max-height: calc(100% - 220px);
        overflow-y: auto;
        overscroll-behavior: contain;
    }
}

.map-legend {
    background: rgba(6, 8, 22, 0.94);
    border: 1px solid var(--border);
    border-radius: 8px;
    padding: 5px 8px;
    font-size: 0.62rem;
    color: var(--muted);
    width: max-content;
    max-width: calc(100vw - 24px);
    backdrop-filter: blur(10px);
}

.map-legend.collapsed .leg-body {
    display: none;
}

.map-legend-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    margin-bottom: 6px;
}

.map-legend.collapsed .map-legend-head {
    margin-bottom: 0;
}

.map-legend h4 {
    margin: 0;
    color: #e5e7eb;
    font-size: 0.65rem;
    font-weight: 700;
    white-space: nowrap;
}

.legend-toggle {
    background: rgba(15, 23, 42, 0.8);
    border: 1px solid var(--border);
    color: var(--muted);
    border-radius: 6px;
    width: 24px;
    height: 24px;
    padding: 0;
    cursor: pointer;
    font-size: 0.7rem;
    line-height: 1;
    flex-shrink: 0;
}

.leg-row {
    display: flex;
    align-items: center;
    gap: 6px;
    margin-bottom: 4px;
    white-space: nowrap;
}

.leg-row:last-child {
    margin-bottom: 0;
}

.leg-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    flex-shrink: 0;
}

.gp-pin-marker {
    background: transparent !important;
    border: none !important;
}

.gp-pin-marker * {
    pointer-events: auto;
    cursor: pointer;
}

#station-panel {
    position: absolute;
    z-index: 1001;
    background: rgba(6, 8, 22, 0.98);
    border: 1px solid var(--border);
    overflow: hidden;
    display: flex;
    flex-direction: column;
    box-sizing: border-box;
    transition: transform 0.32s cubic-bezier(0.32, 0.72, 0, 1),
                height 0.32s cubic-bezier(0.32, 0.72, 0, 1);
    left: 0;
    right: 0;
    bottom: 0;
    top: auto;
    max-height: 72vh;
    border-radius: 18px 18px 0 0;
    padding: 0 16px 16px;
    padding-bottom: max(16px, env(safe-area-inset-bottom));
    transform: translateY(100%);
}

#station-panel.open {
    transform: translateY(0);
}

.panel-drag-handle {
    width: 46px;
    height: 5px;
    background: linear-gradient(90deg, #22d3ee, #818cf8, #d946ef);
    border-radius: 999px;
    margin: 10px auto 12px;
    flex: 0 0 auto;
    cursor: ns-resize;
    touch-action: none;
    box-shadow: 0 0 12px rgba(129, 140, 248, 0.42);
}

.panel-drag-handle:focus-visible {
    outline: 2px solid #22d3ee;
    outline-offset: 4px;
}

.sp-collapse-btn-bottom {
    position: absolute;
    bottom: calc(20px + env(safe-area-inset-bottom, 0px));
    right: 20px;
    z-index: 1050;
    background: rgba(15, 23, 42, 0.85);
    border: 1px solid rgba(255, 255, 255, 0.15);
    color: #94a3b8;
    width: 42px;
    height: 42px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.5);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
    padding: 0;
}

.sp-collapse-btn-bottom:hover {
    background: rgba(30, 41, 59, 0.95);
    color: #ffffff;
    border-color: rgba(255, 255, 255, 0.3);
    transform: scale(1.05);
}

.sp-collapse-btn-bottom:active {
    transform: scale(0.95);
}

#sp-body {
    overflow-y: auto;
    overscroll-behavior: contain;
    flex: 1;
    min-height: 0;
    box-sizing: border-box;
    padding-bottom: max(28px, env(safe-area-inset-bottom));
    scroll-padding-bottom: max(28px, env(safe-area-inset-bottom));
    touch-action: pan-y;
    -webkit-overflow-scrolling: touch;
}

#panel-backdrop {
    position: absolute;
    inset: 0;
    z-index: 1000;
    background: rgba(0, 0, 0, 0.45);
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.3s ease;
}

#panel-backdrop.visible {
    opacity: 1;
    pointer-events: auto;
}

.sp-header {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto auto;
    align-items: center;
    gap: 10px;
    margin-bottom: 8px;
}

.sp-header h3 {
    margin: 0;
    font-size: 1rem;
    color: var(--text);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    min-width: 0;
}

#sp-close-btn {
    width: auto;
    margin: 0;
    background: rgba(15, 23, 42, 0.8);
    border: 1px solid var(--border);
    color: #cbd5e1;
    border-radius: 10px;
    padding: 5px 8px;
    cursor: pointer;
    font-size: 0.72rem;
    font-weight: 600;
    min-height: 28px;
    flex-shrink: 0;
    white-space: nowrap;
}

.win-row {
    display: flex;
    gap: 8px;
    margin-bottom: 10px;
}

/* Zwarty moduł ruchu: komunikat i oba okna czasowe bez powtarzania danych. */
.traffic-summary {
    display: grid;
    grid-template-columns: minmax(105px, 1.4fr) repeat(2, minmax(62px, 0.65fr));
    align-items: stretch;
    gap: 6px;
    margin-bottom: 8px;
    padding: 6px;
    border: 1px solid color-mix(in srgb, var(--summary-color, #22c55e) 42%, var(--border));
    border-left: 4px solid var(--summary-color, #22c55e);
    border-radius: 12px;
    background: rgba(15, 23, 42, 0.85);
    box-shadow: 0 4px 12px var(--dash-shadow);
}

.traffic-summary__status {
    min-width: 0;
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 2px;
    padding: 3px 5px;
}

.traffic-summary__status strong {
    color: var(--summary-color, #22c55e);
    font-size: calc(0.88rem * var(--sp-font-scale, 1));
    line-height: 1.16;
}

.traffic-summary__status small {
    overflow: hidden;
    color: var(--muted);
    font-size: calc(0.68rem * var(--sp-font-scale, 1));
    line-height: 1.15;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.traffic-summary__metric {
    min-width: 0;
    display: grid;
    place-content: center;
    gap: 2px;
    padding: 4px 3px;
    border: 1px solid color-mix(in srgb, var(--summary-color, #22c55e) 36%, var(--border));
    border-radius: 9px;
    background: rgba(2, 8, 23, 0.2);
    text-align: center;
}

.traffic-summary__metric b {
    font-size: calc(1.32rem * var(--sp-font-scale, 1));
    line-height: 1;
}

.traffic-summary__metric span {
    color: var(--muted);
    font-size: calc(0.59rem * var(--sp-font-scale, 1));
    line-height: 1.05;
    white-space: nowrap;
}

.chip-compact {
    display: flex;
    align-items: center;
    gap: 12px;
    min-width: 0;
}

.chip-compact-sm {
    gap: 6px;
    justify-content: center;
}

.chip-num {
    font-size: 2rem;
    font-weight: 800;
    line-height: 1;
    flex-shrink: 0;
}

.chip-text {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
}

.chip-title {
    font-size: 0.86rem;
    font-weight: 700;
    line-height: 1.25;
}

.chip-sub {
    font-size: 0.72rem;
    color: var(--muted);
    font-weight: 500;
    line-height: 1.2;
}

.wchip {
    flex: 1;
    background: rgba(15, 23, 42, 0.85);
    border: 2px solid #334155;
    border-radius: 12px;
    padding: 6px 8px;
    text-align: center;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 2px;
}

.wchip.green  { border-color: #22c55e; }
.wchip.yellow { border-color: #f59e0b; }
.wchip.red    { border-color: #ef4444; }
.wchip.purple { border-color: #a855f7; }

.wchip .wc-num {
    font-size: 1.55rem;
    font-weight: 800;
    line-height: 1;
}

.wc-inline {
    font-size: 0.76rem;
    color: var(--muted);
    font-weight: 600;
    line-height: 1.1;
}

.wc-sub {
    font-size: 0.66rem;
    color: var(--muted);
    line-height: 1.1;
}

.driver-tip {
    padding: 10px 12px;
    border-radius: 10px;
    margin-bottom: 8px;
    background: rgba(15, 23, 42, 0.85);
    border-left: 4px solid #334155;
}

.driver-tip.green  { border-color: #22c55e; color: #86efac; }
.driver-tip.yellow { border-color: #f59e0b; color: #fde68a; }
.driver-tip.red    { border-color: #ef4444; color: #fca5a5; }
.driver-tip.purple { border-color: #a855f7; color: #d8b4fe; }

.driver-tip.sky {
    border-color: #0ea5e9;
    color: #7dd3fc;
}

.driver-tip.sky .chip-title {
    color: #bae6fd;
}

.driver-tip .chip-title {
    color: inherit;
}

.filter-buttons {
    margin: 10px 0;
    display: flex;
    gap: 6px;
    padding: 6px;
    background: rgba(15, 23, 42, 0.75);
    border-radius: 10px;
}

.filter-btn {
    flex: 1;
    padding: 10px 6px;
    background: rgba(51, 65, 85, 0.6);
    color: #cbd5e1;
    border: none;
    border-radius: 8px;
    cursor: pointer;
    font-size: 0.75rem;
    font-weight: 600;
    min-height: 40px;
}

.filter-btn.active {
    background: #22c55e;
    color: #052e16;
}

.train-tbl {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.76rem;
}

.train-tbl th {
    color: #64748b;
    font-weight: 500;
    text-align: left;
    padding: 8px 4px;
    border-bottom: 1px solid var(--border);
    font-size: 0.7rem;
}

.train-tbl td {
    padding: 10px 4px;
    border-bottom: 1px solid rgba(148, 163, 184, 0.12);
}

.train-tbl tr.delayed td {
    color: #fca5a5;
}

.train-tbl--flights {
    table-layout: fixed;
    width: 100%;
}

.train-tbl--flights th,
.train-tbl--flights td {
    padding: 8px 4px;
    vertical-align: top;
    text-align: left;
}

.train-tbl--flights th {
    white-space: nowrap;
}

.train-tbl--flights .col-flight {
    width: auto;
    padding-right: 8px;
    white-space: normal;
    word-break: break-word;
}

.train-tbl--flights .col-time {
    width: 2.85rem;
    white-space: nowrap;
}

.train-tbl--flights .col-mins {
    width: 3.15rem;
    white-space: nowrap;
}

.train-tbl--flights .col-status {
    width: 4.6rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 0.68rem;
    line-height: 1.25;
}

.train-tbl--flights .col-status .flight-status-label,
.train-tbl--flights .col-status .flight-status-time {
    display: inline;
    font-size: inherit;
}

.train-tbl--flights .col-status .flight-status-time {
    margin-left: 2px;
    font-weight: 700;
}

.train-tbl--flights .flight-route {
    display: inline-block;
    vertical-align: top;
    min-width: 0;
    max-width: calc(100% - 1.5rem);
}

.train-tbl--flights .flight-num {
    display: inline;
    font-weight: 600;
}

.train-tbl--flights .flight-origin {
    display: block;
    color: #94a3b8;
    font-size: 0.92em;
    line-height: 1.25;
    word-break: break-word;
}

.train-tbl--flights tr.delayed .col-status {
    color: inherit;
}

/* Mobilna lista lotów: status ma osobny wiersz, więc nigdy nie nachodzi na czas. */
.flight-list {
    margin-top: 3px;
    border-top: 1px solid rgba(148, 163, 184, 0.18);
}

.flight-list-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    grid-template-areas:
        "route timing"
        "route status";
    align-items: start;
    gap: 2px 8px;
    min-width: 0;
    padding: 7px 4px;
    border-bottom: 1px solid rgba(148, 163, 184, 0.18);
}

.flight-list-route {
    grid-area: route;
    min-width: 0;
    display: flex;
    align-items: flex-start;
    gap: 5px;
}

.flight-list-route .tag {
    flex: 0 0 auto;
    margin-top: 1px;
    padding-right: 4px;
    padding-left: 4px;
}

.flight-list-route-copy {
    min-width: 0;
    display: block;
}

.flight-list-route-copy strong,
.flight-list-route-copy small {
    display: block;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.flight-list-route-copy strong {
    color: var(--text);
    font-size: calc(0.76rem * var(--sp-font-scale, 1));
    line-height: 1.2;
}

.flight-list-route-copy small {
    margin-top: 2px;
    color: var(--muted);
    font-size: calc(0.66rem * var(--sp-font-scale, 1));
    line-height: 1.15;
}

.flight-list-row.delayed .flight-list-route-copy strong {
    color: #ef4444;
}

.flight-list-timing {
    grid-area: timing;
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 6px;
    min-width: 0;
    white-space: nowrap;
}

.flight-list-timing > strong {
    color: var(--text);
    font-size: calc(0.74rem * var(--sp-font-scale, 1));
    line-height: 1.2;
}

.flight-list-countdown {
    padding: 1px 5px;
    border-radius: 999px;
    background: rgba(14, 165, 233, 0.1);
    color: #38bdf8;
    font-size: calc(0.64rem * var(--sp-font-scale, 1));
    font-weight: 750;
    line-height: 1.35;
}

.flight-list-countdown--now {
    background: rgba(34, 197, 94, 0.12);
    color: #22c55e;
}

.flight-list-status {
    grid-area: status;
    justify-self: end;
    min-width: 0;
    max-width: min(100%, 11rem);
    overflow: hidden;
    padding: 1px 5px;
    border-radius: 6px;
    background: rgba(148, 163, 184, 0.09);
    text-align: right;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.flight-list-status:empty {
    display: none;
}

#station-panel .flight-list-status .flight-status-label,
#station-panel .flight-list-status .flight-status-time {
    display: inline;
    font-size: calc(0.63rem * var(--sp-font-scale, 1)) !important;
    line-height: 1.25;
}

.flight-status-label {
    display: inline-block;
    color: #cbd5e1;
    font-size: 0.72rem;
}

.train-tbl--flights tr.delayed .flight-status-label {
    color: #fca5a5;
}

.flight-status-time {
    display: inline-block;
    margin-left: 5px;
    color: #fbbf24;
    font-weight: 800;
    font-size: 0.82rem;
    letter-spacing: 0.02em;
}

.train-tbl--flights tr.delayed .flight-status-time {
    color: #fde047;
}

.tag {
    display: inline-block;
    padding: 1px 6px;
    border-radius: 4px;
    font-size: 0.62rem;
    font-weight: 700;
}

.tag.arr { background: #14532d; color: #86efac; }
.tag.dep { background: #172554; color: #93c5fd; }

.mins-big { color: #38bdf8; font-weight: 700; }
.sp-loader { color: var(--muted); font-size: 0.85rem; }
.sp-ts { color: #475569; font-size: 0.68rem; margin-top: 12px; }
.err-note {
    background: #1e1b4b;
    border: 1px solid #4f46e5;
    padding: 10px;
    border-radius: 8px;
    font-size: 0.76rem;
    color: #a5b4fc;
    margin-top: 8px;
}

.arrivals-preview {
    margin-top: 2px;
}

.arrivals-preview h4 {
    margin: 0 0 6px;
    padding: 0;
    font-size: 0.82rem;
    color: #86efac;
    font-weight: 700;
}

.arrival-row {
    display: flex;
    gap: 0.5rem;
    align-items: flex-start;
    padding: 6px 0;
    border-bottom: 1px solid rgba(148, 163, 184, 0.12);
    font-size: 0.78rem;
}

.arrival-row:last-child {
    border-bottom: none;
}

.arrival-meta {
    flex: 0 0 auto;
    display: grid;
    grid-template-columns: auto auto;
    grid-template-areas:
        "time mins"
        "status status";
    gap: 2px 0.45rem;
    align-items: start;
    justify-items: end;
}

.arrival-meta .arrival-time {
    grid-area: time;
    font-weight: 700;
    color: var(--text);
    white-space: nowrap;
    text-align: left;
}

.arrival-meta .arrival-mins {
    grid-area: mins;
    white-space: nowrap;
    text-align: left;
}

.arrival-meta .arrival-status {
    grid-area: status;
    min-width: 0;
    max-width: 9rem;
    display: block;
    text-align: left;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 0.68rem;
    line-height: 1.25;
}

.arrival-status-text {
    color: #94a3b8;
    font-weight: 700;
}

.arrival-status-text.delayed {
    color: #f59e0b;
}

.arrival-status-text.landed {
    color: #4ade80;
}

.arrival-train {
    flex: 1 1 auto;
    min-width: 0;
    color: #cbd5e1;
    white-space: normal;
}

.arrival-train .flight-num {
    display: inline;
    font-weight: 600;
}

.arrival-train .flight-origin {
    display: block;
    color: #94a3b8;
    font-size: 0.92em;
    line-height: 1.25;
    word-break: break-word;
}

@media (max-width: 380px) {
    .arrival-meta {
        grid-template-columns: auto auto;
    }

    .train-tbl--flights .col-time {
        width: 2.5rem;
    }

    .train-tbl--flights .col-mins {
        width: 2.75rem;
    }

    .train-tbl--flights .col-status {
        width: 3.8rem;
        max-width: 3.8rem;
        font-size: 0.62rem;
    }

    .arrival-meta .arrival-status {
        max-width: 7.5rem;
        font-size: 0.62rem;
    }
}

/* ── Dashboard: pogoda + ruch miasta ─────────────────────────────────── */
.live-city-row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 16px;
    margin-bottom: 18px;
}

.live-city-card {
    background: var(--dash-card-bg);
    border: 2px solid var(--dash-card-border);
    border-radius: 18px;
    padding: 16px 18px;
    box-shadow: 0 8px 28px var(--dash-shadow);
}

.live-city-card--traffic {
    border-color: color-mix(in srgb, var(--traffic-color, #22c55e) 40%, var(--dash-card-border));
}

.live-city-head {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 10px;
    margin-bottom: 12px;
}

.live-city-head h2 {
    margin: 0;
    font-size: 0.95rem;
    font-weight: 700;
}

.live-weather-main,
.live-traffic-main {
    display: flex;
    align-items: center;
    gap: 14px;
}

.live-wx-icon,
.live-traffic-icon {
    font-size: 2.2rem;
    line-height: 1;
}

.live-wx-temp,
.live-traffic-label {
    font-size: 1.35rem;
    font-weight: 800;
    line-height: 1.1;
}

.live-wx-label,
.live-traffic-sub {
    font-size: 0.82rem;
    margin-top: 2px;
}

.live-wx-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    margin-top: 12px;
    font-size: 0.8rem;
    color: var(--muted);
}

.live-traffic-score {
    font-size: 0.78rem;
    font-weight: 700;
    color: var(--traffic-color, #22c55e);
}

.live-traffic-factors {
    margin: 10px 0 0;
    padding: 0 0 0 18px;
    font-size: 0.78rem;
    color: var(--muted);
}

.live-traffic-bar {
    height: 6px;
    background: rgba(255, 255, 255, 0.08);
    border-radius: 999px;
    margin-top: 12px;
    overflow: hidden;
}

.live-traffic-bar > span {
    display: block;
    height: 100%;
    background: var(--traffic-color, #22c55e);
    border-radius: 999px;
    transition: width 0.4s ease;
}

/* SOS — przycisk floty */
.sos-fab {
    position: fixed;
    right: 16px;
    bottom: 16px;
    z-index: 9000;
}

.sos-fab[hidden] {
    display: none !important;
}

.sos-fab-btn {
    width: 58px;
    height: 58px;
    border-radius: 50%;
    border: 3px solid #fff;
    background: #dc2626;
    color: #fff;
    font-weight: 900;
    font-size: 0.85rem;
    letter-spacing: 0.04em;
    cursor: pointer;
    box-shadow: 0 8px 24px rgba(220, 38, 38, 0.45);
    animation: sos-pulse 2s infinite;
}

.sos-fab.is-active .sos-fab-btn {
    background: #991b1b;
    animation: none;
}

@keyframes sos-pulse {
    0%, 100% { box-shadow: 0 0 0 0 rgba(220, 38, 38, 0.5); }
    50% { box-shadow: 0 0 0 12px rgba(220, 38, 38, 0); }
}

.sos-panel {
    position: absolute;
    right: 0;
    bottom: 68px;
    width: min(280px, calc(100vw - 32px));
    background: var(--dash-card-bg, #111);
    border: 1px solid var(--dash-card-border, #333);
    border-radius: 14px;
    padding: 14px;
    box-shadow: 0 12px 40px rgba(0, 0, 0, 0.35);
}

@media (max-width: 768px) {
    .live-city-row {
        grid-template-columns: 1fr;
    }
}

/* ── Dashboard: centrum dowodzenia ──────────────────────────────────── */
.cc-wrap {
    display: grid;
    grid-template-columns: 1.1fr 0.9fr;
    gap: 18px;
    margin-bottom: 22px;
}

.cc-map-card {
    background: var(--dash-card-bg);
    border: 2px solid var(--dash-card-border);
    border-radius: 20px;
    overflow: hidden;
    box-shadow: 0 12px 40px var(--dash-shadow);
    display: flex;
    flex-direction: column;
    min-height: 320px;
}

.cc-map-head {
    padding: 16px 20px 0;
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 10px;
}

.cc-map-head h2 {
    margin: 0;
    font-size: 1.1rem;
    color: var(--text);
}

.cc-city-btn {
    font-size: 0.78rem;
    padding: 6px 12px;
    border-radius: 999px;
    border: 1px solid var(--border);
    color: var(--muted);
    text-decoration: none;
    white-space: nowrap;
}

.cc-city-btn:hover {
    border-color: var(--accent);
    color: var(--accent);
}

#cc-mini-map {
    flex: 1;
    min-height: 220px;
    cursor: pointer;
}

.cc-map-foot {
    padding: 10px 20px 16px;
    font-size: 0.78rem;
    color: var(--muted);
}

.cc-side {
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.cc-airport-panel {
    flex: 1;
    margin-bottom: 0;
    padding: 18px 20px;
    border-color: rgba(14, 165, 233, 0.25);
}

.cc-airport-panel h2 {
    margin: 0 0 12px;
    font-size: 1rem;
}

.airport-hero-row {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 10px;
    padding-bottom: 10px;
    border-bottom: 1px solid var(--border);
}

.airport-iata {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 48px;
    padding: 6px 10px;
    border-radius: 10px;
    background: rgba(14, 165, 233, 0.15);
    border: 1px solid rgba(14, 165, 233, 0.35);
    color: #7dd3fc;
    font-weight: 800;
    font-size: 0.95rem;
    letter-spacing: 0.06em;
}

.train-row-dash--airport {
    font-size: 0.82rem;
}

.cc-airport-panel .ts-note {
    margin-top: 10px;
    margin-bottom: 0;
}

.cc-alert {
    background: var(--dash-card-bg);
    border: 2px solid var(--border);
    border-radius: 18px;
    padding: 16px 18px;
    box-shadow: 0 8px 24px var(--dash-shadow);
}

.cc-alert .cc-num {
    font-size: 2.4rem;
    font-weight: 800;
    line-height: 1;
    flex-shrink: 0;
}

.cc-alert .cc-txt {
    margin-top: 0;
    font-weight: 700;
    font-size: 0.9rem;
    line-height: 1.25;
}

.cc-alert .cc-sub {
    margin-top: 0;
    font-size: 0.78rem;
    color: var(--muted);
    line-height: 1.2;
}

.dash-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 14px;
}

.dash-grid--3 {
    grid-template-columns: repeat(3, 1fr);
}

@media (max-width: 767px) {
    .dash-grid--3 {
        grid-template-columns: 1fr 1fr;
    }

    .dash-grid--3 .stat-card:last-child {
        grid-column: 1 / -1;
    }
}

.stat-card {
    background: var(--dash-card-bg);
    border: 1px solid var(--border);
    border-radius: 16px;
    padding: 15px 16px;
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 10px;
    box-shadow: 0 6px 22px rgba(2, 8, 23, 0.28);
    min-height: 92px;
    border-left: 3px solid rgba(125, 211, 252, 0.45);
}

.stat-card .sc-num {
    font-size: 1.6rem;
    font-weight: 800;
    flex-shrink: 0;
    line-height: 1;
    color: #f8fafc;
}

.stat-card .sc-label {
    color: #cbd5e1;
    font-size: 0.78rem;
    line-height: 1.25;
    font-weight: 600;
    letter-spacing: 0.02em;
}

.stat-card-link {
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 10px;
    text-decoration: none;
    color: inherit;
    width: 100%;
}

.dash-quick-row {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-bottom: 18px;
}

.dash-quick-btn {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 12px 18px;
    border-radius: 14px;
    font-size: 0.88rem;
    font-weight: 700;
    text-decoration: none;
    border: 2px solid transparent;
    transition: transform 0.15s, box-shadow 0.15s;
}

.dash-quick-btn span {
    font-size: 0.65rem;
    font-weight: 800;
    text-transform: uppercase;
    padding: 2px 8px;
    border-radius: 999px;
    background: rgba(0, 0, 0, 0.15);
}

.dash-quick-btn--live {
    background: linear-gradient(135deg, #16a34a, #22c55e);
    color: #fff;
    box-shadow: 0 6px 20px rgba(34, 197, 94, 0.35);
}

.dash-quick-btn--live:hover {
    transform: translateY(-1px);
    box-shadow: 0 8px 24px rgba(34, 197, 94, 0.45);
}

.dash-quick-btn--soon {
    background: rgba(245, 158, 11, 0.15);
    border-color: #f59e0b;
    color: #fbbf24;
}

.dash-quick-btn--off,
.dash-quick-btn--lock {
    background: rgba(100, 116, 139, 0.15);
    border-color: #475569;
    color: #94a3b8;
    cursor: default;
}

.map-legend--airports h4 {
    color: #7dd3fc;
}

.pkp-panel {
    background: var(--dash-card-bg);
    border: 1px solid var(--border);
    border-radius: 20px;
    padding: 24px;
    margin-bottom: 22px;
    box-shadow: 0 8px 32px var(--dash-shadow);
}

.pkp-panel h2 {
    margin: 0 0 16px;
    font-size: 1.15rem;
    color: var(--text);
    letter-spacing: -0.01em;
}

.dashboard-page .pkp-panel .ts-note,
.dashboard-page .cc-airport-panel .ts-note {
    color: #94a3b8;
    font-size: 0.82rem;
}

.train-row-dash {
    display: flex;
    justify-content: space-between;
    gap: 10px;
    padding: 8px 0;
    border-bottom: 1px solid var(--border);
    font-size: 0.88rem;
}

.ev-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
    gap: 14px;
}

.ev-card {
    background: var(--panel-strong);
    border: 1px solid var(--border);
    border-radius: 14px;
    padding: 14px;
    box-shadow: 0 4px 12px var(--dash-shadow);
}

.ev-card .ev-city {
    color: var(--accent);
    font-size: 0.78rem;
    margin-bottom: 6px;
    font-weight: 600;
}

.ev-card h3 {
    margin: 0 0 6px;
    font-size: 0.92rem;
    color: var(--text);
}

.ev-card .ev-meta {
    font-size: 0.78rem;
    color: var(--muted);
}

@media (max-width: 860px) {
    .cc-wrap {
        grid-template-columns: 1fr;
        gap: 10px;
        margin-bottom: 10px;
    }

    .cc-side {
        gap: 8px;
    }

    .cc-airport-panel {
        padding: 14px 16px;
    }

    .cc-airport-panel h2 {
        font-size: 0.92rem;
    }

    .cc-alert {
        padding: 10px 12px;
    }

    .cc-alert .cc-num {
        font-size: 2rem;
    }

    .cc-alert .cc-txt {
        font-size: 0.82rem;
    }

    .cc-alert .cc-sub {
        font-size: 0.72rem;
    }

    .chip-compact {
        gap: 10px;
    }

    .chip-num {
        font-size: 1.75rem;
    }

    .wchip .wc-num {
        font-size: 1.35rem;
    }

    .stat-card {
        padding: 10px;
        gap: 8px;
    }

    .stat-card .sc-num {
        font-size: 1.4rem;
    }

    .stat-card .sc-label {
        font-size: 0.72rem;
    }

    .dash-grid {
        gap: 8px;
    }

    .cc-map-card {
        min-height: 250px;
    }

    .cc-map-head {
        padding: 12px 16px 0;
    }

    .cc-map-foot {
        padding: 6px 14px 10px;
    }

    .pkp-panel {
        padding: 16px;
        margin-bottom: 12px;
    }

    .pkp-panel h2 {
        margin-bottom: 12px;
        font-size: 1.05rem;
    }
}

@media (min-width: 768px) {
    .map-app-header nav a {
        font-size: 0.82rem;
    }

    #station-panel {
        top: 0;
        right: 0;
        left: auto;
        bottom: 0;
        width: min(380px, 92vw);
        max-height: none;
        border-radius: 0;
        border-left: 1px solid var(--border);
        border-top: none;
        padding: 20px;
        transform: translateX(100%);
    }

    #station-panel.open {
        transform: translateX(0);
    }

    .panel-drag-handle {
        display: none;
    }
}

/* --- STATION PANEL FONT SIZE CONTROLS & SCROLL PROPAGATION FIX --- */
#station-panel {
    --sp-font-scale: 1.0;
}
#station-panel .sp-header h3 { font-size: calc(1rem * var(--sp-font-scale)) !important; }
#station-panel #sp-close-btn { font-size: calc(0.72rem * var(--sp-font-scale)) !important; }
#station-panel .train-tbl { font-size: calc(0.76rem * var(--sp-font-scale)) !important; }
#station-panel .train-tbl th { font-size: calc(0.7rem * var(--sp-font-scale)) !important; }
#station-panel .chip-num { font-size: calc(2rem * var(--sp-font-scale)) !important; }
#station-panel .chip-title { font-size: calc(0.86rem * var(--sp-font-scale)) !important; }
#station-panel .chip-sub { font-size: calc(0.72rem * var(--sp-font-scale)) !important; }
#station-panel .sp-ts { font-size: calc(0.68rem * var(--sp-font-scale)) !important; }
#station-panel .arrivals-preview h4 { font-size: calc(0.82rem * var(--sp-font-scale)) !important; }
#station-panel .arrival-row { font-size: calc(0.78rem * var(--sp-font-scale)) !important; }
#station-panel .arrival-status-text { font-size: calc(0.68rem * var(--sp-font-scale)) !important; }
#station-panel .arrival-train .flight-origin { font-size: calc(0.72rem * var(--sp-font-scale)) !important; }
#station-panel .sp-loader { font-size: calc(0.85rem * var(--sp-font-scale)) !important; }
#station-panel .filter-btn { font-size: calc(0.75rem * var(--sp-font-scale)) !important; }
#station-panel .sp-font-controls button { font-size: calc(0.8rem * var(--sp-font-scale)) !important; }
#station-panel .flight-status-label { font-size: calc(0.72rem * var(--sp-font-scale)) !important; }
#station-panel .flight-status-time { font-size: calc(0.82rem * var(--sp-font-scale)) !important; }
#station-panel .tag { font-size: calc(0.62rem * var(--sp-font-scale)) !important; }

.sp-font-controls {
    display: flex;
    gap: 6px;
    align-items: center;
}
.sp-font-controls button {
    background: rgba(15, 23, 42, 0.8);
    border: 1px solid var(--border);
    color: #cbd5e1;
    border-radius: 8px;
    padding: 4px 8px;
    font-size: 0.8rem;
    font-weight: 700;
    cursor: pointer;
    transition: all 0.2s ease;
    min-height: 28px;
    min-width: 28px;
    display: flex;
    align-items: center;
    justify-content: center;
}
.sp-font-controls button:hover {
    background: #22c55e;
    color: #052e16;
    border-color: #22c55e;
}

@keyframes pulse-marker {
    0% { transform: scale(1); }
    50% { transform: scale(1.15); }
    100% { transform: scale(1); }
}

/* ==========================================================================
   NOWE MENU DOLNE (KAFLOWY DRAWER & INTEGRACJA)
   ========================================================================== */



/* Główny pasek nawigacji dolnej */
.bottom-nav {
    position: fixed;
    bottom: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 100%;
    max-width: 540px;
    height: calc(64px + env(safe-area-inset-bottom));
    background: rgba(28, 37, 65, 0.92);
    backdrop-filter: blur(20px);
    -webkit-backdrop-filter: blur(20px);
    border: 1px solid rgba(148, 163, 184, 0.24);
    border-radius: 18px 18px 0 0;
    display: flex;
    justify-content: space-around;
    align-items: center;
    z-index: 12000;
    padding-bottom: max(0px, env(safe-area-inset-bottom));
    box-shadow: 0 -8px 32px rgba(2, 8, 23, 0.45);
    box-sizing: border-box;
}

.bottom-nav-item {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 100%;
    color: #94a3b8;
    text-decoration: none;
    border: none;
    background: transparent;
    font-size: 0.68rem;
    font-weight: 600;
    gap: 3px;
    cursor: pointer;
    transition: color 0.15s ease, transform 0.15s ease;
    padding: 4px 0;
    box-sizing: border-box;
    -webkit-tap-highlight-color: transparent;
}

.bottom-nav-item:hover {
    color: #cbd5e1;
    text-decoration: none;
}

.bottom-nav-item.active {
    color: #60a5fa;
}

.bottom-nav-icon {
    width: 20px;
    height: 20px;
    stroke-width: 2.2px;
    transition: transform 0.15s ease;
}

.bottom-nav-item.active .bottom-nav-icon {
    transform: scale(1.1);
    stroke-width: 2.5px;
}

.bottom-nav-item--center {
    color: #c4b5fd;
    transform: translateY(-6px);
}

.bottom-nav-item--center:hover,
.bottom-nav-item--center.active {
    color: #ffffff;
}

.bottom-nav-center-icon {
    display: grid;
    width: 38px;
    height: 38px;
    place-items: center;
    border: 2px solid rgba(255, 255, 255, 0.72);
    border-radius: 50%;
    background: var(--gp-gradient-home);
    box-shadow: 0 5px 18px rgba(99, 102, 241, 0.42);
}

.bottom-nav-item--center .bottom-nav-icon {
    width: 19px;
    height: 19px;
    color: #ffffff;
}

.bottom-nav-item--center.active .bottom-nav-icon {
    transform: none;
}

/* Tło szuflady (drawer backdrop) */
.bottom-nav-drawer-backdrop {
    position: fixed;
    inset: 0;
    background: rgba(2, 8, 23, 0.6);
    backdrop-filter: blur(4px);
    -webkit-backdrop-filter: blur(4px);
    z-index: 12010;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.25s cubic-bezier(0.16, 1, 0.3, 1);
}

.bottom-nav-drawer-backdrop.is-open {
    opacity: 1;
    pointer-events: auto;
}

/* Szuflada (drawer) */
.bottom-nav-drawer {
    position: fixed;
    bottom: 0;
    left: 50%;
    transform: translate(-50%, 100%);
    width: 100%;
    max-width: 540px;
    background: #090e1d;
    border-top: 1px solid rgba(148, 163, 184, 0.24);
    border-radius: 24px 24px 0 0;
    z-index: 12020;
    transition: transform 0.28s cubic-bezier(0.16, 1, 0.3, 1);
    padding: 16px 20px calc(20px + env(safe-area-inset-bottom));
    box-shadow: 0 -12px 48px rgba(0, 0, 0, 0.6);
    box-sizing: border-box;
    max-height: min(82dvh, 720px);
    overflow-y: auto;
    overscroll-behavior: contain;
}

.bottom-nav-drawer.is-open {
    transform: translate(-50%, 0);
}

.drawer-handle {
    width: 40px;
    height: 4px;
    background: rgba(148, 163, 184, 0.25);
    border-radius: 2px;
    margin: 0 auto 18px;
}

.drawer-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 20px;
}

.driver-profile-info {
    display: flex;
    align-items: center;
    gap: 12px;
}

.driver-avatar {
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background: linear-gradient(135deg, #60a5fa, #8b5cf6);
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 700;
    font-size: 1.2rem;
    box-shadow: 0 4px 14px rgba(96, 165, 250, 0.25);
}

.driver-name {
    display: block;
    color: #f8fafc;
    font-size: 0.95rem;
    font-weight: 700;
}

.driver-role {
    display: block;
    color: #94a3b8;
    font-size: 0.76rem;
    margin-top: 1px;
}

.drawer-close {
    font-size: 1.6rem;
    color: #94a3b8;
    background: rgba(148, 163, 184, 0.1);
    width: 32px;
    height: 32px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    border: none;
    transition: background 0.15s ease, color 0.15s ease;
    padding: 0;
    line-height: 1;
}

.drawer-close:hover {
    background: rgba(148, 163, 184, 0.25);
    color: #f8fafc;
}

.drawer-plan-info {
    display: flex;
    justify-content: space-between;
    align-items: center;
    background: rgba(15, 23, 42, 0.65);
    padding: 10px 16px;
    border-radius: 14px;
    border: 1px solid rgba(148, 163, 184, 0.12);
    font-size: 0.85rem;
    margin-bottom: 20px;
    color: #cbd5e1;
}

.drawer-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 12px;
}

.drawer-font-size {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    margin-bottom: 14px;
    padding: 10px 12px;
    border: 1px solid rgba(148, 163, 184, 0.14);
    border-radius: 14px;
    background: rgba(15, 23, 42, 0.45);
}

.drawer-font-size > span,
.drawer-font-size strong,
.drawer-font-size small {
    display: block;
}

.drawer-font-size strong {
    color: #e2e8f0;
    font-size: 0.78rem;
}

.drawer-font-size small {
    margin-top: 1px;
    color: #94a3b8;
    font-size: 0.62rem;
}

/* Krótka informacja o mieście niedostępnym w aktualnym pakiecie. */
.gp-plan-toast {
    position: fixed;
    left: 50%;
    bottom: calc(82px + env(safe-area-inset-bottom));
    z-index: 13050;
    max-width: min(350px, calc(100vw - 28px));
    padding: 10px 14px;
    border: 1px solid rgba(167, 139, 250, 0.48);
    border-radius: 14px;
    background: rgba(40, 27, 76, 0.97);
    box-shadow: 0 12px 34px rgba(30, 20, 60, 0.34);
    color: #f5f3ff;
    font-size: 0.78rem;
    font-weight: 800;
    line-height: 1.35;
    text-align: center;
    opacity: 0;
    pointer-events: none;
    transform: translate(-50%, 12px) scale(0.97);
    transition: opacity 0.18s ease, transform 0.18s ease;
}

.gp-plan-toast.is-visible {
    opacity: 1;
    transform: translate(-50%, 0) scale(1);
}

.drawer-grid-item {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    background: rgba(15, 23, 42, 0.45);
    border: 1px solid rgba(148, 163, 184, 0.14);
    border-radius: 16px;
    padding: 18px 12px;
    color: #e2e8f0;
    text-decoration: none;
    font-size: 0.82rem;
    font-weight: 600;
    gap: 8px;
    text-align: center;
    transition: transform 0.15s ease, background 0.15s ease, border-color 0.15s ease;
    box-sizing: border-box;
}

.drawer-grid-item:hover {
    transform: translateY(-2px);
    background: rgba(15, 23, 42, 0.85);
    border-color: rgba(96, 165, 250, 0.35);
    color: #fff;
    text-decoration: none;
}

.drawer-item-icon {
    font-size: 1.5rem;
}

.drawer-grid-item.admin-item {
    border-color: rgba(239, 68, 68, 0.22);
}
.drawer-grid-item.admin-item:hover {
    border-color: rgba(239, 68, 68, 0.5);
    background: rgba(239, 68, 68, 0.08);
}

.drawer-grid-item.logout-item {
    grid-column: span 2;
    background: rgba(239, 68, 68, 0.08);
    border-color: rgba(239, 68, 68, 0.25);
    color: #fca5a5;
    flex-direction: row;
    justify-content: center;
    padding: 12px;
    gap: 8px;
}

.drawer-grid-item.logout-item:hover {
    background: rgba(239, 68, 68, 0.16);
    border-color: #ef4444;
    color: #fee2e2;
}

/* Responsywne dostosowania dla małych i dużych ekranów */
@media (max-width: 540px) {
    .bottom-nav {
        border-radius: 0;
        max-width: 100%;
    }
    .bottom-nav-drawer {
        border-radius: 24px 24px 0 0;
        max-width: 100%;
    }
}

@media (max-width: 767px) {
    /* Odrobinke mniej "pustego" miejsca pod ekranem w mobile */
    .bottom-nav {
        height: calc(60px + env(safe-area-inset-bottom));
        padding-bottom: max(0px, calc(env(safe-area-inset-bottom) - 6px));
    }
}

/* ── ŁapKurs 4.3.1: zwarty nagłówek i czytelna oś ──────────────── */
.site-header {
    flex-direction: column;
    align-items: stretch;
    gap: 0;
    padding: 0;
}

.site-header-top {
    min-height: 34px;
    padding: 6px;
    padding-top: max(6px, env(safe-area-inset-top, 0px));
}

.partner-ticker {
    display: flex;
    align-items: center;
    width: 100%;
    height: 30px;
    margin-top: 0;
    overflow: hidden;
    border-top: 1px solid rgba(56, 189, 248, 0.18);
    border-bottom: 1px solid rgba(56, 189, 248, 0.18);
    background: linear-gradient(90deg, #07101f, #0f1b32 48%, #15122f);
    color: #dbeafe;
    box-shadow: inset 0 1px rgba(255, 255, 255, 0.03);
}

.partner-ticker__badge {
    position: relative;
    z-index: 2;
    display: inline-flex;
    align-items: center;
    align-self: stretch;
    flex: 0 0 auto;
    padding: 0 10px;
    background: linear-gradient(135deg, #047857, #16a34a);
    color: #ffffff;
    font-size: 10px;
    font-weight: 950;
    letter-spacing: 0.09em;
    box-shadow: 5px 0 14px rgba(2, 6, 23, 0.28);
}

.partner-ticker__viewport {
    min-width: 0;
    overflow: hidden;
    flex: 1 1 auto;
    mask-image: linear-gradient(90deg, transparent, #000 14px, #000 calc(100% - 14px), transparent);
    -webkit-mask-image: linear-gradient(90deg, transparent, #000 14px, #000 calc(100% - 14px), transparent);
}

.partner-ticker__track {
    display: flex;
    align-items: center;
    width: max-content;
    animation: gp-partner-ticker 34s linear infinite;
    will-change: transform;
}

.partner-ticker__group {
    display: flex;
    align-items: center;
    flex: 0 0 auto;
    gap: 34px;
    padding: 0 34px 0 14px;
}

.partner-ticker__group span,
.partner-ticker__group a {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    color: inherit;
    font-size: var(--ticker-font-size, 11px);
    font-weight: 750;
    line-height: 28px;
    text-decoration: none;
    white-space: nowrap;
}

.partner-ticker__group a {
    color: #a5b4fc;
    font-weight: 900;
    text-decoration: underline;
    text-decoration-color: rgba(129, 140, 248, 0.62);
    text-underline-offset: 3px;
}

.partner-ticker__group a::after {
    content: "↗";
    color: #818cf8;
    font-size: 0.85em;
}

.partner-ticker__group i {
    color: #38bdf8;
    font-size: 6px;
    font-style: normal;
}

.partner-ticker:hover .partner-ticker__track,
.partner-ticker:focus-within .partner-ticker__track {
    animation-play-state: paused;
}

.partner-ticker__group a:hover,
.partner-ticker__group a:focus-visible {
    color: #7dd3fc;
    text-decoration: underline;
    text-underline-offset: 3px;
}

@keyframes gp-partner-ticker {
    from { transform: translateX(0); }
    to { transform: translateX(-50%); }
}

.driver-ad-banner {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 9px;
    min-height: 30px;
    padding: 4px 12px;
    border-bottom: 1px solid rgba(129, 140, 248, 0.28);
    background: linear-gradient(90deg, rgba(37, 99, 235, 0.14), rgba(124, 58, 237, 0.18));
    color: #dbeafe;
    font-size: 0.72rem;
    text-align: center;
}

.driver-ad-banner__label {
    padding: 2px 6px;
    border-radius: 999px;
    background: var(--gp-gradient-home);
    color: #ffffff;
    font-size: 0.52rem;
    font-weight: 950;
    letter-spacing: 0.09em;
}

.driver-ad-banner a {
    color: #c4b5fd;
    font-weight: 850;
    text-decoration: underline;
    text-underline-offset: 3px;
}

.theme-toggle {
    display: inline-grid;
    place-items: center;
    flex: 0 0 auto;
    width: 34px;
    min-width: 34px;
    height: 32px;
    min-height: 32px;
    padding: 0;
    border: 1px solid rgba(96, 165, 250, 0.44);
    border-radius: 9px;
    background: linear-gradient(135deg, rgba(37, 99, 235, 0.32), rgba(124, 58, 237, 0.3));
    color: #e0f2fe;
    font: inherit;
    font-size: 17px;
    line-height: 1;
    cursor: pointer;
    box-shadow: 0 3px 10px rgba(2, 8, 23, 0.2);
}

.theme-toggle:hover,
.theme-toggle:focus-visible {
    border-color: #38bdf8;
    outline: none;
    transform: translateY(-1px);
}

.font-size-controls--header {
    gap: 4px;
    padding: 0;
    border: 0;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
}

.font-size-controls--header button {
    width: 34px;
    min-width: 34px;
    height: 32px;
    min-height: 32px;
    padding: 0;
    border: 1px solid rgba(56, 189, 248, 0.42);
    border-radius: 9px;
    background: linear-gradient(135deg, rgba(14, 116, 144, 0.28), rgba(30, 64, 175, 0.26));
    color: #dff6ff;
    font-size: 13px;
    font-weight: 950;
    line-height: 1;
    box-shadow: 0 3px 10px rgba(2, 8, 23, 0.18);
}

.drawer-grid-item[data-gp-theme-toggle] {
    width: 100%;
    font: inherit;
    text-align: left;
    cursor: pointer;
}

.bottom-nav-item--center .bottom-nav-label {
    margin-top: -2px;
    background: var(--gp-gradient-home);
    color: #ffffff;
    background-clip: text;
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    font-size: 0.69rem;
    font-weight: 900;
    letter-spacing: 0.025em;
    line-height: 1;
}

@media (max-width: 420px) {
    .site-header .tagline {
        display: none;
    }

    .site-header-top {
        gap: 4px;
    }

    .city-badge {
        max-width: 82px;
    }

    .theme-toggle,
    .font-size-controls--header button {
        width: 32px;
        min-width: 32px;
    }
}

/* Pasek partnerski stoi pod belką, bez nachodzenia na logo i Telegram.
   Na telefonie dashboard zajmuje też odzyskane boczne marginesy. */
@media (max-width: 680px) {
    .page.dashboard-page {
        padding: 0 0 38px !important;
        border-right: 0;
        border-left: 0;
    }

    .demand-now {
        padding-right: 6px;
        padding-left: 6px;
    }

    .demand-timeline {
        margin-right: -4px;
        margin-left: -4px;
        padding-right: 2px;
        padding-left: 2px;
    }

    .demand-now__head h1 {
        font-size: calc(1.55rem - 1px);
    }

    .recommendation-card--primary .recommendation-card__icon {
        font-size: calc(1rem - 1px);
    }

    .recommendation-card--primary .recommendation-card__title h2 {
        font-size: clamp(calc(0.84rem - 1px), 4.5vw, calc(1rem - 1px));
    }

    .recommendation-card--primary .recommendation-card__score b {
        font-size: calc(1.3rem - 1px);
    }
}

@media (prefers-reduced-motion: reduce) {
    .partner-ticker__track {
        animation-play-state: paused;
        transform: none;
    }

    .demand-timeline__now-marker {
        transition: none;
    }

    .demand-timeline__now-marker.is-ticking::before {
        animation: none;
    }
}

/* Tryb wydajnościowy dla ciemnego motywu na telefonie. Wielowarstwowe blury,
   maski i puls wymuszały kosztowne ponowne malowanie całego ekranu. */
@media (max-width: 767px) {
    html[data-gp-theme="dark"] body * {
        backdrop-filter: none !important;
        -webkit-backdrop-filter: none !important;
    }

    html[data-gp-theme="dark"] .page.dashboard-page::before,
    html[data-gp-theme="dark"] .dashboard-page::before,
    html[data-gp-theme="dark"] .recommendation-card::after {
        display: none !important;
    }

    html[data-gp-theme="dark"] .partner-ticker__viewport {
        mask-image: none !important;
        -webkit-mask-image: none !important;
    }

    html[data-gp-theme="dark"] .partner-ticker__track {
        will-change: auto;
    }

    html[data-gp-theme="dark"] .demand-now,
    html[data-gp-theme="dark"] .recommendation-card,
    html[data-gp-theme="dark"] .dashboard-page .cc-map-card,
    html[data-gp-theme="dark"] .dashboard-page .cc-alert,
    html[data-gp-theme="dark"] .dashboard-page .stat-card,
    html[data-gp-theme="dark"] .dashboard-page .pkp-panel,
    html[data-gp-theme="dark"] .bottom-nav,
    html[data-gp-theme="dark"] #station-panel {
        box-shadow: 0 4px 14px rgba(2, 8, 23, 0.28) !important;
    }

    html[data-gp-theme="dark"] .recommendation-card,
    html[data-gp-theme="dark"] .bottom-nav-item,
html[data-gp-theme="dark"] .drawer-grid-item {
        transition: none !important;
    }

    html[data-gp-theme="dark"] .recommendation-card:hover,
    html[data-gp-theme="dark"] .recommendation-card:active,
    html[data-gp-theme="dark"] .dashboard-page .cc-map-card,
    html[data-gp-theme="dark"] .dashboard-page .cc-alert,
    html[data-gp-theme="dark"] .dashboard-page .stat-card,
    html[data-gp-theme="dark"] .dashboard-page .pkp-panel,
    html[data-gp-theme="dark"] .dashboard-page .coming-soon--compact {
        transform: none !important;
    }

    html[data-gp-theme="dark"] .demand-timeline__now-marker.is-ticking::before {
        animation: none !important;
    }
}

/* Przesunięcie kontrolek mapy Leaflet ponad menu dolne */
body.map-app .map-tools {
    bottom: calc(84px + env(safe-area-inset-bottom)) !important;
}
body.map-app #map-status {
    bottom: calc(76px + env(safe-area-inset-bottom)) !important;
}
#station-panel {
    z-index: 11000 !important;
}

/* Na telefonie panel punktu nie zasłania dolnej nawigacji. Szuflada „Więcej”
   ma osobną, wyższą warstwę i zawsze otwiera się ponad całą mapą. */
@media (max-width: 767px) {
    body.map-app .map-tools {
        flex-direction: row;
        gap: 2px;
    }

    body.map-app #station-panel {
        height: 52%;
        min-height: min(280px, 100%);
        max-height: 100%;
        padding-bottom: calc(84px + env(safe-area-inset-bottom));
        will-change: height, transform;
    }

    body.map-app #station-panel[data-panel-snap="full"] {
        border-radius: 12px 12px 0 0;
    }

    body.map-app #station-panel[data-panel-dragging="true"] .panel-drag-handle {
        width: 62px;
        box-shadow: 0 0 18px rgba(34, 211, 238, 0.7);
    }

    body.map-app #sp-body::after {
        content: "";
        display: block;
        height: 16px;
    }

    body.map-app .sp-collapse-btn-bottom {
        bottom: calc(76px + env(safe-area-inset-bottom));
    }
}

body.bottom-drawer-open .map-tools,
body.bottom-drawer-open .map-live-stack,
body.bottom-drawer-open .map-legend-wrap {
    pointer-events: none;
}

/* ── Mapa wydarzeń ───────────────────────────────────────────────────── */
.map-app--events .map-stage {
    position: relative;
}

.map-app--events #station-panel.events-panel {
    display: flex;
    flex-direction: column;
    max-height: 46vh;
    padding-bottom: max(12px, env(safe-area-inset-bottom));
}

.map-app--events #station-panel.events-panel.open {
    transform: translateY(0);
}

body.events-map-locked.map-app--events #station-panel.events-panel {
    transform: translateY(0) !important;
}

body.events-map-locked.map-app--events #panel-backdrop {
    opacity: 0 !important;
    pointer-events: none !important;
}

body.events-map-locked.map-app--events .sp-collapse-btn-bottom {
    display: none;
}

.sp-header--events {
    grid-template-columns: minmax(0, 1fr) auto;
}

.sp-header-actions {
    display: flex;
    align-items: center;
    gap: 8px;
}

.sp-lock-btn {
    background: rgba(15, 23, 42, 0.85);
    border: 1px solid rgba(148, 163, 184, 0.25);
    color: #cbd5e1;
    border-radius: 10px;
    width: 38px;
    height: 34px;
    font-size: 1rem;
    line-height: 1;
    cursor: pointer;
    padding: 0;
}

.sp-lock-btn.is-locked {
    background: rgba(20, 184, 166, 0.15);
    border-color: #14b8a6;
    color: #5eead4;
}

.events-panel-nav {
    flex-shrink: 0;
    padding-bottom: 6px;
    border-bottom: 1px solid rgba(148, 163, 184, 0.12);
}

.events-section-label {
    margin: 0 0 6px;
    padding: 0;
    font-size: 0.68rem;
    color: #64748b;
    letter-spacing: 0.02em;
}

.events-section-label strong {
    color: #5eead4;
    font-weight: 800;
    font-size: 0.74rem;
}

.events-panel-filters {
    flex-shrink: 0;
    padding: 0;
}

.events-panel-list-wrap {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    overflow-x: hidden;
    -webkit-overflow-scrolling: touch;
    padding-top: 6px;
}

.events-filter-strip {
    display: flex;
    flex-wrap: nowrap;
    align-items: center;
    gap: 6px;
    overflow-x: auto;
    overflow-y: hidden;
    padding: 2px 4px 4px 0;
    -webkit-overflow-scrolling: touch;
    scroll-snap-type: x proximity;
    touch-action: pan-x;
}

.events-filter-strip::-webkit-scrollbar {
    display: none;
}

.events-panel-list {
    display: flex;
    flex-direction: column;
    gap: 5px;
}

.events-filter-chip {
    flex: 0 0 auto;
    width: auto !important;
    max-width: none;
    margin: 0 !important;
    scroll-snap-align: start;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1px solid rgba(148, 163, 184, 0.22);
    background: rgba(15, 23, 42, 0.65) !important;
    color: #cbd5e1;
    border-radius: 999px;
    padding: 4px 9px !important;
    font-size: 0.78rem;
    font-weight: 600;
    line-height: 1.2;
    cursor: pointer;
    white-space: nowrap;
    box-shadow: none;
    min-height: 0;
}

.events-filter-chip.is-active {
    background: rgba(20, 184, 166, 0.18) !important;
    border-color: #14b8a6;
    color: #5eead4;
}

.events-filter-chip:hover {
    border-color: rgba(148, 163, 184, 0.45);
    transform: none;
    box-shadow: none;
}

.ev-filter-count,
.ev-filter-sub {
    opacity: 0.75;
    font-weight: 500;
    font-size: 0.72rem;
}

.ev-filter-sub {
    font-size: 0.68rem;
}

.events-panel-card {
    width: 100%;
    max-width: none;
    border-radius: 10px;
    border: 1px solid rgba(148, 163, 184, 0.16);
    border-left: 3px solid var(--ev-color, #64748b);
    background: rgba(15, 23, 42, 0.72);
    padding: 6px 10px 7px;
    display: flex;
    flex-direction: column;
    gap: 2px;
    cursor: pointer;
    transition: border-color 0.2s ease, box-shadow 0.2s ease, background 0.2s ease;
}

.events-panel-card.is-active {
    border-color: var(--ev-color, #14b8a6);
    background: rgba(20, 184, 166, 0.08);
    box-shadow: 0 0 0 1px color-mix(in srgb, var(--ev-color, #14b8a6) 35%, transparent);
}

.events-panel-card__row {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    align-items: center;
    gap: 6px;
}

.events-panel-card__emoji {
    font-size: 0.95rem;
    line-height: 1;
}

.events-panel-card__title {
    font-size: 0.82rem;
    line-height: 1.15;
    color: #f1f5f9;
    font-weight: 700;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.events-panel-card__time {
    font-size: 0.68rem;
    font-weight: 700;
    color: #94a3b8;
    white-space: nowrap;
}

.events-panel-card__sub {
    display: flex;
    align-items: center;
    gap: 8px;
    min-width: 0;
    font-size: 0.66rem;
    color: #64748b;
    line-height: 1.1;
}

.events-panel-card__venue {
    flex: 1 1 auto;
    min-width: 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    color: #94a3b8;
}

.events-panel-card__type {
    flex: 0 0 auto;
    color: #64748b;
}

.events-panel-card__people {
    flex: 0 0 auto;
    color: #22c55e;
}

.events-panel-empty {
    color: #94a3b8;
    font-size: 0.82rem;
    margin: 8px 0 0;
}

.gp-city-label-marker,
.gp-event-label-marker {
    background: transparent !important;
    border: none !important;
}

.gp-city-label {
    display: inline-block;
    padding: 4px 12px;
    border-radius: 999px;
    background: rgba(6, 8, 22, 0.88);
    border: 1.5px solid rgba(148, 163, 184, 0.35);
    color: #e2e8f0;
    font-size: 0.78rem;
    font-weight: 800;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    white-space: nowrap;
    box-shadow: 0 4px 14px rgba(0, 0, 0, 0.35);
    transform: translate(-50%, -50%);
    pointer-events: none;
}

.gp-event-label {
    display: inline-flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 1px;
    max-width: 120px;
    padding: 4px 8px 5px;
    border-radius: 8px;
    background: rgba(6, 8, 22, 0.9);
    border: 1.5px solid var(--ev-color, #64748b);
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.4);
    transform: translate(-50%, -100%);
    margin-top: -4px;
    cursor: pointer;
    pointer-events: auto;
    transition: transform 0.15s ease, box-shadow 0.15s ease;
}

.gp-event-label.is-active {
    transform: translate(-50%, -100%) scale(1.06);
    box-shadow: 0 0 0 2px color-mix(in srgb, var(--ev-color, #14b8a6) 45%, transparent), 0 4px 14px rgba(0, 0, 0, 0.5);
    z-index: 2;
}

.gp-event-label__time {
    font-size: 0.64rem;
    font-weight: 800;
    color: var(--ev-color, #94a3b8);
}

.gp-event-label__title {
    font-size: 0.68rem;
    font-weight: 700;
    color: #f8fafc;
    line-height: 1.15;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.gp-event-cluster-marker {
    background: transparent !important;
    border: none !important;
}

.gp-event-cluster {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 34px;
    height: 34px;
    padding: 0 10px;
    border-radius: 999px;
    background: rgba(6, 8, 22, 0.92);
    border: 2px solid rgba(94, 234, 212, 0.9);
    box-shadow: 0 4px 14px rgba(0, 0, 0, 0.5);
    color: #5eead4;
    font-weight: 900;
    font-size: 0.85rem;
    letter-spacing: 0.02em;
    transform: translate(-50%, -100%);
    margin-top: -4px;
    cursor: pointer;
    pointer-events: auto;
}

.map-app--events .map-legend--events .leg-body {
    font-size: 0.68rem;
}

/* ── ŁapKurs 5.6.2: zwarta szuflada ustawien ───────────────────── */
.bottom-nav-drawer { max-width: 520px; padding: 10px 14px calc(14px + env(safe-area-inset-bottom)); }
.drawer-handle { width: 34px; height: 3px; margin-bottom: 10px; }
.drawer-header { margin-bottom: 10px; gap: 10px; }
.driver-profile-info { min-width: 0; gap: 9px; }
.driver-avatar { width: 38px; height: 38px; font-size: 1rem; }
.driver-profile-info > div:last-child { min-width: 0; }
.driver-name { overflow: hidden; font-size: .88rem; text-overflow: ellipsis; white-space: nowrap; }
.driver-role { overflow: hidden; max-width: 270px; margin-top: 3px; font-size: .67rem; text-overflow: ellipsis; white-space: nowrap; }
.driver-role b { color: #67e8f9; font-weight: 900; }
.drawer-header-actions { display: flex; align-items: center; flex: 0 0 auto; gap: 7px; }
.drawer-close,
.drawer-telegram {
    position: relative;
    display: grid;
    place-items: center;
    width: 36px;
    height: 36px;
    flex: 0 0 auto;
    border: 1px solid rgba(148,163,184,.18);
    border-radius: 11px;
    background: rgba(15,23,42,.62);
    color: #94a3b8;
    text-decoration: none;
}
.drawer-close svg { width: 19px; height: 19px; fill: none; stroke: currentColor; stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round; }
.drawer-telegram svg { width: 19px; height: 19px; fill: currentColor; }
.drawer-telegram i { position: absolute; right: 4px; top: 4px; width: 7px; height: 7px; border: 1px solid #090e1d; border-radius: 50%; background: #64748b; }
.drawer-telegram.is-paused { color: #38bdf8; border-color: rgba(56,189,248,.3); }
.drawer-telegram.is-paused i { background: #f59e0b; }
.drawer-telegram.is-active { color: #38bdf8; border-color: rgba(34,197,94,.36); background: rgba(14,116,144,.14); }
.drawer-telegram.is-active i { background: #22c55e; box-shadow: 0 0 8px rgba(34,197,94,.8); }
.drawer-offer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    margin-bottom: 10px;
    padding: 8px 10px;
    border: 1px solid rgba(129,140,248,.24);
    border-radius: 11px;
    background: linear-gradient(90deg, rgba(37,99,235,.12), rgba(124,58,237,.13));
    color: #c4b5fd;
    font-size: .66rem;
    text-decoration: none;
}
.drawer-offer strong { overflow: hidden; color: #e0e7ff; font-size: .67rem; text-overflow: ellipsis; white-space: nowrap; }
.drawer-grid { gap: 8px; }
.drawer-grid-item { min-height: 72px; padding: 9px 8px; border-radius: 12px; gap: 5px; font-size: .72rem; line-height: 1.15; }
.drawer-item-icon { font-size: 1.18rem; }
.drawer-font-tile { cursor: default; }
.drawer-font-tile .drawer-item-icon { font-size: .95rem; font-weight: 950; letter-spacing: -.08em; }
.drawer-font-buttons { display: flex; gap: 5px; }
.drawer-font-buttons button { width: 28px; height: 23px; padding: 0; border: 1px solid rgba(56,189,248,.28); border-radius: 7px; background: rgba(14,116,144,.14); color: #bae6fd; font-size: .66rem; font-weight: 900; }
.drawer-footer-actions { display: grid; grid-template-columns: 1fr 42px; gap: 8px; margin-top: 9px; }
.drawer-logout,
.drawer-collapse {
    min-height: 39px;
    border: 1px solid rgba(239,68,68,.25);
    border-radius: 11px;
    background: rgba(239,68,68,.08);
    color: #fca5a5;
}
.drawer-logout { display: flex; align-items: center; justify-content: center; gap: 7px; font-size: .74rem; font-weight: 800; text-decoration: none; }
.drawer-collapse { display: grid; place-items: center; padding: 0; cursor: pointer; }
.drawer-collapse svg { width: 19px; height: 19px; fill: none; stroke: currentColor; stroke-width: 2.1; stroke-linecap: round; stroke-linejoin: round; }
.drawer-collapse:hover,
.drawer-logout:hover { background: rgba(239,68,68,.16); color: #fee2e2; text-decoration: none; }

@media (max-width: 420px) {
    .bottom-nav-drawer { padding-right: 11px; padding-left: 11px; }
    .driver-role { max-width: 185px; }
    .drawer-grid-item { min-height: 66px; padding: 7px 6px; }
}

@media (min-width: 768px) {
    .map-app--events #station-panel.events-panel {
        max-height: 52vh;
        left: auto;
        right: 16px;
        bottom: calc(84px + env(safe-area-inset-bottom));
        width: min(420px, calc(100vw - 32px));
        border-radius: 16px;
    }
}

/* ── ŁapKurs 5.6.6: przełącznik miasta HOME + porządek mobilny ───── */
.demand-now__cities {
    max-width: 100%;
    margin: 0 0 3px;
    overflow: hidden;
    color: #dbeafe;
    font-size: 0.82rem;
    font-weight: 850;
    line-height: 1.15;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.demand-now__head {
    align-items: flex-start;
}

/* Źródło ma własną rodzinę koloru, więc PKP / lotnisko / event nie zlewają się. */
.recommendation-card__topbar--source-pkp {
    background: linear-gradient(112deg, #075985 0%, #2563eb 54%, #4f46e5 100%);
}
.recommendation-card__topbar--source-airport {
    background: linear-gradient(112deg, #0f766e 0%, #0891b2 52%, #2563eb 100%);
}
.recommendation-card__topbar--source-events {
    background: linear-gradient(112deg, #6d28d9 0%, #9333ea 52%, #4f46e5 100%);
}
.recommendation-card__topbar--source-other {
    background: var(--gp-gradient-home);
}

.demand-timeline__heading-block {
    flex: 1 1 auto;
    min-width: 0;
}

.demand-timeline__title-row {
    display: flex;
    align-items: center;
    gap: 8px;
    min-width: 0;
}

.demand-timeline__title-row h2 {
    flex: 1 1 auto;
    min-width: 0;
    white-space: nowrap;
}

.demand-city-switch {
    display: inline-flex;
    flex: 0 0 auto;
    align-items: center;
    gap: 5px;
    min-height: 30px;
    padding: 5px 9px;
    border: 1px solid rgba(56, 189, 248, 0.42);
    border-radius: 999px;
    background: linear-gradient(135deg, rgba(14, 116, 144, 0.26), rgba(79, 70, 229, 0.24));
    color: #e0f2fe;
    font: inherit;
    cursor: pointer;
    box-shadow: inset 0 1px rgba(255,255,255,0.08);
    transition: transform .16s ease, border-color .16s ease, background .16s ease;
}

.demand-city-switch:hover,
.demand-city-switch:focus-visible {
    border-color: rgba(103, 232, 249, 0.78);
    background: linear-gradient(135deg, rgba(8, 145, 178, 0.34), rgba(99, 102, 241, 0.32));
    outline: none;
    transform: translateY(-1px);
}

.demand-city-switch > span {
    color: #67e8f9;
    font-size: 0.92rem;
    font-weight: 900;
    line-height: 1;
}

.demand-city-switch strong {
    max-width: 110px;
    overflow: hidden;
    font-size: 0.68rem;
    font-weight: 900;
    line-height: 1;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* Znacznik aktualizacji siedzi w prawym dolnym rogu treści noty i nie wypada poza kartę. */
.demand-now__note {
    margin-top: 9px;
    padding: 7px 10px;
}

.demand-now__note .demand-now__note-last {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: end;
    gap: 5px 10px;
}

#recommendations-updated {
    align-self: end;
    margin-left: 0;
    padding-left: 4px;
    color: #75869d;
    font-size: 0.64rem;
    font-weight: 700;
    line-height: 1.2;
    white-space: nowrap;
}

.cc-map-head {
    padding-top: 11px;
}

.cc-map-foot {
    padding-top: 6px;
}

@media (max-width: 680px) {
    .demand-now__head {
        align-items: start;
        gap: 6px;
    }

    .demand-now__kicker-row {
        flex-wrap: nowrap;
        gap: 6px;
        margin-bottom: 2px;
    }

    .demand-now__kicker {
        overflow: hidden;
        font-size: 0.62rem;
        letter-spacing: 0.105em;
        text-overflow: ellipsis;
        white-space: nowrap;
    }

    .demand-now__refresh {
        flex: 0 0 auto;
        font-size: 0.58rem;
    }

    .demand-now__cities {
        font-size: 0.72rem;
    }

    .telegram-home-status {
        align-self: start;
        margin-top: 0;
    }

    .demand-timeline__head {
        display: grid;
        grid-template-columns: 1fr;
        gap: 4px;
        margin-bottom: 4px;
    }

    .demand-timeline__title-row {
        gap: 6px;
    }

    .demand-timeline__title-row h2,
    .demand-timeline__head h2 {
        font-size: clamp(12px, 3.55vw, 16px);
        letter-spacing: -0.02em;
        white-space: nowrap;
    }

    .demand-city-switch {
        min-height: 28px;
        max-width: 112px;
        padding: 4px 7px;
    }

    .demand-city-switch strong {
        max-width: 76px;
        font-size: 10px;
    }

    .demand-timeline__legend {
        display: flex;
        flex: 0 0 auto;
        align-items: center;
        gap: 4px 10px;
        padding: 0;
    }

    .demand-timeline__legend small {
        font-size: 9px;
        white-space: nowrap;
    }

    .demand-timeline__legend small:last-child {
        margin-left: auto;
    }

    .demand-now__note {
        padding: 7px 8px;
    }

    .demand-now__note .demand-now__note-last {
        grid-template-columns: minmax(0, 1fr) auto;
        gap: 4px 7px;
    }

    #recommendations-updated {
        font-size: 10px;
        font-weight: 750;
    }

    .cc-map-head {
        padding: 9px 13px 0;
    }

    .cc-map-head h2 {
        font-size: 1rem;
    }

    .cc-city-btn {
        padding: 5px 9px;
        font-size: 0.7rem;
    }

    #cc-mini-map {
        min-height: 205px;
    }

    .cc-map-card {
        min-height: 232px;
    }

    .cc-map-foot {
        padding: 5px 12px 8px;
    }
}

@media (max-width: 520px) {
    .dash-toolbelt {
        margin-bottom: 9px;
    }

    .cc-wrap {
        margin-top: 0;
    }
}

@media (max-width: 380px) {
    .demand-city-switch strong {
        max-width: 58px;
    }

    .demand-timeline__title-row h2,
    .demand-timeline__head h2 {
        font-size: 11.5px;
    }
}

/* ── ŁapKurs 5.6.7: zwarty nagłówek + ticker źródeł ─────────────── */
.header-telegram-status {
    position: relative;
    display: inline-flex;
    flex: 0 0 auto;
    align-items: center;
    gap: 5px;
    min-height: 30px;
    padding: 3px 8px 3px 5px;
    border: 1px solid rgba(56, 189, 248, .34);
    border-radius: 999px;
    background: linear-gradient(135deg, rgba(14,116,144,.18), rgba(79,70,229,.16));
    color: #dbeafe;
    text-decoration: none;
    box-shadow: inset 0 1px rgba(255,255,255,.08);
}

.header-telegram-status__icon {
    display: grid;
    width: 23px;
    height: 23px;
    flex: 0 0 auto;
    place-items: center;
    border-radius: 50%;
    background: linear-gradient(135deg, #38bdf8, #2563eb 56%, #7c3aed);
    color: #fff;
    font-size: 10px;
    line-height: 1;
    transform: rotate(-18deg);
}

.header-telegram-status__label {
    max-width: 74px;
    overflow: hidden;
    font-size: 10px;
    font-weight: 850;
    line-height: 1;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.header-telegram-status i {
    width: 6px;
    height: 6px;
    flex: 0 0 auto;
    border-radius: 50%;
    background: #94a3b8;
    box-shadow: 0 0 0 3px rgba(148,163,184,.12);
}

.header-telegram-status--active {
    border-color: rgba(45, 212, 191, .52);
    background: linear-gradient(135deg, rgba(5,150,105,.19), rgba(37,99,235,.16));
}
.header-telegram-status--active i {
    background: #22c55e;
    box-shadow: 0 0 0 3px rgba(34,197,94,.13), 0 0 10px rgba(34,197,94,.42);
}
.header-telegram-status--paused i {
    background: #f59e0b;
    box-shadow: 0 0 0 3px rgba(245,158,11,.13);
}

/* Plan nie zajmuje już miejsca w górnym pasku. Jest stale widoczny w Ustawieniach przy nazwie kierowcy. */
.driver-role b {
    display: inline-block;
    padding: 1px 5px;
    border: 1px solid rgba(56,189,248,.28);
    border-radius: 999px;
    background: rgba(56,189,248,.08);
}

.demand-now__head {
    margin-bottom: 4px;
}

.demand-now__headline {
    width: 100%;
}

.demand-now__decision-row {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    align-items: center;
    gap: 10px;
    min-width: 0;
}

.demand-now__decision-row h1,
.demand-now__head .demand-now__decision-row h1 {
    margin: 0;
    white-space: nowrap;
}

.source-health--ticker {
    position: relative;
    display: block;
    min-width: 0;
    margin: 0;
    overflow: hidden;
    padding: 0;
    -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 14px, #000 calc(100% - 14px), transparent 100%);
    mask-image: linear-gradient(90deg, transparent 0, #000 14px, #000 calc(100% - 14px), transparent 100%);
    scrollbar-width: none;
}

.source-health--ticker::-webkit-scrollbar {
    display: none;
}

.source-health__track {
    display: flex;
    width: max-content;
    min-width: 100%;
    animation: gp-source-health-marquee 19s linear infinite;
    will-change: transform;
}

.source-health__set {
    display: flex;
    flex: 0 0 auto;
    align-items: stretch;
    gap: 6px;
    padding-right: 6px;
}

.source-health--ticker .source-health__item {
    flex: 0 0 auto;
    min-width: 190px;
    max-width: 230px;
    padding: 5px 8px;
    border-radius: 11px;
}

.source-health--ticker .source-health__dot {
    width: 8px;
    height: 8px;
}

.source-health--ticker .source-health__item strong {
    font-size: .68rem;
}

.source-health--ticker .source-health__item small {
    margin-top: 1px;
    font-size: .58rem;
}

.source-health--ticker:hover .source-health__track,
.source-health--ticker:focus-within .source-health__track {
    animation-play-state: paused;
}

@keyframes gp-source-health-marquee {
    from { transform: translate3d(0,0,0); }
    to { transform: translate3d(-50%,0,0); }
}

/* Oś i przełącznik miasta bliżej góry karty. */
.demand-timeline {
    margin-top: 6px;
    padding-top: 8px;
}

.demand-timeline__head {
    margin-bottom: 0;
}

.demand-timeline__head > div:first-child > span {
    margin-bottom: 0;
}

.demand-timeline__title-row {
    margin-top: 1px;
}

@media (max-width: 680px) {
    .site-header-actions {
        gap: 3px;
    }

    .header-telegram-status {
        min-height: 29px;
        padding: 3px 6px 3px 4px;
    }

    .header-telegram-status__icon {
        width: 22px;
        height: 22px;
    }

    .header-telegram-status__label {
        max-width: 56px;
        font-size: 9px;
    }

    .demand-now {
        padding-top: 8px;
    }

    .demand-now__head {
        display: block;
        margin-bottom: 3px;
    }

    .demand-now__decision-row {
        grid-template-columns: minmax(166px, auto) minmax(0, 1fr);
        gap: 5px;
    }

    .demand-now__decision-row h1,
    .demand-now__head .demand-now__decision-row h1,
    .demand-now__head--with-telegram h1 {
        font-size: clamp(1.06rem, 4.95vw, 1.3rem);
        letter-spacing: -0.035em;
        white-space: nowrap;
    }

    .source-health--ticker {
        min-height: 43px;
        -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 8px, #000 calc(100% - 8px), transparent 100%);
        mask-image: linear-gradient(90deg, transparent 0, #000 8px, #000 calc(100% - 8px), transparent 100%);
    }

    .source-health__track {
        animation-duration: 16s;
    }

    .source-health--ticker .source-health__item {
        min-width: 172px;
        max-width: 190px;
        padding: 5px 7px;
    }

    .source-health--ticker .source-health__item strong {
        font-size: 10px;
    }

    .source-health--ticker .source-health__item small {
        font-size: 9px;
    }

    .demand-timeline {
        margin-top: 4px;
        padding-top: 6px;
    }

    .demand-timeline__head {
        gap: 2px;
    }

    .demand-timeline__title-row {
        margin-top: 0;
    }
}

@media (max-width: 390px) {
    .header-telegram-status__label {
        display: none;
    }

    .header-telegram-status {
        padding-right: 5px;
    }

    .demand-now__decision-row {
        grid-template-columns: minmax(151px, auto) minmax(0, 1fr);
    }

    .demand-now__decision-row h1,
    .demand-now__head .demand-now__decision-row h1 {
        font-size: 1rem;
    }
}

@media (prefers-reduced-motion: reduce) {
    .source-health__track {
        animation: none !important;
        transform: none !important;
    }
    .source-health__set[aria-hidden="true"] {
        display: none;
    }
}

/* ── ŁapKurs 5.6.8: rytm w headerze + zwarty nagłówek osi ───────── */
.header-refresh-status {
    display: inline-flex;
    flex: 0 0 auto;
    align-items: center;
    gap: 4px;
    min-height: 28px;
    padding: 3px 7px;
    border: 1px solid rgba(148, 163, 184, .24);
    border-radius: 999px;
    background: rgba(148, 163, 184, .08);
    color: #cbd5e1;
    white-space: nowrap;
}
.header-refresh-status > span {
    color: #67e8f9;
    font-size: .72rem;
    line-height: 1;
}
.header-refresh-status strong {
    font-size: .61rem;
    font-weight: 800;
    line-height: 1;
}

/* CENTRUM DECYZJI po lewej, wybrane miasta dokładnie w tym samym wierszu po prawej. */
.demand-now__kicker-row {
    width: 100%;
    justify-content: space-between;
    flex-wrap: nowrap;
    gap: 10px;
}
.demand-now__cities {
    flex: 0 1 auto;
    margin: 0;
    color: var(--text, #eaf2ff);
    font-size: .72rem;
    font-weight: 800;
    letter-spacing: 0;
    text-align: right;
}

/* Przełącznik miasta trafia do górnego wiersza karty osi. */
.demand-timeline__eyebrow-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    min-width: 0;
}
.demand-timeline__eyebrow-row > span {
    display: block;
    margin: 0;
    color: #67e8f9;
    font-size: .58rem;
    font-weight: 900;
    letter-spacing: .14em;
}
.demand-timeline__title-row {
    margin-top: 0;
}

@media (max-width: 680px) {
    .header-refresh-status {
        min-height: 27px;
        padding: 3px 5px;
        gap: 3px;
    }
    .header-refresh-status > span { font-size: 10px; }
    .header-refresh-status strong { font-size: 9px; }

    .demand-now__kicker-row {
        margin-bottom: 1px;
        gap: 8px;
    }
    .demand-now__cities {
        max-width: 52%;
        font-size: 10px;
        color: var(--text, #172033);
    }

    .demand-timeline {
        margin-top: 2px;
        padding-top: 3px;
    }
    .demand-timeline__head {
        gap: 1px;
    }
    .demand-timeline__eyebrow-row {
        min-height: 28px;
        margin-bottom: -1px;
    }
    .demand-timeline__eyebrow-row > span {
        font-size: 9px;
    }
    .demand-city-switch {
        min-height: 26px;
        margin-top: 0;
        padding: 3px 7px;
    }
    .demand-timeline__title-row h2,
    .demand-timeline__head h2 {
        margin-top: -1px;
    }
}

@media (max-width: 390px) {
    .header-refresh-status strong {
        font-size: 8.5px;
    }
    .header-refresh-status {
        padding-right: 4px;
        padding-left: 4px;
    }
    .demand-now__cities {
        max-width: 49%;
        font-size: 9.5px;
    }
}

/* ── ŁapKurs 5.6.9: +1 px dla drobnych etykiet HOME ───────────────
   Użytkownik wskazał dokładnie te elementy na widoku mobilnym. Nie
   zmieniamy globalnej skali A-/A+, tylko ich bazową czytelność. */

/* Logo tekstowe w nagłówku: 12 -> 13 px na telefonie. */
.site-header .brand strong {
    font-size: 13px;
}

/* Rytm odświeżania: +1 px względem dotychczasowej bazy. */
.header-refresh-status strong {
    font-size: calc(.61rem + 1px);
}

/* Nazwa / zestaw miast po prawej w wierszu CENTRUM DECYZJI. */
.demand-now__cities {
    font-size: calc(.72rem + 1px);
}

/* Godziny nad osią oraz podpisy -20 min / teraz. */
.demand-timeline__clock span,
.demand-timeline__progress span {
    font-size: calc(.56rem + 1px);
}

/* Objaśnienia osi czasu. */
.demand-timeline__legend small {
    font-size: calc(.58rem + 1px);
}

/* Tytuł osi: zachowujemy responsywność, ale podnosimy całą bazę o 1 px. */
.demand-timeline__title-row h2,
.demand-timeline__head h2 {
    font-size: calc(.94rem + 1px);
}

@media (min-width: 768px) {
    .site-header .brand strong {
        font-size: 15px;
    }
}

@media (max-width: 680px) {
    .header-refresh-status strong {
        font-size: 10px;
    }

    .demand-now__cities {
        font-size: 11px;
    }

    .demand-timeline__legend small {
        font-size: 10px;
    }

    .demand-timeline__title-row h2,
    .demand-timeline__head h2 {
        font-size: clamp(13px, calc(3.55vw + 1px), 17px);
    }
}

@media (max-width: 390px) {
    .header-refresh-status strong {
        font-size: 9.5px;
    }

    .demand-now__cities {
        font-size: 10.5px;
    }
}

@media (max-width: 380px) {
    .demand-timeline__title-row h2,
    .demand-timeline__head h2 {
        font-size: 12.5px;
    }
}


/* ── ŁapKurs 5.7.0: realny domyślny +1 px + stan automatu Telegram ──
   5.6.9 miał błędny selektor logo (.brand strong). Poniższe reguły wskazują
   faktyczne elementy HOME i są ostatnie w arkuszu. A-/A+ nadal skaluje root. */
@media (max-width: 680px) {
    .site-header .gp-app-brand--header .gp-app-brand__name { font-size: 13px; }
    .header-refresh-status strong { font-size: 10px; }
    .demand-now__cities { font-size: 11px; }
    .demand-timeline__title-row h2,
    .demand-timeline__head h2 { font-size: clamp(13px, calc(3.55vw + 1px), 17px); }
    .demand-timeline__legend small { font-size: 10px; }
    .demand-timeline__clock span,
    .demand-timeline__progress span { font-size: calc(.56rem + 1px); }
}
@media (max-width: 390px) {
    .site-header .gp-app-brand--header .gp-app-brand__name { font-size: 13px; }
    .header-refresh-status strong { font-size: 10px; }
    .demand-now__cities { font-size: 11px; }
}
.header-telegram-status--warning {
    border-color: rgba(239,68,68,.55);
    background: linear-gradient(135deg, rgba(127,29,29,.18), rgba(79,70,229,.14));
}
.header-telegram-status--warning i {
    background: #ef4444;
    box-shadow: 0 0 0 3px rgba(239,68,68,.13), 0 0 10px rgba(239,68,68,.34);
}

/* ── ŁapKurs 5.7.3: mobile-first spójność + znaczniki 35/60 min ── */
/* Logo w HOME ma ten sam rytm co na mapach. */
.site-header .gp-app-brand--header,
.map-app-header .gp-app-brand--map {
    gap: 7px;
}
.site-header .gp-app-brand--header .gp-app-brand__mark,
.map-app-header .gp-app-brand--map .gp-app-brand__mark {
    width: 31px;
    height: 31px;
    border-radius: 10px;
}
.site-header .gp-app-brand--header .gp-app-brand__name,
.map-app-header .gp-app-brand--map .gp-app-brand__name {
    font-size: 14px;
    letter-spacing: -.4px;
}

/* Czerwone horyzonty 35 i 60 min są liczone od znacznika „teraz”. */
.demand-timeline__horizon-marker {
    position: absolute;
    top: 24px;
    left: clamp(38px, var(--timeline-horizon), calc(100% - 38px));
    z-index: 0;
    width: 2px;
    height: calc(var(--timeline-progress-y) - 24px);
    transform: translateX(-50%);
    border-radius: 999px;
    background: linear-gradient(to bottom,
        rgba(239,68,68,0.04) 0%,
        rgba(239,68,68,0.34) 20%,
        rgba(220,38,38,0.92) 48%,
        rgba(239,68,68,0.58) 72%,
        rgba(239,68,68,0.08) 100%);
    box-shadow: 0 0 9px rgba(239,68,68,.18);
    pointer-events: none;
}
.demand-timeline__horizon-marker--60 {
    width: 2px;
    background: linear-gradient(to bottom,
        rgba(190,24,93,0.04) 0%,
        rgba(239,68,68,0.28) 18%,
        rgba(190,24,93,0.92) 50%,
        rgba(239,68,68,0.52) 74%,
        rgba(190,24,93,0.07) 100%);
}
.demand-timeline__horizon-marker b {
    position: absolute;
    top: 28px;
    left: 50%;
    transform: translateX(-50%);
    padding: 2px 5px;
    border: 1px solid rgba(239,68,68,.34);
    border-radius: 999px;
    background: rgba(127,29,29,.86);
    color: #fff;
    font-size: 8px;
    font-weight: 900;
    line-height: 1;
    white-space: nowrap;
    box-shadow: 0 2px 8px rgba(127,29,29,.16);
}

/* Wspólny support na wszystkich mapach. */
.map-live-card--support form {
    display: grid;
    gap: 7px;
}
.map-live-card--support label {
    display: grid;
    gap: 3px;
}
.map-live-card--support select,
.map-live-card--support input,
.map-live-card--support textarea {
    width: 100%;
    box-sizing: border-box;
    padding: 7px 8px;
    border: 1px solid rgba(148,163,184,.26);
    border-radius: 8px;
    background: rgba(15,23,42,.86);
    color: #e2e8f0;
    font: inherit;
}
.map-support-submit { width: 100%; margin-top: 2px; }
.map-support-submit:disabled { opacity: .55; cursor: wait; }
.map-support-status { min-height: 1.25em; margin: 1px 0 0; }
.map-support-status.is-ok { color: #34d399; font-weight: 800; }

@media (max-width: 680px) {
    .site-header .gp-app-brand--header .gp-app-brand__mark,
    .map-app-header .gp-app-brand--map .gp-app-brand__mark {
        width: 31px;
        height: 31px;
    }
    .site-header .gp-app-brand--header .gp-app-brand__name,
    .map-app-header .gp-app-brand--map .gp-app-brand__name {
        font-size: 14px;
    }
    .demand-timeline__horizon-marker {
        left: clamp(18px, var(--timeline-horizon), calc(100% - 18px));
    }
    .demand-timeline__horizon-marker b {
        top: 29px;
        font-size: 8.5px;
    }
    /* Mobile ma pierwszeństwo: karty i nagłówki mają ten sam kompaktowy rytm. */
    .demand-now,
    .telegram-page .demand-now {
        border-radius: 18px;
    }
    .recommendation-card,
    .demand-timeline,
    .cc-map-card {
        border-radius: 15px;
    }
}

html[data-gp-theme="light"] .map-live-card--support select,
html[data-gp-theme="light"] .map-live-card--support input,
html[data-gp-theme="light"] .map-live-card--support textarea {
    border-color: #cbd5e1;
    background: #fff;
    color: #172033;
}

/* Dashboard dostaje ten sam dwuwierszowy podpis marki co mapy. */
.site-header .gp-app-brand--dashboard .gp-app-brand__copy small {
    display: block;
    max-width: 145px;
    margin-top: 3px;
    font-size: 7px;
}
@media (max-width: 680px) {
    .site-header .gp-app-brand--dashboard .gp-app-brand__copy small {
        display: block;
        max-width: 112px;
        font-size: 7px;
    }
}

/* ── ŁapKurs 5.7.4: dopracowanie osi i mobile ─────────────────── */
/* Etykiety 35/60 min siedzą bezpośrednio pod główną osią; pionowa linia pozostaje bez zmian. */
.demand-timeline__horizon-marker b{
    top:calc(var(--timeline-axis-y) - 16px);
    z-index:4;
    font-size:9px;
    padding:3px 6px;
}
.demand-timeline__horizon-marker--60 b{background:rgba(136,19,55,.88)}

/* Czerwone zaznaczenia użytkownika: dokładnie +1 px dla drobnych etykiet. */
.demand-timeline__legend small{font-size:calc(.58rem + 2px)}
.demand-timeline__clock span{font-size:calc(.56rem + 2px)}
.recommendation-card__context{font-size:calc(.58rem + 1px)}

/* Opóźnienie wewnątrz owalu godziny — dokładnie 4% większe. */
.demand-timeline__arrival em{transform:scale(1.04);transform-origin:center}

@media(max-width:680px){
    .demand-timeline__legend small{font-size:11px}
    .demand-timeline__clock span{font-size:calc(.56rem + 2px)}
    .recommendation-card__context{font-size:calc(.56rem + 1px)}
    .demand-timeline__horizon-marker b{top:calc(var(--timeline-axis-y) - 16px);font-size:9px}
    /* Menu o kilka pikseli niżej, bez zmniejszania strefy dotyku. */
    .bottom-nav{bottom:-4px}
    .bottom-nav-item{transform:translateY(2px)}
    .bottom-nav-item--center{transform:translateY(-4px)}
}

/* 5.7.4 — procentowy loader mapy, bez sztucznego odliczania 3-2-1. */
.map-loading__radar span{font-size:1.55rem;letter-spacing:-.04em}
.map-loading__progress span{
    width:0;
    transform:none;
    animation:none;
    transition:width .08s linear;
    background:linear-gradient(90deg,#22d3ee,#3b82f6,#a855f7);
}
.map-loading:not(.is-error) .map-loading__radar::after{
    border-top-color:#22d3ee;
    border-right-color:rgba(168,85,247,.22);
}

/* Mapy 5.7.4 — po usunięciu szarego podtytułu reklama dostaje więcej miejsca. */
.map-app-header .gp-app-brand--map{max-width:34%}
@media(max-width:410px){.map-app-header .gp-app-brand--map{max-width:37%}}

/* ── ŁapKurs 5.7.5: horyzonty 35/60 na dolnej skali ───────────── */
.demand-timeline__horizon-marker b{display:none!important}
.demand-timeline__progress-horizon{
    --timeline-label-shift:0px;
    z-index:5;
    padding:2px 6px;
    border-radius:999px;
    color:#fff!important;
    font-weight:900!important;
    line-height:1.15;
    white-space:nowrap;
    transform:translateX(calc(-50% + var(--timeline-label-shift)));
    background:linear-gradient(135deg,#ef4444,#be123c);
    box-shadow:0 2px 8px rgba(190,18,60,.22);
}
.demand-timeline__progress-horizon--60{background:linear-gradient(135deg,#dc2626,#7e22ce)}
@media(max-width:680px){
    .demand-timeline__progress-horizon{padding:2px 5px;font-size:9px!important}
}

/* ── ŁapKurs 6.0.7: delikatnie mocniejsze strefy osi czasu ───── */
/* Ostatnie 20 min: bardzo delikatny, "softowy" czerwono-różowy gradient.
   TERAZ → +2 h: bez dodatkowego tła.
   +2 h → +5 h: przeniesiony subtelny pomarańczowy gradient. */
.demand-timeline__past-zone,
.demand-timeline__future-zone{
    position:absolute;
    top:25px;
    bottom:calc(var(--timeline-rail-height) - var(--timeline-progress-y));
    z-index:0;
    overflow:hidden;
    pointer-events:none;
}
.demand-timeline__past-zone{
    left:0;
    width:var(--timeline-now);
    border-right:1px solid rgba(244,63,94,.10);
    border-radius:12px 0 0 12px;
    background:linear-gradient(90deg,
        rgba(244,63,94,.102) 0%,
        rgba(251,113,133,.072) 44%,
        rgba(254,205,211,.036) 80%,
        rgba(244,63,94,.018) 100%);
    box-shadow:inset -12px 0 24px rgba(244,63,94,.015);
    transition:width .38s ease-out;
}
.demand-timeline__future-zone{
    right:38px;
    left:clamp(38px,var(--timeline-future-start),calc(100% - 38px));
    border-left:1px solid rgba(245,158,11,.16);
    border-radius:0 12px 12px 0;
    background:linear-gradient(90deg,
        rgba(245,158,11,.024) 0%,
        rgba(251,191,36,.038) 20%,
        rgba(245,158,11,.078) 60%,
        rgba(217,119,6,.126) 100%);
    box-shadow:inset 12px 0 24px rgba(245,158,11,.017);
    transition:left .38s ease-out;
}
.demand-timeline__rail[data-timeline-density="busy"] .demand-timeline__past-zone,
.demand-timeline__rail[data-timeline-density="very-busy"] .demand-timeline__past-zone{
    background:linear-gradient(90deg,
        rgba(244,63,94,.108) 0%,
        rgba(251,113,133,.077) 44%,
        rgba(254,205,211,.040) 80%,
        rgba(244,63,94,.020) 100%);
}
.demand-timeline__rail[data-timeline-density="busy"] .demand-timeline__future-zone,
.demand-timeline__rail[data-timeline-density="very-busy"] .demand-timeline__future-zone{
    background:linear-gradient(90deg,
        rgba(245,158,11,.026) 0%,
        rgba(251,191,36,.048) 20%,
        rgba(245,158,11,.090) 60%,
        rgba(217,119,6,.138) 100%);
}
html[data-gp-theme="light"] .demand-timeline__past-zone{
    border-right-color:rgba(225,29,72,.09);
    background:linear-gradient(90deg,
        rgba(255,228,230,.50) 0%,
        rgba(255,241,242,.31) 56%,
        rgba(255,228,230,.10) 100%);
}
html[data-gp-theme="light"] .demand-timeline__future-zone{
    border-left-color:rgba(217,119,6,.12);
    background:linear-gradient(90deg,
        rgba(254,243,199,.08) 0%,
        rgba(254,243,199,.29) 24%,
        rgba(253,230,138,.46) 64%,
        rgba(254,215,170,.60) 100%);
}
@media(max-width:680px){
    .demand-timeline__past-zone{
        left:0;
        width:var(--timeline-now);
    }
    .demand-timeline__future-zone{
        right:18px;
        left:clamp(18px,var(--timeline-future-start),calc(100% - 18px));
    }
    /* Drobny zapas pod dolną skalą — etykiety 35/60 min nie są obcinane. */
    .demand-timeline__viewport{padding-bottom:10px}
}

/* Pociąg po przyjeździe nie gaśnie: dostaje mocną ramkę i licznik „min temu”. */
.demand-timeline__arrival--train.demand-timeline__arrival--past{
    --arrival-color:#f59e0b;
    opacity:1;
    border:2px solid rgba(245,158,11,.86);
    background:linear-gradient(135deg,rgba(120,53,15,.98),rgba(69,26,3,.98));
    color:#fff7d6;
    box-shadow:0 5px 15px rgba(120,53,15,.34),0 0 0 2px rgba(245,158,11,.08);
}
.demand-timeline__arrival--train.demand-timeline__arrival--past::after{
    background:linear-gradient(#f59e0b,#111111);
    opacity:.9;
}
.demand-timeline__arrival--train.demand-timeline__arrival--past::before{
    background:#f59e0b;
    box-shadow:0 0 0 3px rgba(245,158,11,.2);
}
.demand-timeline__arrival--past .demand-timeline__past{
    border:1px solid rgba(253,230,138,.5);
    background:#f59e0b;
    color:#271600;
    font-weight:950;
}
html[data-gp-theme="light"] .demand-timeline__arrival--train.demand-timeline__arrival--past{
    background:linear-gradient(135deg,#fffbeb,#fef3c7);
    color:#78350f;
}

/* Osobna, przewijana reklama wyłącznie na mapach. */
.app-header-ad--rotating .app-header-ad__viewport{padding:0;mask-image:linear-gradient(90deg,transparent,#000 9px,#000 calc(100% - 9px),transparent);-webkit-mask-image:linear-gradient(90deg,transparent,#000 9px,#000 calc(100% - 9px),transparent)}
.map-ad-track{display:flex!important;align-items:center;width:max-content;overflow:visible!important;animation:gp-map-ad-ticker 26s linear infinite;will-change:transform;line-height:30px!important}
.map-ad-group{display:flex!important;align-items:center;flex:0 0 auto;gap:28px;padding:0 28px 0 10px;overflow:visible!important;white-space:nowrap!important}
.map-ad-group>span,.map-ad-group>a{display:inline-flex!important;align-items:center;gap:6px;color:inherit;font-size:var(--map-ad-font-size,11px)!important;font-weight:800;line-height:30px!important;text-decoration:none;white-space:nowrap}
.map-ad-group>a{color:#a5b4fc;text-decoration:underline;text-underline-offset:3px}.map-ad-group i{font-size:6px;font-style:normal;color:#38bdf8}.app-header-ad--rotating:hover .map-ad-track,.app-header-ad--rotating:focus-within .map-ad-track{animation-play-state:paused}
@keyframes gp-map-ad-ticker{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@media(prefers-reduced-motion:reduce){.map-ad-track{animation:none}}


/* ── ŁapKurs 6.0.5: spójne tabele PKP + godzinowe znaczniki osi ───── */
/* Podgląd najbliższych przyjazdów nad filtrami korzysta z identycznej
   geometrii kolumn jak pełna tabela poniżej. */
#station-panel .train-tbl--preview{
    table-layout:fixed;
    width:100%;
    margin:0 0 7px;
}
#station-panel .train-tbl--preview th:nth-child(1),
#station-panel .train-tbl--preview td:nth-child(1){width:36%}
#station-panel .train-tbl--preview th:nth-child(2),
#station-panel .train-tbl--preview td:nth-child(2){width:24%}
#station-panel .train-tbl--preview th:nth-child(3),
#station-panel .train-tbl--preview td:nth-child(3){width:25%}
#station-panel .train-tbl--preview th:nth-child(4),
#station-panel .train-tbl--preview td:nth-child(4){width:15%;text-align:left}
#station-panel .train-tbl--preview td{
    vertical-align:top;
}
#station-panel .train-tbl--preview td:nth-child(2),
#station-panel .train-tbl--preview td:nth-child(3),
#station-panel .train-tbl--preview td:nth-child(4){
    white-space:nowrap;
}
#station-panel .arrivals-preview h4{
    margin-bottom:5px;
}

/* „teraz” ma być punktem odniesienia, dlatego jest odrobinę mocniejsze. */
.demand-timeline__progress-now{
    color:#4b5f78!important;
    font-weight:900!important;
    letter-spacing:.005em;
}
/* Znaczniki dalszego planu pojawiają się dopiero od +2 h do +5 h.
   Są czytelniejsze od zwykłej skali, ale pozostają spokojniejsze od 35/60 min. */
.demand-timeline__progress-hour{
    color:#5d6f86!important;
    font-weight:750!important;
    letter-spacing:.01em;
}
.demand-timeline__progress-hour::before{
    content:"";
    position:absolute;
    left:50%;
    top:-8px;
    width:2px;
    height:5px;
    border-radius:999px;
    transform:translateX(-50%);
    background:currentColor;
    opacity:.55;
}
html[data-gp-theme="dark"] .demand-timeline__progress-now{
    color:#e2e8f0!important;
}
html[data-gp-theme="dark"] .demand-timeline__progress-hour{
    color:#aebcd0!important;
}
@media(max-width:680px){
    #station-panel .train-tbl--preview th,
    #station-panel .train-tbl--preview td{padding-left:3px;padding-right:3px}
    .demand-timeline__progress-now{font-size:calc(.56rem + 2px)!important}
    .demand-timeline__progress-hour{font-size:calc(.56rem + 1px)!important}
}


/* ── ŁapKurs 6.0.8: pełne +5 h PKP i całe paski reklamowe w ruchu ── */
.partner-ticker__viewport{flex:1 1 100%}
.partner-ticker__group{gap:30px;padding-left:14px}
.partner-ticker__group .partner-ticker__badge{
    align-self:stretch;
    min-height:30px;
    margin-left:-14px;
    padding:0 11px;
}
.app-header-ad--rotating .app-header-ad__viewport{flex:1 1 100%}
.map-ad-group .app-header-ad__label--moving{
    align-self:stretch;
    min-height:32px;
    padding:0 8px;
    background:linear-gradient(135deg,#047857,#16a34a);
    font-size:7px;
    line-height:32px;
}
.app-header-ad--empty .map-ad-group .app-header-ad__label--moving{
    background:linear-gradient(135deg,#0e7490,#2563eb);
}
@media(max-width:410px){
    .map-ad-group .app-header-ad__label--moving{display:inline-flex;padding:0 6px;font-size:6px}
}

/* ── ŁapKurs 6.0.13: DOJAZD TERAZ — kompaktowa pionowa oś ETA ────── */
.traffic-eta{
    --eta-trunk-x:32px;
    margin-top:8px;
    padding:9px 10px 6px;
    border:1px solid rgba(148,163,184,.14);
    border-radius:16px;
    background:
        radial-gradient(circle at 9% 16%,rgba(34,197,94,.055),transparent 31%),
        radial-gradient(circle at 72% 72%,rgba(139,92,246,.055),transparent 37%),
        rgba(2,8,23,.38);
    overflow:hidden;
}
.traffic-eta__head{
    display:flex;
    align-items:flex-end;
    justify-content:space-between;
    gap:10px;
    margin-bottom:1px;
}
.traffic-eta__kicker{
    display:block;
    margin-bottom:2px;
    color:#67e8f9;
    font-size:.58rem;
    font-weight:900;
    letter-spacing:.14em;
}
.traffic-eta__head h2{
    margin:0;
    color:#eaf2ff;
    font-size:.94rem;
}
.traffic-eta__live{
    display:flex;
    align-items:center;
    justify-content:flex-end;
    gap:5px;
    min-width:max-content;
    color:#94a3b8;
    font-size:.58rem;
    font-weight:800;
}
.traffic-eta__live i{
    width:7px;
    height:7px;
    border-radius:50%;
    background:#64748b;
    box-shadow:0 0 0 3px rgba(100,116,139,.12);
}
.traffic-eta__live strong{color:#cbd5e1;font-size:.62rem;letter-spacing:.04em}
.traffic-eta__live small{color:#718096;font-size:.57rem;font-weight:750}
.traffic-eta__live[data-state="live"] i{
    background:#22c55e;
    box-shadow:0 0 0 3px rgba(34,197,94,.14),0 0 12px rgba(34,197,94,.36);
    animation:traffic-eta-live-pulse 1.8s ease-out infinite;
}
.traffic-eta__live[data-state="locating"] i{background:#38bdf8;box-shadow:0 0 10px rgba(56,189,248,.42)}
.traffic-eta__live[data-state="warning"] i{background:#f59e0b;box-shadow:0 0 10px rgba(245,158,11,.34)}
.traffic-eta__live[data-state="permission"] i,.traffic-eta__live[data-state="setup"] i{background:#a78bfa}
@keyframes traffic-eta-live-pulse{
    0%{box-shadow:0 0 0 0 rgba(34,197,94,.32),0 0 9px rgba(34,197,94,.3)}
    70%{box-shadow:0 0 0 7px rgba(34,197,94,0),0 0 13px rgba(34,197,94,.3)}
    100%{box-shadow:0 0 0 0 rgba(34,197,94,0),0 0 9px rgba(34,197,94,.3)}
}
.traffic-eta__stage{
    position:relative;
    min-height:0;
    margin-top:3px;
    padding:25px 0 4px;
    border-radius:13px;
    background:
        linear-gradient(90deg,rgba(244,63,94,.035) 0,transparent 18%),
        linear-gradient(90deg,transparent 0 70%,rgba(245,158,11,.04) 100%);
}
.traffic-eta__origin{
    position:absolute;
    top:0;
    left:var(--eta-trunk-x);
    z-index:5;
    display:grid;
    place-items:center;
    transform:translateX(-50%);
}
.traffic-eta__origin strong{
    display:block;
    min-width:30px;
    padding:3px 7px;
    border:1px solid rgba(103,232,249,.34);
    border-radius:999px;
    background:rgba(8,15,29,.94);
    color:#eaf2ff;
    box-shadow:0 5px 15px rgba(2,8,23,.32);
    font-size:.58rem;
    font-weight:950;
    line-height:1.05;
    text-align:center;
}
.traffic-eta__origin span{
    width:10px;
    height:10px;
    margin-top:3px;
    border:2px solid #fff;
    border-radius:50%;
    background:#22c55e;
    box-shadow:0 0 0 3px rgba(34,197,94,.18),0 0 12px rgba(34,197,94,.38);
}
.traffic-eta__trunk{
    position:absolute;
    top:29px;
    bottom:13px;
    left:var(--eta-trunk-x);
    z-index:1;
    width:3px;
    transform:translateX(-50%);
    border-radius:99px;
    background:linear-gradient(180deg,#22c55e 0%,#38bdf8 49%,#8b5cf6 100%);
    box-shadow:0 0 15px rgba(56,189,248,.16);
}
.traffic-eta__rows{position:relative;z-index:2;display:grid;gap:0}
.traffic-eta__row{
    --eta-pct:28%;
    --eta-color:#38bdf8;
    position:relative;
    height:36px;
    min-width:0;
}
.traffic-eta__row--train{--eta-color:#38bdf8}
.traffic-eta__row--bus{--eta-color:#22c55e}
.traffic-eta__row--airport{--eta-color:#a855f7}
.traffic-eta__branch{
    position:absolute;
    top:50%;
    left:var(--eta-trunk-x);
    z-index:1;
    width:calc(var(--eta-pct) - var(--eta-trunk-x));
    height:3px;
    transform:translateY(-50%);
    border-radius:0 99px 99px 0;
    background:linear-gradient(90deg,#22c55e 0%,#38bdf8 52%,var(--eta-color) 100%);
    box-shadow:0 0 12px color-mix(in srgb,var(--eta-color) 20%,transparent);
    transition:width 1.05s cubic-bezier(.22,.75,.16,1);
}
.traffic-eta__branch::before{
    content:"";
    position:absolute;
    top:50%;
    left:-4px;
    width:9px;
    height:9px;
    transform:translateY(-50%);
    border:2px solid rgba(255,255,255,.9);
    border-radius:50%;
    background:color-mix(in srgb,var(--eta-color) 70%,#0f172a);
    box-shadow:0 0 0 3px color-mix(in srgb,var(--eta-color) 13%,transparent);
}
.traffic-eta__branch::after{
    content:"";
    position:absolute;
    top:-1px;
    right:0;
    width:8px;
    height:8px;
    transform:translate(50%,-25%);
    border-radius:50%;
    background:var(--eta-color);
    box-shadow:0 0 0 3px color-mix(in srgb,var(--eta-color) 15%,transparent),0 0 10px color-mix(in srgb,var(--eta-color) 42%,transparent);
}
.traffic-eta__branch>span{
    position:absolute;
    inset:0;
    overflow:hidden;
    border-radius:inherit;
}
.traffic-eta__branch>span::after{
    content:"";
    position:absolute;
    top:-3px;
    bottom:-3px;
    width:38px;
    transform:translateX(-48px) skewX(-20deg);
    background:linear-gradient(90deg,transparent,rgba(255,255,255,.55),transparent);
    filter:blur(.2px);
    animation:traffic-eta-flow 2.8s linear infinite;
}
@keyframes traffic-eta-flow{to{transform:translateX(620px) skewX(-20deg)}}
.traffic-eta__branch>b{
    position:absolute;
    top:50%;
    right:9px;
    z-index:3;
    padding:2px 5px;
    transform:translateY(-50%);
    border:1px solid color-mix(in srgb,var(--eta-color) 30%,rgba(148,163,184,.18));
    border-radius:999px;
    background:rgba(8,15,29,.94);
    color:#eaf2ff;
    box-shadow:0 2px 7px rgba(2,8,23,.28);
    font-size:.57rem;
    font-weight:950;
    line-height:1.1;
    white-space:nowrap;
}
.traffic-eta__target{
    position:absolute;
    top:50%;
    left:var(--eta-pct);
    z-index:4;
    display:flex;
    align-items:center;
    gap:6px;
    max-width:calc(100% - var(--eta-pct) - 4px);
    min-width:86px;
    transform:translate(8px,-50%);
    transition:left 1.05s cubic-bezier(.22,.75,.16,1);
}
.traffic-eta__target-icon{
    display:grid;
    place-items:center;
    flex:0 0 29px;
    width:29px;
    height:29px;
    border:1px solid color-mix(in srgb,var(--eta-color) 36%,rgba(148,163,184,.14));
    border-radius:9px;
    background:color-mix(in srgb,var(--eta-color) 11%,rgba(8,15,29,.94));
    box-shadow:0 5px 14px rgba(2,8,23,.22);
    font-size:.92rem;
}
.traffic-eta__target-copy{display:block;min-width:0;line-height:1.05}
.traffic-eta__target-copy strong{
    display:block;
    overflow:hidden;
    color:#edf5ff;
    font-size:.66rem;
    font-weight:950;
    text-overflow:ellipsis;
    white-space:nowrap;
}
.traffic-eta__target-copy small{
    display:block;
    overflow:hidden;
    max-width:135px;
    margin-top:3px;
    color:#8fa0b6;
    font-size:.52rem;
    font-weight:750;
    text-overflow:ellipsis;
    white-space:nowrap;
}
.traffic-eta__row[data-direction="closer"].is-updated .traffic-eta__target-icon{
    animation:traffic-eta-closer .72s ease-out;
}
.traffic-eta__row[data-direction="farther"].is-updated .traffic-eta__target-icon{
    animation:traffic-eta-farther .72s ease-out;
}
@keyframes traffic-eta-closer{0%{box-shadow:0 0 0 0 rgba(34,197,94,.42)}100%{box-shadow:0 0 0 10px rgba(34,197,94,0)}}
@keyframes traffic-eta-farther{0%{box-shadow:0 0 0 0 rgba(245,158,11,.4)}100%{box-shadow:0 0 0 10px rgba(245,158,11,0)}}
.traffic-eta.is-loading .traffic-eta__branch{filter:saturate(1.08)}
.traffic-eta__foot{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:10px;
    min-height:24px;
    padding-top:4px;
    border-top:1px solid rgba(148,163,184,.1);
}
.traffic-eta__foot>span{
    color:#718096;
    font-size:.55rem;
    font-weight:650;
    line-height:1.35;
}
.traffic-eta__start{
    flex:0 0 auto;
    padding:6px 10px;
    border:1px solid rgba(56,189,248,.24);
    border-radius:999px;
    background:linear-gradient(135deg,rgba(14,116,144,.2),rgba(37,99,235,.18));
    color:#bae6fd;
    font-size:.56rem;
    font-weight:900;
    cursor:pointer;
}
.traffic-eta__start:hover,.traffic-eta__start:focus-visible{border-color:#38bdf8;color:#fff;outline:none}
.traffic-eta__empty{
    margin:25px 42px;
    padding:10px;
    border:1px dashed rgba(148,163,184,.2);
    border-radius:10px;
    color:#7f90a5;
    font-size:.6rem;
}

html[data-gp-theme="light"] .traffic-eta{
    border-color:rgba(100,116,139,.15);
    background:
        radial-gradient(circle at 9% 16%,rgba(34,197,94,.06),transparent 31%),
        radial-gradient(circle at 72% 72%,rgba(139,92,246,.06),transparent 37%),
        rgba(255,255,255,.64);
}
html[data-gp-theme="light"] .traffic-eta__head h2,
html[data-gp-theme="light"] .traffic-eta__target-copy strong{color:#25344a}
html[data-gp-theme="light"] .traffic-eta__origin strong,
html[data-gp-theme="light"] .traffic-eta__branch>b{
    border-color:rgba(100,116,139,.16);
    background:rgba(255,255,255,.96);
    color:#334155;
    box-shadow:0 3px 10px rgba(71,85,105,.12);
}
html[data-gp-theme="light"] .traffic-eta__target-icon{
    background:color-mix(in srgb,var(--eta-color) 8%,#fff);
    box-shadow:0 4px 12px rgba(71,85,105,.1);
}
html[data-gp-theme="light"] .traffic-eta__target-copy small,
html[data-gp-theme="light"] .traffic-eta__foot>span{color:#64748b}

@media(max-width:680px){
    .traffic-eta{--eta-trunk-x:24px;padding:8px 8px 6px}
    .traffic-eta__head{align-items:flex-start;gap:8px}
    .traffic-eta__head h2{font-size:.8rem;line-height:1.15}
    .traffic-eta__live{display:grid;grid-template-columns:7px auto;gap:2px 5px;justify-items:start}
    .traffic-eta__live small{grid-column:2}
    .traffic-eta__stage{min-height:0;margin-top:2px;padding:23px 0 3px}
    .traffic-eta__row{height:34px}
    .traffic-eta__branch>b{right:6px;padding:2px 4px;font-size:.53rem}
    .traffic-eta__target{gap:4px;min-width:80px;transform:translate(6px,-50%)}
    .traffic-eta__target-icon{flex-basis:24px;width:24px;height:24px;font-size:.78rem}
    .traffic-eta__target-copy strong{font-size:.61rem}
    .traffic-eta__target-copy small{max-width:105px;margin-top:1px;font-size:.48rem}
    .traffic-eta__foot{align-items:flex-start}
    .traffic-eta__foot>span{font-size:.51rem}
    .traffic-eta__start{padding:5px 8px;font-size:.52rem}
}
@media(max-width:390px){
    .traffic-eta__target-copy small{max-width:86px}
    .traffic-eta__branch>b{font-size:.5rem}
}
@media(prefers-reduced-motion:reduce){
    .traffic-eta__branch,.traffic-eta__target{transition:none}
    .traffic-eta__branch>span::after,.traffic-eta__live i,.traffic-eta__target-icon{animation:none!important}
}

/* ── ŁapKurs 6.0.14: czytelniejszy DOJAZD TERAZ + 3 prywatne punkty ── */
.traffic-eta__row--custom{--eta-color:#f59e0b}
.traffic-eta__row[data-target-id="custom_1"]{--eta-color:#f59e0b}
.traffic-eta__row[data-target-id="custom_2"]{--eta-color:#f43f5e}
.traffic-eta__row[data-target-id="custom_3"]{--eta-color:#14b8a6}
.traffic-eta__actions{display:flex;align-items:center;justify-content:flex-end;gap:5px;flex:0 0 auto}
.traffic-eta__points{
    display:inline-flex;align-items:center;justify-content:center;
    padding:6px 9px;border:1px solid rgba(168,85,247,.24);border-radius:999px;
    background:linear-gradient(135deg,rgba(126,34,206,.16),rgba(14,116,144,.14));
    color:#ddd6fe;font-size:.56rem;font-weight:900;text-decoration:none;white-space:nowrap;
}
.traffic-eta__points:hover,.traffic-eta__points:focus-visible{border-color:#a855f7;color:#fff;outline:none;text-decoration:none}

/* +1 px w obrębie tego modułu, bez zmiany typografii całego portalu. */
@media(max-width:680px){
    .traffic-eta__head h2{font-size:calc(.8rem + 1px)}
    .traffic-eta__kicker{font-size:calc(.58rem + 1px)}
    .traffic-eta__live strong{font-size:calc(.62rem + 1px)}
    .traffic-eta__live small{font-size:calc(.57rem + 1px)}
    .traffic-eta__origin strong{font-size:calc(.58rem + 1px)}
    .traffic-eta__branch>b{font-size:calc(.53rem + 1px)}
    .traffic-eta__target{min-width:88px;max-width:calc(100% - var(--eta-pct) - 2px)}
    .traffic-eta__target-copy strong{font-size:calc(.61rem + 1px)}
    .traffic-eta__target-copy small{max-width:118px;font-size:calc(.48rem + 1px)}
    .traffic-eta__foot>span{font-size:calc(.51rem + 1px)}
    .traffic-eta__start,.traffic-eta__points{padding:5px 7px;font-size:calc(.52rem + 1px)}
}
@media(max-width:390px){
    .traffic-eta__target-copy small{max-width:96px}
    .traffic-eta__branch>b{font-size:calc(.5rem + 1px)}
    .traffic-eta__actions{gap:3px}
    .traffic-eta__start,.traffic-eta__points{padding-left:6px;padding-right:6px}
}

/* Ustawienia prywatnych punktów dojazdu. */
.traffic-points-page{max-width:760px;margin:0 auto;padding:12px 10px 28px}
.traffic-points-card{
    padding:16px;border:1px solid rgba(148,163,184,.18);border-radius:20px;
    background:rgba(2,8,23,.5);box-shadow:0 18px 45px rgba(2,8,23,.16)
}
.traffic-points-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}
.traffic-points-kicker{display:block;margin-bottom:3px;color:#67e8f9;font-size:.68rem;font-weight:950;letter-spacing:.14em}
.traffic-points-head h1{margin:0;color:#eef5ff;font-size:1.32rem;line-height:1.05}
.traffic-points-head p{max-width:580px;margin:7px 0 0;color:#94a3b8;font-size:.74rem;line-height:1.4}
.traffic-points-back{flex:0 0 auto;padding:7px 9px;border:1px solid rgba(56,189,248,.22);border-radius:10px;color:#bae6fd;font-size:.66rem;font-weight:900;text-decoration:none}
.traffic-points-city-form{margin:0 0 12px}
.traffic-points-city-form label{display:grid;grid-template-columns:auto minmax(150px,280px);align-items:center;gap:9px;color:#94a3b8;font-size:.7rem;font-weight:850}
.traffic-points-city-form select,.traffic-point-field input{
    width:100%;min-width:0;padding:9px 10px;border:1px solid rgba(148,163,184,.22);border-radius:11px;
    background:rgba(15,23,42,.7);color:#eef5ff;font:inherit;outline:none
}
.traffic-points-city-form select:focus,.traffic-point-field input:focus{border-color:#38bdf8;box-shadow:0 0 0 3px rgba(56,189,248,.1)}
.traffic-points-message{margin:8px 0;padding:9px 11px;border-radius:11px;font-size:.7rem;font-weight:800}
.traffic-points-message--ok{border:1px solid rgba(34,197,94,.25);background:rgba(34,197,94,.1);color:#86efac}
.traffic-points-message--error{border:1px solid rgba(244,63,94,.28);background:rgba(244,63,94,.1);color:#fda4af}
.traffic-points-form{display:grid;gap:9px}
.traffic-point-slot{margin:0;padding:10px;border:1px solid rgba(148,163,184,.15);border-radius:14px;background:rgba(15,23,42,.36)}
.traffic-point-slot.has-error{border-color:rgba(244,63,94,.42)}
.traffic-point-slot legend{padding:0 5px;color:#dbeafe;font-size:.68rem;font-weight:950}
.traffic-point-slot legend span{display:inline-grid;place-items:center;width:20px;height:20px;margin-right:4px;border-radius:50%;background:linear-gradient(135deg,#0ea5e9,#8b5cf6);color:white}
.traffic-point-field{display:grid;gap:4px;margin:0 0 7px;color:#94a3b8;font-size:.66rem;font-weight:800}
.traffic-point-field input{font-size:.73rem}
.traffic-point-field small,.traffic-point-hint{margin:0;color:#718096;font-size:.57rem;font-weight:650;line-height:1.35}
.traffic-point-coords{display:grid;grid-template-columns:1fr 1fr;gap:7px}
.traffic-point-error{margin:6px 0 0;color:#fda4af;font-size:.62rem;font-weight:850}
.traffic-points-save{width:100%;padding:10px;border:0;border-radius:12px;background:linear-gradient(135deg,#2563eb,#7c3aed);color:white;font-size:.78rem;font-weight:950;cursor:pointer}
.traffic-points-privacy{margin:10px 2px 0;color:#718096;font-size:.59rem;line-height:1.45}
html[data-gp-theme="light"] .traffic-points-card{border-color:#dbe3ee;background:rgba(255,255,255,.82);box-shadow:0 16px 38px rgba(71,85,105,.1)}
html[data-gp-theme="light"] .traffic-points-head h1{color:#172033}
html[data-gp-theme="light"] .traffic-points-head p,html[data-gp-theme="light"] .traffic-points-privacy,html[data-gp-theme="light"] .traffic-point-field small,html[data-gp-theme="light"] .traffic-point-hint{color:#64748b}
html[data-gp-theme="light"] .traffic-point-slot{border-color:#dbe3ee;background:#f8fafc}
html[data-gp-theme="light"] .traffic-point-slot legend{color:#334155}
html[data-gp-theme="light"] .traffic-points-city-form select,html[data-gp-theme="light"] .traffic-point-field input{border-color:#cbd5e1;background:white;color:#172033}
@media(max-width:560px){
    .traffic-points-page{padding:7px 7px 18px}
    .traffic-points-card{padding:11px;border-radius:16px}
    .traffic-points-head{gap:7px}
    .traffic-points-head h1{font-size:1.05rem}
    .traffic-points-head p{font-size:.67rem}
    .traffic-points-back{padding:6px 7px;font-size:.59rem}
    .traffic-point-slot{padding:8px}
    .traffic-point-coords{gap:5px}
    .traffic-point-field input{padding:8px;font-size:.7rem}
}

/* 6.0.14: ten +1 px obowiązuje również poza breakpointem mobilnym. */
@media(min-width:681px){
    .traffic-eta__head h2{font-size:calc(.94rem + 1px)}
    .traffic-eta__kicker{font-size:calc(.58rem + 1px)}
    .traffic-eta__live strong{font-size:calc(.62rem + 1px)}
    .traffic-eta__live small{font-size:calc(.57rem + 1px)}
    .traffic-eta__origin strong{font-size:calc(.58rem + 1px)}
    .traffic-eta__branch>b{font-size:calc(.57rem + 1px)}
    .traffic-eta__target{min-width:92px}
    .traffic-eta__target-copy strong{font-size:calc(.66rem + 1px)}
    .traffic-eta__target-copy small{max-width:146px;font-size:calc(.52rem + 1px)}
    .traffic-eta__foot>span{font-size:calc(.55rem + 1px)}
    .traffic-eta__start,.traffic-eta__points{font-size:calc(.56rem + 1px)}
}
.traffic-eta__foot>#traffic-eta-message{min-width:0;flex:1 1 auto}

/* ── ŁapKurs 6.0.16: czytelność, rytm nagłówka i loty na osobnej osi ── */
/* Górny ticker: o ok. 5% niższy i z jednolicie białą typografią. */
.partner-ticker{
    height:28.5px;
}
.partner-ticker__group span,
.partner-ticker__group a{
    color:#fff!important;
    line-height:27.5px;
}
.partner-ticker__group a{
    text-decoration-color:rgba(255,255,255,.55);
}
.partner-ticker__group a::after,
.partner-ticker__group i{
    color:#fff!important;
}
.partner-ticker__group .partner-ticker__badge{
    min-height:28.5px;
    color:#fff!important;
}

/* Drugi pasek na mapach zachowuje ten sam biały język reklamy. */
.map-ad-track{line-height:28.5px!important}
.map-ad-group>span,
.map-ad-group>a{
    color:#fff!important;
    line-height:28.5px!important;
}
.map-ad-group>a{text-decoration-color:rgba(255,255,255,.55)}
.map-ad-group i{color:#fff!important}
.map-ad-group .app-header-ad__label--moving{
    min-height:30.4px;
    line-height:30.4px;
    color:#fff!important;
}

/* Odrobina oddechu pomiędzy odświeżaniem, Telegramem i A-/A+. */
.site-header-actions{
    gap:6px;
    padding-inline:2px;
}
.font-size-controls--header{gap:5px}
.header-refresh-status{padding-inline:8px}
.header-telegram-status{padding-right:8px;padding-left:6px}
@media(max-width:680px){
    .site-header-actions{gap:5px;padding-inline:1px}
    .header-refresh-status{padding-right:7px;padding-left:7px}
    .header-telegram-status{padding-right:7px;padding-left:5px}
    .font-size-controls--header{gap:4px}
}
@media(max-width:390px){
    .site-header-actions{gap:4px}
}

/* Informacja prawna/prywatnościowa ma być ostatnim kaflem HOME. */
.demand-now__note--page-end{
    margin-top:12px;
    margin-bottom:8px;
}

/* Oś lotniskowa HOME korzysta od 6.1.34 ze wspólnego assets/css/airport-timeline.css. */
/* 6.0.17 — własne punkty: ręczny wybór na mapie + link Google Maps */
.traffic-point-slot-top{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:end}
.traffic-point-slot-top .traffic-point-field{margin-bottom:7px}
.traffic-point-map-btn{height:38px;margin:0 0 7px;padding:0 10px;border:1px solid rgba(34,211,238,.28);border-radius:11px;background:linear-gradient(135deg,rgba(14,165,233,.16),rgba(139,92,246,.12));color:#dff7ff;font-size:.7rem;font-weight:950;cursor:pointer;white-space:nowrap;box-shadow:inset 0 1px 0 rgba(255,255,255,.08)}
.traffic-point-map-btn:active{transform:translateY(1px)}
.traffic-point-field input.is-map-picked{border-color:rgba(34,197,94,.55)!important;box-shadow:0 0 0 3px rgba(34,197,94,.1)!important}
.traffic-point-field input.is-map-link-resolved{border-color:rgba(59,130,246,.5)!important}
.traffic-map-picker[hidden]{display:none!important}
.traffic-map-picker{position:fixed;inset:0;z-index:10050;display:grid;place-items:center;padding:14px}
.traffic-map-picker__backdrop{position:absolute;inset:0;background:rgba(2,6,23,.72);backdrop-filter:blur(7px)}
.traffic-map-picker__dialog{position:relative;z-index:1;width:min(720px,100%);max-height:calc(100dvh - 28px);overflow:auto;padding:13px;border:1px solid rgba(125,211,252,.25);border-radius:20px;background:linear-gradient(145deg,rgba(15,23,42,.98),rgba(30,41,59,.98));box-shadow:0 28px 80px rgba(2,6,23,.55)}
.traffic-map-picker__head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.traffic-map-picker__head span{display:block;color:#67e8f9;font-size:.62rem;font-weight:950;letter-spacing:.14em}
.traffic-map-picker__head h2{margin:2px 0 0;color:#f8fafc;font-size:1.06rem;line-height:1.1}
.traffic-map-picker__close{width:36px;height:36px;border:0;border-radius:50%;background:rgba(148,163,184,.12);color:#e2e8f0;font-size:1.5rem;line-height:1;cursor:pointer}
.traffic-map-picker__help{margin:8px 0;color:#aebdd0;font-size:.68rem;line-height:1.4}
.traffic-map-picker__map{height:min(54vh,430px);min-height:300px;border:1px solid rgba(148,163,184,.2);border-radius:15px;overflow:hidden;background:#dbeafe}
.traffic-map-picker__coords{display:flex;justify-content:space-between;gap:10px;align-items:center;padding:8px 3px 2px;color:#94a3b8;font-size:.64rem}
.traffic-map-picker__coords strong{color:#e0f2fe;font-size:.7rem}
.traffic-map-picker__actions{display:grid;grid-template-columns:1fr 1.6fr;gap:8px;margin-top:8px}
.traffic-map-picker__actions button{padding:10px;border-radius:11px;font-size:.72rem;font-weight:950;cursor:pointer}
.traffic-map-picker__cancel{border:1px solid rgba(148,163,184,.2);background:rgba(148,163,184,.1);color:#cbd5e1}
.traffic-map-picker__use{border:0;background:linear-gradient(135deg,#0ea5e9,#7c3aed);color:white}
html.traffic-map-picker-open,body.traffic-map-picker-open{overflow:hidden}
html[data-gp-theme="light"] .traffic-point-map-btn{border-color:#bae6fd;background:linear-gradient(135deg,#effaff,#f5f3ff);color:#075985}
html[data-gp-theme="light"] .traffic-map-picker__dialog{border-color:#dbeafe;background:linear-gradient(145deg,#ffffff,#f8fafc);box-shadow:0 28px 80px rgba(15,23,42,.2)}
html[data-gp-theme="light"] .traffic-map-picker__head h2{color:#172033}
html[data-gp-theme="light"] .traffic-map-picker__help{color:#64748b}
html[data-gp-theme="light"] .traffic-map-picker__close{background:#eef2f7;color:#334155}
html[data-gp-theme="light"] .traffic-map-picker__coords strong{color:#0f172a}
@media(max-width:560px){
  .traffic-point-slot-top{grid-template-columns:minmax(0,1fr) auto;gap:6px}
  .traffic-point-map-btn{height:36px;padding:0 8px;font-size:.65rem}
  .traffic-map-picker{padding:7px}
  .traffic-map-picker__dialog{padding:9px;border-radius:16px;max-height:calc(100dvh - 14px)}
  .traffic-map-picker__map{height:52vh;min-height:270px;border-radius:12px}
  .traffic-map-picker__help{font-size:.63rem}
}


/* ── ŁapKurs 6.0.18: korekty UI według oznaczeń mobilnych ────────── */
/* Górna belka: marka i akcje siedzą dokładnie na wspólnej osi pionowej. */
.site-header-top{
    align-items:center!important;
}
.site-header .gp-app-brand--dashboard,
.site-header-actions{
    align-self:center;
}
.site-header-actions>*{
    align-self:center;
}

/* Czerwone oznaczenia: +1 px względem 6.0.17. */
.site-header .gp-app-brand--dashboard .gp-app-brand__name{font-size:15px}
.site-header .gp-app-brand--dashboard .gp-app-brand__copy small{font-size:8px}
.header-refresh-status strong{font-size:11px}
.header-refresh-status>span{font-size:calc(.72rem + 1px)}
.header-telegram-status__label{font-size:11px}
.header-telegram-status__icon{font-size:11px}
.demand-timeline__clock span{font-size:calc(.56rem + 3px)}

/* DOJAZD TERAZ — +1 px tylko wewnątrz zaznaczonej osi. */
.traffic-eta__origin strong{font-size:calc(.58rem + 2px)}
.traffic-eta__branch>b{font-size:calc(.57rem + 2px)}
.traffic-eta__target-copy strong{font-size:calc(.66rem + 2px)}
.traffic-eta__target-copy small{font-size:calc(.52rem + 2px)}

/* Żółte oznaczenia: tylko kosmetyczne ściśnięcie pionu. */
.demand-now{padding-top:15px;padding-bottom:15px}
.demand-now__head{margin-bottom:8px}
.demand-timeline{margin-top:4px;padding-top:7px;padding-bottom:7px}
.recommendation-grid{margin-top:7px}
.traffic-eta{margin-top:7px;padding-top:8px;padding-bottom:5px}
.traffic-eta__stage{padding-top:23px;padding-bottom:3px}
.traffic-eta__foot{padding-top:3px;min-height:22px}

/* Zamiast skreślonych statusów/statystyk pod mapą — tylko nazwa stacji. */
.cc-station-heading{
    display:flex;
    align-items:center;
    gap:7px;
    min-height:38px;
    padding:7px 10px;
    border-top:3px solid #22d3ee;
    border-bottom:1px solid rgba(148,163,184,.16);
    background:var(--dash-card-bg);
    color:var(--text);
    font-size:.92rem;
    font-weight:900;
    line-height:1.15;
}
.cc-station-heading span{font-size:.9rem}
.cc-station-heading strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

@media(max-width:680px){
    .site-header .gp-app-brand--dashboard .gp-app-brand__name{font-size:15px}
    .site-header .gp-app-brand--dashboard .gp-app-brand__copy small{font-size:8px}
    .header-refresh-status strong{font-size:11px}
    .header-telegram-status__label{font-size:11px}
    .demand-timeline__clock span{font-size:calc(.56rem + 3px)}
    .demand-now{padding-top:13px;padding-bottom:13px}
    .demand-now__head{margin-bottom:6px}
    .demand-timeline{margin-top:3px;padding-top:6px;padding-bottom:6px}
    .recommendation-grid{margin-top:6px}
    .traffic-eta{margin-top:6px;padding-top:7px;padding-bottom:4px}
    .cc-side{gap:8px}
    .cc-station-heading{min-height:34px;padding:6px 9px;font-size:.9rem}
}

/* ŁapKurs 6.0.20 — kompaktowa edycja punktów DOJAZD TERAZ */
.traffic-points-card--compact{padding:12px}
.traffic-points-head--compact{margin-bottom:8px;align-items:center}
.traffic-points-head--compact p{margin-top:4px}
.traffic-points-city-form--compact{margin-bottom:8px}
.traffic-points-form--compact{gap:10px}
.traffic-points-group{display:grid;gap:6px}
.traffic-points-group__head{display:flex;align-items:end;justify-content:space-between;padding:0 2px}
.traffic-points-group__head strong{display:block;color:#dbeafe;font-size:.78rem;font-weight:950}
.traffic-points-group__head small{display:block;margin-top:1px;color:#7f91a8;font-size:.56rem;font-weight:700}
.traffic-point-compact-list{display:grid;gap:5px}
.traffic-point-compact{border:1px solid rgba(148,163,184,.15);border-radius:12px;background:rgba(15,23,42,.28);overflow:hidden}
.traffic-point-compact.has-error{border-color:rgba(244,63,94,.45)}
.traffic-point-compact>summary{list-style:none;display:grid;grid-template-columns:30px minmax(0,1fr) auto;align-items:center;gap:7px;min-height:42px;padding:5px 7px;cursor:pointer}
.traffic-point-compact>summary::-webkit-details-marker{display:none}
.traffic-point-compact__icon{display:grid;place-items:center;width:30px;height:30px;border-radius:9px;background:rgba(255,255,255,.06);font-size:1rem}
.traffic-point-compact__copy{min-width:0}
.traffic-point-compact__copy strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#eaf2ff;font-size:.73rem;line-height:1.08;font-weight:950}
.traffic-point-compact__copy small{display:block;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#8799af;font-size:.54rem;font-weight:700}
.traffic-point-compact__edit{padding:4px 7px;border-radius:8px;background:rgba(56,189,248,.08);color:#8bdcf7;font-size:.56rem;font-weight:900}
.traffic-point-compact[open] .traffic-point-compact__edit{background:rgba(139,92,246,.1);color:#c4b5fd}
.traffic-point-editor{padding:7px;border-top:1px solid rgba(148,163,184,.11);background:rgba(15,23,42,.2)}
.traffic-point-editor__primary{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px;align-items:center}
.traffic-point-map-btn--wide{width:100%;height:34px;margin:0;padding:0 8px}
.traffic-point-reset-btn{height:34px;padding:0 8px;border:1px solid rgba(148,163,184,.16);border-radius:10px;background:rgba(148,163,184,.08);color:#9fb0c4;font-size:.59rem;font-weight:900;white-space:nowrap}
.traffic-point-reset-btn:disabled{opacity:.7}
.traffic-point-advanced{margin-top:6px;border-top:1px dashed rgba(148,163,184,.13)}
.traffic-point-advanced>summary{padding:6px 1px 2px;list-style:none;color:#7e91a8;font-size:.56rem;font-weight:850;cursor:pointer}
.traffic-point-advanced>summary::-webkit-details-marker{display:none}
.traffic-point-advanced>summary::after{content:' ▾'}
.traffic-point-advanced[open]>summary::after{content:' ▴'}
.traffic-point-advanced>div{padding-top:5px}
.traffic-points-form--compact .traffic-point-field{margin-bottom:5px;gap:2px}
.traffic-points-form--compact .traffic-point-field input{padding:7px 8px}
.traffic-points-form--compact .traffic-point-coords{gap:5px}
.traffic-points-form--compact .traffic-points-save{padding:9px}
html[data-gp-theme="light"] .traffic-points-group__head strong{color:#1e293b}
html[data-gp-theme="light"] .traffic-point-compact{border-color:#dbe3ee;background:#f8fafc}
html[data-gp-theme="light"] .traffic-point-compact__icon{background:#eef5fb}
html[data-gp-theme="light"] .traffic-point-compact__copy strong{color:#172033}
html[data-gp-theme="light"] .traffic-point-compact__copy small{color:#64748b}
html[data-gp-theme="light"] .traffic-point-editor{border-top-color:#e2e8f0;background:#fff}
html[data-gp-theme="light"] .traffic-point-reset-btn{border-color:#dbe3ee;background:#f8fafc;color:#64748b}
@media(max-width:680px){
  .traffic-points-card--compact{padding:8px}
  .traffic-points-head--compact h1{font-size:1rem}
  .traffic-points-head--compact p{font-size:.61rem;line-height:1.3}
  .traffic-point-compact>summary{grid-template-columns:28px minmax(0,1fr) auto;min-height:38px;padding:4px 6px;gap:6px}
  .traffic-point-compact__icon{width:28px;height:28px;border-radius:8px;font-size:.92rem}
  .traffic-point-compact__copy strong{font-size:.69rem}
  .traffic-point-compact__copy small{font-size:.51rem}
  .traffic-point-compact__edit{padding:3px 6px;font-size:.52rem}
  .traffic-point-editor{padding:6px}
  .traffic-point-map-btn--wide,.traffic-point-reset-btn{height:32px}
}

/* ── ŁapKurs 6.0.21: finalny szlif HOME / map / DOJAZD TERAZ ───────── */
/* Domyślny font całej aplikacji jest obsługiwany przez font_size.js (130%).
   Tutaj dopinamy geometrię elementów, które na telefonie muszą pozostać zwarte. */

/* Górna belka HOME: równy oddech góra/dół, logo i Telegram na wspólnej osi. */
.site-header-top{
    display:flex!important;
    align-items:center!important;
    box-sizing:border-box;
    min-height:44px;
    padding-top:max(6px, env(safe-area-inset-top, 0px))!important;
    padding-bottom:6px!important;
}
.site-header .gp-app-brand--header,
.site-header .gp-app-brand--dashboard,
.site-header-actions,
.header-telegram-status,
.font-size-controls--header,
.header-refresh-status{
    align-self:center!important;
    margin-top:0!important;
    margin-bottom:0!important;
}
.site-header .gp-app-brand--dashboard,
.site-header-actions{
    display:flex;
    align-items:center!important;
}
.site-header .gp-app-brand--dashboard .gp-app-brand__copy{
    align-self:center;
    justify-content:center;
}
.site-header .gp-app-brand--dashboard .gp-app-brand__copy small{
    margin-top:1px;
}
.site-header-actions>*{align-self:center!important}
.partner-ticker{
    margin-top:0!important;
}
.map-app-header{
    align-items:center!important;
    padding-top:max(6px, env(safe-area-inset-top, 0px))!important;
    padding-bottom:6px!important;
}

/* DOJAZD TERAZ: mały „+” zamiast szerokiego przycisku i mniej pustego dołu. */
.traffic-eta{
    position:relative;
    padding-bottom:4px!important;
}
.traffic-eta__foot{
    min-height:18px!important;
    padding-top:2px!important;
    padding-right:34px;
}
.traffic-eta__actions{position:static}
.traffic-eta__points{
    position:absolute;
    right:8px;
    bottom:6px;
    z-index:4;
    width:28px;
    height:28px;
    min-width:28px;
    padding:0!important;
    border:1px solid rgba(168,85,247,.42);
    border-radius:50%!important;
    background:linear-gradient(145deg,#7c3aed,#06b6d4)!important;
    color:#fff!important;
    font-size:20px!important;
    font-weight:900;
    line-height:1;
    box-shadow:0 5px 14px rgba(109,40,217,.25),inset 0 1px 0 rgba(255,255,255,.28);
}
.traffic-eta__points>span{display:block;transform:translateY(-1px)}
.traffic-eta__points:hover,.traffic-eta__points:focus-visible{
    border-color:#67e8f9;
    box-shadow:0 6px 18px rgba(6,182,212,.28),0 0 0 3px rgba(124,58,237,.1);
}
/* „liczę trasę…” ma być widoczne w całości, bez GPS ±N m w każdym wierszu. */
.traffic-eta__target-copy small{
    max-width:150px!important;
    text-overflow:clip!important;
}
@media(max-width:680px){
    .traffic-eta__foot{padding-right:32px}
    .traffic-eta__points{right:7px;bottom:5px;width:27px;height:27px;min-width:27px;font-size:19px!important}
    .traffic-eta__target-copy small{max-width:132px!important}
}
@media(max-width:390px){
    .traffic-eta__target-copy small{max-width:118px!important}
}

/* 6.1.34: cała prezentacja osi lotniska (full + compact) mieszka w assets/css/airport-timeline.css. */
/* Mapa pod czterema skrótami: nie odcinaj marginesu potrzebnego do centrowania markerów. */
.dashboard-page .cc-map-card{overflow:hidden}
#cc-mini-map{width:100%;max-width:100%}

/* Mapy: jasna, maksymalnie szeroka taśma reklamy. Zielone „REKLAMA” jest ciasne
   do napisu, a cała reszta szerokości pracuje dla przewijanych komunikatów. */
body.map-app .map-app-header{
    gap:6px!important;
    padding-left:6px!important;
    padding-right:7px!important;
}
body.map-app .map-app-header .gp-app-brand--map{
    flex:0 0 auto!important;
    max-width:31%!important;
    margin-left:-2px!important;
}
body.map-app .map-app-header .app-header-ad{
    flex:1 1 0!important;
    width:auto!important;
    max-width:none!important;
    min-width:0!important;
    border-color:#dbe4ef!important;
    background:#fff!important;
    box-shadow:inset 0 1px 0 rgba(255,255,255,.95);
}
body.map-app .app-header-ad--rotating .app-header-ad__viewport{
    flex:1 1 100%!important;
    padding:0!important;
}
body.map-app .map-ad-group{
    gap:22px!important;
    padding:0 22px 0 0!important;
}
body.map-app .map-ad-group>span,
body.map-app .map-ad-group>a{
    color:#172033!important;
    text-decoration-color:rgba(37,99,235,.38)!important;
}
body.map-app .map-ad-group i{color:#2563eb!important}
body.map-app .map-ad-group .app-header-ad__label--moving{
    align-self:stretch;
    min-height:0!important;
    height:100%;
    padding:0 5px!important;
    border-radius:0;
    background:linear-gradient(135deg,#059669,#16a34a)!important;
    color:#fff!important;
    letter-spacing:.055em;
    white-space:nowrap;
}
@media(max-width:430px){
    body.map-app .map-app-header{gap:5px!important;padding-left:4px!important;padding-right:5px!important}
    body.map-app .map-app-header .gp-app-brand--map{max-width:32%!important;margin-left:-3px!important}
    body.map-app .map-ad-group{gap:18px!important;padding-right:18px!important}
    body.map-app .map-ad-group .app-header-ad__label--moving{padding:0 4px!important}
}

/* Legenda mapy: mniej opakowania, ta sama czytelność. */
.map-legend{padding:3px 5px!important}
.map-legend-head{gap:5px!important;margin-bottom:3px!important}
.map-legend.collapsed .map-legend-head{margin-bottom:0!important}
.legend-toggle{width:21px!important;height:21px!important;border-radius:5px!important}
.leg-row{gap:4px!important;margin-bottom:2px!important}
#legend-demand-details{margin-top:4px!important;padding-top:4px!important}

/* Dymek supportu ma być zawsze dostępny na mapach, także po późniejszych override'ach. */
body.map-app .map-tools{
    display:flex!important;
    visibility:visible!important;
    opacity:1!important;
    position:fixed!important;
    right:10px!important;
    bottom:calc(84px + env(safe-area-inset-bottom))!important;
    z-index:12020!important;
    pointer-events:auto!important;
}
body.map-app .map-tool[data-layer="support"]{
    display:flex!important;
    visibility:visible!important;
    opacity:1!important;
    width:38px!important;
    height:38px!important;
    border-radius:50%!important;
    border-color:rgba(56,189,248,.45)!important;
    background:linear-gradient(145deg,rgba(2,132,199,.96),rgba(79,70,229,.96))!important;
    color:#fff!important;
    box-shadow:0 7px 20px rgba(2,132,199,.28),0 0 0 2px rgba(255,255,255,.18)!important;
}
body.bottom-drawer-open.map-app .map-tool[data-layer="support"]{
    pointer-events:auto!important;
}

/* ── ŁapKurs 6.0.22: drobne korekty osi i ustawień punktów ─────────── */
/* Tytuł horyzontu w tej samej linii co PLAN ZMIANY, po prawej stronie. */
.demand-timeline__eyebrow-row{
    display:flex!important;
    align-items:center!important;
    justify-content:space-between!important;
    gap:10px!important;
    width:100%;
}
.demand-timeline__eyebrow-actions{
    display:flex;
    align-items:center;
    justify-content:flex-end;
    gap:7px;
    min-width:0;
    margin-left:auto;
}
.demand-timeline__eyebrow-actions h2{
    margin:0;
    color:var(--text);
    font-size:calc(.72rem + 1px)!important;
    font-weight:900;
    line-height:1.05;
    white-space:nowrap;
    text-align:right;
}
.demand-timeline__title-row{display:none!important}

/* Dymki pociągów: wyłącznie kosmetyczne -0,5 px, bez zmiany pozycji na osi. */
.demand-timeline__arrival--train span,
.demand-timeline__arrival--train strong,
.demand-timeline__arrival--train em{
    font-size:calc(.70rem - .5px)!important;
}
.demand-timeline__arrival--train .demand-timeline__past{
    font-size:calc(.50rem - .5px)!important;
}
.demand-timeline__arrival--train{
    min-width:58px;
    min-height:24px;
    padding:3px 7px;
    gap:2px;
}
.demand-timeline__arrival--flight{
    min-width:52px;
    min-height:22px;
    padding:2px 6px;
    gap:2px;
}

/* Odrobinę mniej powietrza między osią i kartą rekomendacji. */
.demand-timeline{padding-bottom:5px!important}
.recommendation-grid{margin-top:4px!important}
@media(max-width:680px){
    .demand-timeline{padding-bottom:4px!important}
    .recommendation-grid{margin-top:4px!important}
    .demand-timeline__eyebrow-actions h2{font-size:calc(.68rem + 1px)!important}
}

/* Punkty dojazdu: HOME ma być czytelny, a listy i przyciski nie mikroskopijne. */
.traffic-points-back{
    border-color:rgba(14,116,144,.38)!important;
    background:rgba(14,116,144,.14)!important;
    color:#0e7490!important;
    font-weight:950!important;
}
html[data-gp-theme="dark"] .traffic-points-back{
    border-color:rgba(103,232,249,.34)!important;
    background:rgba(8,145,178,.18)!important;
    color:#cffafe!important;
}
.traffic-points-city-form label{
    font-size:calc(.7rem + .5px)!important;
}
.traffic-points-city-form select{
    font-size:calc(.7rem + .5px)!important;
}
.traffic-point-compact__copy strong{
    font-size:calc(.73rem + .5px)!important;
}
.traffic-point-compact__copy small{
    font-size:calc(.54rem + .5px)!important;
}
.traffic-point-advanced>summary{
    font-size:calc(.56rem + .5px)!important;
}
.traffic-point-compact__edit{
    display:inline-flex!important;
    align-items:center;
    justify-content:center;
    min-width:64px;
    min-height:30px;
    padding:5px 10px!important;
    border-radius:9px!important;
    font-size:calc(.56rem + .5px)!important;
    line-height:1;
    text-align:center;
}
@media(max-width:560px){
    .traffic-points-back{padding:7px 9px!important;font-size:calc(.59rem + .5px)!important}
    .traffic-points-city-form label{font-size:calc(.68rem + .5px)!important}
    .traffic-points-city-form select{font-size:calc(.7rem + .5px)!important}
    .traffic-point-compact__copy strong{font-size:calc(.69rem + .5px)!important}
    .traffic-point-compact__copy small{font-size:calc(.51rem + .5px)!important}
    .traffic-point-compact__edit{min-width:62px;min-height:29px;padding:5px 9px!important;font-size:calc(.54rem + .5px)!important}
}

/* ── ŁapKurs 6.0.23: ETA przy osi TY nie może wyjeżdżać w lewo ───── */
.traffic-eta__row--near-origin .traffic-eta__branch>b{
    left:0;
    right:auto;
    transform:translateY(-50%);
}


/* ── ŁapKurs 6.0.26: spokojniejszy status DOJAZD TERAZ ───────────── */
/* Krótki tytuł zawsze w jednej linii. */
.traffic-eta__head h2{
    white-space:nowrap!important;
    overflow:hidden;
    text-overflow:ellipsis;
}

/* Obliczanie nie mruga już pod każdym punktem. Jeden status pracuje po prawej. */
.traffic-eta__stage{padding-right:94px!important}
.traffic-eta__rows{min-width:0}
.traffic-eta__target{
    max-width:calc(100% - var(--eta-pct) - 88px)!important;
}
.traffic-eta__calc-status{
    position:absolute;
    top:33px;
    right:7px;
    z-index:6;
    display:flex;
    align-items:center;
    justify-content:center;
    gap:4px;
    width:82px;
    min-height:28px;
    padding:4px 6px;
    border:1px solid rgba(148,163,184,.16);
    border-radius:10px;
    background:rgba(255,255,255,.7);
    color:#64748b;
    box-shadow:0 4px 12px rgba(15,23,42,.06);
    backdrop-filter:blur(5px);
    font-size:.49rem;
    font-weight:850;
    line-height:1.1;
    text-align:center;
}
.traffic-eta__calc-status i{
    flex:0 0 6px;
    width:6px;
    height:6px;
    border-radius:50%;
    background:#94a3b8;
}
.traffic-eta__calc-status[data-state="locating"] i{
    background:#38bdf8;
    box-shadow:0 0 0 3px rgba(56,189,248,.12);
    animation:traffic-eta-calc-pulse .9s ease-in-out infinite alternate;
}
.traffic-eta__calc-status[data-state="live"] i{background:#22c55e}
.traffic-eta__calc-status[data-state="warning"] i{background:#f59e0b}
.traffic-eta__calc-status[data-state="permission"],
.traffic-eta__calc-status[data-state="setup"]{color:#7c3aed}
@keyframes traffic-eta-calc-pulse{to{transform:scale(1.45);opacity:.55}}

/* Pod nazwami zostaje wynik korków / stan trasy, ale nie komunikat każdego odświeżenia. */
.traffic-eta__target-copy small{transition:opacity .15s ease}

/* Stała informacja zamiast migającego komunikatu na dole. */
.traffic-eta__estimate-note{
    display:block;
    max-width:calc(100% - 34px);
    color:#64748b!important;
    font-size:.49rem!important;
    font-weight:700!important;
    line-height:1.25!important;
}

@media(max-width:680px){
    .traffic-eta__head h2{font-size:calc(.8rem + 1px)!important}
    .traffic-eta__stage{padding-right:88px!important}
    .traffic-eta__calc-status{right:6px;width:76px;min-height:26px;padding:3px 5px;font-size:.47rem}
    .traffic-eta__target{max-width:calc(100% - var(--eta-pct) - 80px)!important}
    .traffic-eta__estimate-note{font-size:.47rem!important}
}
@media(max-width:390px){
    .traffic-eta__stage{padding-right:82px!important}
    .traffic-eta__calc-status{width:70px;font-size:.45rem}
    .traffic-eta__target{max-width:calc(100% - var(--eta-pct) - 74px)!important}
}


/* ── ŁapKurs 6.0.28: czysta oś TY + spokojne statusy po prawej ───── */
/* Oś pionowa ma być czysta: punkt TY zostaje, ale wiersze nie dokładają kółek na pniu. */
.traffic-eta__branch::before{display:none!important}
.traffic-eta__branch{
    left:calc(var(--eta-trunk-x) + 1px)!important;
    width:calc(var(--eta-pct) - var(--eta-trunk-x) - 1px)!important;
}

/* Rezerwujemy prawą kolumnę wyłącznie na krótkie, stabilne statusy trasy. */
.traffic-eta__stage{padding-right:86px!important}
.traffic-eta__target{max-width:calc(100% - var(--eta-pct) - 82px)!important}
.traffic-eta__target-copy{display:flex;align-items:center;min-height:24px}
.traffic-eta__target-copy strong{margin:0}

.traffic-eta__row-status{
    position:absolute;
    top:50%;
    right:4px;
    z-index:5;
    display:flex;
    align-items:center;
    justify-content:center;
    width:72px;
    min-height:22px;
    padding:3px 5px;
    transform:translateY(-50%);
    border:1px solid rgba(148,163,184,.18);
    border-radius:999px;
    background:rgba(148,163,184,.08);
    color:#64748b;
    font-size:.47rem;
    font-weight:850;
    line-height:1;
    text-align:center;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
    transition:background .18s ease,border-color .18s ease,color .18s ease;
}
.traffic-eta__row-status[data-tone="good"]{
    border-color:rgba(34,197,94,.24);
    background:rgba(34,197,94,.08);
    color:#15803d;
}
.traffic-eta__row-status[data-tone="traffic"]{
    border-color:rgba(245,158,11,.28);
    background:rgba(245,158,11,.09);
    color:#b45309;
}
.traffic-eta__row-status[data-tone="here"]{
    border-color:rgba(6,182,212,.28);
    background:rgba(6,182,212,.09);
    color:#0e7490;
}
.traffic-eta__row-status[data-tone="warn"]{
    border-color:rgba(244,63,94,.22);
    background:rgba(244,63,94,.07);
    color:#be123c;
}
html[data-gp-theme="dark"] .traffic-eta__row-status{color:#a8b6c8;background:rgba(15,23,42,.36)}
html[data-gp-theme="dark"] .traffic-eta__row-status[data-tone="good"]{color:#86efac;background:rgba(34,197,94,.10)}
html[data-gp-theme="dark"] .traffic-eta__row-status[data-tone="traffic"]{color:#fdba74;background:rgba(245,158,11,.11)}
html[data-gp-theme="dark"] .traffic-eta__row-status[data-tone="here"]{color:#67e8f9;background:rgba(6,182,212,.10)}
html[data-gp-theme="dark"] .traffic-eta__row-status[data-tone="warn"]{color:#fda4af;background:rgba(244,63,94,.09)}

/* Ładowanie sygnalizuje wyłącznie RUCH LIVE; wyniki wierszy nie migają przy każdym requestcie. */
.traffic-eta.is-loading .traffic-eta__row-status{opacity:1!important}
.traffic-eta__calc-status{
    position:absolute!important;
    width:1px!important;
    height:1px!important;
    padding:0!important;
    margin:-1px!important;
    overflow:hidden!important;
    clip:rect(0,0,0,0)!important;
    white-space:nowrap!important;
    border:0!important;
}

@media(max-width:680px){
    .traffic-eta__stage{padding-right:80px!important}
    .traffic-eta__row-status{right:2px;width:68px;min-height:21px;padding:3px 4px;font-size:.46rem}
    .traffic-eta__target{max-width:calc(100% - var(--eta-pct) - 74px)!important}
}
@media(max-width:390px){
    .traffic-eta__stage{padding-right:74px!important}
    .traffic-eta__row-status{width:63px;font-size:.44rem}
    .traffic-eta__target{max-width:calc(100% - var(--eta-pct) - 69px)!important}
}


/* ── ŁapKurs 6.0.29: dopracowanie DOJAZD TERAZ + mapa + PKP ───────── */
/* Krótkie ETA nigdy nie wjeżdża na pień TY. Etykieta rośnie tylko w prawo. */
.traffic-eta__row--near-origin .traffic-eta__branch>b{
    left:5px!important;
    right:auto!important;
    transform:translateY(-50%)!important;
}

/* Większe i odsunięte w prawo statusy, z delikatnymi separatorami wierszy. */
.traffic-eta__stage{padding-right:102px!important}
.traffic-eta__target{max-width:calc(100% - var(--eta-pct) - 96px)!important}
.traffic-eta__row-status{
    right:3px!important;
    width:86px!important;
    min-height:23px!important;
    padding:3px 6px!important;
    font-size:calc(.47rem + 1px)!important;
    letter-spacing:-.01em;
}
.traffic-eta__row:not(:last-child)::after{
    content:"";
    position:absolute;
    left:calc(var(--eta-trunk-x) + 12px);
    right:2px;
    bottom:0;
    height:1px;
    background:linear-gradient(90deg,rgba(148,163,184,.08),rgba(148,163,184,.24),rgba(148,163,184,.08));
    pointer-events:none;
}
html[data-gp-theme="dark"] .traffic-eta__row:not(:last-child)::after{
    background:linear-gradient(90deg,rgba(148,163,184,.04),rgba(148,163,184,.13),rgba(148,163,184,.04));
}
@media(max-width:680px){
    .traffic-eta__stage{padding-right:94px!important}
    .traffic-eta__row-status{right:2px!important;width:80px!important;font-size:calc(.46rem + 1px)!important}
    .traffic-eta__target{max-width:calc(100% - var(--eta-pct) - 87px)!important}
}
@media(max-width:390px){
    .traffic-eta__stage{padding-right:88px!important}
    .traffic-eta__row-status{width:75px!important;font-size:calc(.44rem + 1px)!important}
    .traffic-eta__target{max-width:calc(100% - var(--eta-pct) - 82px)!important}
}

/* Mini-mapa: jawna wysokość, poprawna warstwa i neutralne tło zanim załadują się kafle. */
#cc-mini-map{
    position:relative!important;
    z-index:1!important;
    display:block!important;
    width:100%!important;
    height:230px!important;
    min-height:230px!important;
    flex:0 0 230px!important;
    background:linear-gradient(135deg,#edf7f3,#e9f2f8)!important;
}
#cc-mini-map .leaflet-map-pane,
#cc-mini-map .leaflet-tile-pane,
#cc-mini-map .leaflet-overlay-pane,
#cc-mini-map .leaflet-marker-pane{visibility:visible!important;opacity:1!important}
@media(max-width:680px){
    #cc-mini-map{height:215px!important;min-height:215px!important;flex-basis:215px!important}
}

/* Elegancki, zwarty nagłówek listy przyjazdów PKP. */
.pkp-arrivals-panel{padding-top:18px!important}
.pkp-arrivals-head{
    display:grid;
    grid-template-columns:44px minmax(0,1fr) auto;
    align-items:center;
    gap:10px;
    margin:0 0 14px;
    padding:0 0 13px;
    border-bottom:1px solid rgba(148,163,184,.16);
}
.pkp-arrivals-head__icon{
    display:grid;
    place-items:center;
    width:44px;
    height:44px;
    border:1px solid rgba(56,189,248,.25);
    border-radius:14px;
    background:linear-gradient(145deg,rgba(56,189,248,.13),rgba(139,92,246,.08));
    box-shadow:0 8px 20px rgba(15,23,42,.08);
    font-size:1.35rem;
}
.pkp-arrivals-head__copy{min-width:0}
.pkp-arrivals-head__kicker{
    display:block;
    margin-bottom:2px;
    color:#06b6d4;
    font-size:.58rem;
    font-weight:950;
    letter-spacing:.11em;
}
.pkp-arrivals-head__copy h2{
    margin:0!important;
    color:var(--text)!important;
    font-size:1rem!important;
    line-height:1.08!important;
    letter-spacing:-.025em!important;
}
.pkp-arrivals-head__copy p{
    margin:3px 0 0;
    color:var(--muted);
    font-size:.74rem;
    font-weight:800;
    line-height:1.1;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
}
.pkp-arrivals-head .data-mode-badge{
    align-self:center;
    margin:0;
    padding:6px 10px;
    font-size:.6rem;
    box-shadow:0 4px 14px rgba(34,197,94,.08);
}
@media(max-width:560px){
    .pkp-arrivals-panel{padding:14px!important}
    .pkp-arrivals-head{
        grid-template-columns:38px minmax(0,1fr);
        gap:8px;
        padding-bottom:10px;
    }
    .pkp-arrivals-head__icon{width:38px;height:38px;border-radius:12px;font-size:1.15rem}
    .pkp-arrivals-head__copy h2{font-size:.91rem!important}
    .pkp-arrivals-head__copy p{font-size:.68rem}
    .pkp-arrivals-head__kicker{font-size:.53rem}
    .pkp-arrivals-head .data-mode-badge{
        grid-column:1 / -1;
        justify-self:start;
        margin-top:1px;
        padding:5px 9px;
        font-size:.56rem;
    }
}

.cc-map-load-error{display:grid;place-items:center;align-content:center;gap:5px;height:100%;min-height:205px;padding:18px;text-align:center;color:#64748b;background:linear-gradient(135deg,#eef8f5,#edf4fb)}
.cc-map-load-error span{font-size:1.55rem}.cc-map-load-error strong{color:#25344a;font-size:.82rem}.cc-map-load-error small{font-size:.62rem;font-weight:700}

/* 6.0.30 — Tryb projektanta UI (tylko Super Admin). */
.lk-ui-zone-editing{position:relative!important;outline:1px dashed rgba(14,165,233,.35);outline-offset:3px}
.lk-ui-editor{position:absolute;z-index:9996;top:6px;right:6px;display:flex;align-items:center;gap:4px;padding:4px 5px;border:1px solid rgba(2,132,199,.28);border-radius:12px;background:rgba(255,255,255,.94);box-shadow:0 7px 20px rgba(15,23,42,.13);font:700 10px/1 system-ui,-apple-system,"Segoe UI",sans-serif!important;color:#0f4c6a;backdrop-filter:blur(8px)}
.lk-ui-editor *{font:inherit!important}.lk-ui-editor__name{max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#496277}.lk-ui-editor button{min-width:28px;height:28px;padding:0 6px;border:1px solid #cce7f3;border-radius:8px;background:#f4fbff;color:#075985;font-weight:900!important}.lk-ui-editor b{min-width:34px;text-align:center;color:#17263c}.lk-ui-editor button[data-act="lock"]{font-size:14px!important}
@media(max-width:720px){.lk-ui-editor{top:4px;right:4px;gap:2px;padding:3px}.lk-ui-editor__name{display:none}.lk-ui-editor button{min-width:27px;height:26px;padding:0 4px}}

/* 6.0.30: jeszcze czytelniejsze etykiety statusu DOJAZD TERAZ. */
.traffic-eta__row-status{font-size:calc(.47rem + 2px)!important}
@media(max-width:680px){.traffic-eta__row-status{font-size:calc(.46rem + 2px)!important}}
@media(max-width:390px){.traffic-eta__row-status{font-size:calc(.44rem + 2px)!important}}

/* ── ŁapKurs 6.1.60: jeden cienki skrót do wspólnej Prognozy 7 dni ── */
.forecast-home-strip{
    display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:11px;
    margin:0 0 10px;padding:10px 13px;border:1px solid rgba(124,58,237,.24);border-radius:16px;
    background:linear-gradient(135deg,rgba(14,165,233,.075),rgba(124,58,237,.065),rgba(16,185,129,.045));
    color:inherit;text-decoration:none;box-shadow:0 8px 20px rgba(15,23,42,.045);transition:transform .15s ease,box-shadow .15s ease
}
.forecast-home-strip:hover{text-decoration:none;transform:translateY(-1px);box-shadow:0 10px 24px rgba(15,23,42,.07)}
.forecast-home-strip__icon{display:grid;place-items:center;width:38px;height:38px;border-radius:12px;background:linear-gradient(145deg,#08a8b8,#246fe5 58%,#7c3aed);box-shadow:0 7px 16px rgba(37,99,235,.18)}
.forecast-home-strip__icon i{display:block;font-style:normal}
.forecast-home-strip__icon i::before{content:'⌁';display:block;color:#fff;font:900 1.55rem/1 system-ui,-apple-system,"Segoe UI",sans-serif;transform:translateY(-1px) rotate(-6deg)}
.forecast-home-strip__copy{display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:9px;align-items:baseline;min-width:0}
.forecast-home-strip__copy small,.forecast-home-strip__copy strong,.forecast-home-strip__copy em{display:block}
.forecast-home-strip__copy small{grid-column:1/-1;color:#0e7490;font-size:.58rem;font-weight:900;letter-spacing:.09em}
.forecast-home-strip__copy strong{grid-column:1;margin-top:1px;color:#0f172a;font-size:.89rem;white-space:nowrap}
.forecast-home-strip__copy em{grid-column:2;min-width:0;margin-top:1px;overflow:hidden;color:#64748b;font-size:.58rem;font-style:normal;text-overflow:ellipsis;white-space:nowrap}
.forecast-home-strip__cta{color:#7c3aed;font-size:.66rem;font-weight:850;white-space:nowrap}
html[data-gp-theme="dark"] .forecast-home-strip__copy strong{color:#f8fafc}
html[data-gp-theme="dark"] .forecast-home-strip__copy small{color:#67e8f9}
@media(max-width:520px){
    .forecast-home-strip{padding:8px 9px;gap:7px}
    .forecast-home-strip__icon{width:34px;height:34px;border-radius:11px}
    .forecast-home-strip__copy{column-gap:7px}
    .forecast-home-strip__copy strong{font-size:calc(.8rem + 1px)}
    .forecast-home-strip__copy em{font-size:.56rem}
    .forecast-home-strip__cta{font-size:.6rem}
}

/* ── ŁapKurs 6.1.0: wejście do prywatnego dashboardu zarobków ───────── */
.earnings-home-strip{
    display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:11px;
    margin:0 0 10px;padding:11px 13px;border:1px solid rgba(16,185,129,.24);border-radius:16px;
    background:linear-gradient(135deg,rgba(16,185,129,.08),rgba(37,99,235,.05));
    color:inherit;text-decoration:none;box-shadow:0 8px 20px rgba(15,23,42,.045)
}
.earnings-home-strip:hover{text-decoration:none;transform:translateY(-1px)}
.earnings-home-strip__icon{display:grid;place-items:center;width:38px;height:38px;border-radius:12px;background:rgba(16,185,129,.11);font-size:1.08rem}
.earnings-home-strip__copy{min-width:0}.earnings-home-strip__copy small,.earnings-home-strip__copy strong,.earnings-home-strip__copy em{display:block}
.earnings-home-strip__copy small{color:#059669;font-size:.58rem;font-weight:900;letter-spacing:.09em}
.earnings-home-strip__copy strong{margin-top:1px;color:#0f172a;font-size:.88rem}.earnings-home-strip__copy em{margin-top:1px;color:#64748b;font-size:.58rem;font-style:normal}
.earnings-home-strip__cta{color:#0369a1;font-size:.66rem;font-weight:850;white-space:nowrap}
html[data-gp-theme="dark"] .earnings-home-strip__copy strong{color:#f8fafc}
@media(max-width:520px){.earnings-home-strip{padding:9px 10px;gap:8px}.earnings-home-strip__icon{width:34px;height:34px}.earnings-home-strip__copy strong{font-size:.8rem}.earnings-home-strip__cta{font-size:.6rem}}

/* 6.1.5 — automatyczny projektant czcionek dla każdego wizualnego kafelka/panelu. */
.lk-ui-edit-mode .lk-ui-zone-editing{transition:outline-color .16s ease,box-shadow .16s ease}
.lk-ui-edit-mode .lk-ui-zone-editing:hover{outline-color:rgba(14,165,233,.75)}
.lk-ui-editor--auto{border-color:rgba(16,185,129,.30);background:rgba(248,255,252,.96);color:#0f5f4b}
.lk-ui-editor--auto button{border-color:#cfeee4;background:#f4fffb;color:#047857}
.lk-ui-editor--auto b{color:#14532d}
.lk-ui-editor button[data-act="lock"]{min-width:30px}
.lk-ui-editor button[data-act="lock"]:has(+ *){font-size:14px!important}
@media(max-width:720px){
  .lk-ui-editor{max-width:156px}
  .lk-ui-editor b{min-width:30px;font-size:9px!important}
  .lk-ui-editor button{min-width:25px;height:25px}
}

/* ── ŁapKurs 6.1.6: spójne okna popytu + czytelna tablica PKP ─────── */
.pkp-arrivals-list{
    display:grid;
    gap:8px;
    margin-top:4px;
}
.pkp-arrival-card{
    position:relative;
    overflow:hidden;
    padding:10px 12px 9px 14px;
    border:1px solid rgba(148,163,184,.18);
    border-radius:14px;
    background:linear-gradient(135deg,rgba(248,250,252,.96),rgba(241,248,252,.78));
    box-shadow:0 4px 14px rgba(15,23,42,.045);
}
.pkp-arrival-card::before{
    content:"";
    position:absolute;
    inset:0 auto 0 0;
    width:3px;
    border-radius:14px 0 0 14px;
    background:linear-gradient(180deg,#38bdf8,#6366f1);
}
.pkp-arrival-card--delayed::before{background:linear-gradient(180deg,#fb7185,#ef4444)}
.pkp-arrival-card--past::before{background:linear-gradient(180deg,#34d399,#16a34a)}
.pkp-arrival-card--cancelled::before{background:#dc2626}
.pkp-arrival-card__top{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:10px;
    min-width:0;
}
.pkp-arrival-card__identity{
    display:flex;
    align-items:baseline;
    gap:7px;
    min-width:0;
    color:#172033;
}
.pkp-arrival-card__identity strong{
    flex:0 0 auto;
    font-size:.98rem;
    font-weight:950;
    line-height:1;
    letter-spacing:-.035em;
}
.pkp-arrival-card__identity span{
    min-width:0;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
    color:#273449;
    font-size:.78rem;
    font-weight:850;
}
.pkp-arrival-card__countdown{
    flex:0 0 auto;
    padding:4px 8px;
    border:1px solid rgba(56,189,248,.22);
    border-radius:999px;
    background:rgba(56,189,248,.08);
    color:#075985;
    font-size:.65rem;
    font-weight:900;
    line-height:1.05;
    white-space:nowrap;
}
.pkp-arrival-card--past .pkp-arrival-card__countdown{
    border-color:rgba(34,197,94,.22);
    background:rgba(34,197,94,.09);
    color:#15803d;
}
.pkp-arrival-card--delayed .pkp-arrival-card__countdown{
    border-color:rgba(244,63,94,.16);
    background:rgba(244,63,94,.06);
    color:#9f1239;
}
.pkp-arrival-card--cancelled .pkp-arrival-card__countdown{
    border-color:rgba(220,38,38,.22);
    background:rgba(220,38,38,.08);
    color:#b91c1c;
}
.pkp-arrival-card__route{
    display:flex;
    align-items:center;
    gap:5px;
    min-width:0;
    margin-top:5px;
    color:#66758b;
    font-size:.67rem;
    line-height:1.2;
}
.pkp-arrival-card__route span,
.pkp-arrival-card__route strong{
    min-width:0;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
}
.pkp-arrival-card__route span{font-weight:650}
.pkp-arrival-card__route i{flex:0 0 auto;color:#94a3b8;font-style:normal;font-weight:900}
.pkp-arrival-card__route strong{color:#516176;font-weight:800}
.pkp-arrival-card__route--missing{
    display:block;
    color:#94a3b8;
    font-size:.61rem;
    font-weight:700;
    font-style:italic;
}
.pkp-arrival-card__meta{
    display:flex;
    align-items:center;
    gap:6px;
    margin-top:6px;
    padding-top:6px;
    border-top:1px dashed rgba(148,163,184,.20);
    color:#64748b;
    font-size:.61rem;
    font-weight:750;
}
.pkp-arrival-card__meta b{color:#9f1239;font-weight:950}
.pkp-arrival-card__meta em{
    margin-left:auto;
    padding:3px 7px;
    border-radius:999px;
    background:linear-gradient(135deg,#fff1f2,#ffe4e6);
    color:#be123c;
    font-size:.59rem;
    font-style:normal;
    font-weight:950;
}
.pkp-arrival-card__meta--ontime{
    border-top:0;
    padding-top:0;
    color:#16a34a;
}
.pkp-arrivals-note{
    display:flex;
    flex-wrap:wrap;
    align-items:center;
    gap:5px 8px;
    margin:10px 0 0!important;
    padding:8px 10px!important;
    border:1px solid rgba(148,163,184,.13);
    border-radius:11px;
    background:rgba(248,250,252,.68);
    font-size:.59rem!important;
    line-height:1.25!important;
}
.pkp-arrivals-note span{white-space:nowrap}
.pkp-arrivals-note a{margin-left:auto;font-weight:900;white-space:nowrap}

html[data-gp-theme="dark"] .pkp-arrival-card{
    border-color:rgba(148,163,184,.13);
    background:linear-gradient(135deg,rgba(15,23,42,.84),rgba(19,31,49,.74));
}
html[data-gp-theme="dark"] .pkp-arrival-card__identity{color:#f8fafc}
html[data-gp-theme="dark"] .pkp-arrival-card__identity span{color:#dbe7f4}
html[data-gp-theme="dark"] .pkp-arrival-card__route{color:#9fb0c5}
html[data-gp-theme="dark"] .pkp-arrival-card__route strong{color:#c7d5e5}
html[data-gp-theme="dark"] .pkp-arrivals-note{background:rgba(15,23,42,.45)}

@media(max-width:560px){
    .pkp-arrivals-list{gap:7px}
    .pkp-arrival-card{padding:9px 10px 8px 12px;border-radius:12px}
    .pkp-arrival-card__identity{gap:6px}
    .pkp-arrival-card__identity strong{font-size:.9rem}
    .pkp-arrival-card__identity span{font-size:.72rem}
    .pkp-arrival-card__countdown{padding:4px 7px;font-size:.61rem}
    .pkp-arrival-card__route{font-size:.63rem}
    .pkp-arrival-card__meta{font-size:.58rem}
    .pkp-arrival-card__meta em{font-size:.56rem}
    .pkp-arrivals-note{font-size:.56rem!important}
}

/* Mini-mapa: po wczytaniu kafli tło znika; przedtem nie pokazujemy agresywnego szarego bloku. */
#cc-mini-map{background:linear-gradient(135deg,#eef8f5,#edf5fb)!important}
#cc-mini-map.cc-mini-map--ready{background:#eef4f7!important}


/* ── ŁapKurs 6.1.7: bezkolizyjna geometria DOJAZD TERAZ ─────────── */
/*
   Cztery stałe strefy w każdym wierszu:
   1) pionowy pień TY,
   2) długie ramię + ETA,
   3) ikonka i nazwa celu,
   4) status po prawej.
   Żaden element nie może wejść w sąsiednią strefę.
*/
.traffic-eta{
    --eta-status-w:88px;
    --eta-target-gap:12px;
}
.traffic-eta__stage{
    padding-right:0!important;
    overflow:hidden;
}
.traffic-eta__rows{width:100%!important}
.traffic-eta__row{
    height:40px!important;
    min-height:40px;
}
.traffic-eta__branch{
    left:calc(var(--eta-trunk-x) + 1px)!important;
    width:calc(var(--eta-pct) - var(--eta-trunk-x) - 1px)!important;
}
/* ETA zaczyna się zawsze wyraźnie za pniem TY i rośnie w prawo. */
.traffic-eta__branch>b,
.traffic-eta__row--near-origin .traffic-eta__branch>b{
    left:18px!important;
    right:auto!important;
    max-width:82px;
    transform:translateY(-50%)!important;
}
/* Cel startuje dopiero ZA końcem ramienia; 12 px jest strefą bezpieczeństwa. */
.traffic-eta__target{
    left:var(--eta-pct)!important;
    min-width:0!important;
    max-width:calc(100% - var(--eta-pct) - var(--eta-status-w) - 24px)!important;
    gap:6px!important;
    transform:translate(var(--eta-target-gap),-50%)!important;
}
.traffic-eta__target-icon{
    flex:0 0 28px!important;
    width:28px!important;
    height:28px!important;
}
.traffic-eta__target-copy{
    min-width:0!important;
    max-width:100%;
}
.traffic-eta__target-copy strong{
    display:block;
    max-width:100%;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
}
/* Status ma własny, stały pas po prawej — nie zabiera miejsca ramieniu ani nazwie. */
.traffic-eta__row-status{
    right:4px!important;
    width:var(--eta-status-w)!important;
    min-width:var(--eta-status-w)!important;
}
/* Separator kończy się przed statusem, dzięki czemu nie przecina pastylki. */
.traffic-eta__row:not(:last-child)::after{
    left:calc(var(--eta-trunk-x) + 14px)!important;
    right:calc(var(--eta-status-w) + 10px)!important;
}

@media(max-width:680px){
    .traffic-eta{
        --eta-status-w:84px;
        --eta-target-gap:10px;
    }
    .traffic-eta__stage{padding-right:0!important}
    .traffic-eta__row{height:40px!important;min-height:40px}
    .traffic-eta__branch>b,
    .traffic-eta__row--near-origin .traffic-eta__branch>b{
        left:17px!important;
        max-width:78px;
    }
    .traffic-eta__target{
        max-width:calc(100% - var(--eta-pct) - var(--eta-status-w) - 20px)!important;
    }
    .traffic-eta__target-icon{
        flex-basis:26px!important;
        width:26px!important;
        height:26px!important;
    }
    .traffic-eta__row-status{
        right:3px!important;
        width:var(--eta-status-w)!important;
        min-width:var(--eta-status-w)!important;
    }
}
@media(max-width:390px){
    .traffic-eta{--eta-status-w:80px;--eta-target-gap:9px}
    .traffic-eta__branch>b,
    .traffic-eta__row--near-origin .traffic-eta__branch>b{left:15px!important}
    .traffic-eta__target{
        max-width:calc(100% - var(--eta-pct) - var(--eta-status-w) - 18px)!important;
    }
}

/* ── ŁapKurs 6.1.8: klikalne szczegóły każdego przyjazdu PKP ───── */
.pkp-arrival-card[data-arrival-detail]{
    cursor:pointer;
    transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease,background .16s ease;
}
.pkp-arrival-card[data-arrival-detail]:hover,
.pkp-arrival-card[data-arrival-detail]:focus-visible,
.pkp-arrival-card[data-arrival-detail][aria-expanded="true"]{
    border-color:rgba(14,165,233,.42);
    box-shadow:0 8px 22px rgba(14,116,144,.10),0 0 0 2px rgba(56,189,248,.08);
    outline:none;
}
.pkp-arrival-card[data-arrival-detail]:active{transform:scale(.995)}
.pkp-arrival-card__details-hint{
    display:flex;
    align-items:center;
    justify-content:flex-end;
    gap:4px;
    margin-top:4px;
    color:#7890a7;
    font-size:.54rem;
    font-weight:800;
    line-height:1;
    text-transform:uppercase;
    letter-spacing:.035em;
}
.pkp-arrival-card__details-hint b{
    color:#0ea5e9;
    font-size:.72rem;
    line-height:.7;
}
.pkp-arrival-card[aria-expanded="true"] .pkp-arrival-card__details-hint b{transform:rotate(180deg)}
html[data-gp-theme="dark"] .pkp-arrival-card__details-hint{color:#8193a8}
.timeline-arrival-detail{z-index:13050}
@media(max-width:560px){
    .pkp-arrival-card__details-hint{font-size:.51rem;margin-top:3px}
}

/* 6.1.9 — oficjalna tablica stacyjna: Przyjazdy / Odjazdy */
.station-board-shell {
    margin-top: 12px;
    border: 1px solid rgba(14,165,233,.18);
    border-radius: 22px;
    overflow: hidden;
    background: rgba(255,255,255,.72);
    box-shadow: 0 18px 45px rgba(15,23,42,.08);
    backdrop-filter: blur(10px);
}
.station-board-tabs {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 6px;
    padding: 7px;
    background: linear-gradient(135deg, rgba(224,242,254,.88), rgba(240,253,250,.92));
    border-bottom: 1px solid rgba(148,163,184,.16);
}
.station-board-tab {
    appearance: none;
    border: 0;
    border-radius: 15px;
    padding: 11px 10px;
    font: inherit;
    font-weight: 900;
    color: #475569;
    background: transparent;
    cursor: pointer;
    transition: .18s ease;
}
.station-board-tab b {
    display: inline-flex;
    min-width: 24px;
    height: 24px;
    align-items: center;
    justify-content: center;
    margin-left: 5px;
    padding: 0 7px;
    border-radius: 999px;
    background: rgba(148,163,184,.14);
    font-size: .78em;
}
.station-board-tab.active {
    color: #fff;
    background: linear-gradient(135deg, #0284c7, #2563eb 58%, #7c3aed);
    box-shadow: 0 8px 20px rgba(37,99,235,.24);
}
.station-board-tab.active b { background: rgba(255,255,255,.2); }
.station-board-source {
    padding: 8px 12px;
    color: #64748b;
    font-size: .72rem;
    font-weight: 750;
    border-bottom: 1px solid rgba(148,163,184,.14);
}
.station-board-list { padding: 8px; display: grid; gap: 8px; }
.station-board-card {
    position: relative;
    border: 1px solid rgba(148,163,184,.17);
    border-radius: 17px;
    padding: 10px 11px 11px;
    background: linear-gradient(145deg, rgba(255,255,255,.98), rgba(248,250,252,.92));
    box-shadow: 0 6px 18px rgba(15,23,42,.045);
}
.station-board-card--delayed { border-color: rgba(239,68,68,.22); }
.station-board-card--cancelled { opacity: .66; }
.station-board-card__summary {
    width: 100%;
    display: grid;
    grid-template-columns: 58px minmax(0,1fr) auto 22px;
    align-items: center;
    gap: 8px;
    padding: 0;
    border: 0;
    background: transparent;
    color: #0f172a;
    text-align: left;
    font: inherit;
    cursor: pointer;
}
.station-board-time { font-size: 1.08rem; font-weight: 950; letter-spacing: -.02em; }
.station-board-train { min-width: 0; display: flex; flex-direction: column; line-height: 1.12; }
.station-board-train b { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: .95rem; }
.station-board-train-name { color: #64748b; font-size: .69rem; font-weight: 800; margin-top: 3px; }
.station-board-platform {
    color: #64748b;
    white-space: nowrap;
    font-size: .7rem;
    text-transform: uppercase;
    letter-spacing: .03em;
}
.station-board-platform b { color: #0f172a; font-size: 1.05rem; margin-left: 2px; }
.station-board-chevron { color: #0284c7; font-size: 1.2rem; transform-origin: center; transition: transform .18s ease; }
.station-board-card.is-open .station-board-chevron { transform: rotate(180deg); }
.station-board-route {
    display: flex;
    align-items: baseline;
    gap: 7px;
    margin: 8px 0 0 66px;
    min-width: 0;
    color: #1e293b;
}
.station-board-route__label {
    flex: 0 0 auto;
    padding: 2px 7px;
    border-radius: 999px;
    background: #e0f2fe;
    color: #0369a1;
    font-size: .64rem;
    font-weight: 900;
    text-transform: uppercase;
}
.station-board-route strong { font-size: .9rem; overflow-wrap: anywhere; }
.station-board-via {
    margin: 5px 0 0 66px;
    color: #64748b;
    font-size: .72rem;
    line-height: 1.35;
}
.station-board-via span { color: #94a3b8; font-weight: 800; }
.station-board-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin: 8px 0 0 66px;
}
.station-board-chip,
.station-board-delay,
.station-board-on-time {
    display: inline-flex;
    align-items: center;
    min-height: 25px;
    padding: 3px 9px;
    border-radius: 999px;
    font-size: .7rem;
    font-weight: 900;
}
.station-board-chip { color: #0369a1; background: #e0f2fe; }
.station-board-chip--past { color: #15803d; background: #dcfce7; }
.station-board-chip--now { color: #7e22ce; background: #f3e8ff; }
.station-board-chip--danger,
.station-board-delay { color: #b91c1c; background: #fee2e2; }
.station-board-on-time { color: #15803d; background: #dcfce7; }
.station-board-details {
    margin: 10px 0 0 66px;
    padding: 10px;
    border-radius: 14px;
    background: linear-gradient(135deg, #f8fafc, #eff6ff);
    border: 1px solid rgba(125,211,252,.22);
}
.station-board-detail-grid {
    display: grid;
    grid-template-columns: repeat(2,minmax(0,1fr));
    gap: 9px 12px;
}
.station-board-detail-grid div { min-width: 0; }
.station-board-detail-grid small { display: block; color: #94a3b8; font-size: .62rem; font-weight: 800; text-transform: uppercase; letter-spacing: .03em; }
.station-board-detail-grid b { display: block; margin-top: 2px; color: #1e293b; font-size: .77rem; overflow-wrap: anywhere; }
.station-board-note { margin-top: 9px; padding-top: 8px; border-top: 1px dashed rgba(148,163,184,.25); color: #475569; font-size: .72rem; }
.station-board-empty { padding: 22px 16px; text-align: center; color: #64748b; font-weight: 750; }

[data-theme="dark"] .station-board-shell,
body.dark .station-board-shell { background: rgba(15,23,42,.82); border-color: rgba(56,189,248,.2); }
[data-theme="dark"] .station-board-card,
body.dark .station-board-card { background: linear-gradient(145deg, rgba(30,41,59,.98), rgba(15,23,42,.94)); border-color: rgba(148,163,184,.18); }
[data-theme="dark"] .station-board-card__summary,
[data-theme="dark"] .station-board-platform b,
[data-theme="dark"] .station-board-route,
[data-theme="dark"] .station-board-detail-grid b,
body.dark .station-board-card__summary,
body.dark .station-board-platform b,
body.dark .station-board-route,
body.dark .station-board-detail-grid b { color: #f8fafc; }
[data-theme="dark"] .station-board-details,
body.dark .station-board-details { background: linear-gradient(135deg, rgba(30,41,59,.95), rgba(17,24,39,.95)); }

@media (max-width: 430px) {
    .station-board-card__summary { grid-template-columns: 52px minmax(0,1fr) auto 18px; gap: 6px; }
    .station-board-route, .station-board-via, .station-board-meta, .station-board-details { margin-left: 58px; }
    .station-board-detail-grid { grid-template-columns: 1fr 1fr; }
}

/* 6.1.9 — przełącznik tablicy PKP na HOME */
.dashboard-pkp-board-tabs {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 7px;
    margin: 10px 12px 12px;
    padding: 6px;
    border-radius: 18px;
    background: linear-gradient(135deg, rgba(224,242,254,.9), rgba(240,253,250,.92));
    border: 1px solid rgba(125,211,252,.18);
}
.dashboard-pkp-board-tab {
    border: 0;
    border-radius: 13px;
    padding: 10px 9px;
    background: transparent;
    color: #475569;
    font: inherit;
    font-weight: 900;
    cursor: pointer;
}
.dashboard-pkp-board-tab b {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 23px;
    height: 23px;
    margin-left: 4px;
    padding: 0 6px;
    border-radius: 999px;
    background: rgba(148,163,184,.14);
    font-size: .76em;
}
.dashboard-pkp-board-tab.is-active {
    color: #fff;
    background: linear-gradient(135deg, #0284c7, #2563eb 58%, #7c3aed);
    box-shadow: 0 8px 20px rgba(37,99,235,.22);
}
.dashboard-pkp-board-tab.is-active b { background: rgba(255,255,255,.2); }
.pkp-arrival-card--departure { border-left-color: #7c3aed; }
.pkp-arrival-card__via {
    margin: 4px 0 0;
    color: #64748b;
    font-size: .74rem;
    line-height: 1.35;
}
.pkp-arrival-card__via span { color: #94a3b8; font-weight: 800; }
[data-dashboard-pkp-pane][hidden] { display: none !important; }


/* ── ŁapKurs 6.1.10: zwarta tablica PKP + źródło w prawym rogu ───── */
.pkp-arrivals-panel{
    padding:12px 14px 13px!important;
}
.pkp-arrivals-head{
    position:relative;
    grid-template-columns:40px minmax(0,1fr)!important;
    align-items:center!important;
    gap:8px!important;
    margin:0 0 6px!important;
    padding:0 142px 8px 0!important;
}
.pkp-arrivals-head__icon{
    width:40px!important;
    height:40px!important;
    border-radius:12px!important;
    font-size:1.18rem!important;
}
.pkp-arrivals-head__copy h2{
    font-size:.94rem!important;
}
.pkp-arrivals-head__copy p{
    margin-top:2px!important;
    font-size:.66rem!important;
}
.pkp-arrivals-head .data-mode-badge{
    position:absolute!important;
    top:0!important;
    right:0!important;
    z-index:2;
    max-width:136px;
    margin:0!important;
    padding:5px 8px!important;
    overflow:visible;
    border-color:rgba(34,197,94,.28)!important;
    background:linear-gradient(135deg,rgba(240,253,244,.98),rgba(236,253,245,.96))!important;
    color:#15803d!important;
    box-shadow:0 3px 10px rgba(34,197,94,.07)!important;
    font-size:.52rem!important;
    font-weight:900!important;
    line-height:1.15!important;
    white-space:normal;
    text-align:center;
}
.dashboard-pkp-board-tabs{
    gap:4px!important;
    margin:4px 0 7px!important;
    padding:3px!important;
    border-radius:13px!important;
}
.dashboard-pkp-board-tab{
    min-height:32px;
    padding:6px 8px!important;
    border-radius:10px!important;
    font-size:.68rem!important;
    line-height:1!important;
}
.dashboard-pkp-board-tab b{
    min-width:20px!important;
    height:20px!important;
    margin-left:3px!important;
    padding:0 5px!important;
    font-size:.68em!important;
}
.pkp-arrivals-list{
    gap:5px!important;
    margin-top:2px!important;
}
.pkp-arrival-card{
    padding:7px 9px 6px 11px!important;
    border-radius:11px!important;
}
.pkp-arrival-card__route{margin-top:3px!important}
.pkp-arrival-card__meta{
    margin-top:4px!important;
    padding-top:4px!important;
}
.pkp-arrival-card__via{margin-top:3px!important}
.pkp-arrivals-note{
    margin-top:6px!important;
    padding:6px 8px!important;
}
@media(max-width:560px){
    .pkp-arrivals-panel{padding:10px 11px 11px!important}
    .pkp-arrivals-head{
        grid-template-columns:36px minmax(0,1fr)!important;
        padding:0 124px 7px 0!important;
    }
    .pkp-arrivals-head__icon{
        width:36px!important;
        height:36px!important;
        font-size:1.05rem!important;
    }
    .pkp-arrivals-head .data-mode-badge{
        max-width:118px;
        padding:4px 6px!important;
        font-size:.48rem!important;
    }
    .dashboard-pkp-board-tab{
        min-height:30px;
        padding:5px 6px!important;
        font-size:.64rem!important;
    }
    .pkp-arrival-card{
        padding:6px 8px 6px 10px!important;
    }
}

/* mini-mapa: widoczna warstwa bazowa z własnego, same-origin endpointu */
#cc-mini-map .leaflet-tile{opacity:1!important;visibility:visible!important}
#cc-mini-map .leaflet-tile-container{opacity:1!important;visibility:visible!important}


/* ── ŁapKurs 6.1.11: zwarte tablice PKP + pewne szczegóły inline ───────── */
.pkp-arrivals-panel{padding:8px 10px 9px!important}
.pkp-arrivals-head{margin-bottom:3px!important;padding-bottom:5px!important}
.dashboard-pkp-board-tabs{gap:4px!important;margin:3px 0 5px!important;padding:2px!important;border-radius:12px!important}
.dashboard-pkp-board-tab{
    min-height:34px!important;
    padding:5px 7px!important;
    font-size:calc(.64rem + 1px)!important;
    line-height:1!important;
}
.dashboard-pkp-board-tab b{
    min-width:29px!important;
    height:29px!important;
    margin-left:4px!important;
    padding:0 7px!important;
    font-size:.78rem!important;
    line-height:29px!important;
    box-shadow:inset 0 0 0 1px rgba(148,163,184,.10);
}
.dashboard-pkp-board-tab.is-active b{background:rgba(255,255,255,.24)!important;color:#fff!important}
.pkp-arrivals-list{gap:4px!important}
.pkp-arrival-card{padding:6px 8px 5px 9px!important;border-radius:10px!important}
.pkp-arrival-card__details-hint{margin-top:2px!important;font-size:.53rem!important}
.pkp-arrival-card__details{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:5px 9px;
    margin:6px 0 1px;
    padding:7px 8px;
    border:1px solid rgba(125,211,252,.2);
    border-radius:10px;
    background:linear-gradient(135deg,rgba(248,250,252,.98),rgba(239,246,255,.92));
}
.pkp-arrival-card__details[hidden]{display:none!important}
.pkp-arrival-card__details div{min-width:0}
.pkp-arrival-card__details small{display:block;color:#94a3b8;font-size:.54rem;font-weight:850;text-transform:uppercase;letter-spacing:.025em}
.pkp-arrival-card__details b{display:block;margin-top:1px;color:#1e293b;font-size:.7rem;line-height:1.2;overflow-wrap:anywhere}
.pkp-arrival-card__details p{grid-column:1/-1;margin:1px 0 0;color:#64748b;font-size:.65rem;line-height:1.3}
.pkp-arrival-card__details p small{display:inline;margin-right:5px}
.pkp-arrival-card[aria-expanded="true"] .pkp-arrival-card__details-hint b{display:inline-block;transform:rotate(180deg)}
html[data-gp-theme="dark"] .pkp-arrival-card__details{background:linear-gradient(135deg,rgba(30,41,59,.96),rgba(15,23,42,.94));border-color:rgba(56,189,248,.2)}
html[data-gp-theme="dark"] .pkp-arrival-card__details b{color:#f1f5f9}

/* Mapa PKP: ten sam język wizualny co tablica na HOME, ale jeszcze ciaśniej. */
.station-board-shell{margin-top:7px!important;border-radius:15px!important;box-shadow:0 8px 24px rgba(15,23,42,.06)!important}
.station-board-tabs{gap:4px!important;padding:3px!important}
.station-board-tab{
    min-height:34px;
    padding:5px 7px!important;
    border-radius:10px!important;
    font-size:calc(.68rem + 1px)!important;
    font-weight:900!important;
}
.station-board-tab b{
    min-width:29px!important;
    height:29px!important;
    padding:0 7px!important;
    margin-left:4px!important;
    border-radius:999px!important;
    font-size:.78rem!important;
    line-height:29px!important;
}
.station-board-source{padding:5px 8px!important;font-size:.61rem!important}
.station-board-list{padding:5px!important;gap:4px!important}
.station-board-card{padding:6px 7px!important;border-radius:10px!important}
.station-board-card__summary{grid-template-columns:50px minmax(0,1fr) auto 18px!important;gap:5px!important}
.station-board-time{font-size:.94rem!important}
.station-board-train b{font-size:.82rem!important}
.station-board-train-name{font-size:.61rem!important;margin-top:1px!important}
.station-board-platform{font-size:.58rem!important}
.station-board-platform b{font-size:.88rem!important}
.station-board-route,.station-board-via,.station-board-meta,.station-board-details{margin-left:55px!important}
.station-board-route{margin-top:4px!important;gap:5px!important}
.station-board-route__label{padding:1px 5px!important;font-size:.55rem!important}
.station-board-route strong{font-size:.76rem!important}
.station-board-via{margin-top:2px!important;font-size:.62rem!important;line-height:1.25!important}
.station-board-meta{margin-top:4px!important;gap:4px!important}
.station-board-chip,.station-board-delay,.station-board-on-time{min-height:21px!important;padding:2px 7px!important;font-size:.61rem!important}
.station-board-details{margin-top:5px!important;padding:7px!important;border-radius:9px!important}
.station-board-detail-grid{gap:5px 8px!important}
.station-board-detail-grid small{font-size:.53rem!important}
.station-board-detail-grid b{font-size:.67rem!important}
.station-board-note{margin-top:5px!important;padding-top:5px!important;font-size:.62rem!important}

/* Mini-mapa: nigdy bez informacji; overlay błędu nad pustą warstwą. */
#cc-mini-map{position:relative!important;overflow:hidden!important}
#cc-mini-map .cc-map-load-error{
    position:absolute;inset:0;z-index:900;
    display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;
    padding:16px;text-align:center;background:linear-gradient(135deg,#eef8f5,#edf5fb);color:#475569;
}
#cc-mini-map .cc-map-load-error span{font-size:1.5rem}
#cc-mini-map .cc-map-load-error strong{font-size:.82rem;color:#1e293b}
#cc-mini-map .cc-map-load-error small{font-size:.65rem}
#cc-mini-map.cc-mini-map--ready .cc-map-load-error{display:none!important}

@media(max-width:430px){
    .dashboard-pkp-board-tab,.station-board-tab{font-size:calc(.63rem + 1px)!important}
    .dashboard-pkp-board-tab b,.station-board-tab b{min-width:28px!important;height:28px!important;line-height:28px!important;font-size:.75rem!important}
    .pkp-arrival-card__details{grid-template-columns:1fr 1fr;gap:4px 7px;padding:6px 7px}
}


/* ── ŁapKurs 6.1.12: tablica LIVE o ~50% niższa, trasa dopiero w szczegółach ── */
.pkp-arrivals-list{gap:3px!important}
.pkp-arrival-card{
    padding:4px 6px 4px 8px!important;
    border-radius:9px!important;
}
.pkp-arrival-card__top{
    min-height:38px!important;
    gap:6px!important;
}
.pkp-arrival-card__identity{gap:6px!important;min-width:92px}
.pkp-arrival-card__identity strong{font-size:.94rem!important}
.pkp-arrival-card__identity span{font-size:.72rem!important}
.pkp-arrival-card__quick{
    margin-left:auto;
    display:flex;
    align-items:center;
    justify-content:flex-end;
    gap:3px;
    min-width:0;
    white-space:nowrap;
}
.pkp-arrival-card__countdown{
    padding:3px 6px!important;
    font-size:.58rem!important;
    line-height:1!important;
}
.pkp-arrival-card__platform,
.pkp-arrival-card__forecast,
.pkp-arrival-card__ontime{
    display:inline-flex;
    align-items:center;
    min-height:20px;
    padding:2px 5px;
    border-radius:999px;
    font-size:.55rem;
    font-weight:900;
    line-height:1;
}
.pkp-arrival-card__platform{background:#eef2ff;color:#4338ca}
.pkp-arrival-card__forecast{gap:3px;background:#fff1f2;color:#9f1239}
.pkp-arrival-card__forecast em{
    padding:2px 4px;
    border-radius:999px;
    background:#dc2626;
    color:#fff;
    font-size:.5rem;
    font-style:normal;
    font-weight:950;
}
.pkp-arrival-card__ontime{background:#dcfce7;color:#15803d}
.pkp-arrival-card__details-hint{
    display:inline-flex!important;
    align-items:center;
    justify-content:center;
    width:22px;
    height:22px;
    margin:0!important;
    padding:0!important;
    border-radius:999px;
    background:rgba(14,165,233,.08);
    color:#0284c7!important;
    font-size:.85rem!important;
    line-height:1!important;
}
.pkp-arrival-card__details-hint b{line-height:1!important}
.pkp-arrival-card__details{
    margin:4px 0 0!important;
    padding:6px 7px!important;
    gap:4px 7px!important;
}
.pkp-arrival-card__details small{font-size:.51rem!important}
.pkp-arrival-card__details b{font-size:.65rem!important}
.pkp-arrival-card__details p{font-size:.6rem!important}
.pkp-arrivals-note{margin-top:5px!important;padding:5px 7px!important}

/* Mapa PKP — ten sam zwarty wyświetlacz. Bez trasy w stanie złożonym. */
.station-board-list{padding:3px!important;gap:3px!important}
.station-board-card{
    padding:2px 4px!important;
    border-radius:9px!important;
}
.station-board-card__summary{
    grid-template-columns:48px minmax(62px,1fr) auto auto 18px!important;
    align-items:center!important;
    gap:4px!important;
    min-height:42px!important;
    padding:3px 3px!important;
}
.station-board-time{font-size:.91rem!important}
.station-board-train{line-height:1!important}
.station-board-train b{font-size:.77rem!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.station-board-train-name{display:none!important}
.station-board-quick{
    display:flex;
    align-items:center;
    justify-content:flex-end;
    gap:3px;
    white-space:nowrap;
}
.station-board-chip,
.station-board-delay,
.station-board-on-time{
    min-height:19px!important;
    padding:2px 5px!important;
    font-size:.54rem!important;
    line-height:1!important;
}
.station-board-delay{font-size:.53rem!important}
.station-board-platform{
    display:flex!important;
    align-items:baseline!important;
    gap:1px!important;
    padding:0!important;
    font-size:.5rem!important;
    white-space:nowrap;
}
.station-board-platform small{
    color:#94a3b8;
    font-size:.48rem;
    font-weight:850;
}
.station-board-platform b{font-size:.82rem!important;margin-left:0!important}
.station-board-chevron{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    width:18px;
    height:24px;
    font-size:1rem!important;
}
.station-board-details{
    margin:3px 0 1px!important;
    padding:6px 7px!important;
    border-radius:8px!important;
}
.station-board-details .station-board-route,
.station-board-details .station-board-via{
    margin-left:0!important;
}
.station-board-details .station-board-route{
    margin-top:0!important;
    margin-bottom:4px!important;
}
.station-board-details .station-board-via{
    margin-top:2px!important;
    margin-bottom:5px!important;
}
.station-board-detail-grid{gap:4px 7px!important}
.station-board-detail-grid small{font-size:.5rem!important}
.station-board-detail-grid b{font-size:.63rem!important}
.station-board-note{font-size:.58rem!important}
.station-board-source{padding:4px 7px!important}

/* Kolory platform pozostają kanoniczne: Bolt = zielony, Uber = niebiesko-czarny. */

/* ── ŁapKurs 6.1.15: identycznie zwarta tablica HOME + mapa, szczegóły tylko na mapie PKP ── */
.station-board-shell .pkp-arrivals-list{
    margin-top:0!important;
    padding:3px!important;
    gap:3px!important;
}
.station-board-shell .pkp-arrival-card{
    margin:0!important;
    padding:4px 6px 4px 8px!important;
    border-radius:9px!important;
}
.map-pkp-arrival-card__summary{
    width:100%;
    margin:0;
    padding:0;
    border:0;
    background:transparent;
    color:inherit;
    text-align:left;
    font:inherit;
    cursor:pointer;
    appearance:none;
    -webkit-appearance:none;
}
.map-pkp-arrival-card__summary:focus-visible{
    outline:2px solid #38bdf8;
    outline-offset:2px;
    border-radius:7px;
}
.map-pkp-arrival-card__summary[aria-expanded="true"] .pkp-arrival-card__details-hint b{
    display:inline-block;
    transform:rotate(180deg);
}
.map-pkp-arrival-card__details{
    cursor:default;
}
.station-board-shell .dashboard-pkp-board-tabs{
    margin:3px 5px 5px!important;
}
.station-board-shell .station-board-source{
    margin:0 5px 3px;
    padding:4px 7px!important;
    border-radius:8px;
}
/* HOME nie sygnalizuje rozwijania — to świadomie tylko odczytowa, zwarta lista. */
.dashboard-page .pkp-arrival-card{cursor:default!important}

/* ── ŁapKurs 6.1.19: Projektant czcionek bez nakładających się kontrolek ── */
.lk-ui-edit-mode body{padding-bottom:118px!important}
.lk-ui-edit-mode .lk-ui-zone-editing{
    position:relative!important;
    outline:1px dashed rgba(14,165,233,.16)!important;
    outline-offset:3px!important;
    cursor:crosshair!important;
    transition:outline-color .14s ease,box-shadow .14s ease!important;
}
.lk-ui-edit-mode .lk-ui-zone-editing:hover{outline-color:rgba(14,165,233,.62)!important}
.lk-ui-edit-mode .lk-ui-zone-selected{
    outline:3px solid #0ea5e9!important;
    outline-offset:4px!important;
    box-shadow:0 0 0 5px rgba(14,165,233,.12),0 10px 28px rgba(14,165,233,.12)!important;
}
.lk-ui-inspector{
    position:fixed!important;
    z-index:10050!important;
    top:auto!important;
    right:auto!important;
    bottom:16px!important;
    left:50%!important;
    transform:translateX(-50%)!important;
    display:grid!important;
    grid-template-columns:minmax(220px,1fr) auto auto!important;
    align-items:center!important;
    gap:10px 14px!important;
    width:min(820px,calc(100vw - 28px))!important;
    max-width:820px!important;
    min-height:74px!important;
    padding:11px 12px!important;
    border:1px solid rgba(14,165,233,.28)!important;
    border-radius:18px!important;
    background:rgba(255,255,255,.97)!important;
    box-shadow:0 18px 55px rgba(15,23,42,.24)!important;
    color:#12324a!important;
    font:750 12px/1.25 system-ui,-apple-system,"Segoe UI",sans-serif!important;
    backdrop-filter:blur(18px)!important;
}
.lk-ui-inspector *{box-sizing:border-box}
.lk-ui-inspector__top{display:flex;align-items:center;gap:9px;min-width:0}
.lk-ui-inspector__badge{display:grid;place-items:center;flex:0 0 34px;width:34px;height:34px;border-radius:11px;background:linear-gradient(145deg,#0ea5e9,#2563eb);color:#fff;font-size:13px!important;font-weight:950!important;box-shadow:0 6px 16px rgba(37,99,235,.22)}
.lk-ui-inspector__selection{display:grid;gap:2px;min-width:0}
.lk-ui-inspector__selection small{color:#0284c7;font-size:8px!important;font-weight:950!important;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lk-ui-inspector__selection strong{color:#0f172a;font-size:13px!important;font-weight:950!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lk-ui-inspector__selection span{color:#64748b;font-size:9px!important;font-weight:700!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lk-ui-inspector__selection--empty strong{color:#334155}
.lk-ui-inspector__controls{display:flex;align-items:center;justify-content:center;gap:5px;white-space:nowrap}
.lk-ui-inspector__controls button{
    min-width:38px!important;height:34px!important;padding:0 9px!important;
    border:1px solid #bae6fd!important;border-radius:10px!important;background:#f0f9ff!important;color:#0369a1!important;
    font-size:11px!important;font-weight:950!important;cursor:pointer!important;
}
.lk-ui-inspector__controls button:hover{background:#e0f2fe!important;border-color:#7dd3fc!important}
.lk-ui-inspector__controls b{display:grid;place-items:center;min-width:48px!important;height:34px;padding:0 7px;border:1px solid #dbeafe;border-radius:10px;background:#f8fafc;color:#0f172a!important;font-size:11px!important;font-weight:950!important}
.lk-ui-inspector__controls--disabled{opacity:.52}
.lk-ui-inspector__reset{min-width:48px!important;background:#fff!important;color:#64748b!important;border-color:#e2e8f0!important}
.lk-ui-inspector__lock{display:inline-flex!important;align-items:center!important;justify-content:center!important;gap:5px!important;min-width:94px!important;background:#f0fdf4!important;color:#047857!important;border-color:#bbf7d0!important}
.lk-ui-inspector__lock span{font-size:9px!important;font-weight:850!important}
.lk-ui-inspector__actions{display:flex;align-items:center;justify-content:flex-end;gap:6px;white-space:nowrap}
.lk-ui-inspector__actions button{height:36px!important;padding:0 11px!important;border-radius:10px!important;font-size:10px!important;font-weight:950!important;cursor:pointer!important}
.lk-ui-inspector__secondary{border:1px solid #e2e8f0!important;background:#fff!important;color:#475569!important}
.lk-ui-inspector__save{min-width:132px!important;border:1px solid #1d4ed8!important;background:linear-gradient(135deg,#0284c7,#2563eb)!important;color:#fff!important;box-shadow:0 7px 18px rgba(37,99,235,.2)!important}
.lk-ui-inspector__actions button:disabled,.lk-ui-inspector__controls button:disabled{cursor:default!important;opacity:.48!important;box-shadow:none!important}
.lk-ui-inspector__status{grid-column:1/-1;margin-top:-3px;padding-top:5px;border-top:1px solid rgba(148,163,184,.16);color:#64748b;font-size:9px!important;font-weight:800!important;text-align:right}
.lk-ui-inspector__status--dirty{color:#b45309!important}.lk-ui-inspector__status--ok{color:#047857!important}.lk-ui-inspector__status--error{color:#b91c1c!important}.lk-ui-inspector__status--saving{color:#0369a1!important}
html[data-gp-theme="dark"] .lk-ui-inspector{background:rgba(15,23,42,.97)!important;border-color:rgba(56,189,248,.28)!important;color:#e2e8f0!important}
html[data-gp-theme="dark"] .lk-ui-inspector__selection strong{color:#f8fafc!important}
html[data-gp-theme="dark"] .lk-ui-inspector__selection span,html[data-gp-theme="dark"] .lk-ui-inspector__status{color:#94a3b8!important}
html[data-gp-theme="dark"] .lk-ui-inspector__controls b{background:#111827!important;border-color:#334155!important;color:#f8fafc!important}
html[data-gp-theme="dark"] .lk-ui-inspector__secondary{background:#111827!important;border-color:#334155!important;color:#cbd5e1!important}
@media(max-width:760px){
    .lk-ui-edit-mode body{padding-bottom:210px!important}
    .lk-ui-inspector{
        bottom:calc(74px + env(safe-area-inset-bottom))!important;
        grid-template-columns:1fr!important;
        gap:8px!important;
        width:calc(100vw - 18px)!important;
        max-width:none!important;
        padding:10px!important;
        border-radius:16px!important;
    }
    .lk-ui-inspector__selection strong{font-size:12px!important}
    .lk-ui-inspector__controls{justify-content:flex-start;overflow-x:auto;padding-bottom:1px}
    .lk-ui-inspector__controls button{flex:0 0 auto}
    .lk-ui-inspector__actions{display:grid;grid-template-columns:auto auto minmax(128px,1fr);justify-content:stretch}
    .lk-ui-inspector__actions button{padding:0 8px!important}
    .lk-ui-inspector__save{min-width:0!important}
    .lk-ui-inspector__status{text-align:left}
}
@media(max-width:420px){
    .lk-ui-inspector__lock{min-width:42px!important}.lk-ui-inspector__lock span{display:none!important}
    .lk-ui-inspector__actions{grid-template-columns:auto auto 1fr}
    .lk-ui-inspector__actions button{font-size:9px!important}
}


/* 6.1.34 — wariant compact lotniska HOME jest w airport-timeline.css. */


/* 6.1.34 — przełącznik dwóch zadeklarowanych miast doklejony do dolnego menu. */
.bottom-city-switch{
    position:fixed;
    left:50%;
    bottom:calc(64px + env(safe-area-inset-bottom));
    z-index:11999;
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:5px;
    width:min(540px,100%);
    min-height:42px;
    padding:5px 7px 4px;
    transform:translateX(-50%);
    border:1px solid rgba(148,163,184,.24);
    border-bottom:0;
    border-radius:16px 16px 0 0;
    background:rgba(22,31,55,.94);
    box-shadow:0 -8px 24px rgba(2,8,23,.30);
    backdrop-filter:blur(20px);
    -webkit-backdrop-filter:blur(20px);
    box-sizing:border-box;
}
.bottom-city-switch__button{
    min-width:0;
    min-height:33px;
    display:flex;
    align-items:center;
    justify-content:center;
    gap:6px;
    padding:4px 8px;
    border:1px solid rgba(148,163,184,.16);
    border-radius:11px;
    background:rgba(255,255,255,.045);
    color:#aebdd0;
    text-decoration:none;
    font-size:.68rem;
    font-weight:850;
    letter-spacing:.01em;
    overflow:hidden;
    -webkit-tap-highlight-color:transparent;
}
.bottom-city-switch__button strong{
    min-width:0;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
}
.bottom-city-switch__dot{
    flex:0 0 auto;
    width:6px;
    height:6px;
    border-radius:50%;
    background:#64748b;
    box-shadow:0 0 0 3px rgba(100,116,139,.10);
}
.bottom-city-switch__button.is-active{
    border-color:rgba(34,211,238,.45);
    background:linear-gradient(135deg,rgba(14,165,233,.22),rgba(99,102,241,.20));
    color:#f8fafc;
    box-shadow:inset 0 1px 0 rgba(255,255,255,.10),0 4px 13px rgba(14,165,233,.10);
}
.bottom-city-switch__button.is-active .bottom-city-switch__dot{
    background:#22d3ee;
    box-shadow:0 0 0 3px rgba(34,211,238,.13),0 0 10px rgba(34,211,238,.42);
}
body.has-bottom-city-switch .bottom-nav{
    border-radius:0;
    border-top-color:rgba(148,163,184,.16);
}
html[data-gp-theme="light"] .bottom-city-switch{
    border-color:rgba(148,163,184,.26);
    background:rgba(248,250,252,.96);
    box-shadow:0 -8px 24px rgba(15,23,42,.10);
}
html[data-gp-theme="light"] .bottom-city-switch__button{
    border-color:rgba(100,116,139,.14);
    background:rgba(226,232,240,.50);
    color:#526174;
}
html[data-gp-theme="light"] .bottom-city-switch__button.is-active{
    border-color:rgba(14,165,233,.34);
    background:linear-gradient(135deg,rgba(224,242,254,.96),rgba(238,242,255,.96));
    color:#0f2d45;
}
@media(max-width:767px){
    .bottom-city-switch{
        bottom:calc(56px + env(safe-area-inset-bottom));
        width:100%;
        min-height:40px;
        padding:4px 6px 3px;
        border-radius:13px 13px 0 0;
    }
    .bottom-city-switch__button{min-height:32px;font-size:.66rem}
}


/* ── ŁapKurs 6.1.38: HOME — bardziej zwarty nagłówek, czytelniejsze skróty i oś PKP ── */
/* Nagłówek pozostaje wygodny do dotyku, ale odzyskujemy biały margines góra/dół. */
.site-header-top{
    min-height:40px!important;
    padding-top:max(4px, env(safe-area-inset-top, 0px))!important;
    padding-bottom:4px!important;
}
.map-app-header{
    padding-top:max(4px, env(safe-area-inset-top, 0px))!important;
    padding-bottom:4px!important;
}

/* Godziny co 10 min na osi PKP mają być widoczne od pierwszego spojrzenia. */
.demand-timeline__clock span{
    font-weight:850;
    letter-spacing:.01em;
}
html[data-gp-theme="light"] .demand-timeline__clock span{
    color:#334155!important;
}
html[data-gp-theme="dark"] .demand-timeline__clock span{
    color:#cbd5e1!important;
}
html[data-gp-theme="light"] .demand-timeline__clock span::after{
    background:repeating-linear-gradient(to bottom,rgba(71,85,105,.28) 0 3px,transparent 3px 7px);
}

/* MÓJ WYNIK na HOME: kwota +1 px, a wynik po kosztach obok zamiast w nowej linii. */
.earnings-home-strip__copy{
    display:grid;
    grid-template-columns:auto minmax(0,1fr);
    column-gap:9px;
    align-items:baseline;
}
.earnings-home-strip__copy small{
    grid-column:1/-1;
}
.earnings-home-strip__copy strong{
    grid-column:1;
    font-size:calc(.88rem + 1px);
    white-space:nowrap;
}
.earnings-home-strip__copy em{
    grid-column:2;
    min-width:0;
    margin-top:1px;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
}

/* Cztery skróty HOME — mniej pionowego paddingu, ikona bliżej lewego/górnego rogu,
   opis zawsze w jednej linii. */
.dash-tool{
    gap:7px;
    padding:9px 10px;
}
.dash-tool__icon{
    align-self:start;
    width:34px;
    height:34px;
    margin-top:-1px;
    margin-left:-1px;
}
.dash-tool>span:not(.dash-tool__icon){min-width:0}
.dash-tool small{
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
}

@media(max-width:520px){
    .site-header-top{min-height:38px!important;padding-top:max(3px, env(safe-area-inset-top, 0px))!important;padding-bottom:3px!important}
    .earnings-home-strip{padding:8px 9px;gap:7px}
    .earnings-home-strip__copy{column-gap:7px}
    .earnings-home-strip__copy strong{font-size:calc(.8rem + 1px)}
    .earnings-home-strip__copy em{font-size:.56rem}
    .dash-toolbelt{gap:6px}
    .dash-tool{gap:5px;padding:7px 6px;border-radius:12px}
    .dash-tool__icon{width:30px;height:30px;border-radius:9px;font-size:.92rem;margin-top:-1px;margin-left:-1px}
    .dash-tool strong{font-size:.74rem;line-height:1.08}
    .dash-tool small{margin-top:2px;font-size:.55rem;line-height:1.08;white-space:nowrap}
    .dash-tool>b{font-size:.78rem}
}

/* ── ŁapKurs 6.1.39: wspólny rytm górnej belki HOME / PKP / Lotniska ── */
.app-topbar{
    box-sizing:border-box;
    display:flex;
    align-items:center;
    gap:6px;
    min-height:40px;
    padding:max(4px,env(safe-area-inset-top,0px)) 7px 4px!important;
    border-bottom:1px solid rgba(148,163,184,.18);
    background:rgba(248,250,252,.96);
    box-shadow:0 4px 14px rgba(15,23,42,.035);
}
html[data-gp-theme="dark"] .app-topbar{
    border-bottom-color:rgba(56,189,248,.14);
    background:rgba(6,8,22,.95);
}
.app-topbar .gp-app-brand__copy small{display:block!important;margin-top:2px!important}
body.map-app .map-app-header.app-topbar,
body.airport-board-app .map-app-header.app-topbar{padding-left:6px!important;padding-right:7px!important}
@media(max-width:520px){
    .app-topbar{gap:5px;min-height:38px;padding:max(3px,env(safe-area-inset-top,0px)) 5px 3px!important}
    .site-header-top.app-topbar .site-header-actions{gap:3px}
    .site-header-top.app-topbar .city-badge{display:none!important}
}

/* DOJAZD TERAZ: wyraźna skala 0–30 min, bez kolizji z osią TY i nazwą celu. */
.traffic-eta__scale{
    position:absolute;
    inset:0 auto auto 0;
    z-index:3;
    width:100%;
    height:20px;
    pointer-events:none;
}
.traffic-eta__scale-mark{
    position:absolute;
    top:4px;
    transform:translateX(-50%);
    padding:1px 4px;
    border-radius:999px;
    background:rgba(255,255,255,.72);
    color:#94a3b8;
    font-size:.43rem;
    font-weight:850;
    line-height:1.05;
    white-space:nowrap;
}
.traffic-eta__scale-mark--15{left:var(--eta-scale-15-x,165px)}
.traffic-eta__scale-mark--30{left:var(--eta-scale-30-x,220px);color:#64748b}
html[data-gp-theme="dark"] .traffic-eta__scale-mark{background:rgba(15,23,42,.68);color:#7f91a8}
.traffic-eta__row--near-origin .traffic-eta__branch>b{
    left:18px!important;
    right:auto!important;
}
.traffic-eta__target{transform:translate(9px,-50%)!important}
@media(max-width:520px){
    .traffic-eta__scale-mark{top:5px;font-size:.41rem;padding-inline:3px}
}

/* Projektant czcionek: pięć kontroli zawsze mieści się w jednym czytelnym rzędzie. */
@media(max-width:760px){
    .lk-ui-edit-mode body{padding-bottom:190px!important}
    .lk-ui-inspector{gap:7px!important;padding:9px!important}
    .lk-ui-inspector__top{gap:7px}
    .lk-ui-inspector__badge{flex-basis:31px;width:31px;height:31px}
    .lk-ui-inspector__controls{
        display:grid!important;
        grid-template-columns:repeat(5,minmax(0,1fr))!important;
        gap:5px!important;
        width:100%!important;
        overflow:visible!important;
        padding:0!important;
    }
    .lk-ui-inspector__controls button,
    .lk-ui-inspector__controls b,
    .lk-ui-inspector__reset,
    .lk-ui-inspector__lock{
        width:100%!important;
        min-width:0!important;
        height:32px!important;
        padding:0 4px!important;
    }
    .lk-ui-inspector__lock span{display:none!important}
    .lk-ui-inspector__actions{grid-template-columns:auto auto minmax(112px,1fr)!important;gap:5px!important}
    .lk-ui-inspector__actions button{height:33px!important}
}
@media(max-width:390px){
    .lk-ui-inspector{width:calc(100vw - 12px)!important;bottom:calc(67px + env(safe-area-inset-bottom))!important}
    .lk-ui-inspector__selection span{display:none}
    .lk-ui-inspector__controls button,.lk-ui-inspector__controls b{font-size:10px!important}
}


/* ── ŁapKurs 6.1.40: ultrakompaktowy HOME + pełnoszeroki uchwyt panelu PKP ── */
/* HOME ma mieć taki sam ciasny rytm pionowy jak nagłówek map. */
.site-header-top.app-topbar{
    min-height:33px!important;
    padding-top:max(1px,env(safe-area-inset-top,0px))!important;
    padding-bottom:1px!important;
}
@media(max-width:520px){
    .site-header-top.app-topbar{
        min-height:32px!important;
        padding-top:max(1px,env(safe-area-inset-top,0px))!important;
        padding-bottom:1px!important;
    }
}

/* Kolorowy, wąski pasek zastępuje pełnoszeroki przycisk z czytelnymi strzałkami.
   Dotknięcie działa na całej szerokości; w stanie pełnym ikona obraca się w dół. */
#station-panel>.panel-drag-handle{
    position:relative;
    display:grid;
    place-items:center;
    flex:0 0 30px;
    width:calc(100% + 32px);
    height:30px;
    min-height:30px;
    margin:0 -16px 5px;
    padding:0!important;
    border:0;
    border-bottom:1px solid rgba(56,189,248,.18);
    border-radius:18px 18px 0 0;
    background:linear-gradient(90deg,rgba(6,182,212,.12),rgba(99,102,241,.12),rgba(168,85,247,.12));
    color:#0284c7;
    box-shadow:none;
    cursor:ns-resize;
    touch-action:none;
    -webkit-tap-highlight-color:transparent;
}
#station-panel>.panel-drag-handle::after{
    content:'';
    position:absolute;
    left:8%;right:8%;bottom:2px;height:2px;
    border-radius:999px;
    background:linear-gradient(90deg,transparent,#06b6d4 18%,#6366f1 55%,#a855f7 82%,transparent);
    opacity:.82;
}
#station-panel>.panel-drag-handle .panel-drag-handle__icon{
    display:block;
    transition:transform .22s ease,color .22s ease;
}
#station-panel>.panel-drag-handle[data-panel-direction="down"] .panel-drag-handle__icon{
    transform:rotate(180deg);
}
#station-panel>.panel-drag-handle:hover,
#station-panel>.panel-drag-handle:focus-visible{
    color:#2563eb;
    background:linear-gradient(90deg,rgba(6,182,212,.18),rgba(99,102,241,.18),rgba(168,85,247,.18));
    outline:none;
}
html[data-gp-theme="dark"] #station-panel>.panel-drag-handle{
    color:#67e8f9;
    border-bottom-color:rgba(56,189,248,.20);
    background:linear-gradient(90deg,rgba(8,145,178,.14),rgba(79,70,229,.16),rgba(126,34,206,.13));
}
@media(max-width:767px){
    #station-panel>.panel-drag-handle{flex-basis:32px;height:32px;min-height:32px}
}

/* ── ŁapKurs 6.1.41: dokładny szlif HOME + zwarta tablica PKP ─────────── */
/* HOME: zmniejszamy faktyczną wysokość białej belki, nie tylko jej padding.
   Użytkownik wskazał wolne pole nad i pod logo / odliczaniem / Telegramem. */
.site-header-top.app-topbar{
    min-height:30px!important;
    padding-top:max(0px,env(safe-area-inset-top,0px))!important;
    padding-bottom:0!important;
}
.site-header .gp-app-brand--dashboard{
    gap:6px!important;
}
.site-header .gp-app-brand--dashboard .gp-app-brand__mark{
    width:29px!important;
    height:29px!important;
    border-radius:9px!important;
}
.site-header .gp-app-brand--dashboard .gp-app-brand__copy small{
    margin-top:1px!important;
}
.site-header-top.app-topbar .header-refresh-status{
    min-height:26px!important;
    padding-top:2px!important;
    padding-bottom:2px!important;
}
.site-header-top.app-topbar .header-telegram-status{
    min-height:28px!important;
    padding-top:2px!important;
    padding-bottom:2px!important;
}
.site-header-top.app-topbar .header-telegram-status__icon{
    width:21px!important;
    height:21px!important;
}
.site-header-top.app-topbar .font-size-controls--header button{
    width:30px!important;
    min-width:30px!important;
    height:29px!important;
    min-height:29px!important;
}
@media(max-width:520px){
    .site-header-top.app-topbar{
        min-height:29px!important;
        padding-top:max(0px,env(safe-area-inset-top,0px))!important;
        padding-bottom:0!important;
        padding-left:4px!important;
        padding-right:4px!important;
    }
    .site-header .gp-app-brand--dashboard .gp-app-brand__mark{width:28px!important;height:28px!important}
    .site-header-top.app-topbar .header-refresh-status{min-height:25px!important;padding:1px 6px!important}
    .site-header-top.app-topbar .header-telegram-status{min-height:27px!important;padding:1px 6px 1px 4px!important}
    .site-header-top.app-topbar .font-size-controls--header button{width:29px!important;min-width:29px!important;height:28px!important;min-height:28px!important}
}

/* HOME / PKP NA ŻYWO: mniej pionu i delikatnie mniejsza typografia bazowa.
   Zmiana jest lokalna dla tablicy, więc nie rusza A-/A+ w całej aplikacji. */
.pkp-arrivals-panel{
    padding-top:6px!important;
    padding-bottom:7px!important;
}
.pkp-arrivals-head{
    margin-bottom:2px!important;
    padding-bottom:4px!important;
}
.pkp-arrivals-head__icon{
    width:34px!important;
    height:34px!important;
}
.pkp-arrivals-head__copy h2{font-size:calc(.94rem - .5px)!important}
.pkp-arrivals-head__copy p{font-size:calc(.66rem - .5px)!important}
.pkp-arrivals-head .data-mode-badge{
    padding:3px 6px!important;
    font-size:calc(.48rem - .5px)!important;
    line-height:1.08!important;
}
.dashboard-pkp-board-tabs{
    gap:3px!important;
    margin:2px 0 4px!important;
    padding:2px!important;
    border-radius:11px!important;
}
.dashboard-pkp-board-tab{
    min-height:31px!important;
    padding:4px 6px!important;
    font-size:calc(.64rem + .5px)!important;
}
.dashboard-pkp-board-tab b{
    min-width:27px!important;
    height:27px!important;
    margin-left:3px!important;
    padding:0 6px!important;
    font-size:calc(.75rem - .5px)!important;
    line-height:27px!important;
}
.pkp-arrivals-list{gap:3px!important;margin-top:1px!important}
.pkp-arrival-card{
    padding:3px 6px 3px 8px!important;
}
.pkp-arrival-card__top{
    min-height:35px!important;
    gap:5px!important;
}
.pkp-arrival-card__identity{gap:5px!important;min-width:88px!important}
.pkp-arrival-card__identity strong{font-size:calc(.94rem - .5px)!important}
.pkp-arrival-card__identity span{font-size:calc(.72rem - .5px)!important}
.pkp-arrival-card__countdown{font-size:calc(.58rem - .5px)!important;padding:3px 5px!important}
.pkp-arrival-card__platform,
.pkp-arrival-card__forecast,
.pkp-arrival-card__ontime{font-size:calc(.55rem - .5px)!important;padding:2px 4px!important}
.pkp-arrival-card__forecast em{font-size:calc(.5rem - .5px)!important}
.pkp-arrivals-note{margin-top:4px!important;padding:4px 7px!important}

@media(max-width:560px){
    .pkp-arrivals-panel{padding:6px 8px 7px!important}
    .pkp-arrivals-head{
        grid-template-columns:34px minmax(0,1fr)!important;
        gap:6px!important;
        padding-right:112px!important;
    }
    .pkp-arrivals-head .data-mode-badge{max-width:108px!important;padding:3px 5px!important}
    .dashboard-pkp-board-tab{min-height:30px!important;padding:4px 5px!important}
    .pkp-arrival-card{padding:3px 5px 3px 7px!important}
}


/* ŁapKurs 6.1.47 — czytelne komunikaty logowania */
.auth-box .error,
.auth-page .error {
    background: linear-gradient(135deg, #fff3f7 0%, #eef9ff 100%);
    color: #7a1738;
    border: 1px solid rgba(236, 72, 153, .32);
    border-left: 5px solid #0ea5e9;
    border-radius: 16px;
    padding: 13px 15px;
    margin: 12px 0;
    font-weight: 700;
    line-height: 1.45;
    box-shadow: 0 8px 22px rgba(14, 165, 233, .08);
}
.auth-box .auth-notice--success,
.auth-page .auth-notice--success {
    background: linear-gradient(135deg, #ecfeff 0%, #eff6ff 100%);
    color: #0c4a6e;
    border: 1px solid rgba(6, 182, 212, .30);
    border-left: 5px solid #06b6d4;
    border-radius: 16px;
    padding: 13px 15px;
    margin: 12px 0;
    font-weight: 700;
    line-height: 1.45;
    box-shadow: 0 8px 22px rgba(6, 182, 212, .08);
}


/* 6.1.53 — plan Free Lite + czytelne blokady */
.plan-lite-upgrade{
    margin:18px 0 22px;padding:22px;border:1px solid rgba(14,165,233,.22);
    border-radius:20px;background:linear-gradient(135deg,rgba(14,165,233,.08),rgba(16,185,129,.06));
    box-shadow:0 14px 35px rgba(15,23,42,.06)
}
.plan-lite-upgrade__kicker{display:block;margin-bottom:7px;color:#0284c7;font-size:.7rem;font-weight:900;letter-spacing:.12em}
.plan-lite-upgrade h2{margin:0;font-size:clamp(1.18rem,4vw,1.55rem);line-height:1.2}
.plan-lite-upgrade p{margin:9px 0 14px;color:#64748b;line-height:1.55}
.plan-lite-upgrade__features{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:15px}
.plan-lite-upgrade__features span{padding:7px 10px;border-radius:999px;background:rgba(148,163,184,.12);color:#475569;font-size:.76rem;font-weight:700}
.plan-lite-upgrade__cta{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:10px 16px;border-radius:13px;background:#0284c7;color:#fff!important;font-weight:900;text-decoration:none}
.bottom-nav-item--locked{opacity:.68}
.drawer-grid-item.is-plan-locked{background:rgba(14,165,233,.055)}
.plan-gate-card__lock{display:inline-grid;place-items:center;width:48px;height:48px;border-radius:15px;background:rgba(14,165,233,.10);font-size:1.35rem}
@media(max-width:640px){
    .plan-lite-upgrade{padding:17px 15px;border-radius:17px}
    .plan-lite-upgrade__cta{width:100%}
}
