:root {
    /* Paleta marki TÜV NORD — jedno źródło prawdy (wzór: tools.php). */
    --tn-blue: #001ed2;
    --tn-dark: #00003c;
    --tn-bg: #f4f6f9;
    --tn-white: #ffffff;
    --tn-border: #dce2ea;
    --tn-turquoise: #00ebc8;
    --tn-light-green: #8cf000;
    --tn-yellow: #ffeb00;
    --tn-orange: #ff7100;
    --tn-red: #fa3746;
    --tn-purple: #e43af1;
    --tn-gray-text: #666666;
    /* Layout (nowy chrome). */
    --v2-sidebar-w: 260px;
    --v2-topbar-h: 60px;
}

* { box-sizing: border-box; }
/* Standard marki: zero zaokrągleń — wszystko kanciaste. */
*, *::before, *::after { border-radius: 0 !important; }
html {
    height: 100%;
}
body {
    margin: 0;
    min-height: 100%;
    min-height: 100dvh;
    display: flex;
    flex-direction: column;
    font-family: "Segoe UI", Tahoma, Arial, sans-serif;
    background: var(--tn-bg);
    color: var(--tn-dark);
}

/* ═══════════════════════════════════════════════════════════════════
   NOWY LAYOUT (wzór tools.php): lewy sidebar + górny niebieski pasek.
   Tylko w katalogu migracja (nowy serwer). Chrome dawnego headera niżej
   pozostaje w pliku, ale nie jest już renderowany.
   ═══════════════════════════════════════════════════════════════════ */

/* Sidebar */
.v2-sidebar {
    position: fixed;
    top: 0;
    left: 0;
    width: var(--v2-sidebar-w);
    height: 100vh;
    height: 100dvh;
    background: var(--tn-white);
    border-right: 1px solid var(--tn-border);
    box-shadow: 2px 0 14px rgba(0, 0, 60, 0.04);
    display: flex;
    flex-direction: column;
    z-index: 1000;
    overflow: visible;
}
.v2-sidebar-head {
    height: var(--v2-topbar-h);
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 0 20px;
    border-bottom: 1px solid var(--tn-border);
}
.v2-sidebar-logo {
    display: flex;
    align-items: center;
    color: var(--tn-blue);
    text-decoration: none;
    line-height: 0;
}
.v2-sidebar-logo svg {
    height: 24px;
    width: auto;
    max-width: 100%;
    display: block;
}
.v2-sidebar-close {
    display: none;
    margin-left: auto;
    border: none;
    background: transparent;
    color: var(--tn-dark);
    font-size: 26px;
    line-height: 1;
    cursor: pointer;
    padding: 0 4px;
}

.v2-sidebar-nav {
    flex: 1 1 auto;
    overflow-y: auto;
    overflow-x: hidden;
    padding: 12px 0;
}
.v2-sidebar-nav::-webkit-scrollbar { width: 8px; }
.v2-sidebar-nav::-webkit-scrollbar-thumb { background: #d7dee8; }
.v2-sidebar-menu {
    list-style: none;
    margin: 0;
    padding: 0;
}
.v2-sidebar-item { position: relative; }

/* Kolor sygnałowy (pionowy akcent) — POJAWIA SIĘ TYLKO na aktywnym module (gdy jesteśmy w środku).
   Każdy moduł ma inny kolor marki; nieaktywne pozycje nie mają paska. */
.v2-sidebar-menu > li:nth-child(7n+1) { --accent: var(--tn-blue); }
.v2-sidebar-menu > li:nth-child(7n+2) { --accent: var(--tn-turquoise); }
.v2-sidebar-menu > li:nth-child(7n+3) { --accent: var(--tn-light-green); }
.v2-sidebar-menu > li:nth-child(7n+4) { --accent: var(--tn-yellow); }
.v2-sidebar-menu > li:nth-child(7n+5) { --accent: var(--tn-orange); }
.v2-sidebar-menu > li:nth-child(7n+6) { --accent: var(--tn-red); }
.v2-sidebar-menu > li:nth-child(7n+7) { --accent: var(--tn-purple); }

.v2-sidebar-link-row { display: flex; align-items: stretch; }

.v2-sidebar-link {
    display: flex;
    align-items: center;
    gap: 10px;
    flex: 1 1 auto;
    min-width: 0;
    padding: 12px 22px;
    border: none;
    border-left: 4px solid transparent; /* kolor sygnałowy tylko na aktywnym module (niżej) */
    background: transparent;
    color: #3d4657;
    font-family: inherit;
    font-size: 14px;
    font-weight: 600;
    text-align: left;
    text-decoration: none;
    cursor: pointer;
    transition: background 0.12s ease, color 0.12s ease;
}
.v2-sidebar-link-label { flex: 1 1 auto; min-width: 0; }
.v2-sidebar-icon { flex: 0 0 auto; width: 19px; height: 19px; opacity: 0.9; }
.v2-sidebar-link:hover {
    background: rgba(0, 30, 210, 0.05);
    color: var(--tn-blue);
}
/* Aktywny moduł: wygląda DOKŁADNIE jak po najechaniu (to samo tło + niebieski tekst),
   a dodatkowo z lewej pojawia się pionowa kreska w kolorze sygnałowym modułu. */
.v2-sidebar-link.is-active {
    background: rgba(0, 30, 210, 0.05);
    color: var(--tn-blue);
    border-left-color: var(--accent);
}
/* Tło obejmuje cały wiersz (etykieta + strzałka), żeby aktywny/hover wyglądał jak jeden element. */
.v2-sidebar-link-row:hover,
.v2-sidebar-item.is-module-active > .v2-sidebar-link-row {
    background: rgba(0, 30, 210, 0.05);
}
.v2-sidebar-link-row:hover > .v2-sidebar-link,
.v2-sidebar-item.is-module-active > .v2-sidebar-link-row > .v2-sidebar-link.is-active {
    background: transparent;
}

/* Osobny przycisk „strzałka" rozwija flyout; klik w etykietę nawiguje do 1. zakładki modułu. */
.v2-sidebar-caret-btn {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 42px;
    border: none;
    background: transparent;
    color: #3d4657;
    cursor: pointer;
    transition: background 0.12s ease, color 0.12s ease;
}
.v2-sidebar-caret-btn:hover { background: rgba(0, 30, 210, 0.06); color: var(--tn-blue); }
.v2-sidebar-caret {
    width: 0;
    height: 0;
    border-top: 5px solid transparent;
    border-bottom: 5px solid transparent;
    border-left: 6px solid currentColor;
    opacity: 0.6;
    transition: transform 0.15s ease;
}
.v2-sidebar-item.is-open .v2-sidebar-caret {
    transform: rotate(90deg);
    opacity: 0.9;
}

/* Flyout (desktop): panel na prawo od sidebara; JS ustawia top/left/max-height. */
.v2-sidebar-flyout {
    display: none;
    position: fixed;
    z-index: 1100;
    min-width: 248px;
    max-width: 340px;
    background: var(--tn-white);
    border: 1px solid var(--tn-border);
    border-top: 4px solid var(--tn-blue);
    box-shadow: 0 14px 34px rgba(0, 0, 60, 0.18);
    overflow-y: auto;
    padding: 6px 0 8px;
}
.v2-sidebar-item.is-open > .v2-sidebar-flyout { display: block; }
.v2-sidebar-flyout-head {
    display: block;
    padding: 10px 18px;
    margin-bottom: 4px;
    border-bottom: 1px solid var(--tn-border);
    color: var(--tn-dark);
    font-size: 13px;
    font-weight: 800;
    letter-spacing: 0.03em;
    text-transform: uppercase;
    text-decoration: none;
}
.v2-sidebar-flyout-head:hover { color: var(--tn-blue); }
.v2-sidebar-flyout-link {
    display: block;
    padding: 9px 18px;
    color: #33405a;
    font-size: 13.5px;
    font-weight: 600;
    text-decoration: none;
}
.v2-sidebar-flyout-link:hover { background: #eef2ff; color: var(--tn-blue); }
.v2-sidebar-flyout-link.is-active { background: #e6ecff; color: var(--tn-blue); }
.v2-sidebar-flyout-link--sub { padding-left: 30px; font-size: 13px; }
.v2-sidebar-flyout-group { padding: 4px 0; }
.v2-sidebar-flyout-group-label {
    padding: 8px 18px 4px;
    color: var(--tn-gray-text);
    font-size: 11px;
    font-weight: 800;
    letter-spacing: 0.06em;
    text-transform: uppercase;
}
.v2-sidebar-flyout-group.is-active .v2-sidebar-flyout-group-label { color: var(--tn-blue); }

/* Dolna sekcja sidebara: box „Aplikacja mobilna" (przeniesiony z głównego dashboardu). */
.v2-sidebar-foot {
    flex: 0 0 auto;
    padding: 12px;
    border-top: 1px solid var(--tn-border);
}
.v2-sidebar-foot .v2-mobile-connect-hero {
    width: 100%;
    min-width: 0;
    max-width: none;
    margin: 0;
}

/* Główna kolumna: pasek + treść + stopka, przesunięte o szerokość sidebara. */
.v2-shell-main {
    margin-left: var(--v2-sidebar-w);
    min-height: 100vh;
    min-height: 100dvh;
    display: flex;
    flex-direction: column;
}

/* Górny niebieski pasek */
.v2-topbar {
    position: sticky;
    top: 0;
    z-index: 900;
    display: flex;
    align-items: center;
    gap: 16px;
    min-height: var(--v2-topbar-h);
    padding: 8px 26px;
    background: var(--tn-blue);
    color: #fff;
    box-shadow: 0 2px 12px rgba(0, 0, 60, 0.14);
}
.v2-topbar-title {
    margin: 0;
    margin-right: auto;
    font-size: 18px;
    font-weight: 700;
    letter-spacing: 0.2px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 46vw;
}
.v2-topbar-burger {
    display: none;
    flex-direction: column;
    justify-content: center;
    gap: 4px;
    width: 38px;
    height: 34px;
    padding: 7px;
    border: none;
    background: rgba(255, 255, 255, 0.14);
    cursor: pointer;
}
.v2-topbar-burger span {
    display: block;
    height: 2px;
    width: 100%;
    background: #fff;
}

/* Podkładka pod szufladę (mobile) */
.v2-sidebar-backdrop {
    display: none;
    position: fixed;
    inset: 0;
    z-index: 950;
    background: rgba(0, 0, 60, 0.42);
}

@media (max-width: 767.98px) {
    .v2-sidebar {
        transform: translateX(-100%);
        transition: transform 0.22s ease;
        width: min(84vw, 300px);
    }
    body.v2-sidebar-open .v2-sidebar { transform: translateX(0); }
    .v2-sidebar-close { display: block; }
    .v2-shell-main { margin-left: 0; }
    .v2-topbar-burger { display: flex; }
    body.v2-sidebar-open .v2-sidebar-backdrop { display: block; }
    /* Flyout w miejscu (akordeon) — bez pozycji fixed. */
    .v2-sidebar-flyout {
        position: static !important;
        top: auto !important;
        left: auto !important;
        max-height: none !important;
        min-width: 0;
        max-width: none;
        box-shadow: none;
        border: none;
        border-top: none;
        background: #f7f9fc;
        padding: 2px 0 6px;
    }
    .v2-sidebar-flyout-head { padding-left: 26px; }
    .v2-sidebar-flyout-link { padding-left: 34px; }
    .v2-sidebar-flyout-link--sub { padding-left: 44px; }
    .v2-topbar-title { max-width: none; font-size: 16px; }
    .v2-footer { left: 0; }
}

.v2-shell-tools {
    grid-area: tools;
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 10px;
    min-width: 0;
    overflow: visible;
}
/* Wspólny wygląd pól w nagłówku (wyszukiwarka + symulacja) */
.v2-shell-field {
    display: flex;
    align-items: center;
    min-width: 0;
}
.v2-shell-field-control {
    position: relative;
    height: 30px;
    width: 100%;
}
.v2-shell-field-input {
    width: 100%;
    height: 30px;
    box-sizing: border-box;
    margin: 0;
    padding: 0 12px;
    border: 1px solid rgba(255, 255, 255, 0.35);
    border-radius: 16px;
    background: rgba(255, 255, 255, 0.12);
    color: #fff;
    font-size: 13px;
    font-family: inherit;
    line-height: 1.2;
    transition: background 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease, color 0.15s ease;
}
.v2-shell-field-input::placeholder { color: rgba(255, 255, 255, 0.72); }
.v2-shell-field-input:hover {
    border-color: rgba(255, 255, 255, 0.5);
    background: rgba(255, 255, 255, 0.16);
}
.v2-shell-field-input:focus {
    outline: none;
    background: #fff;
    color: var(--tn-dark);
    border-color: #00ebc8;
    box-shadow: 0 0 0 3px rgba(0, 235, 200, 0.22);
}
.v2-shell-field-input:focus::placeholder { color: #9ca3af; }
.v2-shell-field-input--select {
    padding-right: 30px;
    cursor: pointer;
    appearance: none;
    -webkit-appearance: none;
    background-image:
        linear-gradient(45deg, transparent 50%, rgba(255, 255, 255, 0.9) 50%),
        linear-gradient(135deg, rgba(255, 255, 255, 0.9) 50%, transparent 50%);
    background-position:
        calc(100% - 16px) 12px,
        calc(100% - 11px) 12px;
    background-size: 5px 5px, 5px 5px;
    background-repeat: no-repeat;
}
.v2-shell-field-input--select:focus {
    background-image:
        linear-gradient(45deg, transparent 50%, var(--tn-blue) 50%),
        linear-gradient(135deg, var(--tn-blue) 50%, transparent 50%);
}
.v2-shell-field-input--select option {
    color: var(--tn-dark);
    background: #fff;
}
.v2-shell-field--select {
    flex: 0 1 220px;
    min-width: 180px;
    max-width: 260px;
}
.v2-shell-field--search {
    flex: 1 1 180px;
    min-width: 140px;
    max-width: 260px;
}
.v2-sim-form {
    margin: 0;
    min-width: 0;
}

.v2-shell-user {
    grid-area: user;
    display: flex;
    align-items: center;
    gap: 10px;
    flex-shrink: 0;
}
.v2-shell-user-meta {
    text-align: right;
    line-height: 1.25;
    display: none;
}
.v2-shell-user-name {
    display: block;
    font-weight: 600;
    font-size: 13px;
    white-space: nowrap;
    max-width: 160px;
    overflow: hidden;
    text-overflow: ellipsis;
}
@media (min-width: 1200px) {
    .v2-shell-user-meta { display: block; }
}

.v2-table-perm-matrix select.v2-perm-select {
    width: 100%;
    min-width: 130px;
    max-width: 180px;
    font-size: 13px;
    padding: 6px 8px;
    border: 1px solid var(--tn-border);
    border-radius: 4px;
    background: #fff;
}
.v2-perm-col-person { min-width: 200px; }
.v2-perm-login { display: block; font-size: 12px; margin-top: 2px; }
.v2-perm-global-role { font-weight: 600; }
.v2-perm-form-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 12px 20px;
    margin-top: 16px;
}
.v2-btn-primary {
    background: var(--tn-blue);
    color: #fff;
    border: none;
}
.v2-btn-primary:hover { filter: brightness(1.08); }
.v2-btn-muted {
    background: #e5e7eb;
    color: #374151;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    padding: 8px 14px;
    border-radius: 6px;
    font-weight: 600;
}

/* Wyszukiwarka pojazdów w nagłówku (moduł Flota) */
.v2-header-search {
    position: relative;
    width: 100%;
    max-width: 100%;
}
.v2-header-search-field {
    position: relative;
    display: flex;
    align-items: center;
}
.v2-header-search-input {
    padding-left: 32px;
}
.v2-header-search-icon {
    position: absolute;
    left: 11px;
    top: 50%;
    width: 12px;
    height: 12px;
    margin-top: -6px;
    border: 2px solid rgba(255, 255, 255, 0.75);
    border-radius: 50%;
    pointer-events: none;
    box-sizing: border-box;
}
.v2-header-search-icon::after {
    content: '';
    position: absolute;
    width: 6px;
    height: 2px;
    background: rgba(255, 255, 255, 0.75);
    right: -5px;
    bottom: -2px;
    transform: rotate(45deg);
    border-radius: 1px;
}
.v2-header-search-field:focus-within .v2-header-search-icon {
    border-color: var(--tn-blue);
}
.v2-header-search-field:focus-within .v2-header-search-icon::after {
    background: var(--tn-blue);
}
.v2-header-search-results {
    display: none;
    position: absolute;
    left: 0;
    right: 0;
    top: calc(100% + 8px);
    margin: 0;
    padding: 4px 0;
    list-style: none;
    background: #fff;
    border-radius: 8px;
    box-shadow: 0 10px 28px rgba(0, 0, 60, 0.18);
    max-height: 320px;
    overflow-x: hidden;
    overflow-y: auto;
    z-index: 10050;
    border: 1px solid var(--tn-border);
}
.v2-header-search-results.is-open {
    display: block;
}
.v2-hs-item {
    display: flex;
    flex-direction: column;
    gap: 2px;
    padding: 10px 14px;
    border-bottom: 1px solid #eef1f6;
    text-decoration: none;
    color: inherit;
    cursor: pointer;
    transition: background 0.1s ease, border-color 0.1s ease;
    border-left: 4px solid transparent;
}
.v2-hs-item:hover,
.v2-hs-item:focus {
    background: #f0f4ff;
    border-left-color: #00ebc8;
    outline: none;
}
.v2-hs-item:last-child { border-bottom: none; }
.v2-hs-main {
    font-weight: 700;
    font-size: 14px;
    color: var(--tn-blue);
    line-height: 1.3;
}
.v2-hs-sub {
    font-size: 12px;
    color: #6b7280;
    line-height: 1.3;
}
.v2-hs-item.future .v2-hs-main { color: #059669; }
.v2-hs-item.past .v2-hs-main {
    color: #9ca3af;
    text-decoration: line-through;
}
.v2-hs-item.past .v2-hs-sub { color: #d1d5db; }
.v2-hs-empty {
    padding: 14px;
    text-align: center;
    color: #9ca3af;
    font-style: italic;
    font-size: 13px;
}
.v2-role-badge {
    display: inline-block;
    margin-top: 2px;
    padding: 1px 6px;
    border-radius: 3px;
    font-size: 0.7rem;
    font-weight: 700;
    background: #00ebc8;
    color: var(--tn-dark);
}
.v2-user-login-hint {
    display: block;
    font-size: 0.68rem;
    opacity: 0.85;
}
.v2-user-avatar {
    width: 32px;
    height: 32px;
    border-radius: 4px;
    object-fit: cover;
    border: 2px solid rgba(255, 255, 255, 0.25);
}
.v2-user-avatar-placeholder {
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(255, 255, 255, 0.15);
    font-weight: 700;
    font-size: 0.85rem;
}
.v2-simulation-banner {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 12px;
    padding: 8px 24px;
    background: #7c2d12;
    color: #fff;
    font-size: 13px;
}
.v2-simulation-banner-text { min-width: 0; }
.v2-simulation-banner-role { opacity: 0.9; font-weight: 400; }
.v2-sim-exit {
    padding: 4px 10px;
    border-radius: 4px;
    background: #fff;
    color: #7c2d12;
    text-decoration: none;
    font-weight: 700;
    white-space: nowrap;
}
button.v2-sim-exit {
    border: none;
    cursor: pointer;
    font: inherit;
}
.v2-sim-exit-form {
    margin: 0;
    flex-shrink: 0;
}

.v2-grid--import-hub {
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: 16px;
}
.v2-import-card h3 {
    margin: 0 0 8px;
    font-size: 1.05rem;
    color: var(--tn-dark);
}
.v2-import-panel {
    max-width: 820px;
    margin: 0 auto;
}
.v2-import-panel--kinto {
    max-width: 960px;
}
.v2-import-info {
    background: #f8fafc;
    border: 1px solid var(--tn-border);
    border-radius: 8px;
    padding: 14px 16px;
    margin-bottom: 20px;
    font-size: 13px;
    color: #4b5563;
}
.v2-import-info ul {
    margin: 8px 0 0;
    padding-left: 1.2rem;
}
.v2-import-drop {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 8px;
    min-height: 140px;
    border: 2px dashed #c5cee0;
    border-radius: 8px;
    background: #fafbfc;
    cursor: pointer;
    text-align: center;
    padding: 24px;
    transition: border-color 0.15s, background 0.15s;
}
.v2-import-drop:hover,
.v2-import-drop.is-drag {
    border-color: var(--tn-blue);
    background: #f0f4ff;
}
.v2-import-drop input[type="file"] {
    position: absolute;
    width: 0;
    height: 0;
    opacity: 0;
}
.v2-import-drop-icon {
    font-size: 2.5rem;
    line-height: 1;
}
.v2-import-drop-text {
    font-size: 13px;
    color: #6b7280;
}
.v2-import-form {
    display: flex;
    flex-direction: column;
    gap: 16px;
}
.v2-import-form--row {
    flex-direction: row;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: 12px;
}
.v2-import-form--row .v2-field--grow {
    flex: 1 1 200px;
}
.v2-import-form--row .v2-field--actions {
    flex: 0 0 auto;
}
.v2-import-submit {
    align-self: stretch;
}
.v2-import-error-list {
    margin: 10px 0 0;
    padding-left: 1.2rem;
    font-size: 12px;
    font-weight: 400;
    max-height: 200px;
    overflow-y: auto;
}
.v2-import-preview-title {
    margin: 24px 0 12px;
    font-size: 1rem;
    color: var(--tn-blue);
}
.v2-import-note {
    margin-top: 12px;
    font-size: 12px;
}

.v2-content {
    flex: 1 0 auto;
    width: 100%;
    max-width: 1860px;
    margin: 20px auto;
    padding: 0 24px 40px;
}
.v2-content:has(.v2-vehicle-page-wrap) {
    max-width: 1680px;
}

.v2-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 14px;
}
.v2-card {
    background: var(--tn-white);
    border: 1px solid var(--tn-border);
    border-radius: 10px;
    padding: 14px;
}
.v2-card h3 { margin: 0 0 8px; font-size: 16px; }
.v2-kpi { font-size: 28px; color: var(--tn-blue); font-weight: 700; margin: 0; }

.v2-kpi-strip {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
    gap: 10px;
    padding: 14px 16px;
    background: #fff;
    border-bottom: 1px solid var(--tn-border);
}
.v2-kpi-tile {
    display: flex;
    flex-direction: column;
    gap: 4px;
    padding: 10px 12px;
    border: 1px solid var(--tn-border);
    border-radius: 8px;
    background: #fafbff;
    min-height: 58px;
}
.v2-kpi-tile-label {
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: #6b7280;
}
.v2-kpi-tile-hint {
    font-size: 10px;
    font-weight: 500;
    color: #9ca3af;
    text-transform: none;
    letter-spacing: 0;
    line-height: 1.25;
}

.v2-grid--fleet-driver {
    grid-template-columns: minmax(0, 2fr) minmax(0, 1fr);
    gap: 14px;
    align-items: start;
}
@media (max-width: 960px) {
    .v2-grid--fleet-driver { grid-template-columns: 1fr; }
}
.v2-fleet-driver-docs-sections {
    display: flex;
    flex-direction: column;
    gap: 16px;
}
.v2-fleet-driver-docs-heading {
    margin: 0 0 8px;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: #6b7280;
}
.v2-fleet-driver-doc-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.v2-fleet-driver-doc-link {
    display: flex;
    flex-direction: column;
    gap: 2px;
    padding: 10px 12px;
    border: 1px solid var(--tn-border);
    border-radius: 8px;
    background: #fafbff;
    text-decoration: none;
    color: inherit;
    transition: border-color 0.15s, background 0.15s;
}
.v2-fleet-driver-doc-link:hover {
    border-color: var(--tn-blue);
    background: #fff;
}
.v2-fleet-driver-doc-link.is-disabled {
    opacity: 0.75;
    cursor: default;
}
.v2-fleet-driver-doc-link-title {
    font-weight: 600;
    font-size: 14px;
    color: var(--tn-blue);
}
.v2-fleet-driver-doc-link.is-disabled .v2-fleet-driver-doc-link-title {
    color: #374151;
}

/* Start — panel kierowcy (instrukcje usługodawcy + karty/aplikacje) */
.v2-dashboard {
    display: flex;
    flex-direction: column;
    gap: 1.35rem;
}
.v2-dashboard-section {
    margin: 0;
}
.v2-dashboard-section__head {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.65rem 1rem;
    margin-bottom: 0.75rem;
}
.v2-dashboard-section__title {
    margin: 0;
    font-size: 1.05rem;
    font-weight: 700;
    color: var(--tn-navy, #00003c);
    letter-spacing: -0.01em;
}
/* Kafelek aplikacji mobilnej (Start / Moje dane) */
.v2-mobile-connect-hero {
    width: 25%;
    min-width: 14.5rem;
    max-width: 100%;
    margin-left: auto;
    margin-right: 0;
    margin-bottom: 0.65rem;
    background: linear-gradient(135deg, #00003c 0%, #001ed2 55%, #0a4d8c 100%);
    border-radius: 8px;
    color: #fff;
    padding: 0.55rem 0.7rem;
    box-shadow: 0 3px 12px rgba(0, 0, 60, 0.16);
}
.v2-mobile-connect-hero__inner {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 0.4rem;
}
.v2-mobile-connect-hero__title {
    margin: 0;
    font-size: 0.88rem;
    font-weight: 700;
    line-height: 1.25;
    color: #fff;
}
.v2-mobile-connect-hero__lead {
    margin: 0;
    font-size: 0.76rem;
    line-height: 1.35;
    color: rgba(255, 255, 255, 0.9);
    max-width: none;
}
.v2-mobile-connect-hero__link {
    color: #fff;
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 2px;
}
.v2-mobile-connect-hero__link:hover {
    color: #fff;
    opacity: 0.92;
}
.v2-mobile-connect-hero__alert {
    margin: 0;
    font-size: 0.72rem;
    padding: 0.35rem 0.45rem;
}
.v2-mobile-connect-btn {
    flex-shrink: 0;
    width: 100%;
    min-width: 0;
    padding: 0.42rem 0.55rem;
    font-size: 0.8rem;
    font-weight: 700;
    text-align: center;
}
.v2-modal--mobile-pair {
    align-items: flex-start;
    padding-top: 4vh;
    overflow-y: auto;
}
.v2-modal-box--mobile-pair {
    max-width: 560px;
    width: calc(100% - 24px);
    margin: 0 auto 2rem;
}
.v2-mobile-pair-steps {
    margin: 0 0 1rem;
    padding-left: 1.25rem;
    line-height: 1.45;
    font-size: 0.92rem;
}
.v2-mobile-pair-steps li + li { margin-top: 0.45rem; }
.v2-mobile-pair-app-link {
    font-weight: 700;
    word-break: break-all;
}

/* Modal parowania — kroki instalacji na telefonie (Android / iPhone) */
.v2-mobile-pair-phase { margin-bottom: 1.1rem; }
.v2-mobile-pair-phase:last-of-type { margin-bottom: 0.5rem; }
.v2-mobile-pair-phase__title {
    margin: 0 0 0.4rem;
    font-weight: 700;
    font-size: 0.95rem;
    color: var(--tn-dark);
}
.v2-mobile-pair-phase__lead {
    margin: 0.45rem 0 0.3rem;
    font-size: 0.88rem;
    color: #374151;
}
.v2-mobile-pair-os {
    border: 1px solid var(--tn-border);
    border-radius: 8px;
    background: #f8fafc;
    overflow: hidden;
}
.v2-mobile-pair-os + .v2-mobile-pair-os { margin-top: 0.5rem; }
.v2-mobile-pair-os__summary {
    cursor: pointer;
    padding: 0.55rem 0.75rem;
    font-weight: 700;
    font-size: 0.9rem;
    color: var(--tn-blue);
    list-style: none;
    display: flex;
    align-items: center;
    gap: 0.45rem;
}
.v2-mobile-pair-os__summary::-webkit-details-marker { display: none; }
.v2-mobile-pair-os__summary::before {
    content: "\25B8"; /* ▸ */
    font-size: 0.8rem;
    transition: transform 0.15s ease;
}
.v2-mobile-pair-os[open] .v2-mobile-pair-os__summary::before { transform: rotate(90deg); }
.v2-mobile-pair-os[open] .v2-mobile-pair-os__summary { border-bottom: 1px solid var(--tn-border); }
.v2-mobile-pair-os__steps {
    margin: 0;
    padding: 0.6rem 0.75rem 0.7rem 1.85rem;
    font-size: 0.86rem;
    line-height: 1.5;
    color: #374151;
}
.v2-mobile-pair-os__steps li + li { margin-top: 0.32rem; }
.v2-mobile-pair-lastsync {
    margin: 0.25rem 0 0;
    color: #33436b;
}
.v2-mobile-pair-lastsync strong { color: var(--tn-dark); }
.v2-mobile-pair-actions {
    margin: 1rem 0;
    flex-wrap: wrap;
    gap: 0.5rem;
}
.v2-mobile-pair-result {
    margin-top: 1rem;
    padding-top: 1rem;
    border-top: 1px solid var(--tn-border);
}
.v2-mobile-pair-qr-wrap {
    display: flex;
    justify-content: center;
    align-items: center;
    margin: 0 auto 0.75rem;
    padding: 12px;
    background: #fff;
    border: 1px solid var(--tn-border, #e2e8f0);
    border-radius: 10px;
    width: fit-content;
    min-width: 264px;
    min-height: 264px;
    box-sizing: border-box;
}
.v2-mobile-pair-qr-loader {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.75rem;
    width: 240px;
    height: 240px;
}
.v2-mobile-pair-qr-loader[hidden] { display: none !important; }
.v2-mobile-pair-qr-spinner {
    width: 36px;
    height: 36px;
    border: 3px solid #e2e8f0;
    border-top-color: var(--tn-blue, #001ed2);
    border-radius: 50%;
    animation: v2-spin 0.8s linear infinite;
}
.v2-mobile-pair-qr-img {
    display: block;
    width: 240px;
    height: 240px;
    image-rendering: pixelated;
}
.v2-mobile-pair-qr-img[hidden] { display: none !important; }
.v2-mobile-pair-exp { margin: 0.35rem 0 0; text-align: center; }
@media (max-width: 1100px) {
    .v2-mobile-connect-hero {
        width: 33%;
        min-width: 12.5rem;
    }
}
@media (max-width: 720px) {
    .v2-mobile-connect-hero {
        width: min(100%, 18rem);
    }
}
.v2-dash-driver__box {
    background: var(--tn-white);
    border: 1px solid var(--tn-border);
    border-radius: 12px;
    padding: 16px 18px;
    box-shadow: 0 2px 10px rgba(0, 0, 60, 0.04);
}
.v2-dash-driver__box-title {
    margin: 0 0 8px;
    font-size: 1rem;
    font-weight: 700;
    color: var(--tn-dark);
}
.v2-dash-driver__grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 1rem;
    align-items: start;
}
@media (max-width: 960px) {
    .v2-dash-driver__grid { grid-template-columns: 1fr; }
}
.v2-dash-driver__col {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    min-width: 0;
}
.v2-dash-driver-mileage {
    margin: 0;
}
.v2-dash-driver-mileage .v2-chart-canvas {
    min-height: 220px;
    height: 280px;
}

/* Pasek kierowcy (legacy downloads-bar) */
.v2-dash-driver-shell {
    display: flex;
    flex-direction: column;
    gap: 0;
    margin-top: -20px; /* dociśnięcie niebieskiego paska do górnego paska (kasuje odstęp .v2-content) */
}
.v2-dash-driver-bar-wrap {
    margin: 0;
}
.v2-dash-driver-stickytop {
    position: sticky;
    top: var(--v2-topbar-h);
    z-index: 130;
    background: var(--tn-bg);
    box-shadow: 0 8px 10px -10px rgba(0, 0, 60, 0.35);
}
@media (max-width: 768px) {
    .v2-dash-driver-stickytop { position: static; box-shadow: none; }
}
.v2-dash-driver-subnav {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px 14px;
    margin-top: 10px;
    padding: 10px 14px;
    background: var(--tn-white);
    border: 1px solid var(--tn-border);
    border-radius: 10px;
    box-shadow: 0 2px 8px rgba(0, 0, 60, 0.05);
    position: static;
}
.v2-dash-driver-subnav__tabs {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    flex: 1 1 auto;
    min-width: 0;
}
.v2-dash-driver-subnav__tabs a.v2-segmented-btn {
    flex: 0 0 auto;
    white-space: nowrap;
    text-decoration: none;
    padding: 9px 16px;
    font-size: 0.9rem;
    font-weight: 600;
    color: var(--tn-navy, #00003c);
    background: #eef2fb;
    border: 1px solid var(--tn-border);
    border-radius: 8px;
    transition: background 0.12s, color 0.12s, border-color 0.12s;
}
.v2-dash-driver-subnav__tabs a.v2-segmented-btn:hover {
    background: #e0e7f7;
    color: var(--tn-blue, #001ed2);
    border-color: #c3d0ee;
}
.v2-dash-driver-subnav__tabs a.v2-segmented-btn.is-active {
    background: var(--tn-blue, #001ed2);
    color: #fff;
    border-color: var(--tn-blue, #001ed2);
    box-shadow: 0 2px 6px rgba(0, 30, 210, 0.25);
}
.v2-dash-driver-subnav__docs {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    flex-basis: 100%;
    margin-top: 8px;
    padding-top: 10px;
    border-top: 1px dashed var(--tn-border);
}
.v2-dash-driver-subnav__docs-label {
    font-size: 0.78rem;
    font-weight: 700;
    color: #64748b;
    margin-right: 2px;
}
.v2-drv-doc {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    white-space: nowrap;
    text-decoration: none;
    padding: 8px 13px;
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--tn-blue, #001ed2);
    background: #fff;
    border: 1px solid #c3d0ee;
    border-radius: 8px;
    transition: background 0.12s, border-color 0.12s;
}
.v2-drv-doc:hover {
    background: #eef2fb;
    border-color: var(--tn-blue, #001ed2);
}
/* Zakładka kierowcy „Pojazd" — czytelna prezentacja danych (nie formularz operatora). */
.v2-dash-driver-veh__hero { margin-bottom: 1rem; padding-bottom: 0.9rem; border-bottom: 1px solid var(--tn-border); }
.v2-dash-driver-veh__reg { font-size: 1.55rem; font-weight: 800; letter-spacing: 1px; color: var(--tn-navy, #00003c); }
.v2-dash-driver-veh__name { font-size: 1.05rem; color: #475569; margin-top: 2px; }
.v2-dash-driver-veh__badges { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
.v2-dash-driver-veh__badge { font-size: 0.78rem; font-weight: 600; color: var(--tn-blue, #001ed2); background: #eef2fb; border: 1px solid #dce4f5; border-radius: 999px; padding: 3px 11px; }
.v2-dash-driver-veh__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 1.1rem 2rem; }
.v2-dash-driver-veh__h { margin: 0 0 0.4rem; font-size: 0.8rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; color: #64748b; }
.v2-dash-driver-veh__dl { margin: 0; }
.v2-dash-driver-veh__dl > div { display: flex; justify-content: space-between; align-items: baseline; gap: 1rem; padding: 6px 0; border-bottom: 1px dashed #eef1f6; }
.v2-dash-driver-veh__dl dt { color: #64748b; font-size: 0.88rem; }
.v2-dash-driver-veh__dl dd { margin: 0; font-weight: 600; color: var(--tn-navy, #00003c); text-align: right; }
.v2-dash-driver-veh__mono { font-family: ui-monospace, Consolas, "Courier New", monospace; font-size: 0.85rem; }
.v2-dash-driver-veh__hl dd { color: var(--tn-blue, #001ed2); font-weight: 700; }
.v2-dash-driver-veh__notes { margin-top: 1.25rem; display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 1rem 2rem; }
.v2-dash-driver-veh__notes p { margin: 0; font-size: 0.9rem; color: #334155; white-space: pre-line; }
.v2-dash-driver-subnav__label {
    flex-shrink: 0;
    font-size: 0.82rem;
    font-weight: 700;
    color: var(--tn-navy, #00003c);
    letter-spacing: 0.02em;
}
.v2-dash-driver-subnav__segmented {
    flex: 1 1 200px;
    min-width: 0;
}
.v2-dash-driver-subnav__segmented .v2-segmented-btn {
    font-size: 0.82rem;
    padding: 7px 12px;
}
.v2-dash-driver-subnav--pulse {
    border: 2px solid var(--tn-blue);
    animation: v2-dash-subnav-pulse 2s ease-in-out infinite;
}
@keyframes v2-dash-subnav-pulse {
    0%, 100% {
        box-shadow: 0 0 0 0 rgba(0, 30, 210, 0.45), 0 2px 8px rgba(0, 0, 60, 0.08);
        border-color: var(--tn-blue);
    }
    50% {
        box-shadow: 0 0 0 8px rgba(0, 235, 200, 0.22), 0 4px 16px rgba(0, 30, 210, 0.2);
        border-color: #00ebc8;
    }
}
@media (prefers-reduced-motion: reduce) {
    .v2-dash-driver-subnav--pulse {
        animation: none;
        box-shadow: 0 0 0 3px rgba(0, 30, 210, 0.18);
    }
}
.v2-dash-driver-insurance__title,
.v2-dash-driver-insurance__lead,
.v2-dash-driver-insurance__empty {
    text-align: center;
}
.v2-dash-driver-insurance-list {
    list-style: none;
    margin: 1rem auto 0;
    padding: 0;
    max-width: 560px;
    display: flex;
    flex-direction: column;
    gap: 10px;
}
.v2-dash-driver-insurance-item {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 10px 14px;
    padding: 12px 14px;
    border: 1px solid var(--tn-border);
    border-radius: 10px;
    background: #fafbff;
}
.v2-dash-driver-insurance-item.is-active {
    border-color: #86efac;
    border-left: 4px solid #16a34a;
    background: linear-gradient(90deg, #f0fdf4 0%, #fafbff 100%);
    box-shadow: 0 2px 10px rgba(22, 163, 74, 0.12);
}
.v2-dash-driver-insurance-item__main {
    display: flex;
    flex-direction: column;
    gap: 3px;
    min-width: 0;
    flex: 1 1 200px;
}
.v2-dash-driver-insurance-item__type {
    font-weight: 700;
    font-size: 0.95rem;
    color: var(--tn-dark);
}
.v2-dash-driver-insurance-item__dates {
    font-size: 0.82rem;
    color: #6b7280;
}
.v2-dash-driver-insurance-item__action {
    flex-shrink: 0;
}
.v2-dash-driver-insurance-badge {
    display: inline-block;
    align-self: flex-start;
    font-size: 0.65rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    padding: 2px 8px;
    border-radius: 999px;
    background: #dcfce7;
    color: #166534;
}
.v2-dash-driver-insurance-badge--past {
    background: #f3f4f6;
    color: #6b7280;
}
.v2-dash-driver-fuel-table__dt {
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}
.v2-dash-driver-fuel-table__addr {
    max-width: 220px;
    font-size: 12px;
    line-height: 1.35;
    word-break: break-word;
}
.v2-dash-driver-service-head {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    justify-content: space-between;
    gap: 10px 14px;
}
.v2-dash-driver-service-actions {
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    align-items: stretch;
    justify-content: flex-end;
    gap: 10px;
    min-width: min(100%, 680px);
}
.v2-dash-driver-confirm-btn {
    font-size: 1.05rem;
    font-weight: 700;
    padding: 16px 22px;
    min-height: 52px;
    line-height: 1.25;
    letter-spacing: 0.01em;
    box-shadow: 0 4px 14px rgba(0, 30, 210, 0.28);
    white-space: normal;
    text-align: center;
    flex: 1 1 240px;
    max-width: 100%;
}
.v2-dash-driver-confirm-btn:hover {
    transform: translateY(-1px);
    box-shadow: 0 6px 18px rgba(0, 30, 210, 0.35);
}
.v2-dash-driver-confirm-btn--warranty {
    background: linear-gradient(135deg, #0d9488 0%, #0f766e 100%);
    border-color: #0f766e;
    box-shadow: 0 4px 14px rgba(13, 148, 136, 0.28);
}
.v2-dash-driver-confirm-btn--warranty:hover {
    box-shadow: 0 6px 18px rgba(13, 148, 136, 0.38);
}
.v2-dash-driver-confirm-fields {
    margin-top: 12px;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
}
@media (max-width: 520px) {
    .v2-dash-driver-confirm-fields { grid-template-columns: 1fr; }
}
.v2-dash-driver-confirm-field {
    display: flex;
    flex-direction: column;
    gap: 6px;
    font-size: 0.82rem;
    font-weight: 700;
    color: #374151;
}
.v2-dash-driver-confirm-field input {
    font-weight: 600;
    font-variant-numeric: tabular-nums;
}
.v2-dash-driver-warranty-hint {
    margin: 12px 0;
    padding: 14px 16px;
    border-radius: 10px;
    background: linear-gradient(135deg, #f0fdfa 0%, #ecfeff 100%);
    border: 1px solid #99f6e4;
}
.v2-dash-driver-warranty-hint__title {
    margin: 0 0 4px;
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: #0f766e;
}
.v2-dash-driver-warranty-hint__km {
    margin: 0 0 10px;
    font-size: 1.65rem;
    font-weight: 800;
    color: var(--tn-navy, #00003c);
    font-variant-numeric: tabular-nums;
}
.v2-dash-driver-warranty-hint__meta {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 4px;
    font-size: 0.84rem;
    color: #374151;
}
.v2-dash-driver-confirm-text,
.v2-dash-driver-tire-confirm-text {
    margin: 10px 0;
    padding: 10px 12px;
    border-radius: 8px;
    background: #eef2ff;
    border: 1px solid #c7d2fe;
    font-weight: 600;
    color: var(--tn-navy, #00003c);
}
.v2-dash-driver-panels {
    margin-top: 12px;
}
.v2-dash-driver-panel[hidden] {
    display: none !important;
}
.v2-dash-driver-panel .v2-dash-driver-mileage {
    margin: 0;
}
.v2-dash-driver-panel .v2-dash-driver-cards {
    max-height: none;
    overflow: visible;
}
.v2-dash-driver-vehicle-data .td-toolbar .actions-view,
.v2-dash-driver-vehicle-data .td-toolbar .actions-edit {
    display: none;
}
.v2-dash-driver-vehicle-data .td-title {
    font-size: 1rem;
}
.v2-dash-driver-license__grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px 24px;
    margin-top: 12px;
}
@media (max-width: 720px) {
    .v2-dash-driver-license__grid { grid-template-columns: 1fr; }
}
.v2-dash-driver-license__heading {
    margin: 0 0 8px;
    font-size: 0.78rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: #6b7280;
    border-bottom: 1px solid #e5e7eb;
    padding-bottom: 6px;
}
.v2-dash-driver-license__dl {
    margin: 0;
}
.v2-dash-driver-license__row {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 12px;
    padding: 6px 0;
    font-size: 0.92rem;
}
.v2-dash-driver-license__row dt {
    margin: 0;
    font-weight: 600;
    color: #4b5563;
    flex: 0 0 42%;
}
.v2-dash-driver-license__row dd {
    margin: 0;
    text-align: right;
    color: #111827;
    word-break: break-word;
}
.v2-dash-driver-license__mono {
    font-family: ui-monospace, Consolas, monospace;
    letter-spacing: 0.04em;
}
.v2-dash-driver-license__val--danger { color: #dc2626; font-weight: 700; }
.v2-dash-driver-license__val--warn { color: #d97706; font-weight: 700; }
.v2-dash-driver-license__val--ok { color: #16a34a; font-weight: 700; }
.v2-dash-driver-license__cepik {
    width: 100%;
    max-width: 480px;
    text-align: center;
}
.v2-dash-driver-bar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    flex-wrap: wrap;
    background: linear-gradient(135deg, #00003c 0%, #001ed2 55%, #0a4d8c 100%);
    border-radius: 12px;
    padding: 12px 16px;
    box-shadow: 0 4px 14px rgba(0, 0, 60, 0.18);
}
.v2-dash-driver-bar__downloads {
    display: flex;
    align-items: center;
    gap: 10px;
    flex: 1 1 240px;
    overflow-x: auto;
    scrollbar-width: none;
    -ms-overflow-style: none;
    padding-right: 6px;
    mask-image: linear-gradient(to right, black 88%, transparent 100%);
}
.v2-dash-driver-bar__downloads::-webkit-scrollbar { display: none; }
.v2-dash-driver-bar__btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    text-decoration: none;
    font-weight: 600;
    font-size: 0.82rem;
    padding: 6px 14px;
    border-radius: 6px;
    background: #fff;
    color: var(--tn-navy, #00003c);
    border: 1px solid transparent;
    white-space: nowrap;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15);
    transition: transform 0.15s, background 0.15s, color 0.15s;
}
.v2-dash-driver-bar__btn:hover {
    transform: scale(1.02);
}
.v2-dash-driver-bar__btn--red {
    color: #fa3746;
    border-color: #fa3746;
    font-weight: 700;
}
.v2-dash-driver-bar__btn--red:hover {
    background: #fa3746;
    color: #fff;
}
.v2-dash-driver-bar__btn--fuchsia {
    color: #c026d3;
    border-color: #c026d3;
}
.v2-dash-driver-bar__btn--fuchsia:hover {
    background: #c026d3;
    color: #fff;
}
.v2-dash-driver-bar__ico { font-size: 1rem; line-height: 1; }
.v2-dash-driver-bar__contact {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    padding: 0 14px;
    border-left: 1px solid rgba(255, 255, 255, 0.12);
    border-right: 1px solid rgba(255, 255, 255, 0.12);
    min-width: 220px;
}
.v2-dash-driver-bar__contact-label {
    font-size: 0.68rem;
    color: rgba(255, 255, 255, 0.65);
    text-transform: uppercase;
    letter-spacing: 0.06em;
    margin-bottom: 4px;
    font-weight: 600;
    text-align: center;
}
.v2-dash-driver-bar__contact-label strong {
    color: #fff;
    text-transform: none;
    letter-spacing: 0;
    font-weight: 700;
}
.v2-dash-driver-bar__contact-actions {
    display: flex;
    gap: 8px;
    align-items: center;
}
.v2-dash-driver-bar__pill {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 5px 14px;
    border-radius: 20px;
    text-decoration: none;
    font-weight: 700;
    font-size: 0.9rem;
    transition: transform 0.15s, box-shadow 0.15s;
}
.v2-dash-driver-bar__pill--phone {
    background: #ffeb00;
    color: var(--tn-navy, #00003c);
    border: 2px solid #ffeb00;
    box-shadow: 0 0 10px rgba(255, 235, 0, 0.35);
}
.v2-dash-driver-bar__pill--phone:hover {
    transform: scale(1.04);
    background: #ffe000;
}
.v2-dash-driver-bar__pill--email {
    background: transparent;
    color: #00ebc8;
    border: 1px solid #00ebc8;
    padding: 5px 12px;
}
.v2-dash-driver-bar__pill--email:hover {
    background: rgba(0, 235, 200, 0.12);
    color: #fff;
}
.v2-dash-driver-bar__stats {
    display: flex;
    align-items: center;
    gap: 16px;
    flex-shrink: 0;
    flex-wrap: wrap;
    justify-content: flex-end;
}
.v2-dash-driver-bar__stat {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    line-height: 1.2;
    min-width: 68px;
}
.v2-dash-driver-bar__stat-label {
    font-size: 0.62rem;
    color: rgba(255, 255, 255, 0.55);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    margin-bottom: 2px;
}
.v2-dash-driver-bar__stat-value {
    font-size: 1.1rem;
    font-weight: 700;
    color: #fff;
    white-space: nowrap;
}
.v2-dash-driver-bar__stat-sub {
    display: block;
    font-size: 0.58em;
    opacity: 0.8;
    font-weight: 500;
    text-align: right;
}
.v2-dash-driver-bar__stat-unit {
    font-size: 0.68em;
    font-weight: 600;
}
.v2-dash-driver-bar__stat--fuel { color: #ff7100; }
.v2-dash-driver-bar__stat--eco { color: #8cf000; }
.v2-dash-driver-bar__stat--rank { text-shadow: 0 0 5px rgba(0, 30, 210, 0.6); }
.v2-dash-driver-bar__stat--warn { color: #ffeb00; }
.v2-dash-driver-bar__stat--urgent {
    color: #fa3746;
    animation: v2-dash-driver-blink 2s infinite;
}
@keyframes v2-dash-driver-blink {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.72; }
}
@media (max-width: 900px) {
    .v2-dash-driver-bar__contact-label { display: none; }
    .v2-dash-driver-bar__contact { min-width: auto; padding: 0 8px; }
}
@media (max-width: 640px) {
    .v2-dash-driver-bar__stat-label { display: none; }
    .v2-dash-driver-bar__stat-value { font-size: 0.95rem; }
}
.v2-dash-driver__provider-head {
    margin-bottom: 12px;
    padding-bottom: 10px;
    border-bottom: 1px solid var(--tn-border);
}
.v2-dash-driver-acc {
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.v2-dash-driver-acc__item {
    border: 1px solid var(--tn-border);
    border-radius: 8px;
    background: #fff;
    overflow: hidden;
}
.v2-dash-driver-acc__item--blue { border-left: 4px solid var(--tn-blue); }
.v2-dash-driver-acc__item--fuchsia { border-left: 4px solid #c026d3; }
.v2-dash-driver-acc__item--orange { border-left: 4px solid #ea580c; }
.v2-dash-driver-acc__item--teal { border-left: 4px solid #0d9488; }
.v2-dash-driver-acc__item--green { border-left: 4px solid #16a34a; }
.v2-dash-driver-acc__summary {
    cursor: pointer;
    padding: 10px 12px;
    font-weight: 600;
    font-size: 0.92rem;
    list-style: none;
}
.v2-dash-driver-acc__summary::-webkit-details-marker { display: none; }
.v2-dash-driver-acc__body {
    padding: 0 12px 12px;
    font-size: 0.88rem;
    line-height: 1.55;
    color: #374151;
}
.v2-dash-driver-cards {
    display: flex;
    flex-direction: column;
    gap: 14px;
    margin-top: 10px;
    max-height: 28rem;
    overflow-y: auto;
}
.v2-dash-driver-cards__heading {
    margin: 0 0 6px;
    font-size: 0.95rem;
    font-weight: 700;
    color: var(--tn-blue);
    border-bottom: 2px solid var(--tn-blue);
    padding-bottom: 4px;
}
.v2-dash-driver-cards__body {
    font-size: 0.88rem;
    line-height: 1.55;
    color: #374151;
}

.v2-cost-period-ctrl {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
}
.v2-cost-period-ctrl[hidden] {
    display: none !important;
}
.v2-cost-period-ctrl .v2-field-label {
    font-size: 11px;
    font-weight: 700;
    color: #6b7280;
    text-transform: uppercase;
    letter-spacing: 0.03em;
}
.v2-kpi-tile-value {
    font-size: 15px;
    font-weight: 700;
    color: var(--tn-dark);
    font-variant-numeric: tabular-nums;
    line-height: 1.2;
}
.v2-kpi-tile--primary {
    background: #eef2ff;
    border-color: #c7d2fe;
}
.v2-kpi-tile--primary .v2-kpi-tile-value {
    color: var(--tn-blue);
    font-size: 17px;
}
.v2-kpi-tile--warn {
    background: #fffbeb;
    border-color: #fde68a;
}
.v2-kpi-tile--warn .v2-kpi { color: #b45309; }
.v2-kpi-tile--danger {
    background: #fef2f2;
    border-color: #fca5a5;
}
.v2-kpi-tile--danger .v2-kpi { color: #b91c1c; }

.v2-card-flush {
    padding: 0;
    overflow: hidden;
    display: flex;
    flex-direction: column;
}
.v2-panel-fullscreen {
    position: fixed;
    inset: 0;
    z-index: 9000;
    border-radius: 0;
    max-width: none;
    width: 100%;
    height: 100vh;
    margin: 0;
}
body.v2-scroll-lock { overflow: hidden; }

.v2-chip {
    display: inline-flex;
    align-items: center;
    padding: 4px 10px;
    border-radius: 999px;
    background: #eef2ff;
    color: var(--tn-blue);
    font-size: 12px;
    font-weight: 700;
    white-space: nowrap;
}
.v2-segmented {
    display: inline-flex;
    border: 1px solid var(--tn-border);
    border-radius: 8px;
    overflow: hidden;
    background: #fff;
    box-shadow: 0 1px 2px rgba(0, 30, 210, 0.04);
}
.v2-segmented-btn {
    border: none;
    background: transparent;
    padding: 7px 12px;
    cursor: pointer;
    font-size: 13px;
    font-weight: 600;
    color: #4a5568;
    line-height: 1.2;
    transition: background 0.12s, color 0.12s;
}
.v2-segmented-btn:hover {
    background: #f0f4ff;
    color: var(--tn-blue);
}
.v2-segmented-btn.is-active {
    background: var(--tn-blue);
    color: #fff;
}
.v2-segmented-btn--icon {
    min-width: 40px;
    font-size: 15px;
}
.v2-segmented--wrap {
    flex-wrap: wrap;
    max-width: 100%;
}

.v2-chart-panel {
    display: flex;
    flex-direction: column;
    min-height: 0;
    margin-bottom: 8px;
}
.v2-chart-panel > .v2-toolbar--card {
    flex-shrink: 0;
}
.v2-excel-filter {
    position: relative;
    flex: 0 0 auto;
}
.v2-excel-filter--toolbar .v2-excel-filter-trigger {
    display: inline-flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    min-width: 168px;
    height: 34px;
    padding: 0 12px;
    border: 1px solid var(--tn-border);
    border-radius: 6px;
    background: #fff;
    color: var(--tn-dark);
    font-size: 13px;
    font-weight: 700;
    font-family: inherit;
    cursor: pointer;
    text-align: left;
}
.v2-excel-filter--toolbar .v2-excel-filter-trigger:hover {
    border-color: var(--tn-blue);
    background: #f8faff;
}
.v2-excel-filter-caret {
    width: 0;
    height: 0;
    border-left: 4px solid transparent;
    border-right: 4px solid transparent;
    border-top: 5px solid var(--tn-blue);
    transition: transform 0.15s ease;
}
.v2-excel-filter.is-open .v2-excel-filter-caret {
    transform: rotate(180deg);
}
.v2-excel-filter-panel {
    display: none;
    position: absolute;
    top: calc(100% + 6px);
    left: 0;
    z-index: 900;
    flex-direction: column;
    width: min(380px, 92vw);
    background: #fff;
    border: 1px solid var(--tn-border);
    border-radius: 8px;
    box-shadow: 0 12px 32px rgba(0, 0, 60, 0.14);
}
.v2-excel-filter.is-open .v2-excel-filter-panel {
    display: flex;
}
.v2-excel-filter-toolbar {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    padding: 10px 12px;
    border-bottom: 1px solid var(--tn-border);
    background: #fff;
}
.v2-excel-filter-search {
    flex: 1 1 100%;
    min-width: 0;
    height: 30px;
    padding: 0 10px;
    border: 1px solid var(--tn-border);
    border-radius: 4px;
    font-size: 13px;
    font-family: inherit;
}
.v2-excel-filter-search:focus {
    outline: none;
    border-color: var(--tn-blue);
    box-shadow: 0 0 0 2px rgba(0, 30, 210, 0.12);
}
.v2-excel-filter-actions {
    display: flex;
    gap: 6px;
    width: 100%;
}
.v2-excel-filter-actions .v2-btn-small {
    flex: 1;
    justify-content: center;
}
.v2-excel-filter-list {
    flex: 1;
    min-height: 240px;
    max-height: min(52vh, 400px);
    overflow-y: auto;
    padding: 6px 0;
}
.v2-excel-filter-option {
    display: grid;
    grid-template-columns: auto auto auto 1fr;
    align-items: center;
    gap: 6px 8px;
    padding: 8px 14px;
    cursor: pointer;
    font-size: 13px;
    border-bottom: 1px solid #eef1f6;
    transition: background 0.1s ease;
}
.v2-excel-filter-option:hover {
    background: #f0f4ff;
}
.v2-excel-filter-option.is-hidden-by-mpk {
    display: none;
}
.v2-excel-filter-option.is-filtered-out {
    display: none;
}
.v2-excel-filter-option input[type="checkbox"] {
    width: 15px;
    height: 15px;
    margin: 0;
    accent-color: var(--tn-blue);
    cursor: pointer;
}
.v2-excel-filter-dot {
    width: 10px;
    height: 10px;
    border-radius: 50%;
    flex-shrink: 0;
}
.v2-excel-filter-past {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 14px;
    font-weight: 800;
    font-size: 12px;
    line-height: 1;
    color: #dc2626;
    text-transform: lowercase;
}
.v2-excel-filter-past--empty {
    visibility: hidden;
}
.v2-excel-filter-option:has(input:disabled) {
    opacity: 0.55;
}
.v2-excel-filter-reg {
    font-weight: 700;
    color: var(--tn-dark);
    white-space: nowrap;
}
.v2-excel-filter-driver {
    color: #6b7280;
    font-size: 12px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.v2-excel-filter-count {
    font-weight: 600;
    color: var(--tn-blue);
    font-size: 12px;
}
.v2-chart-canvas {
    position: relative;
    flex: 1 1 auto;
    min-height: 200px;
    height: clamp(200px, calc(100vh - 15rem), 520px);
    max-height: clamp(200px, calc(100vh - 15rem), 520px);
    padding: 12px 16px;
    box-sizing: border-box;
}
.v2-chart-canvas .v2-empty {
    min-height: 160px;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
}
.v2-chart-canvas canvas {
    width: 100% !important;
    height: 100% !important;
    min-height: 0;
}
.v2-content:has(#v2MileageChart) {
    padding-bottom: 8px;
}
.v2-panel-fullscreen.v2-chart-panel {
    max-height: none;
    height: calc(100vh - 2rem);
    margin: 0;
}
.v2-panel-fullscreen.v2-chart-panel .v2-chart-canvas {
    flex: 1 1 auto;
    height: auto;
    max-height: none;
    min-height: 0;
}
.v2-icon-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    padding: 0;
    border: 1px solid var(--tn-border);
    border-radius: 8px;
    background: #fff;
    color: var(--tn-blue);
    cursor: pointer;
    font-size: 18px;
    line-height: 1;
}
.v2-icon-btn:hover {
    background: #eef2ff;
    border-color: var(--tn-blue);
}
.v2-tag-xs {
    display: inline-block;
    margin-top: 2px;
    font-size: 10px;
    font-weight: 700;
    text-transform: uppercase;
    color: #9ca3af;
    letter-spacing: 0.03em;
}
.v2-val-over { color: #b91c1c; font-weight: 700; }
.v2-val-under { color: #047857; font-weight: 700; }

.v2-content.v2-content--wide { max-width: 1680px; }

.v2-footer {
    position: fixed;
    left: var(--v2-sidebar-w); /* nie chowaj stopki (m.in. „created by…") pod sidebarem */
    right: 0;
    bottom: 0;
    z-index: 700;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    flex-wrap: wrap;
    flex-shrink: 0;
    margin-top: 0;
    padding: 8px 24px;
    font-size: 0.8rem;
    line-height: 1.2;
    border-top: 1px solid var(--tn-border);
    background: rgba(255, 255, 255, 0.97);
    box-shadow: 0 -4px 14px rgba(0, 0, 60, 0.08);
    backdrop-filter: blur(4px);
}
.v2-footer-credit {
    flex: 0 0 auto;
}
.v2-footer-fuel-meta {
    flex: 0 1 auto;
    margin-left: auto;
    color: #6b7280;
    text-align: right;
}
.v2-footer-fuel-meta strong {
    color: var(--tn-dark);
    font-weight: 700;
}
.v2-footer-session {
    flex: 0 1 auto;
    margin-left: auto;
    color: #6b7280;
    white-space: nowrap;
}
.v2-footer-session strong {
    color: var(--tn-dark);
    font-weight: 700;
}
.v2-footer-session + .v2-footer-fuel-meta {
    margin-left: 0;
}

.v2-page-header {
    margin: 0 0 20px;
    padding-bottom: 16px;
    border-bottom: 1px solid var(--tn-border);
}
.v2-page-eyebrow {
    margin: 0 0 4px;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--tn-blue);
}
.v2-page-title {
    margin: 0 0 6px;
    font-size: 26px;
    font-weight: 700;
    color: var(--tn-dark);
    letter-spacing: -0.02em;
}
.v2-page-desc {
    margin: 0;
    color: #4a5568;
    font-size: 14px;
    max-width: 72ch;
}
.v2-page-header--compact {
    margin: 0 0 0.65rem;
    padding-bottom: 0.5rem;
}
.v2-page-heading-row {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 0.35rem 1rem;
}
.v2-page-heading-row .v2-page-title {
    margin: 0;
    font-size: 1.35rem;
}
.v2-page-desc--inline {
    margin: 0;
    font-size: 0.88rem;
    color: #64748b;
    max-width: none;
}
.v2-page-desc--inline::before {
    content: "—";
    margin-right: 0.5rem;
    color: #94a3b8;
}
.v2-page-toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 12px 20px;
    margin: -8px 0 18px;
    padding: 10px 14px;
    background: #f8fafc;
    border: 1px solid var(--tn-border);
    border-radius: 8px;
}
.v2-page-toolbar-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.v2-page-toolbar-actions-inline { margin: -12px 0 16px; }
.v2-breadcrumb {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px;
    font-size: 13px;
    color: #6b7280;
}
.v2-breadcrumb a {
    color: var(--tn-blue);
    text-decoration: none;
    font-weight: 600;
}
.v2-breadcrumb a:hover { text-decoration: underline; }
.v2-breadcrumb-sep { opacity: 0.45; user-select: none; }
.v2-breadcrumb [aria-current="page"] {
    color: var(--tn-dark);
    font-weight: 700;
}
.v2-panel {
    background: var(--tn-white);
    border: 1px solid var(--tn-border);
    border-radius: 12px;
    box-shadow: 0 2px 10px rgba(0, 0, 60, 0.04);
    margin-bottom: 20px;
    overflow: hidden;
}
.v2-panel--flush .v2-panel-body { padding: 0; }
.v2-panel--flush .v2-table-wrap { border: none; border-radius: 0; }
.v2-panel-head {
    padding: 14px 18px;
    border-bottom: 1px solid var(--tn-border);
    background: linear-gradient(180deg, #fafbff 0%, #fff 100%);
}
.v2-panel-title {
    margin: 0;
    font-size: 15px;
    font-weight: 700;
    color: var(--tn-dark);
}
.v2-panel-body { padding: 16px 18px; }
.v2-kpi-strip--page {
    margin-bottom: 20px;
    border-radius: 12px;
    border: 1px solid var(--tn-border);
    box-shadow: 0 2px 10px rgba(0, 0, 60, 0.04);
}
.v2-badge {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 4px;
    font-size: 11px;
    font-weight: 700;
    line-height: 1.4;
}
.v2-badge--success { background: #d1fae5; color: #065f46; }
.v2-badge--warning { background: #fef3c7; color: #92400e; }
.v2-badge--info { background: #dbeafe; color: #1e40af; }
.v2-badge--accent { background: var(--tn-lime, #8cf000); color: var(--tn-dark); }
.v2-badge--muted { background: #f3f4f6; color: #4b5563; }
.v2-tel-row--warn { background: #fffbeb; }
.v2-tel-row--virtual { background: #fffde7; }
.v2-tel-row--multi td { background: #fffbf2; }
.v2-tel-row--multi td:first-child { box-shadow: inset 3px 0 0 #f59e0b; }
.v2-tel-row--exchange-due .v2-tel-col-date:last-of-type { background: #fef2f2; }
.v2-tel-table-wrap { overflow-x: auto; }
.v2-tel-th-device-sort {
    display: inline-flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 4px 6px;
}
.v2-tel-th-device-sort .v2-tel-th-sep {
    color: #94a3b8;
    user-select: none;
    font-weight: 400;
}
.v2-tel-table .v2-tel-col-actions { width: 1%; min-width: 148px; max-width: 168px; white-space: nowrap; vertical-align: middle; }
.v2-tel-table .v2-tel-col-device { min-width: 160px; }
.v2-tel-table .v2-tel-col-user { min-width: 140px; }
.v2-tel-device { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; }
.v2-tel-device__model { font-weight: 600; color: var(--tn-blue, #001ed2); font-size: 0.95rem; }
.v2-tel-device__note { font-size: 0.75rem; line-height: 1.3; max-width: 220px; }
.v2-tel-device__number {
    font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
    font-size: 0.9rem;
    font-weight: 600;
    padding: 0;
    border: none;
    background: transparent;
    color: inherit;
    cursor: pointer;
    text-align: left;
    border-radius: 4px;
}
.v2-tel-device__number:hover { background: #eef2ff; }
.v2-tel-device__number--warn { color: #dc2626; }
.v2-tel-warn-badge {
    display: inline-block;
    margin-left: 6px;
    padding: 0 5px;
    font-size: 0.65rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: #b45309;
    background: #fef3c7;
    border-radius: 4px;
    vertical-align: middle;
}
.v2-tel-kv { display: block; line-height: 1.45; }
.v2-tel-kv__k { font-weight: 600; color: #64748b; font-size: 0.7rem; text-transform: uppercase; }
.v2-tel-user-name { display: block; font-weight: 600; }
.v2-tel-mpk { display: block; font-size: 0.75rem; color: #64748b; margin-top: 2px; }
.v2-tel-mpk-readonly {
    background: #f1f5f9;
    color: #475569;
    cursor: default;
}
.v2-tel-multi { font-size: 0.68rem; margin: 2px 0 0; vertical-align: middle; }
.v2-tel-sub--terminated {
    color: #7c2d12;
    background: #ffedd5;
}
.v2-tel-sub {
    display: inline-block;
    margin-top: 2px;
    font-size: 0.7rem;
    color: #ea580c;
    font-weight: 600;
}
.v2-tel-exchange--due { color: #dc2626; font-weight: 700; }
.v2-tel-actions-empty { font-size: 0.85rem; }
.v2-tel-row-actions {
    display: flex;
    flex-wrap: nowrap;
    align-items: center;
    gap: 3px;
    justify-content: flex-end;
}
.v2-tel-row-actions__sep {
    width: 1px;
    height: 20px;
    background: #e2e8f0;
    flex-shrink: 0;
    margin: 0 1px;
}
.v2-tel-row-actions__group {
    display: inline-flex;
    flex-wrap: nowrap;
    align-items: center;
    gap: 3px;
    flex-shrink: 0;
}
.v2-tel-row-actions__group--inline {
    gap: 2px;
}
.v2-tel-act {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 26px;
    min-width: 26px;
    padding: 2px 6px;
    font-size: 0.68rem;
    font-weight: 700;
    line-height: 1;
    border-radius: 5px;
    border: 1px solid #cbd5e1;
    background: #fff;
    color: var(--tn-dark, #00003c);
    cursor: pointer;
    text-decoration: none;
    white-space: nowrap;
    flex-shrink: 0;
    transition: background 0.12s, border-color 0.12s, color 0.12s;
}
.v2-tel-act--icon {
    position: relative;
    width: 32px;
    min-width: 32px;
    max-width: 32px;
    height: 32px;
    min-height: 32px;
    padding: 0;
}
.v2-tel-act__svg {
    display: block;
    flex-shrink: 0;
}
.v2-tel-act__badge {
    position: absolute;
    top: -4px;
    right: -4px;
    min-width: 14px;
    height: 14px;
    padding: 0 3px;
    font-size: 9px;
    font-weight: 700;
    line-height: 14px;
    text-align: center;
    color: #fff;
    background: #0369a1;
    border-radius: 7px;
    pointer-events: none;
}
.v2-tel-act:hover { background: #eef2ff; border-color: var(--tn-blue, #001ed2); color: var(--tn-blue, #001ed2); }
.v2-tel-act:disabled,
.v2-tel-act--busy { opacity: 0.55; cursor: wait; pointer-events: none; }
.v2-tel-act--file { background: #f0f9ff; border-color: #7dd3fc; color: #0369a1; }
.v2-tel-act--pdf { background: #fef2f2; border-color: #fecaca; color: #b91c1c; }
.v2-tel-act--print { background: #f1f5f9; border-color: #94a3b8; color: #334155; }
.v2-tel-act--edit { background: var(--tn-blue, #001ed2); border-color: var(--tn-blue, #001ed2); color: #fff; }
.v2-tel-act--edit:hover { background: #00159c; border-color: #00159c; color: #fff; }
.v2-tel-act--add { background: #ecfdf5; border-color: #6ee7b7; color: #047857; }
.v2-tel-act--hide { background: #f8fafc; color: #64748b; }
.v2-tel-act--show { background: #eff6ff; border-color: #93c5fd; color: #1d4ed8; }
.v2-tel-act--buy { background: #16a34a; border-color: #16a34a; color: #fff; padding-inline: 12px; }
.v2-tel-act--buy:hover { background: #15803d; border-color: #15803d; color: #fff; }

.v2-tel-sale-hero { margin-bottom: 12px; }
.v2-tel-sale-bought {
    margin-bottom: 14px;
    border-left: 4px solid #16a34a;
    padding: 14px 16px;
}
.v2-tel-sale-bought__title {
    margin: 0 0 4px;
    font-size: 0.8rem;
    font-weight: 700;
    text-transform: uppercase;
    color: #15803d;
}
.v2-tel-sale-bought__model {
    margin: 0;
    font-size: 1.25rem;
    font-weight: 700;
    color: #166534;
}
.v2-tel-sale-bought__meta,
.v2-tel-sale-bought__status {
    margin: 6px 0 0;
    color: #475569;
}
.v2-tel-sale-price { color: #16a34a; font-size: 1.05rem; }
.v2-tel-buy-modal__box { border: 3px solid #16a34a; text-align: center; }
.v2-tel-buy-modal__title { margin: 0 0 12px; color: var(--tn-blue, #00003c); font-size: 1.35rem; }
.v2-tel-buy-modal__lead { margin: 0 0 8px; font-size: 1.05rem; }
.v2-tel-buy-modal__price {
    margin: 0 0 16px;
    font-size: 2rem;
    font-weight: 800;
    color: #16a34a;
}
.v2-tel-buy-modal__actions {
    display: flex;
    justify-content: center;
    gap: 12px;
    flex-wrap: wrap;
    margin-top: 8px;
}
.v2-tel-buy-modal__confirm { background: #16a34a; border-color: #16a34a; }
.v2-tel-buy-modal__confirm:hover { background: #15803d; border-color: #15803d; }
body.v2-modal-open { overflow: hidden; }
.v2-tel-sale-photos-cell { width: 1%; white-space: nowrap; vertical-align: middle; }
.v2-tel-sale-thumbs {
    display: inline-flex;
    flex-direction: row;
    flex-wrap: nowrap;
    gap: 0.3rem;
    align-items: center;
    vertical-align: middle;
}
.v2-tel-sale-thumb {
    display: inline-flex;
    flex: 0 0 auto;
    padding: 0;
    border: 1px solid #cbd5e1;
    border-radius: 6px;
    background: #fff;
    cursor: zoom-in;
    overflow: hidden;
    line-height: 0;
    transition: border-color 0.15s, box-shadow 0.15s;
}
.v2-tel-sale-thumb:hover,
.v2-tel-sale-thumb:focus-visible {
    border-color: var(--tn-blue, #001ed2);
    box-shadow: 0 0 0 2px rgba(0, 30, 210, 0.2);
    outline: none;
}
.v2-tel-sale-thumb img {
    display: block;
    width: 52px;
    height: 52px;
    object-fit: cover;
}
.v2-tel-photo-modal__box {
    position: relative;
    max-width: min(92vw, 720px);
    padding: 0.75rem;
    background: #fff;
    text-align: center;
}
.v2-tel-photo-modal__close {
    position: absolute;
    top: 0.35rem;
    right: 0.45rem;
    z-index: 2;
    border: none;
    background: rgba(255, 255, 255, 0.92);
    color: #334155;
    font-size: 1.6rem;
    line-height: 1;
    width: 2rem;
    height: 2rem;
    border-radius: 999px;
    cursor: pointer;
}
.v2-tel-photo-modal__img {
    display: block;
    max-width: 100%;
    max-height: min(78vh, 640px);
    margin: 0 auto;
    object-fit: contain;
    border-radius: 4px;
}
.v2-tel-sale-photos-lead { margin: 0 0 0.4rem; }
.v2-tel-sale-photos--edit {
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    gap: 0.65rem 1.25rem;
    align-items: flex-start;
}
.v2-tel-sale-photo-slot {
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
    min-width: 0;
    flex: 0 1 auto;
}
.v2-tel-sale-photo-slot__row {
    display: flex;
    flex-direction: row;
    flex-wrap: nowrap;
    align-items: center;
    gap: 0.35rem;
}
.v2-tel-sale-photo-slot__current {
    margin: 0;
    display: inline-flex;
    align-items: center;
    gap: 0.2rem;
    flex: 0 0 auto;
}
.v2-tel-sale-photo-slot__current img {
    width: 40px;
    height: 40px;
    object-fit: cover;
    border-radius: 4px;
    border: 1px solid #cbd5e1;
}
.v2-tel-sale-photo-slot__del { margin: 0; }
.v2-tel-sale-photo-queue {
    margin: 0;
    font-size: 0.65rem;
    line-height: 1.2;
    max-width: 9rem;
}
.v2-tel-edit-panel--photos { grid-column: 1 / -1; }
.v2-tel-hero { margin-bottom: 0.65rem; flex-wrap: wrap; align-items: flex-start; }
.v2-tel-hero__main { flex: 1 1 220px; }
.v2-tel-hero__search { display: block; max-width: 280px; }
.v2-tel-hero__actions { display: flex; gap: 0.3rem; flex-wrap: wrap; align-items: flex-start; }
.v2-tel-hero__actions--only { margin-left: auto; justify-content: flex-end; width: 100%; }
.v2-tel-edit-hero { margin-bottom: 6px; }
.v2-tel-edit-card {
    padding: 10px 12px 12px;
    margin-top: 0;
}
.v2-tel-edit-form {
    display: flex;
    flex-direction: column;
    gap: 8px;
    min-width: 0;
}
.v2-tel-edit-panels {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 8px;
    align-items: stretch;
}
.v2-tel-edit-panel {
    margin: 0;
    padding: 8px 10px 10px;
    min-width: 0;
    border: 1px solid #e2e8f0;
    border-radius: 8px;
    background: #fafbff;
}
.v2-tel-edit-panel__legend {
    padding: 0 6px;
    margin: 0 0 6px;
    font-size: 0.68rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--tn-blue, #001ed2);
    width: auto;
}
.v2-tel-edit-panel__grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.28rem 0.45rem;
    min-width: 0;
}
.v2-tel-edit-panel__grid .v2-field-label,
.v2-tel-edit-bottom .v2-field-label {
    font-size: 0.64rem;
    margin-bottom: 0.1rem;
}
.v2-tel-edit-panel__grid input,
.v2-tel-edit-panel__grid select,
.v2-tel-edit-bottom input {
    padding: 0.26rem 0.4rem;
    font-size: 0.8rem;
    min-height: 1.85rem;
}
.v2-tel-edit-field--span2 {
    grid-column: 1 / -1;
}
.v2-tel-edit-bottom {
    display: grid;
    grid-template-columns: minmax(140px, 1.2fr) minmax(0, 2fr);
    gap: 8px 12px;
    align-items: end;
    padding-top: 2px;
    border-top: 1px solid #e8ecf4;
}
.v2-tel-edit-bottom__notes {
    margin: 0;
    min-width: 0;
}
.v2-tel-edit-bottom__files {
    display: flex;
    flex-direction: column;
    gap: 4px;
    min-width: 0;
}
.v2-tel-edit-files-row {
    display: flex;
    flex-wrap: wrap;
    align-items: stretch;
    gap: 6px;
    min-width: 0;
}
.v2-tel-ufor-go {
    display: flex;
    align-items: center;
    gap: 6px;
}
.v2-tel-ufor-go input[type="number"] {
    flex: 1 1 auto;
    min-width: 0;
}
/* Magazyn telefonów — karta „Dodaj telefon do magazynu" */
.v2-tel-stock-add-card {
    margin-bottom: 1rem;
}
.v2-tel-stock-add__grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
    gap: 0.7rem 0.9rem;
}
.v2-tel-stock-add__model {
    grid-column: 1 / -1;
}
@media (min-width: 720px) {
    .v2-tel-stock-add__model {
        grid-column: span 2;
    }
}
.v2-tel-stock-add .v2-field {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    min-width: 0;
}
.v2-tel-stock-add .v2-field-label {
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: #64748b;
}
.v2-tel-stock-add .v2-req {
    color: #fa3746;
}
.v2-tel-stock-add .v2-input {
    width: 100%;
    box-sizing: border-box;
}
.v2-tel-stock-add__actions {
    display: flex;
    justify-content: flex-end;
    margin-top: 0.9rem;
    padding-top: 0.85rem;
    border-top: 1px solid #e2e8f0;
}
.v2-tel-stock-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.35rem;
    white-space: nowrap;
}
.v2-tel-stock-actions .v2-tel-stock-form {
    display: inline;
    margin: 0;
}
.v2-tel-go-check {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    flex-shrink: 0;
    margin: 0;
    padding: 0.22rem 0.45rem;
    font-size: 0.72rem;
    font-weight: 700;
    white-space: nowrap;
    color: var(--tn-dark, #00003c);
    background: #f1f5f9;
    border: 1px solid #cbd5e1;
    border-radius: 4px;
    cursor: pointer;
    user-select: none;
}
.v2-tel-go-check:has(input:checked) {
    background: #eef2ff;
    border-color: var(--tn-blue, #001ed2);
    color: var(--tn-blue, #001ed2);
}
.v2-tel-go-check input {
    width: auto;
    margin: 0;
    padding: 0;
}
.v2-tel-edit-files__list {
    margin: 0;
    padding: 0;
    list-style: none;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.v2-tel-edit-files__list--inline {
    flex-direction: row;
    flex-wrap: wrap;
    flex: 1 1 auto;
    min-width: 0;
    gap: 4px;
}
.v2-tel-edit-files__item {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 3px 6px;
    font-size: 0.72rem;
    background: #fff;
    border: 1px solid #e2e8f0;
    border-radius: 4px;
    max-width: 11rem;
}
.v2-tel-edit-files__link {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    color: var(--tn-blue, #001ed2);
    text-decoration: none;
    font-weight: 600;
    min-width: 0;
}
.v2-tel-edit-files__del {
    display: inline-flex;
    align-items: center;
    flex-shrink: 0;
    margin: 0;
    font-size: 0.85rem;
    line-height: 1;
    color: #b91c1c;
    cursor: pointer;
}
.v2-tel-edit-files__del input {
    position: absolute;
    opacity: 0;
    width: 0;
    height: 0;
    margin: 0;
}
.v2-tel-drop {
    position: relative;
    min-height: 5.5rem;
    flex: 1 1 8rem;
    min-width: 7rem;
}
.v2-tel-drop--compact {
    flex-direction: row;
    flex-wrap: nowrap;
    justify-content: center;
    align-items: center;
    gap: 0.35rem;
    min-height: 2.35rem;
    padding: 0.2rem 0.55rem;
}
.v2-tel-drop--compact .v2-duty-drop__icon {
    font-size: 0.7rem;
    padding: 0.1rem 0.35rem;
    margin: 0;
}
.v2-tel-drop--compact .v2-duty-drop__label,
.v2-tel-drop--compact .v2-duty-drop__hint {
    font-size: 0.68rem;
    line-height: 1.1;
}
.v2-tel-drop--compact .v2-duty-drop__hint {
    color: #94a3b8;
}
.v2-tel-drop.v2-tel-sale-photo-drop {
    min-height: 2rem;
    flex: 0 1 auto;
    min-width: 5.5rem;
    max-width: 8.5rem;
    padding: 0.15rem 0.45rem;
}
.v2-tel-drop.v2-tel-sale-photo-drop .v2-duty-drop__icon {
    font-size: 0.65rem;
    padding: 0;
    margin: 0;
    background: transparent;
}
.v2-tel-drop.v2-tel-sale-photo-drop .v2-duty-drop__label {
    font-size: 0.68rem;
    white-space: nowrap;
}
.v2-tel-drop.v2-tel-sale-photo-drop .v2-tel-sale-photo-drop__preview {
    width: 28px;
    height: 28px;
    margin-left: 0.15rem;
    object-fit: cover;
    border-radius: 3px;
    flex: 0 0 auto;
}
.v2-tel-drop.v2-tel-sale-photo-drop.v2-duty-drop--has-file {
    border-color: var(--tn-blue, #001ed2);
    background: #f8fbff;
}
.v2-tel-drop__input {
    position: absolute;
    inset: 0;
    opacity: 0;
    cursor: pointer;
    width: 100%;
    height: 100%;
}
.v2-tel-drop:has(.v2-tel-drop__input:disabled) {
    opacity: 0.55;
    pointer-events: none;
}
.v2-tel-edit-files__queue {
    margin: 0;
    font-size: 0.72rem;
    line-height: 1.3;
}
@media (max-width: 1100px) {
    .v2-tel-edit-panels { grid-template-columns: 1fr; }
    .v2-tel-edit-bottom { grid-template-columns: 1fr; }
}
@media (max-width: 640px) {
    .v2-tel-edit-panel__grid { grid-template-columns: 1fr; }
    .v2-tel-edit-field--span2 { grid-column: 1; }
}
.v2-tel-my-card { margin-bottom: 16px; border-top: 3px solid var(--tn-blue, #001ed2); }
.v2-tel-my-card__head { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 12px; margin-bottom: 12px; }
.v2-tel-my-card__model { font-size: 1.2rem; font-weight: 700; color: var(--tn-blue, #001ed2); }
.v2-tel-my-card__num { font-family: ui-monospace, monospace; font-size: 1.1rem; font-weight: 700; }
#v2-tel-toast {
    position: fixed;
    top: 72px;
    right: 16px;
    z-index: 200;
    max-width: min(360px, calc(100vw - 32px));
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);
    margin: 0;
}
@media (max-width: 1100px) {
    .v2-tel-table .v2-tel-col-info,
    .v2-tel-table .v2-tel-col-op { display: none; }
    .v2-tel-table .v2-tel-col-actions { min-width: 160px; }
}
.v2-form-inline.v2-card,
form.v2-form-inline.v2-card {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: 12px 20px;
    padding: 14px 18px;
    margin-bottom: 18px;
}

.v2-section { margin-top: 22px; }
.v2-section-desc {
    margin: -8px 0 12px;
    font-size: 0.88rem;
}
.v2-section--muted .v2-section-title {
    color: #6b7280;
}

.v2-reserve-toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 16px;
}
.v2-reserve-status {
    flex: 1 1 280px;
    margin: 0;
}
.v2-reserve-actions {
    display: flex;
    gap: 8px;
    flex: 0 0 auto;
}
.v2-reserve-card {
    background: var(--tn-white);
    border: 1px solid var(--tn-border);
    border-radius: 12px;
    box-shadow: 0 4px 14px rgba(0, 0, 60, 0.06);
    margin-bottom: 24px;
    overflow: hidden;
}
.v2-reserve-card-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    padding: 14px 20px;
    background: var(--tn-dark);
    color: #fff;
}
.v2-reserve-card-reg {
    font-size: 1.15rem;
    margin-left: 6px;
}
.v2-reserve-card-user {
    margin-left: 12px;
    opacity: 0.9;
    font-size: 0.9rem;
}
.v2-reserve-card-cost {
    font-size: 1.25rem;
    font-weight: 800;
    white-space: nowrap;
}
.v2-reserve-card-header .v2-val-over {
    color: #fecaca;
}
.v2-reserve-chain {
    padding: 16px 20px;
    background: #fcfcfc;
    border-bottom: 1px dashed var(--tn-border);
}
.v2-reserve-chain-label {
    margin: 0 0 10px;
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: #6b7280;
    font-weight: 700;
}
.v2-reserve-chain-flow {
    display: flex;
    align-items: center;
    gap: 10px;
    overflow-x: auto;
    padding-bottom: 4px;
}
.v2-reserve-chain-node {
    flex: 0 0 auto;
    min-width: 150px;
    padding: 10px 14px;
    background: #fff;
    border: 1px solid #ccd0d5;
    border-radius: 8px;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.03);
}
.v2-reserve-chain-node.is-current {
    border-color: var(--tn-blue);
    background: #f0f7ff;
}
.v2-reserve-node-reg {
    font-weight: 800;
    color: var(--tn-dark);
}
.v2-reserve-node-dates {
    font-size: 0.72rem;
    color: #666;
    margin: 4px 0;
}
.v2-reserve-node-range {
    font-size: 0.72rem;
    color: #555;
    border-top: 1px dotted #e0e0e0;
    padding-top: 4px;
    margin-top: 4px;
}
.v2-reserve-node-driven {
    display: inline-block;
    margin-top: 6px;
    padding: 2px 8px;
    border-radius: 4px;
    font-size: 0.8rem;
    font-weight: 700;
    color: var(--tn-blue);
    background: #eef6ff;
    border: 1px solid #d0e1f5;
}
.v2-reserve-chain-arrow {
    color: #bbb;
    font-size: 1.1rem;
    flex: 0 0 auto;
}
.v2-reserve-steps {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 0;
}
@media (max-width: 960px) {
    .v2-reserve-steps { grid-template-columns: 1fr; }
}
.v2-reserve-step {
    padding: 20px 22px;
    border-right: 1px solid var(--tn-border);
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.v2-reserve-step:last-child {
    border-right: none;
}
.v2-reserve-step--money {
    background: #fff8f8;
}
.v2-reserve-step-num {
    font-size: 0.72rem;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #888;
    font-weight: 700;
}
.v2-reserve-step-title {
    margin: 0;
    font-size: 1.05rem;
    color: var(--tn-blue);
}
.v2-reserve-step-desc {
    margin: 0;
    font-size: 0.88rem;
    color: #555;
    line-height: 1.45;
}
.v2-reserve-progress {
    height: 10px;
    background: #eee;
    border-radius: 5px;
    overflow: hidden;
    margin-top: 8px;
}
.v2-reserve-progress-bar {
    height: 100%;
    background: var(--tn-blue);
    max-width: 100%;
}
.v2-reserve-progress-label {
    font-size: 0.85rem;
    font-weight: 700;
    color: var(--tn-blue);
    text-align: right;
}
.v2-reserve-kpi-pair {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
    margin: 10px 0 0;
}
.v2-reserve-kpi-pair dt {
    font-size: 0.7rem;
    color: #666;
    margin: 0;
}
.v2-reserve-kpi-pair dd {
    margin: 2px 0 0;
    font-weight: 700;
    font-size: 1rem;
}
.v2-reserve-kpi-ok {
    color: #047857;
}
.v2-reserve-excess {
    margin: 10px 0 0;
    padding-top: 10px;
    border-top: 1px dashed #ccc;
    color: #b91c1c;
    font-weight: 700;
}
.v2-reserve-equation {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    margin: 10px 0;
    font-weight: 700;
    color: #666;
}
.v2-reserve-equation span {
    background: #fff;
    border: 1px solid #ccc;
    padding: 4px 10px;
    border-radius: 4px;
    color: #333;
}
.v2-reserve-result {
    margin: 0;
    font-size: 1.5rem;
    font-weight: 800;
}
.v2-section-title {
    margin: 0 0 12px;
    font-size: 18px;
    font-weight: 600;
}

.v2-grid-kpi { margin-bottom: 8px; }

.v2-link-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
    gap: 12px;
}
.v2-link-card {
    display: block;
    text-decoration: none;
    color: inherit;
    background: var(--tn-white);
    border: 1px solid var(--tn-border);
    border-radius: 10px;
    padding: 14px;
    transition: border-color 0.15s, box-shadow 0.15s;
}
.v2-link-card:hover {
    border-color: var(--tn-blue);
    box-shadow: 0 2px 8px rgba(0, 30, 210, 0.08);
}
.v2-link-card-title {
    display: block;
    font-weight: 600;
    color: var(--tn-blue);
    margin-bottom: 4px;
}
.v2-link-card-desc {
    display: block;
    font-size: 13px;
    color: #4a5568;
}

.v2-table-wrap {
    overflow-x: auto;
    background: var(--tn-white);
    border: 1px solid var(--tn-border);
    border-radius: 10px;
}
.v2-table-wrap--scroll {
    max-height: min(70vh, 720px);
    overflow: auto;
}
.v2-panel-fullscreen .v2-table-wrap--scroll {
    max-height: none;
    flex: 1;
}
.v2-table-wrap--scroll .v2-table thead th {
    position: sticky;
    top: 0;
    z-index: 2;
    box-shadow: 0 1px 0 var(--tn-border);
}
.v2-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 14px;
}
.v2-table th,
.v2-table td {
    padding: 10px 12px;
    border-bottom: 1px solid var(--tn-border);
    text-align: left;
    vertical-align: middle;
}
.v2-table th {
    background: #f8faff;
    font-weight: 600;
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: #4a5568;
    white-space: nowrap;
}
.v2-table-sortable .v2-th-sort {
    color: inherit;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 2px;
}
.v2-table-sortable .v2-th-sort:hover {
    color: var(--tn-blue);
    text-decoration: underline;
}
.v2-table-sortable .v2-th-sort.is-active {
    color: var(--tn-blue);
}
.v2-col-actions {
    width: 1%;
    white-space: nowrap;
    text-align: center;
}
.v2-col-actions .v2-btn {
    display: inline-block;
    text-decoration: none;
    line-height: 1.3;
}
.v2-table tbody tr:hover { background: #fafbff; }
.v2-table .v2-num {
    text-align: right;
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
    font-weight: 600;
}
.v2-table .v2-col-accent {
    background: #f8faff;
    color: var(--tn-blue);
    font-weight: 700;
}
.v2-table .v2-col-highlight {
    background: #fffbeb;
    font-weight: 700;
}
.v2-table-group-row {
    background: #f3f4f6;
    cursor: pointer;
    font-weight: 600;
}
.v2-table-group-row:hover { background: #eef2ff; }
.v2-table-group-row.is-expanded .v2-table-caret {
    transform: rotate(90deg);
    display: inline-block;
}
.v2-table-caret {
    display: inline-block;
    margin-right: 4px;
    color: var(--tn-blue);
    transition: transform 0.15s ease;
}
.v2-table-detail-row td:first-child { padding-left: 28px; }
.v2-row-muted {
    color: #6b7280;
    background: #fafafa;
}
.v2-row-muted .v2-vehicle-link { color: #4b5563 !important; }
.v2-row-muted:hover { background: #f5f5f5; }
.v2-empty {
    text-align: center;
    color: #6b7280;
    padding: 24px !important;
}

.v2-badge {
    display: inline-block;
    padding: 3px 8px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 600;
    white-space: nowrap;
}
.v2-badge-active { background: #dcfce7; color: #166534; }
.v2-badge-returned { background: #fee2e2; color: #991b1b; }
.v2-badge-future { background: #fef3c7; color: #92400e; }

.v2-muted { color: #6b7280; font-size: 13px; }

.v2-card-muted { background: #f8faff; }
.v2-placeholder-title {
    margin: 0 0 8px;
    font-weight: 600;
    color: var(--tn-dark);
}
.v2-placeholder-text {
    margin: 0;
    color: #4a5568;
    line-height: 1.5;
}
.v2-placeholder-text code {
    font-size: 12px;
    background: #eef2ff;
    padding: 2px 6px;
    border-radius: 4px;
}

.v2-vehicle-link {
    color: var(--tn-blue);
    font-weight: 700;
    text-decoration: none;
}
.v2-vehicle-link:hover { text-decoration: underline; }

.v2-vehicle-header {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    gap: 16px;
    background: var(--tn-white);
    border: 1px solid var(--tn-border);
    border-radius: 10px;
    padding: 14px 16px;
    margin-bottom: 12px;
}
.v2-vehicle-header--legacy {
    flex-wrap: nowrap;
    align-items: center;
    padding: 8px 16px;
    min-height: 60px;
    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.08);
}
@media (max-width: 1100px) {
    .v2-vehicle-header--legacy { flex-wrap: wrap; }
}
.v2-vehicle-header-left,
.v2-vehicle-header-center,
.v2-vehicle-header-right {
    display: flex;
    align-items: center;
    gap: 14px;
}
/* Lewa strona nie rośnie — tablica ma zawsze pełną szerokość, reszta belki dosunięta w prawo. */
.v2-vehicle-header-left { flex: 0 1 auto; min-width: 0; }
.v2-vehicle-header-center {
    flex: 0 1 auto;
    margin-left: auto;
    padding: 0 16px;
    border-left: 1px solid #eee;
    border-right: 1px solid #eee;
    gap: 16px;
}
.v2-vehicle-header-right {
    flex: 0 0 auto;
    justify-content: flex-end;
}
.v2-plate-eu {
    display: flex;
    flex-shrink: 0; /* tablica nigdy się nie kurczy ani nie zawija */
    border: 1px solid #000;
    border-radius: 3px;
    overflow: hidden;
    height: 32px;
}
.v2-plate-eu-code {
    background: #003399;
    width: 22px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #fff;
    font-size: 0.6rem;
    font-weight: 700;
}
.v2-plate-eu-reg {
    background: #fff;
    padding: 0 10px;
    display: flex;
    align-items: center;
    font-family: Consolas, monospace;
    font-weight: 700;
    font-size: 1.2rem;
    letter-spacing: 1px;
    color: #000;
    white-space: nowrap;
}
.v2-vehicle-header-ident { line-height: 1.15; min-width: 0; }
.v2-vehicle-vin { font-size: 0.75rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.v2-vehicle-km-block,
.v2-vehicle-daily-avg { text-align: right; min-width: 110px; }
.v2-vehicle-km-label {
    font-size: 0.65rem;
    color: #999;
    text-transform: uppercase;
    letter-spacing: 1px;
    font-weight: 600;
}
.v2-vehicle-km-value {
    font-size: 1.35rem;
    font-weight: 800;
    color: var(--tn-dark);
    line-height: 1;
}
.v2-vehicle-km-unit {
    font-size: 0.8rem;
    color: #00a896;
    font-weight: 600;
}
.v2-vehicle-km-date { font-size: 0.7rem; color: #aaa; margin-top: 2px; }
.v2-vehicle-daily-value {
    font-size: 1.2rem;
    color: #c026d3;
    font-weight: 800;
    line-height: 1;
}
.v2-contract-progress { width: 200px; max-width: 100%; flex-shrink: 0; }
.v2-progress-km-track {
    height: 10px;
    background: #e0e0e0;
    border-radius: 5px;
    overflow: hidden;
}
.v2-progress-km-fill { height: 100%; transition: width 0.5s; }
.v2-progress-time-marker-wrap { position: relative; height: 4px; margin-top: -2px; }
.v2-progress-time-marker {
    position: absolute;
    top: -5px;
    height: 14px;
    width: 2px;
    background: #000;
    z-index: 2;
    box-shadow: 0 0 2px rgba(255, 255, 255, 1);
    transform: translateX(-50%);
}
.v2-progress-time-track {
    height: 2px;
    background: #f5f5f5;
    border-radius: 1px;
    overflow: hidden;
}
.v2-progress-time-fill { height: 100%; background: var(--tn-blue); }
.v2-progress-legend {
    display: flex;
    justify-content: space-between;
    font-size: 0.65rem;
    color: #888;
    margin-top: 2px;
    font-weight: 500;
}
.v2-vehicle-driver-text { text-align: right; line-height: 1.2; }
.v2-vehicle-driver-name { font-weight: 700; font-size: 0.9rem; color: var(--tn-dark); }
.v2-vehicle-driver-free { font-size: 0.8rem; color: #00c853; font-weight: 700; }
.v2-vehicle-driver-avatar {
    width: 38px;
    height: 38px;
    border-radius: 50%;
    background: #f0f0f0;
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 1px solid #ddd;
    font-size: 1rem;
    color: #555;
    font-weight: 700;
}
.v2-vehicle-driver-avatar img { width: 100%; height: 100%; object-fit: cover; }
.v2-vehicle-driver-status {
    width: 3px;
    height: 38px;
    border-radius: 2px;
    flex-shrink: 0;
}
.v2-vehicle-header-main { display: flex; align-items: center; gap: 14px; }
.v2-plate {
    border: 2px solid #000;
    border-radius: 4px;
    padding: 6px 12px;
    font-family: Consolas, monospace;
    font-weight: 700;
    font-size: 18px;
    background: #fff;
}
.v2-vehicle-title { font-size: 1.1rem; font-weight: 700; color: var(--tn-blue); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.v2-vehicle-header-stats { display: flex; flex-wrap: wrap; gap: 20px; }
.v2-vehicle-stat { display: flex; flex-direction: column; gap: 2px; min-width: 120px; }
.v2-vehicle-stat-label { font-size: 11px; text-transform: uppercase; color: #6b7280; font-weight: 600; }
.v2-vehicle-stat-value { font-size: 16px; font-weight: 700; }

.v2-vehicle-tabs {
    display: flex;
    flex-wrap: wrap;
    gap: 4px;
    margin-bottom: 12px;
    border-bottom: 1px solid var(--tn-border);
    padding-bottom: 8px;
}
.v2-vehicle-tab {
    text-decoration: none;
    color: var(--tn-dark);
    padding: 8px 12px;
    border-radius: 6px 6px 0 0;
    font-size: 14px;
    font-weight: 600;
    border: 1px solid transparent;
}
.v2-vehicle-tab:hover { background: #eef2ff; color: var(--tn-blue); }
.v2-vehicle-tab.is-active {
    background: var(--tn-white);
    color: var(--tn-blue);
    border-color: var(--tn-border);
    border-bottom-color: var(--tn-white);
    margin-bottom: -1px;
}
.v2-vehicle-tab-content { min-height: 200px; max-width: none; }

/* Mapa tankowań (karta pojazdu — Leaflet) */
.v2-vehicle-tab-content:has(#v2-flota-fuel-map) {
    padding-bottom: 4px;
}
.v2-flota-fuel-map-card {
    margin-bottom: 8px;
}
.v2-flota-fuel-map-card__head {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    justify-content: space-between;
    gap: 6px 16px;
    margin-bottom: 8px;
}
.v2-flota-fuel-map-card__title {
    margin: 0;
    font-size: 1.05rem;
    font-weight: 700;
    color: var(--tn-blue);
}
.v2-flota-fuel-map-card__meta { margin: 0; font-size: 0.88rem; }
.v2-flota-fuel-map-body {
    display: flex;
    flex-direction: column;
    gap: 6px;
    min-height: 0;
}
.v2-flota-fuel-map-hint {
    margin: 0;
    font-size: 0.78rem;
    line-height: 1.3;
}
.v2-flota-fuel-map {
    width: 100%;
    min-height: 200px;
    height: clamp(200px, calc(100vh - 20rem), 520px);
    border: 1px solid var(--tn-border);
    border-radius: 6px;
    z-index: 1;
    overscroll-behavior: contain;
}
.v2-flota-fuel-map-legend {
    display: flex;
    flex-wrap: wrap;
    gap: 8px 14px;
    justify-content: center;
    margin: 0;
    padding: 0 0 2px;
    list-style: none;
    font-size: 0.8rem;
    color: #555;
    flex-shrink: 0;
}
.v2-flota-fuel-map-legend li {
    display: flex;
    align-items: center;
    gap: 6px;
}
.v2-flota-map-marker {
    border-radius: 50%;
    text-align: center;
    font-weight: 800;
    font-family: var(--tn-font, 'Segoe UI', sans-serif);
    line-height: 30px;
    box-shadow: 0 3px 8px rgba(0, 0, 0, 0.35);
    border: 2px solid #fff;
    transition: transform 0.2s ease;
}
.v2-flota-map-marker:hover {
    transform: scale(1.15);
    z-index: 1000 !important;
}
.v2-flota-map-marker--legend {
    width: 14px;
    height: 14px;
    line-height: 14px;
    display: inline-block;
    flex-shrink: 0;
}
.v2-flota-map-marker--turquoise { background-color: #00ebc8; color: #003366; }
.v2-flota-map-marker--green { background-color: #8cf000; color: #003366; }
.v2-flota-map-marker--yellow { background-color: #ffeb00; color: #003366; }
.v2-flota-map-marker--orange { background-color: #ff7100; color: #fff; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); }
.v2-flota-map-marker--red { background-color: #fa3746; color: #fff; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); }
.v2-flota-map-marker--purple { background-color: #e43af1; color: #fff; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); }
.v2-flota-map-popup {
    min-width: 250px;
    max-height: 300px;
    overflow-y: auto;
    font-size: 0.9rem;
}
.v2-flota-map-popup__head {
    text-align: center;
    border-bottom: 2px solid var(--tn-blue);
    padding-bottom: 8px;
    margin-bottom: 8px;
}
.v2-flota-map-popup__head strong {
    display: block;
    color: var(--tn-blue);
    font-size: 1.05em;
}
.v2-flota-map-popup__head span {
    display: block;
    font-size: 0.9em;
    color: #333;
    margin-top: 4px;
}
.v2-flota-map-popup__nav { text-align: center; margin: 0 0 10px; }
.v2-flota-map-popup__drive {
    display: inline-block;
    color: #fff;
    background: #4285f4;
    padding: 4px 12px;
    text-decoration: none;
    border-radius: 4px;
    font-size: 0.85em;
    font-weight: 600;
}
.v2-flota-map-popup__drive:hover { filter: brightness(1.05); }
.v2-flota-map-popup__table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.85em;
}
.v2-flota-map-popup__table th {
    text-align: left;
    border-bottom: 1px solid #ccc;
    padding: 2px 5px;
    color: #666;
    font-weight: 600;
}
.v2-flota-map-popup__table td {
    border-bottom: 1px solid #eee;
    padding: 3px 5px;
    color: #333;
}
.v2-flota-map-popup__table tr:last-child td { border-bottom: none; }
.v2-flota-map-popup__meta {
    margin: 8px 0 0;
    font-size: 0.82em;
    color: #666;
    text-align: center;
}

.v2-dl-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
    gap: 12px 20px;
}
.v2-dl-full { grid-column: 1 / -1; }
.v2-dl-label { display: block; font-size: 12px; color: #6b7280; margin-bottom: 2px; }
.v2-dl-value { display: block; font-weight: 600; }

.v2-toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px;
    margin-bottom: 12px;
}
.v2-toolbar--card {
    margin: 0;
    padding: 14px 16px;
    background: linear-gradient(180deg, #f8faff 0%, #f1f4fa 100%);
    border-bottom: 1px solid var(--tn-border);
    gap: 12px 16px;
}
.v2-toolbar-main {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px 14px;
    flex: 1 1 auto;
}
.v2-toolbar-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    flex: 0 0 auto;
}
.v2-toolbar input[type="number"],
.v2-toolbar input[type="month"],
.v2-toolbar select,
.v2-field select,
.v2-field input[type="month"] {
    padding: 7px 10px;
    border: 1px solid var(--tn-border);
    border-radius: 6px;
    font: inherit;
    font-size: 13px;
    background: #fff;
    color: var(--tn-dark);
}
.v2-field--inline {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}
.v2-field-sep {
    color: #9ca3af;
    font-weight: 600;
}
.v2-btn {
    padding: 7px 14px;
    border: 1px solid var(--tn-blue);
    background: var(--tn-blue);
    color: #fff;
    border-radius: 6px;
    cursor: pointer;
    font-weight: 600;
}
.v2-btn.v2-mobile-connect-btn {
    border-color: #16a34a;
    background: #16a34a;
    color: #fff;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
}
.v2-btn.v2-mobile-connect-btn:hover {
    background: #15803d;
    border-color: #15803d;
    color: #fff;
    filter: none;
}
.v2-kpi-sm { font-size: 22px; }
.v2-table-compact th, .v2-table-compact td { padding: 6px 8px; font-size: 13px; }

.v2-alert {
    padding: 10px 14px;
    border-radius: 6px;
    margin-bottom: 14px;
    font-weight: 500;
}
.v2-alert-success { background: #ecfdf5; color: #065f46; border: 1px solid #a7f3d0; }
.v2-alert-error { background: #fef2f2; color: #991b1b; border: 1px solid #fecaca; }
.v2-alert-warning { background: #fffbeb; color: #92400e; border: 1px solid #fde68a; }
.v2-alert-info { background: #eff6ff; color: #1e40af; border: 1px solid #bfdbfe; }

.v2-perm-denied {
    max-width: 640px;
    margin: 24px auto 0;
}

.v2-form-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    gap: 12px 16px;
}
.v2-form-grid label { display: flex; flex-direction: column; gap: 4px; font-size: 13px; font-weight: 600; color: #374151; }
.v2-form-grid input,
.v2-form-grid select,
.v2-form-grid textarea {
    padding: 7px 10px;
    border: 1px solid var(--tn-border);
    border-radius: 6px;
    font: inherit;
}
.v2-form-full { grid-column: 1 / -1; }
.v2-form-actions {
    grid-column: 1 / -1;
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 4px;
}

.v2-btn-secondary {
    background: var(--tn-white);
    color: var(--tn-blue);
}
.v2-btn-secondary:hover { background: #eef2ff; }
.v2-btn-small { padding: 4px 10px; font-size: 12px; }
.v2-btn-danger {
    background: #b91c1c;
    border-color: #b91c1c;
}
.v2-btn-danger:hover { background: #991b1b; }

/* ======================= Pracownicy → Działy =======================
   Lista = czytelne karty-podglądy (bez surowych inputów w widoku), a edycja
   i dodawanie w oknie modalnym. Kolor działu jako pasek karty i plakietka. */

/* pasek narzędzi: tytuł, licznik, szukanie, „+ Nowy dział" */
.v2-dept-bar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 10px 14px;
    margin-bottom: 16px;
    padding-bottom: 13px;
    border-bottom: 1px solid #eef1f6;
}
.v2-dept-bar .v2-card-title { margin: 0; font-weight: 600; }
.v2-dept-bar__lead { display: flex; align-items: baseline; gap: 9px; flex-wrap: wrap; min-width: 0; }
.v2-dept-bar__count {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 1.55rem;
    padding: 1px 8px;
    border-radius: 999px;
    background: #eef2ff;
    color: var(--tn-blue, #001ed2);
    font-size: 0.78rem;
    font-weight: 500;
}
.v2-dept-bar__sub { font-size: 0.76rem; color: #94a3b8; }
.v2-dept-bar__tools { display: flex; align-items: center; gap: 9px; flex-wrap: wrap; }

/* pole szukania z ikoną lupy — bez natywnego, surowego wyglądu */
.v2-dept-search {
    position: relative;
    display: inline-flex;
    align-items: center;
    width: 17rem;
    max-width: 100%;
}
.v2-dept-search__ico {
    position: absolute;
    left: 10px;
    display: inline-flex;
    color: #94a3b8;
    pointer-events: none;
}
.v2-dept-search input {
    width: 100%;
    box-sizing: border-box;
    padding: 7px 11px 7px 31px;
    border: 1px solid #dce2ea;
    border-radius: 8px;
    background: #f8fafc;
    font-size: 0.83rem;
    color: var(--tn-dark, #00003c);
    transition: border-color 0.15s, background 0.15s, box-shadow 0.15s;
}
.v2-dept-search input::placeholder { color: #94a3b8; }
.v2-dept-search input:focus {
    outline: none;
    background: #fff;
    border-color: var(--tn-blue, #001ed2);
    box-shadow: 0 0 0 3px rgba(0, 30, 210, 0.1);
}
.v2-dept-newbtn {
    padding: 7px 14px;
    border: 0;
    border-radius: 8px;
    background: var(--tn-blue, #001ed2);
    color: #fff;
    font-size: 0.82rem;
    font-weight: 500;
    cursor: pointer;
    transition: background 0.15s;
}
.v2-dept-newbtn:hover { background: #00159c; }

/* ---------- siatka kart ---------- */
.v2-dept-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(268px, 1fr));
    gap: 14px;
    align-items: stretch;
}
/* karta jako kolumna — stopka zawsze przy dolnej krawędzi, więc karty w rzędzie
   mają równą wysokość niezależnie od długości nazwy działu */
.v2-dept-card {
    position: relative;
    display: flex;
    flex-direction: column;
    box-sizing: border-box;
    min-width: 0;
    padding: 15px 16px 12px;
    border: 1px solid #e6eaf0;
    border-radius: 12px;
    background: #fff;
    box-shadow: 0 1px 2px rgba(0, 0, 60, 0.05);
    transition: box-shadow 0.16s ease, border-color 0.16s ease;
}
.v2-dept-card:hover { box-shadow: 0 6px 18px rgba(0, 0, 60, 0.09); border-color: #dce2ea; }
.v2-dept-card__stripe {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 3px;
    border-radius: 12px 12px 0 0;
}

.v2-dept-card__head { display: flex; align-items: flex-start; gap: 10px; margin-bottom: 12px; }
.v2-dept-card__name {
    flex: 1 1 auto;
    min-width: 0;
    margin: 0;
    font-size: 1rem;
    font-weight: 600;
    line-height: 1.25;
    color: var(--tn-dark, #00003c);
}
.v2-dept-card__people {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 2rem;
    padding: 2px 8px;
    border-radius: 999px;
    background: #eef2ff;
    color: var(--tn-blue, #001ed2);
    font-size: 0.8rem;
    font-weight: 500;
}
.v2-dept-card__people.is-zero { background: #fef3c7; color: #92400e; }
/* plakietka jako przycisk — otwiera listę osób w dziale */
button.v2-dept-card__people {
    border: 1px solid transparent;
    cursor: pointer;
    font-family: inherit;
    transition: border-color 0.15s, box-shadow 0.15s;
}
button.v2-dept-card__people:hover {
    border-color: rgba(0, 30, 210, 0.4);
    box-shadow: 0 0 0 2px rgba(0, 30, 210, 0.1);
}
button.v2-dept-card__people.is-zero:hover { border-color: #f0c674; box-shadow: 0 0 0 2px rgba(146, 64, 14, 0.1); }

/* ---------- okno „osoby w dziale" ---------- */
.v2-dept-people-dlg { max-width: 32rem; }
.v2-dept-people__bar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding: 9px 18px;
    background: #fafbfd;
    border-bottom: 1px solid #eef1f6;
}
.v2-dept-people__all { display: inline-flex; align-items: center; gap: 6px; font-size: 0.78rem; color: #475569; cursor: pointer; }
.v2-dept-people__sel { font-size: 0.74rem; color: var(--tn-blue, #001ed2); }
.v2-dept-people__list { max-height: min(52vh, 26rem); overflow-y: auto; padding: 6px 10px; }
.v2-dept-people__info { margin: 12px 8px; font-size: 0.84rem; color: #64748b; font-style: italic; }

.v2-dept-person {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 7px 8px;
    border-radius: 8px;
    cursor: pointer;
}
.v2-dept-person:hover { background: #f8fafc; }
.v2-dept-person input[type="checkbox"] { flex: 0 0 auto; width: 1rem; height: 1rem; cursor: pointer; }
.v2-dept-person__body { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.v2-dept-person__name {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 0.87rem;
    color: var(--tn-dark, #00003c);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.v2-dept-person__role {
    font-size: 0.74rem;
    color: #94a3b8;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.v2-dept-ptag {
    flex: 0 0 auto;
    padding: 1px 6px;
    border-radius: 999px;
    background: #f1f5f9;
    color: #64748b;
    font-size: 0.62rem;
    letter-spacing: 0.02em;
}
.v2-dept-ptag--out { background: #fef2f2; color: #b42318; }
.v2-dept-person__open { flex: 0 0 auto; font-size: 0.72rem; color: var(--tn-blue, #001ed2); text-decoration: none; }
.v2-dept-person__open:hover { text-decoration: underline; }

.v2-dept-people__foot {
    display: flex;
    align-items: flex-end;
    gap: 10px;
    flex-wrap: wrap;
    padding: 12px 18px;
    border-top: 1px solid #eef1f6;
    background: #fafbfd;
    border-radius: 0 0 14px 14px;
}
.v2-dept-people__move { flex: 1 1 15rem; min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.v2-dept-people__moverow { display: flex; gap: 7px; align-items: center; }
.v2-dept-people__moverow select { flex: 1 1 auto; min-width: 0; }
.v2-dept-people__status { flex: 1 1 100%; font-size: 0.74rem; color: #16a34a; }
.v2-dept-people__status.is-error { color: #b42318; }

.v2-dept-card__rows { margin: 0; display: flex; flex-direction: column; gap: 8px; }
.v2-dept-r { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.v2-dept-r dt {
    font-size: 0.63rem;
    font-weight: 500;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: #94a3b8;
}
.v2-dept-r dd {
    margin: 0;
    font-size: 0.86rem;
    color: var(--tn-dark, #00003c);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.v2-dept-r__empty { color: #cbd5e1; font-style: italic; }

/* stopka: plakietki MPK/koloru + akcje */
.v2-dept-card__foot {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    flex-wrap: wrap;
    margin-top: auto;
    padding-top: 10px;
    border-top: 1px solid #f1f5f9;
}
.v2-dept-card__rows { margin-bottom: 13px; }
.v2-dept-card__tags { display: inline-flex; gap: 5px; flex-wrap: wrap; min-width: 0; }
.v2-dept-tag {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 2px 8px;
    border: 1px solid #e6eaf0;
    border-radius: 999px;
    background: #f8fafc;
    font-size: 0.7rem;
    color: #475569;
    white-space: nowrap;
}
.v2-dept-tag--mpk { font-family: Consolas, "Courier New", monospace; letter-spacing: 0.02em; }
.v2-dept-tag--muted { color: #a5b0c0; font-style: italic; }
.v2-dept-dot {
    width: 9px;
    height: 9px;
    border-radius: 50%;
    box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.12);
}
.v2-dept-card__actions { display: inline-flex; gap: 4px; margin-left: auto; }
.v2-dept-act {
    padding: 3px 9px;
    border: 1px solid #dce2ea;
    border-radius: 7px;
    background: #fff;
    color: var(--tn-blue, #001ed2);
    font-size: 0.74rem;
    font-weight: 500;
    cursor: pointer;
    transition: background 0.15s, border-color 0.15s;
}
.v2-dept-act:hover { background: #eef2ff; border-color: rgba(0, 30, 210, 0.35); }
.v2-dept-act--del { color: #b42318; padding: 3px 8px; }
.v2-dept-act--del:hover { background: #fef2f2; border-color: #e8b4b4; }

.v2-dept-noresult { margin: 16px 0 0; font-size: 0.85rem; color: #64748b; font-style: italic; }

/* ---------- okno dodawania / edycji ---------- */
.v2-dept-dialog {
    max-width: 34rem;
    padding: 0;
    border: 0;
    border-radius: 14px;
    box-shadow: 0 20px 60px rgba(0, 0, 60, 0.3);
}
.v2-dept-dialog::backdrop { background: rgba(0, 0, 60, 0.35); }
.v2-dept-dialog__head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 15px 18px;
    border-bottom: 1px solid #eef1f6;
}
.v2-dept-dialog__title { margin: 0; font-size: 1rem; font-weight: 600; color: var(--tn-dark, #00003c); }
.v2-dept-dialog__x {
    border: 0;
    background: transparent;
    color: #94a3b8;
    font-size: 0.95rem;
    line-height: 1;
    padding: 4px 6px;
    border-radius: 6px;
    cursor: pointer;
}
.v2-dept-dialog__x:hover { background: #f1f5f9; color: #475569; }
.v2-dept-dialog__body {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 13px 14px;
    padding: 16px 18px;
}
.v2-dept-dialog__foot {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    padding: 13px 18px;
    border-top: 1px solid #eef1f6;
    background: #fafbfd;
    border-radius: 0 0 14px 14px;
}

.v2-dept-f { display: flex; flex-direction: column; gap: 5px; min-width: 0; }
.v2-dept-f--wide { grid-column: 1 / -1; }
.v2-dept-f__lbl {
    font-size: 0.65rem;
    font-weight: 500;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: #64748b;
}
/* pola i listy w oknie — jednolity, miękki styl zamiast natywnego */
.v2-dept-dialog input[type="text"],
.v2-dept-dialog input[type="search"],
.v2-dept-dialog select {
    box-sizing: border-box;
    width: 100%;
    padding: 7px 10px;
    border: 1px solid #dce2ea;
    border-radius: 8px;
    background: #fff;
    font-size: 0.85rem;
    color: var(--tn-dark, #00003c);
    font-family: inherit;
    transition: border-color 0.15s, box-shadow 0.15s;
}
.v2-dept-dialog input:focus,
.v2-dept-dialog select:focus {
    outline: none;
    border-color: var(--tn-blue, #001ed2);
    box-shadow: 0 0 0 3px rgba(0, 30, 210, 0.1);
}
.v2-dept-dialog select {
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    padding-right: 28px;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5 6 6.5l5-5' fill='none' stroke='%2364748b' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 10px center;
    background-size: 10px 7px;
}
.v2-dept-dialog select[size]:not([size="1"]) { background-image: none; padding-right: 10px; }

/* wybór osoby = JEDNA kontrolka: pole filtrowania zrośnięte z listą,
   zamiast dwóch osobnych pudełek jedno pod drugim */
.v2-dept-pick {
    border: 1px solid #dce2ea;
    border-radius: 8px;
    background: #fff;
    overflow: hidden;
    transition: border-color 0.15s, box-shadow 0.15s;
}
.v2-dept-pick:focus-within { border-color: var(--tn-blue, #001ed2); box-shadow: 0 0 0 3px rgba(0, 30, 210, 0.1); }
.v2-dept-dialog .v2-dept-pick .v2-filter-select__filter {
    margin: 0;
    border: 0;
    border-radius: 0;
    background: #f8fafc;
    font-size: 0.78rem;
    padding: 5px 10px 5px 27px;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none'%3E%3Ccircle cx='11' cy='11' r='7' stroke='%2394a3b8' stroke-width='2'/%3E%3Cpath d='M20 20l-4.2-4.2' stroke='%2394a3b8' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: left 8px center;
    background-size: 12px 12px;
}
.v2-dept-dialog .v2-dept-pick .v2-filter-select__filter:focus { box-shadow: none; }
.v2-dept-dialog .v2-dept-pick .v2-filter-select__select {
    border: 0;
    border-top: 1px solid #eef1f6;
    border-radius: 0;
}
.v2-dept-dialog .v2-dept-pick .v2-filter-select__select:focus { box-shadow: none; }

/* wybór koloru — kwadraciki zamiast listy z kolorowymi opcjami */
.v2-dept-colors { display: flex; flex-wrap: wrap; gap: 7px; }
.v2-dept-swatch {
    width: 30px;
    height: 30px;
    border: 2px solid #e6eaf0;
    border-radius: 8px;
    padding: 0;
    cursor: pointer;
    transition: border-color 0.15s, box-shadow 0.15s, transform 0.12s;
}
.v2-dept-swatch:hover { transform: translateY(-1px); }
.v2-dept-swatch--auto {
    width: auto;
    padding: 0 10px;
    background: #f8fafc;
    color: #64748b;
    font-size: 0.72rem;
    font-weight: 500;
}
.v2-dept-swatch.is-selected {
    border-color: var(--tn-blue, #001ed2);
    box-shadow: 0 0 0 3px rgba(0, 30, 210, 0.15);
}

@media (max-width: 560px) {
    .v2-dept-dialog__body { grid-template-columns: 1fr; }
    .v2-dept-search { width: 100%; }
    .v2-dept-bar__tools { width: 100%; }
}

.v2-inline-form { display: inline; }
.v2-actions { white-space: nowrap; }

.v2-modal {
    position: fixed;
    inset: 0;
    background: rgba(15, 23, 42, 0.45);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 1000;
    padding: 20px;
}
.v2-modal[hidden] { display: none !important; }
/* Skan QR — mocno przyciemnione tło (twarze w katalogu nie rozpraszają aparatu) */
.v2-modal--vcard-scan {
    background: rgba(12, 14, 20, 0.94);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
}
.v2-modal--vcard-scan .v2-modal-box {
    box-shadow: 0 20px 56px rgba(0, 0, 0, 0.55);
    border: 1px solid rgba(255, 255, 255, 0.12);
}
.v2-modal-box {
    background: var(--tn-white);
    border-radius: 10px;
    padding: 20px 24px;
    max-width: 520px;
    width: 100%;
    box-shadow: 0 12px 40px rgba(0, 0, 0, 0.18);
}
.v2-modal-box h3 { margin: 0 0 14px; color: var(--tn-blue); }
.v2-modal-box--vcard { max-width: 360px; text-align: center; }
.v2-prac-vcard-meta { margin: 0 0 12px; min-height: 1.25rem; }
.v2-prac-vcard-qr-wrap {
    display: flex;
    justify-content: center;
    align-items: center;
    margin: 0 auto 12px;
    padding: 12px;
    background: #fff;
    border: 1px solid var(--tn-border, #e2e8f0);
    border-radius: 10px;
    width: fit-content;
    min-width: 264px;
    min-height: 264px;
    box-sizing: border-box;
}
.v2-prac-vcard-qr-loader {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.75rem;
    width: 240px;
    height: 240px;
}
.v2-prac-vcard-qr-loader[hidden] { display: none !important; }
.v2-prac-vcard-qr-spinner {
    width: 36px;
    height: 36px;
    border: 3px solid #e2e8f0;
    border-top-color: var(--tn-blue, #001ed2);
    border-radius: 50%;
    animation: v2-spin 0.8s linear infinite;
}
.v2-prac-vcard-qr-loader__text {
    margin: 0;
    font-size: 0.8125rem;
    color: #64748b;
}
.v2-prac-vcard-qr-img {
    display: block;
    width: 240px;
    height: 240px;
    image-rendering: pixelated;
}
.v2-prac-vcard-qr-img[hidden] { display: none !important; }
.v2-prac-vcard-hint { margin: 0 0 8px; text-align: left; }

/* Zakładka Dane pojazdu (układ jak legacy tab_data) */
.v2-vehicle-tab-content .td-container {
    background: var(--tn-white);
    border: 1px solid var(--tn-border);
    border-radius: 8px;
    padding: 12px 16px 20px;
    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.06);
    color: var(--tn-dark);
}
#vehicleDataForm {
    margin: 0;
    width: 100%;
}
#vehicleDataForm .td-toolbar {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 15px;
    padding-bottom: 5px;
    border-bottom: 1px solid var(--tn-border);
}
#vehicleDataForm .td-title {
    font-size: 1rem;
    font-weight: 700;
    color: var(--tn-blue);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}
#vehicleDataForm .btn-td {
    padding: 6px 15px;
    border-radius: 4px;
    border: none;
    cursor: pointer;
    font-weight: 600;
    font-size: 0.85rem;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    transition: opacity 0.2s;
}
#vehicleDataForm .btn-td:hover { opacity: 0.9; }
#vehicleDataForm .btn-edit-mode { background-color: var(--tn-blue); color: #fff; }
#vehicleDataForm .btn-save { background-color: #00c853; color: var(--tn-dark); }
#vehicleDataForm .btn-cancel { background-color: #eee; color: #333; margin-right: 5px; }
#vehicleDataForm .actions-view { display: block; }
#vehicleDataForm .actions-edit { display: none; }
#vehicleDataForm.is-editing .actions-view { display: none; }
#vehicleDataForm.is-editing .actions-edit { display: block; }
/* Domyślnie 3 kolumny. Klasa v2-hd-screen na <html> (pomiar fizycznej rozdzielczości w shell.php)
   od HD (1280+) daje 4 kolumny — niezależnie od skalowania Windows.
   Bardzo wąskie OKNO nadal degraduje do 2/1 kolumn, żeby formularz się nie łamał. */
#vehicleDataForm .td-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 20px;
    align-items: start;
}
.v2-hd-screen #vehicleDataForm .td-grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 16px;
}
@media (max-width: 1000px) {
    #vehicleDataForm .td-grid,
    .v2-hd-screen #vehicleDataForm .td-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 700px) {
    #vehicleDataForm .td-grid,
    .v2-hd-screen #vehicleDataForm .td-grid { grid-template-columns: 1fr; }
}
#vehicleDataForm .td-section { min-width: 0; }
#vehicleDataForm .td-full-width { width: 100%; }
#vehicleDataForm .td-sect-header {
    font-size: 0.8rem;
    font-weight: 800;
    color: #00a896;
    text-transform: uppercase;
    border-bottom: 2px solid #f0f0f0;
    margin-bottom: 15px;
    padding-bottom: 5px;
}
#vehicleDataForm .td-row {
    display: flex;
    align-items: flex-start;
    margin-bottom: 8px;
    font-size: 0.9rem;
    position: relative;
    gap: 6px;
}
#vehicleDataForm .td-label {
    flex: 0 0 110px;
    color: #666;
    font-weight: 500;
    font-size: 0.85rem;
    padding-top: 5px;
}
#vehicleDataForm .td-input,
#vehicleDataForm input.td-input,
#vehicleDataForm select.td-input,
#vehicleDataForm textarea.td-input {
    flex: 1 1 auto;
    min-width: 0;
    max-width: 100%;
    box-sizing: border-box;
    border: 1px solid transparent;
    background: transparent;
    color: var(--tn-dark);
    padding: 4px 8px;
    border-radius: 4px;
    font-weight: 600;
    font-size: 0.9rem;
    font-family: inherit;
    margin: 0;
}
#vehicleDataForm:not(.is-editing) input.td-input,
#vehicleDataForm:not(.is-editing) textarea.td-input {
    cursor: text;
    user-select: text;
    -webkit-user-select: text;
}
#vehicleDataForm:not(.is-editing) select.td-input,
#vehicleDataForm:not(.is-editing) select.td-input.v2-select-copy-only {
    -webkit-appearance: menulist;
    appearance: auto;
    cursor: text;
    user-select: text;
    -webkit-user-select: text;
}
#vehicleDataForm.is-editing .td-input,
#vehicleDataForm.is-editing input.td-input,
#vehicleDataForm.is-editing select.td-input,
#vehicleDataForm.is-editing textarea.td-input {
    background: #fff;
    border: 1px solid #ccc;
    pointer-events: auto;
    font-weight: 400;
}
#vehicleDataForm.is-editing .td-input:focus {
    border-color: var(--tn-blue);
    outline: none;
    box-shadow: 0 0 0 2px rgba(0, 30, 210, 0.1);
}
#vehicleDataForm.is-editing .td-input[readonly] { background: #f9f9f9; color: #999; }
#vehicleDataForm textarea.td-input {
    resize: vertical;
    min-height: 140px;
    overflow-y: auto;
    line-height: 1.5;
    white-space: pre-wrap;
}
#vehicleDataForm.is-editing textarea.td-input {
    cursor: text;
}
#vehicleDataForm.is-editing select.td-input {
    -webkit-appearance: auto;
    appearance: auto;
    cursor: pointer;
}
#vehicleDataForm .box-alert {
    margin-top: 15px;
    border: 1px solid #dc2626;
    padding: 10px;
    border-radius: 6px;
    background: rgba(220, 38, 38, 0.03);
}
#vehicleDataForm .box-info {
    margin-top: 15px;
    background: var(--tn-blue);
    color: white;
    padding: 10px;
    border-radius: 6px;
}
#vehicleDataForm .box-info .td-label { color: rgba(255, 255, 255, 0.7); }
#vehicleDataForm .box-info .td-input { color: #fff; }
#vehicleDataForm.is-editing .box-info .td-input {
    color: var(--tn-dark) !important;
    background: #fff;
}
#vehicleDataForm .calc-indicator {
    position: absolute;
    right: 10px;
    top: 50%;
    transform: translateY(-50%);
    background-color: #00a896;
    color: var(--tn-dark);
    font-size: 0.65rem;
    padding: 2px 6px;
    border-radius: 10px;
    font-weight: 800;
    pointer-events: none;
    display: none;
}
#vehicleDataForm .is-calc .calc-indicator { display: block; }
#vehicleDataForm.is-editing .calc-indicator { display: none; }
#vehicleDataForm .files-grid { display: flex; flex-direction: column; gap: 8px; }
#vehicleDataForm .file-card {
    position: relative;
    background: #fafafa;
    border: 2px solid #e0e0e0;
    border-radius: 6px;
    padding: 8px 12px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    min-height: 40px;
    transition: all 0.2s ease;
}
#vehicleDataForm.is-editing .file-card {
    background: #fff;
    border-style: dashed;
    cursor: pointer;
}
#vehicleDataForm.is-editing .file-card:hover { border-color: #aaa; background: #fcfcfc; }
#vehicleDataForm .file-card.drag-over {
    border-color: #00a896 !important;
    background-color: rgba(0, 168, 150, 0.1) !important;
    transform: scale(1.02);
    z-index: 10;
}
#vehicleDataForm .file-card.marked-delete {
    opacity: 0.6;
    background: #ffeaea !important;
    border-color: #dc2626 !important;
}
#vehicleDataForm .file-card.marked-delete .f-name {
    text-decoration: line-through;
    color: #dc2626;
}
#vehicleDataForm .f-info {
    flex: 1;
    display: flex;
    flex-direction: column;
    pointer-events: none;
    min-width: 0;
}
#vehicleDataForm .f-name { font-weight: 600; font-size: 0.85rem; color: var(--tn-dark); }
#vehicleDataForm .status-ok { color: #00c853; font-size: 0.75rem; font-weight: bold; }
#vehicleDataForm .status-none { color: #aaa; font-size: 0.75rem; }
#vehicleDataForm .status-upload {
    color: var(--tn-blue);
    font-weight: bold;
    font-size: 0.75rem;
    display: none;
}
#vehicleDataForm .f-actions { display: flex; align-items: center; gap: 10px; z-index: 2; flex-shrink: 0; }
#vehicleDataForm .btn-download {
    background-color: var(--tn-blue);
    color: #fff;
    padding: 4px 12px;
    border-radius: 4px;
    text-decoration: none;
    font-size: 0.75rem;
    font-weight: 600;
    display: inline-flex;
    align-items: center;
    gap: 5px;
    border: 1px solid transparent;
    transition: all 0.2s;
    line-height: 1.2;
}
#vehicleDataForm .btn-download:hover {
    background-color: #001599;
    color: #fff;
    transform: translateY(-1px);
    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
}
#vehicleDataForm .view-only { display: inline-flex; }
#vehicleDataForm.is-editing .view-only { display: none !important; }
#vehicleDataForm .edit-only { display: none; }
#vehicleDataForm.is-editing .edit-only { display: flex; }
#vehicleDataForm .btn-trash {
    background: none;
    border: none;
    font-size: 1.1rem;
    cursor: pointer;
    padding: 0;
    color: #dc2626;
}
#vehicleDataForm .btn-undo {
    background: none;
    border: none;
    font-size: 1.1rem;
    cursor: pointer;
    padding: 0;
    color: #00c853;
}

/* Zakładka Koszty i TCO */
.v2-tco-wrap {
    background: var(--tn-white);
    border: 1px solid var(--tn-border);
    border-radius: 8px;
    padding: 16px;
    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.06);
}
.v2-tco-filter {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    background: #eef2ff;
    border: 1px solid #d0d7de;
    border-radius: 6px;
    padding: 14px 16px;
    margin-bottom: 18px;
}
.v2-tco-filter-text {
    display: flex;
    flex-direction: column;
    gap: 4px;
    color: var(--tn-dark);
}
.v2-tco-filter-text strong { font-size: 1rem; color: var(--tn-blue); }
.v2-tco-filter-dates {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}
.v2-tco-date {
    padding: 8px 10px;
    border: 1px solid var(--tn-border);
    border-radius: 4px;
    font: inherit;
}
.v2-tco-kpi-row {
    display: flex;
    flex-wrap: wrap;
    gap: 14px;
    margin-bottom: 18px;
}
.v2-tco-kpi {
    flex: 1;
    min-width: 200px;
    background: #fff;
    border: 1px solid #e0e0e0;
    border-radius: 8px;
    padding: 14px 16px;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.04);
    border-bottom: 3px solid var(--tn-blue);
}
.v2-tco-kpi--accent { border-bottom-color: #ff7100; }
.v2-tco-kpi--green { border-bottom-color: #7cb300; }
.v2-tco-kpi--muted { border-bottom-color: #9ca3af; min-width: 180px; }
.v2-tco-kpi-label {
    font-size: 0.72rem;
    text-transform: uppercase;
    color: #666;
    font-weight: 700;
    margin-bottom: 6px;
}
.v2-tco-kpi-value {
    font-size: 1.35rem;
    font-weight: 800;
    color: var(--tn-dark);
    line-height: 1.2;
}
.v2-tco-kpi-value--orange { color: #ff7100; }
.v2-tco-kpi-value--green { color: #7cb300; }
.v2-tco-kpi-sub { font-size: 0.8rem; color: #888; margin-top: 4px; line-height: 1.35; }
.v2-tco-panels {
    display: grid;
    grid-template-columns: 1fr 1.5fr;
    gap: 18px;
}
@media (max-width: 1000px) {
    .v2-tco-panels { grid-template-columns: 1fr; }
}
.v2-tco-panel {
    background: #fff;
    border: 1px solid #e0e0e0;
    border-radius: 8px;
    padding: 18px;
    min-width: 0;
}
.v2-tco-panel--events { display: flex; flex-direction: column; }
.v2-tco-panel-title {
    margin: 0 0 14px;
    font-size: 1rem;
    color: var(--tn-dark);
}
.v2-tco-panel-title--line {
    border-bottom: 2px solid #00a896;
    display: inline-block;
    padding-bottom: 4px;
}
.v2-tco-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.9rem;
}
.v2-tco-table th {
    text-align: left;
    padding: 10px 8px;
    border-bottom: 2px solid #eee;
    background: #f9f9f9;
    color: #555;
    font-weight: 700;
}
.v2-tco-table td {
    padding: 9px 8px;
    border-bottom: 1px solid #f0f0f0;
    vertical-align: top;
}
.v2-tco-num {
    text-align: right;
    font-weight: 600;
    font-family: Consolas, monospace;
    white-space: nowrap;
}
.v2-tco-table-total {
    background: #eef2ff;
    border-top: 2px solid var(--tn-blue);
}
.v2-tco-table-total td { font-weight: 700; }
.v2-tco-pdf-form { margin-top: 24px; text-align: center; }
.v2-tco-events-scroll {
    flex: 1;
    overflow-y: auto;
    max-height: 500px;
    border: 1px solid #eee;
    border-radius: 4px;
}
.v2-tco-table--log thead th {
    position: sticky;
    top: 0;
    z-index: 1;
}
.v2-tco-empty {
    text-align: center;
    padding: 28px;
    color: #999;
}
.v2-tco-badge-fuel {
    background: #e3f2fd;
    color: #1565c0;
    padding: 3px 8px;
    border-radius: 4px;
    font-size: 0.75rem;
    font-weight: 700;
}
.v2-tco-badge-service {
    background: #fbe9e7;
    color: #d84315;
    padding: 3px 8px;
    border-radius: 4px;
    font-size: 0.75rem;
    font-weight: 700;
}

/* --- Generator umów / edytor szablonów --- */
.v2-contract-gen-toolbar { margin: 0 0 1rem; }
.v2-contract-gen-form { max-width: 720px; }
.v2-contract-gen-form .v2-field select,
.v2-contract-gen-form .v2-field input[type="date"] {
    padding: 8px 10px;
    border: 1px solid var(--tn-border);
    border-radius: 6px;
    font: inherit;
    font-size: 14px;
    background: #fff;
}
.v2-form-grid--2 {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem 1.25rem;
}
@media (max-width: 640px) {
    .v2-form-grid--2 { grid-template-columns: 1fr; }
}
.v2-field { display: flex; flex-direction: column; gap: 0.35rem; }
.v2-field-label { font-size: 0.75rem; font-weight: 700; text-transform: uppercase; color: #64748b; }
.v2-contract-gen-hint { font-size: 0.85rem; color: #64748b; margin: 1rem 0; }
.v2-contract-gen-actions { margin-top: 1.25rem; }
.v2-contract-gen-loader {
    margin-top: 1rem;
    padding: 1.5rem;
    text-align: center;
    background: #f8fafc;
    border-radius: 8px;
    border: 1px solid #e2e8f0;
}
.v2-contract-gen-loader[hidden] { display: none !important; }
.v2-contract-gen-spinner {
    width: 36px;
    height: 36px;
    margin: 0 auto 0.75rem;
    border: 3px solid #e2e8f0;
    border-top-color: var(--tn-blue, #001ed2);
    border-radius: 50%;
    animation: v2-spin 0.8s linear infinite;
}
@keyframes v2-spin { to { transform: rotate(360deg); } }

/* Pełnoekranowy loader przy generowaniu eksportów (PDF/Excel/CSV) */
.v2-export-overlay {
    position: fixed;
    inset: 0;
    z-index: 10050;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(15, 23, 42, 0.45);
    backdrop-filter: blur(2px);
}
.v2-export-overlay[hidden] { display: none !important; }
.v2-export-overlay__panel {
    min-width: 220px;
    max-width: 90vw;
    padding: 1.75rem 2rem;
    text-align: center;
    background: #fff;
    border-radius: 10px;
    box-shadow: 0 12px 40px rgba(15, 23, 42, 0.18);
    border: 1px solid #e2e8f0;
}
.v2-export-overlay__spinner {
    width: 40px;
    height: 40px;
    margin: 0 auto 1rem;
    border: 3px solid #e2e8f0;
    border-top-color: var(--tn-blue, #001ed2);
    border-radius: 50%;
    animation: v2-spin 0.8s linear infinite;
}
.v2-export-overlay__msg {
    margin: 0;
    font-size: 0.95rem;
    font-weight: 600;
    color: #334155;
}
html.v2-export-busy,
html.v2-export-busy body {
    overflow: hidden;
    touch-action: none;
}
form.v2-form-submitting {
    pointer-events: none;
}
form.v2-form-submitting .v2-btn[aria-disabled="true"] {
    opacity: 0.65;
    cursor: wait;
}

.v2-content--contract-editor {
    display: flex;
    flex-direction: column;
    min-height: calc(100vh - 90px);
    padding-bottom: 0.25rem;
}
.v2-content--contract-editor .v2-page-header {
    flex-shrink: 0;
    margin-bottom: 0.5rem;
}
.v2-contract-editor {
    display: flex;
    gap: 0;
    align-items: flex-start;
    flex: 1 1 auto;
    min-height: 0;
    margin: 0;
    border: 1px solid #e2e8f0;
    border-radius: 8px;
    background: #fff;
}
/* Zwijany panel ustawień strony + załączników — domyślnie zwinięty, by edytor (kartki A4)
   miał maksymalną powierzchnię. */
.v2-contract-pagesetup {
    flex-shrink: 0;
    background: #f8fafc;
    border-bottom: 1px solid #e2e8f0;
}
.v2-contract-pagesetup__summary {
    cursor: pointer;
    padding: 7px 16px;
    font-size: 0.82rem;
    font-weight: 700;
    color: #001ed2;
    list-style: none;
    user-select: none;
}
.v2-contract-pagesetup__summary::-webkit-details-marker { display: none; }
.v2-contract-pagesetup__summary::before { content: '▸ '; }
.v2-contract-pagesetup[open] .v2-contract-pagesetup__summary::before { content: '▾ '; }
.v2-contract-pagesetup[open] .v2-contract-pagesetup__summary { border-bottom: 1px solid #e2e8f0; }
.v2-contract-pagesetup .v2-contract-margins-bar,
.v2-contract-pagesetup .v2-contract-attachments-bar { border-bottom: none; }
.v2-contract-editor-sidebar {
    width: 220px;
    flex-shrink: 0;
    background: var(--tn-dark, #00003c);
    color: #e2e8f0;
    display: flex;
    flex-direction: column;
    position: sticky;
    top: 60px;
    align-self: flex-start;
    max-height: calc(100vh - 72px);
    overflow-y: auto;
}
.v2-contract-editor-sidebar-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.75rem 1rem;
    background: var(--tn-blue, #001ed2);
    font-size: 0.95rem;
}
.v2-contract-editor-files {
    flex: 1;
    overflow-y: auto;
    display: flex;
    flex-direction: column;
}
.v2-contract-editor-file {
    display: block;
    padding: 0.55rem 1rem;
    color: #cbd5e1;
    text-decoration: none;
    font-size: 0.85rem;
    border-bottom: 1px solid rgba(255, 255, 255, 0.06);
}
.v2-contract-editor-file:hover,
.v2-contract-editor-file.is-active {
    background: rgba(255, 255, 255, 0.08);
    color: var(--tn-mint, #00ebc8);
}
.v2-contract-editor-new { margin: 0.75rem; width: calc(100% - 1.5rem); }
.v2-contract-editor-back {
    padding: 0.5rem 1rem 1rem;
    font-size: 0.8rem;
    margin: 0;
}
.v2-contract-editor-back a { color: #94a3b8; }
.v2-contract-editor-main {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-width: 0;
    min-height: 0;
}
.v2-contract-editor-toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem 1rem;
    padding: 0.65rem 1rem;
    border-bottom: 1px solid #e2e8f0;
    background: #f8fafc;
}
.v2-contract-editor-title {
    font-weight: 700;
    color: var(--tn-dark, #00003c);
    flex: 1;
    min-width: 120px;
}
.v2-contract-editor-toolbar-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
}
.v2-contract-editor-var .v2-input-sm { min-width: 160px; font-size: 0.8rem; }
.v2-contract-editor-menu-btn { display: none; }
.v2-btn-icon {
    background: transparent;
    border: 1px solid rgba(255, 255, 255, 0.25);
    color: inherit;
    cursor: pointer;
    padding: 0.15rem 0.45rem;
    border-radius: 4px;
    font-size: 1.1rem;
    line-height: 1.2;
}
.v2-contract-editor-toolbar .v2-btn-icon {
    border-color: #cbd5e1;
    color: var(--tn-dark, #00003c);
}
.v2-contract-margins-bar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem 1rem;
    padding: 0.5rem 1rem;
    background: #f1f5f9;
    border-bottom: 1px solid #e2e8f0;
    font-size: 0.85rem;
}
.v2-contract-fonts-ok {
    margin: 0;
    padding: 0.4rem 1rem;
    font-size: 0.82rem;
    color: #475569;
    background: #f8fafc;
    border-bottom: 1px solid #e2e8f0;
}
.v2-contract-fonts-warn { margin: 0; border-radius: 0; }

.v2-contract-margins-label {
    font-weight: 700;
    color: var(--tn-dark, #00003c);
    margin-right: 0.25rem;
}
.v2-contract-margin-field {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    color: #475569;
}
.v2-contract-margin-field span {
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
}
.v2-contract-margin-field input {
    width: 3.5rem;
    padding: 4px 6px;
    border: 1px solid #cbd5e1;
    border-radius: 4px;
    font: inherit;
    font-size: 0.85rem;
}
.v2-contract-margin-link {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    color: #475569;
    font-size: 0.8rem;
    cursor: pointer;
}
.v2-contract-margin-reset {
    padding: 4px 10px !important;
    font-size: 0.8rem !important;
}

/* Moduł Pracownicy */
.v2-prac-shortcuts .v2-btn-row { flex-wrap: wrap; gap: 0.5rem; }
.v2-prac-filters { margin-bottom: 1rem; }
.v2-form-inline { display: flex; flex-wrap: wrap; align-items: center; gap: 0.75rem 1.25rem; }
.v2-form-inline label { display: inline-flex; align-items: center; gap: 0.35rem; font-size: 0.88rem; }
.v2-prac-cards {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: 12px;
}
.v2-prac-card {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    padding: 12px;
    background: #fff;
    border: 1px solid #e2e8f0;
    border-radius: 8px;
    text-decoration: none;
    color: inherit;
    transition: border-color 0.15s, box-shadow 0.15s;
}
.v2-prac-card:hover {
    border-color: var(--tn-blue, #001ed2);
    box-shadow: 0 2px 8px rgba(0, 30, 210, 0.12);
}
.v2-prac-card__photo {
    width: 64px;
    height: 64px;
    border-radius: 50%;
    object-fit: cover;
}
.v2-prac-card__initials {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 64px;
    height: 64px;
    border-radius: 50%;
    background: #eef2ff;
    color: var(--tn-dark, #00003c);
    font-weight: 700;
    font-size: 1.1rem;
}
.v2-prac-card__initials--lg {
    width: 160px;
    height: 160px;
    font-size: 2rem;
    margin-bottom: 0.5rem;
}
.v2-row--highlight { background: #fff8e6; }
.v2-kpi--warn { color: #c62828; }
.v2-prac-person-layout {
    display: grid;
    grid-template-columns: 200px 1fr;
    gap: 1.5rem;
    align-items: start;
}
@media (max-width: 768px) {
    .v2-prac-person-layout { grid-template-columns: 1fr; }
}

/* Karta edycji pojedynczej osoby — kompakt, bez przewijania @ ~1080p */
.v2-prac-person-edit { margin-top: 0.25rem; }
.v2-prac-person-edit__head {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    justify-content: space-between;
    gap: 0.75rem 1rem;
    margin-bottom: 0.65rem;
}
.v2-prac-person-edit__title {
    margin: 0;
    font-size: 1.35rem;
    line-height: 1.2;
    color: var(--tn-dark, #00003c);
}
.v2-prac-person-edit__nav { margin: 0.35rem 0 0; }
.v2-prac-person-edit__save {
    min-width: 7rem;
    font-weight: 700;
    padding: 0.55rem 1.35rem;
}
.v2-prac-person-edit__card {
    padding: 0.85rem 1rem 1rem;
    margin-bottom: 0;
}
.v2-prac-person-edit__layout {
    display: grid;
    grid-template-columns: 10.5rem minmax(0, 1fr);
    gap: 0.85rem 1.15rem;
    align-items: start;
}
.v2-prac-person-edit__aside {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 0.45rem;
    min-width: 0;
    max-width: 10.5rem;
    overflow: hidden;
}
.v2-prac-person-photo__frame--edit {
    width: 112px;
    height: 112px;
    margin: 0 auto;
}
/* Strefa drag & drop zdjęcia pracownika */
#v2AvatarDrop {
    cursor: pointer;
    border-radius: 8px;
    outline: 2px dashed transparent;
    outline-offset: 3px;
    transition: outline-color 0.15s ease, box-shadow 0.15s ease;
}
#v2AvatarDrop:hover { outline-color: #cbd5e1; }
#v2AvatarDrop.is-dragover {
    outline-color: #1d4ed8;
    box-shadow: 0 0 0 4px rgba(29, 78, 216, 0.12);
}
#v2AvatarDrop.is-dragover * { pointer-events: none; }
.v2-prac-photo-drophint {
    margin: 0.35rem 0 0;
    font-size: 0.72rem;
    color: #94a3b8;
    text-align: center;
}
.v2-prac-person-photo__frame--edit img {
    width: 112px;
    height: 112px;
    object-fit: cover;
}
.v2-prac-card__initials--edit {
    width: 112px;
    height: 112px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.75rem;
    margin: 0 auto;
}
.v2-prac-person-edit__photo-btn {
    width: 100%;
    justify-content: center;
}
.v2-dl-compact--edit {
    margin-top: 0;
    font-size: 0.75rem;
}
.v2-dl-compact--edit dt { min-width: 2.5rem; }
.v2-prac-person-edit__duty { margin-top: 0.25rem; }
.v2-prac-person-edit__duty-lbl {
    display: block;
    font-size: 0.68rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: #64748b;
    margin-bottom: 0.25rem;
}
.v2-prac-person-edit__duty-del { margin-top: 0.25rem; }
.v2-prac-person-edit__grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.4rem 0.65rem;
    border: none;
    margin: 0;
    padding: 0;
    min-width: 0;
}
.v2-prac-person-edit__grid .v2-field {
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
    min-width: 0;
    margin: 0;
}
.v2-prac-person-edit__grid .v2-field-label {
    font-size: 0.68rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: #64748b;
}
.v2-prac-person-edit__grid input,
.v2-prac-person-edit__grid select {
    padding: 0.32rem 0.45rem;
    font-size: 0.82rem;
    border: 1px solid #d0d7e2;
    border-radius: 4px;
    width: 100%;
    box-sizing: border-box;
}
.v2-prac-person-edit__grid input:focus,
.v2-prac-person-edit__grid select:focus {
    outline: none;
    border-color: var(--tn-electric, #001ed2);
    box-shadow: 0 0 0 2px rgba(0, 30, 210, 0.12);
}
.v2-prac-person-edit__grid .v2-field--span2 { grid-column: 1 / -1; }
/* Para pól w jednej linii na całą szerokość (stanowisko PL+EN, przełożony+dyrektor). */
.v2-prac-person-edit__pair {
    grid-column: 1 / -1;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.4rem 0.65rem;
}
@media (max-width: 680px) {
    .v2-prac-person-edit__pair { grid-template-columns: 1fr; }
}
/* Niebieska linia działowa na całą szerokość (czytelność: przed stanowiskami, przed adresami). */
.v2-prac-person-edit__divider {
    grid-column: 1 / -1;
    height: 0;
    margin: 0.6rem 0 0.25rem;
    border: 0;
    border-top: 2px solid var(--tn-electric, #001ed2);
}
/* Adres w jednej linii: ulica + nr domu + nr mieszk. + kod + miasto (pełna szerokość siatki). */
.v2-prac-person-edit__grid .v2-prac-addr-row {
    grid-column: 1 / -1;
    display: grid;
    grid-template-columns: minmax(0, 2.2fr) minmax(0, 0.8fr) minmax(0, 0.9fr) minmax(0, 1fr) minmax(0, 1.5fr);
    gap: 0.4rem 0.65rem;
}
@media (max-width: 680px) {
    .v2-prac-person-edit__grid .v2-prac-addr-row {
        grid-template-columns: 1fr 1fr;
    }
    .v2-prac-person-edit__grid .v2-prac-addr-row__street { grid-column: 1 / -1; }
}
.v2-prac-person-edit__status {
    grid-column: 1 / -1;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.35rem 1rem;
    padding-top: 0.15rem;
    border-top: 1px solid #e8ecf2;
    margin-top: 0.15rem;
}
.v2-prac-person-edit__status .v2-field-label { margin-right: 0.25rem; }
.v2-prac-person-edit__status .v2-form-inline {
    gap: 0.75rem 1.25rem;
    font-size: 0.82rem;
}
.v2-prac-person-edit__aside .v2-duty-drop { max-width: none; }

/* Meta login/rola w sidebarze — pionowo, bez nachodzenia na grid */
.v2-prac-meta-compact {
    width: 100%;
    font-size: 0.72rem;
    line-height: 1.2;
    margin-top: 0.15rem;
}
.v2-prac-meta-compact__row {
    display: block;
    margin-bottom: 0.3rem;
}
.v2-prac-meta-compact__lbl {
    display: block;
    font-size: 0.62rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: #64748b;
    margin-bottom: 0.05rem;
}
.v2-prac-meta-compact__val {
    display: block;
    font-size: 0.74rem;
    color: var(--tn-dark, #00003c);
    word-break: break-all;
    overflow-wrap: anywhere;
}

/* Etykieta pola + podpowiedź LDAP */
.v2-field-label-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.25rem 0.4rem;
    min-height: 1rem;
}
.v2-ldap-hint {
    display: inline-flex;
    align-items: center;
    gap: 0.2rem;
    max-width: 100%;
    font-size: 0.62rem;
    color: #64748b;
    background: #f1f5f9;
    border: 1px solid #e2e8f0;
    border-radius: 3px;
    padding: 0 0.2rem 0 0.35rem;
    line-height: 1.35;
}
.v2-ldap-hint__val {
    max-width: 9rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.v2-ldap-hint__copy {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.1rem;
    height: 1.1rem;
    padding: 0;
    border: none;
    background: transparent;
    color: var(--tn-electric, #001ed2);
    cursor: pointer;
    border-radius: 2px;
    flex-shrink: 0;
}
.v2-ldap-hint__copy:hover { background: rgba(0, 30, 210, 0.08); }
/* Podpowiedź z HR (v_struktura) — odróżniona kolorem od LDAP */
.v2-ldap-hint--hr {
    color: #0f766e;
    background: #e6fbf6;
    border-color: #b7ece2;
}
.v2-ldap-hint--hr .v2-ldap-hint__copy { color: #0f766e; }
.v2-ldap-hint--hr .v2-ldap-hint__copy:hover { background: rgba(15, 118, 110, 0.1); }
.v2-field-hint--hr { color: #0f766e; }
.v2-btn-translate {
    font-size: 0.62rem;
    font-weight: 700;
    line-height: 1;
    padding: 0.15rem 0.4rem;
    border: 1px solid #c7d2fe;
    border-radius: 3px;
    background: #eef2ff;
    color: var(--tn-electric, #001ed2);
    cursor: pointer;
}
.v2-btn-translate:hover { background: #e0e7ff; }
.v2-btn-translate:disabled { opacity: 0.6; cursor: wait; }

/* Sekcja Operator — flota */
.v2-prac-person-edit__operator {
    grid-column: 1 / -1;
    margin-top: 0.5rem;
    padding: 0.55rem 0.65rem 0.65rem;
    border: 1px solid #dbeafe;
    border-radius: 6px;
    background: #f8fafc;
}
.v2-prac-meta-compact__val--ok { color: #047857; font-weight: 600; }
.v2-prac-person-edit__operator-hint {
    margin: 0 0 0.45rem;
    grid-column: 1 / -1;
}
.v2-prac-person-edit__operator-legend {
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--tn-dark, #00003c);
    padding: 0 0.35rem;
}
.v2-prac-person-edit__operator-subtitle {
    margin: 0.55rem 0 0.35rem;
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--tn-dark, #00003c);
}
.v2-prac-person-edit__operator-subtitle:first-of-type { margin-top: 0.15rem; }
.v2-prac-person-edit__operator-grid--pj { margin-bottom: 0.15rem; }
.v2-prac-person-edit__module-perms {
    margin-top: 0.35rem;
    padding-top: 0;
    border-top: none;
}
.v2-prac-person-edit__module-perms-title {
    margin: 0 0 0.35rem;
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--tn-dark, #00003c);
}
.v2-prac-person-edit__module-perms-hint { margin: 0 0 0.45rem; }
.v2-prac-person-edit__module-perms-grid {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 0.4rem 0.55rem;
}
.v2-prac-person-edit__module-perms-grid .v2-perm-select {
    width: 100%;
    padding: 0.32rem 0.4rem;
    font-size: 0.78rem;
    border: 1px solid #d0d7e2;
    border-radius: 4px;
    box-sizing: border-box;
}
.v2-prac-person-edit__operator-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 0.4rem 0.65rem;
}
.v2-prac-person-edit__operator-grid .v2-field--check {
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 0.4rem;
    padding-top: 1.15rem;
}
.v2-prac-person-edit__operator-grid .v2-field--check input { width: auto; }
.v2-prac-person-edit__license-file {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
}
.v2-prac-person-edit__license-upload {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.35rem;
}
.v2-prac-person-edit__license-upload .v2-inline-input {
    max-width: 12rem;
    font-size: 0.75rem;
}
@media (max-width: 1100px) {
    .v2-prac-person-edit__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .v2-prac-person-edit__grid .v2-field--span2 { grid-column: 1 / -1; }
    .v2-prac-person-edit__operator-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .v2-prac-person-edit__module-perms-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 768px) {
    .v2-prac-person-edit__layout { grid-template-columns: 1fr; }
    .v2-prac-person-edit__aside {
        flex-direction: row;
        flex-wrap: wrap;
        align-items: flex-start;
    }
    .v2-prac-person-edit__duty { flex: 1 1 12rem; }
}

/* Eksport aPaczka */
.v2-apaczka-meta { margin: 0.75rem 0 1rem; font-size: 0.88rem; }
.v2-apaczka-col-check { width: 2.25rem; text-align: center; }
.v2-apaczka-table td { font-size: 0.84rem; vertical-align: middle; }
.v2-apaczka-row--warn { background: #fff8e6; }
.v2-apaczka-send-results { margin-bottom: 1rem; }

.v2-apaczka-action-bar { margin-bottom: 0.5rem; width: 100%; gap: 0.65rem 1rem; }
.v2-apaczka-action-bar__left {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem 0.75rem;
    flex: 1 1 16rem;
    min-width: 0;
}
.v2-apaczka-action-bar__select {
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    font-size: 0.9rem;
    color: rgba(255, 255, 255, 0.95);
    cursor: pointer;
    user-select: none;
    white-space: nowrap;
}
.v2-apaczka-action-bar__count,
.v2-apaczka-action-bar__visible {
    font-size: 0.85rem;
    color: rgba(255, 255, 255, 0.82) !important;
    white-space: nowrap;
}
.v2-apaczka-action-bar__search {
    flex: 1 1 10rem;
    min-width: 9rem;
    max-width: 18rem;
    padding: 0.35rem 0.65rem;
    border: 1px solid rgba(255, 255, 255, 0.45);
    border-radius: 6px;
    background: rgba(255, 255, 255, 0.95);
    color: var(--tn-navy, #00003c);
    font-size: 0.88rem;
}
.v2-apaczka-action-bar__search::placeholder { color: #6b7280; }
.v2-apaczka-action-bar__search:focus {
    outline: 2px solid rgba(255, 255, 255, 0.85);
    outline-offset: 1px;
}
.v2-apaczka-action-bar__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-left: auto;
    align-items: center;
}
.v2-apaczka-filters-inline {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.4rem 0.65rem;
    margin: 0 0 0.75rem;
    padding: 0.45rem 0.65rem;
    background: var(--v2-surface-muted, #f4f6fa);
    border: 1px solid var(--v2-border, #e2e8f0);
    border-radius: 8px;
}
.v2-apaczka-filters-inline__item {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    font-size: 0.82rem;
}
.v2-apaczka-filters-inline__item--check {
    gap: 0.3rem;
    white-space: nowrap;
}
.v2-apaczka-filters-inline__label {
    color: var(--v2-text-muted, #64748b);
    white-space: nowrap;
}
.v2-apaczka-filters-inline select {
    font-size: 0.82rem;
    padding: 0.2rem 0.35rem;
    max-width: 11rem;
}
.v2-apaczka-filters-inline__meta {
    margin-left: auto;
    font-size: 0.78rem;
    white-space: nowrap;
}
.v2-apaczka-dest {
    max-width: 22rem;
    font-size: 0.82rem;
    line-height: 1.35;
    word-break: break-word;
}
@media (max-width: 720px) {
    .v2-apaczka-filters-inline__meta {
        flex-basis: 100%;
        margin-left: 0;
    }
    .v2-apaczka-action-bar__search { max-width: none; flex-basis: 100%; }
}
.v2-prac-catalog-bar--hero .v2-apaczka-action-bar__cta.v2-btn-primary {
    background: #fff;
    color: var(--tn-electric, #001ed2);
    border-color: #fff;
    font-weight: 600;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.15);
}
.v2-prac-catalog-bar--hero .v2-apaczka-action-bar__cta.v2-btn-primary:hover:not(:disabled) {
    filter: brightness(0.96);
    color: var(--tn-electric, #001ed2);
}
.v2-prac-catalog-bar--hero .v2-apaczka-action-bar__cta:disabled {
    opacity: 0.45;
    cursor: not-allowed;
}

.v2-modal-box--wide { max-width: 640px; }
.v2-apaczka-modal__actions { margin-top: 1rem; justify-content: flex-end; }
.v2-apaczka-pickup-slot-wrap { margin-top: 0.25rem; }
.v2-apaczka-locker { display: flex; flex-direction: column; gap: 0.35rem; }
.v2-apaczka-locker__hint { margin: 0; }
.v2-apaczka-locker .apaczka-map-combobox,
.v2-apaczka-locker [class*="apaczka"] {
  max-width: 100%;
}
.v2-field--check-filter label { font-size: 0.88rem; }
.v2-dl-compact { font-size: 0.82rem; margin-top: 1rem; }
.v2-dl-compact div { display: flex; gap: 0.5rem; margin-bottom: 0.25rem; }

/* Moduł Listy — formularz wychodzące */
.v2-listy-outgoing-form {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}
.v2-listy-outgoing-cols {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem;
    align-items: stretch;
}
@media (max-width: 720px) {
    .v2-listy-outgoing-cols {
        grid-template-columns: 1fr;
    }
}
.v2-listy-outgoing-panel {
    display: flex;
    flex-direction: column;
    min-width: 0;
    border: 1px solid #dbe3ef;
    border-radius: 10px;
    background: #fff;
    box-shadow: 0 1px 3px rgba(15, 23, 42, 0.06);
    overflow: hidden;
}
.v2-listy-outgoing-panel--recipient {
    border-top: 3px solid var(--tn-blue, #001ed2);
}
.v2-listy-outgoing-panel--sender {
    border-top: 3px solid #64748b;
}
.v2-listy-outgoing-panel__head {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin: 0;
    padding: 0.65rem 1rem;
    background: linear-gradient(180deg, #f8fafc 0%, #f1f5f9 100%);
    border-bottom: 1px solid #e2e8f0;
}
.v2-listy-outgoing-panel__badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.65rem;
    height: 1.65rem;
    border-radius: 6px;
    background: var(--tn-blue, #001ed2);
    color: #fff;
    font-size: 0.85rem;
    font-weight: 700;
    flex-shrink: 0;
}
.v2-listy-outgoing-panel__badge--sender {
    background: #475569;
}
.v2-listy-outgoing-panel__title {
    margin: 0;
    font-size: 1rem;
    font-weight: 700;
    color: #0f172a;
}
.v2-listy-outgoing-panel__body {
    display: flex;
    flex-direction: column;
    gap: 0.65rem;
    padding: 0.85rem 1rem 1rem;
}
.v2-listy-outgoing-panel__body .v2-field input,
.v2-listy-outgoing-panel__body .v2-field textarea {
    width: 100%;
    box-sizing: border-box;
}
.v2-listy-outgoing-panel__hint {
    margin: 0.15rem 0 0;
    line-height: 1.35;
}
.v2-listy-outgoing-row2 {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.65rem;
}
@media (max-width: 480px) {
    .v2-listy-outgoing-row2 {
        grid-template-columns: 1fr;
    }
}
.v2-listy-outgoing-subblock {
    padding: 0.55rem 0.65rem;
    border-radius: 8px;
    background: #f8fafc;
    border: 1px dashed #cbd5e1;
}
.v2-listy-outgoing-subblock__label {
    margin: 0 0 0.45rem;
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: #64748b;
}
.v2-listy-address-inline {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 4.5rem 4.5rem;
    gap: 0.5rem;
    align-items: end;
}
.v2-listy-outgoing-row2--postal {
    margin-top: 0.5rem;
}
.v2-listy-postal-hint {
    display: block;
    margin-top: 0.2rem;
    line-height: 1.3;
}
.v2-listy-desc-block {
    padding: 0.5rem 0.6rem;
    margin: 0.15rem 0 0.35rem;
    border-radius: 8px;
    background: #fafbfc;
    border: 1px solid #e8ecf1;
}
.v2-listy-desc-block .v2-listy-config-link {
    margin: 0.15rem 0 0;
}
.v2-listy-paczkomat-block {
    margin-top: 0.5rem;
    padding: 0.65rem 0.75rem;
    border-radius: 8px;
    border: 1px dashed #cbd5e1;
    background: #f8fafc;
}
.v2-listy-paczkomat-block--active {
    border-style: solid;
    border-color: #93a8e8;
    background: #f0f4ff;
}
.v2-listy-paczkomat-block__head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    margin-bottom: 0.35rem;
}
.v2-listy-paczkomat-block__title {
    margin: 0;
    font-size: 0.82rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: #475569;
}
.v2-listy-clear-btn {
    margin: 0;
    padding: 0.15rem 0.45rem;
    border: none;
    border-radius: 4px;
    background: transparent;
    color: #94a3b8;
    font-size: 0.72rem;
    font-weight: 500;
    cursor: pointer;
    text-decoration: underline;
    text-underline-offset: 2px;
}
.v2-listy-clear-btn:hover,
.v2-listy-clear-btn:focus {
    color: #64748b;
    background: rgba(148, 163, 184, 0.12);
}
.v2-listy-address-inline .v2-field {
    min-width: 0;
}
.v2-listy-outgoing-bottom {
    display: flex;
    flex-direction: column;
    gap: 0.65rem;
    padding-top: 0.5rem;
    border-top: 1px solid #e2e8f0;
}
.v2-listy-apaczka-bar {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: 0.75rem 1.25rem;
    padding: 0.75rem 1rem;
    border-radius: 10px;
    background: linear-gradient(180deg, #eef3ff 0%, #e8effe 100%);
    border: 1px solid #b8c9f5;
}
.v2-listy-apaczka-bar__check {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin: 0;
    padding-bottom: 0.35rem;
    font-size: 0.9rem;
    font-weight: 600;
    color: #0f172a;
    cursor: pointer;
    flex: 0 0 auto;
}
.v2-listy-apaczka-bar__check input {
    width: 1.05rem;
    height: 1.05rem;
    margin: 0;
    accent-color: var(--tn-blue, #001ed2);
}
.v2-listy-apaczka-bar__dims {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: 0.45rem 0.65rem;
    flex: 1 1 auto;
    min-width: min(100%, 20rem);
}
.v2-listy-apaczka-dims-label {
    align-self: center;
    font-size: 0.78rem;
    font-weight: 600;
    color: #475569;
    padding-bottom: 0.35rem;
}
.v2-listy-apaczka-sep {
    align-self: center;
    color: #94a3b8;
    padding-bottom: 0.35rem;
}
.v2-listy-apaczka-times {
    align-self: flex-end;
    padding-bottom: 0.45rem;
    font-weight: 600;
    color: #64748b;
    line-height: 1;
}
.v2-listy-apaczka-field {
    gap: 0.2rem;
    margin: 0;
}
.v2-listy-apaczka-field .v2-field-label {
    font-size: 0.68rem;
}
.v2-listy-apaczka-field--dim {
    width: 3.75rem;
}
.v2-listy-apaczka-input-wrap {
    display: flex;
    align-items: center;
    gap: 0.25rem;
}
.v2-listy-apaczka-input {
    width: 100%;
    max-width: 4.5rem;
    padding: 0.35rem 0.45rem;
    font-size: 0.9rem;
    border: 1px solid #cbd5e1;
    border-radius: 6px;
    background: #fff;
}
.v2-listy-apaczka-field--dim .v2-listy-apaczka-input {
    max-width: 3.75rem;
    text-align: center;
}
.v2-listy-apaczka-unit {
    font-size: 0.8rem;
    font-weight: 600;
    color: #64748b;
    white-space: nowrap;
}
.v2-listy-snippet-row {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
}
.v2-listy-snippet-row__buttons {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
}
.v2-listy-snippet-btn {
    max-width: 100%;
    white-space: normal;
    text-align: left;
    line-height: 1.25;
}
.v2-listy-form-submit {
    margin-top: 0.25rem;
}
.v2-listy-apaczka-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.35rem 0.5rem;
    margin-top: 0.4rem;
}
.v2-listy-cancel-apaczka-form {
    display: inline;
    margin: 0;
}
.v2-listy-cancel-apaczka-btn {
    color: #b45309;
    border-color: #fcd34d;
    background: #fffbeb;
}
.v2-listy-cancel-apaczka-btn:hover,
.v2-listy-cancel-apaczka-btn:focus {
    color: #92400e;
    background: #fef3c7;
    border-color: #f59e0b;
}
.v2-listy-ho-card {
    margin-bottom: 1rem;
}
.v2-listy-ho-office-dl {
    display: grid;
    gap: 0.35rem 1rem;
    margin: 0;
    font-size: 0.9rem;
}
@media (min-width: 640px) {
    .v2-listy-ho-office-dl {
        grid-template-columns: auto 1fr;
    }
}
.v2-listy-ho-office-dl dt {
    margin: 0;
    font-weight: 600;
    color: #475569;
}
.v2-listy-ho-office-dl dd {
    margin: 0;
}
/* Nadaj do biura — wybór trybu (gradient jak mapa pokoi) */
.v2-listy-ho-mode-hero {
    flex-direction: column;
    align-items: flex-start;
    gap: 0.4rem;
    margin-bottom: 0.65rem;
}
.v2-listy-ho-mode-hero__title {
    margin: 0;
    font-size: 0.78rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    opacity: 0.9;
}
.v2-listy-ho-mode-hero .v2-listy-ho-mode-switch {
    background: rgba(255, 255, 255, 0.12);
    padding: 4px;
    border-radius: 999px;
    gap: 4px;
    width: 100%;
}
.v2-listy-ho-mode-hero label.v2-prac-view-switch__btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    margin: 0;
    cursor: pointer;
    border: none;
    border-radius: 999px;
    color: rgba(255, 255, 255, 0.9);
    font-size: 0.82rem;
    line-height: 1.25;
    text-align: center;
    flex: 1 1 8.5rem;
    min-width: min(100%, 8.5rem);
}
.v2-listy-ho-mode-hero label.v2-prac-view-switch__btn:hover {
    color: #fff;
    background: rgba(255, 255, 255, 0.1);
}
.v2-listy-ho-mode-hero label.v2-prac-view-switch__btn:has(input:checked),
.v2-listy-ho-mode-hero label.v2-prac-view-switch__btn.is-active:has(input:checked) {
    background: #fff;
    color: var(--tn-electric, #001ed2);
    box-shadow: 0 2px 8px rgba(0, 30, 210, 0.25);
}
.v2-listy-ho-mode-hero label.v2-prac-view-switch__btn input {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}
/* Karty 3 typów nadania (kurier / paczkomat etykieta / paczkomat kod) — 3 w rzędzie,
   ikony SVG mają viewBox bez width/height, więc rozmiar narzucamy tutaj. */
.v2-listy-ho-mode-cards {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.75rem;
    margin-top: 0.75rem;
}
@media (max-width: 640px) {
    .v2-listy-ho-mode-cards { grid-template-columns: 1fr; }
}
.v2-listy-ho-mode-card {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: 0.3rem;
    padding: 0.85rem 0.75rem;
    border: 1px solid #d7deea;
    border-radius: 10px;
    background: #fff;
    cursor: pointer;
    transition: border-color 0.15s, box-shadow 0.15s, background 0.15s;
}
.v2-listy-ho-mode-card:hover { border-color: var(--tn-blue, #001ed2); }
.v2-listy-ho-mode-card:has(input:checked) {
    border-color: var(--tn-blue, #001ed2);
    box-shadow: 0 0 0 2px rgba(0, 30, 210, 0.18);
    background: #f0f4ff;
}
.v2-listy-ho-mode-card > input {
    position: absolute;
    opacity: 0;
    width: 1px;
    height: 1px;
    pointer-events: none;
}
.v2-listy-ho-mode-card__brand { display: block; height: 16px; line-height: 0; }
.v2-listy-ho-mode-card__brand svg { height: 16px; width: auto; }
.v2-listy-ho-mode-card__icon { display: block; line-height: 0; color: var(--tn-blue, #001ed2); }
.v2-listy-ho-mode-card__icon svg { width: 40px; height: 40px; display: block; }
.v2-listy-ho-mode-card__label {
    font-weight: 700;
    font-size: 0.92rem;
    color: var(--tn-dark, #00003c);
}
.v2-listy-ho-mode-card__hint { font-size: 0.78rem; color: #64748b; line-height: 1.25; }
.v2-listy-ho-dispatch-code-label {
    display: block;
    font-size: 0.7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: #b91c1c;
    margin-bottom: 0.1rem;
}
.v2-listy-ho-dispatch-code {
    display: block;
    color: #dc2626;
    font-weight: 800;
    font-size: 1.05rem;
    letter-spacing: 0.1em;
    font-family: ui-monospace, Consolas, monospace;
}
.v2-listy-apaczka-status {
    display: inline-block;
    padding: 0.2rem 0.55rem;
    border-radius: 999px;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.02em;
    white-space: nowrap;
}
.v2-listy-apaczka-status--new {
    background: #e0e7ff;
    color: #3730a3;
}
.v2-listy-apaczka-status--transit {
    background: #fef3c7;
    color: #92400e;
}
.v2-listy-apaczka-status--delivered {
    background: #d1fae5;
    color: #065f46;
}
.v2-listy-apaczka-status--cancelled {
    background: #f3f4f6;
    color: #4b5563;
}
.v2-listy-apaczka-status--error {
    background: #fee2e2;
    color: #991b1b;
}
.v2-listy-ho-panels {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    margin-bottom: 1rem;
}
.v2-listy-ho-panel {
    padding: 0.85rem 1rem;
    border-radius: 10px;
    border: 1px solid #e2e8f0;
    background: #f8fafc;
}
.v2-listy-ho-panel__title {
    margin: 0 0 0.65rem;
    font-size: 0.95rem;
    font-weight: 600;
}
.v2-listy-ho-waybill-banner__title {
    margin: 0 0 0.35rem;
    font-weight: 600;
}
.v2-listy-ho-dispatch-hint {
    margin: 0 0 1rem;
    padding: 0.85rem 1rem;
    border-radius: 10px;
    border: 2px solid #f59e0b;
    background: #fffbeb;
    color: #92400e;
    font-size: 0.95rem;
    line-height: 1.45;
}
.v2-listy-ho-dispatch-hint--blink {
    animation: v2-listy-ho-hint-blink 1.1s ease-in-out infinite;
}
@keyframes v2-listy-ho-hint-blink {
    0%, 100% {
        background: #fffbeb;
        border-color: #f59e0b;
        box-shadow: 0 0 0 0 rgba(245, 158, 11, 0.35);
    }
    50% {
        background: #fef3c7;
        border-color: #d97706;
        box-shadow: 0 0 0 6px rgba(245, 158, 11, 0.2);
    }
}
.v2-listy-ho-modal {
    position: fixed;
    inset: 0;
    z-index: 1200;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1rem;
}
.v2-listy-ho-modal[hidden] {
    display: none;
}
.v2-listy-ho-modal__backdrop {
    position: absolute;
    inset: 0;
    background: rgba(15, 23, 42, 0.55);
}
.v2-listy-ho-modal__box {
    position: relative;
    z-index: 1;
    width: min(100%, 32rem);
    max-height: min(92vh, 640px);
    overflow: auto;
    padding: 1.35rem 1.5rem;
    border-radius: 14px;
    background: #fff;
    box-shadow: 0 24px 48px rgba(0, 30, 210, 0.18);
    border: 2px solid var(--tn-blue, #001ed2);
}
.v2-listy-ho-modal__title {
    margin: 0 0 0.75rem;
    font-size: 1.2rem;
    font-weight: 700;
    color: #0f172a;
}
.v2-listy-ho-modal__code {
    margin: 0 0 1rem;
    padding: 0.75rem 1rem;
    text-align: center;
    font-size: clamp(1.5rem, 5vw, 2.25rem);
    font-weight: 800;
    letter-spacing: 0.12em;
    font-family: ui-monospace, Consolas, monospace;
    color: var(--tn-blue, #001ed2);
    background: #eef3ff;
    border-radius: 10px;
    border: 2px dashed var(--tn-blue, #001ed2);
    user-select: all;
}
.v2-listy-ho-modal__locker {
    margin: 0 0 1rem;
    font-size: 1rem;
}
.v2-listy-ho-modal__steps {
    margin: 0 0 1rem;
    padding-left: 1.25rem;
    font-size: 0.92rem;
    line-height: 1.5;
}
.v2-listy-ho-modal__actions {
    display: flex;
    justify-content: flex-end;
}
body.v2-listy-ho-modal-open {
    overflow: hidden;
}
.v2-listy-form-submit .v2-listy-submit-btn {
    width: 100%;
    justify-content: center;
    padding-top: 0.65rem;
    padding-bottom: 0.65rem;
}
.v2-listy-desc-field textarea {
    min-height: 4.5rem;
}
.v2-listy-sender-block__grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.65rem 1rem;
    margin-top: 0.35rem;
    padding: 0.65rem 0.75rem;
    background: var(--v2-surface-muted, #f4f6fa);
    border: 1px solid var(--v2-border, #e2e8f0);
    border-radius: 8px;
}
@media (max-width: 720px) {
    .v2-listy-sender-block__grid {
        grid-template-columns: 1fr;
    }
}
.v2-row-highlight {
    outline: 2px solid rgba(0, 30, 210, 0.35);
    background: #eef3ff;
}
.v2-listy-snippets-switch {
    margin: 0 0 1rem;
}

/* Listy → Przyciski opisu (konfiguracja snippetów): dwie kolumny + numerowane wiersze */
.v2-listy-snippets-card__intro { margin: 0 0 1rem; }
.v2-listy-snippets-split {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem 1.25rem;
    align-items: start;
}
@media (max-width: 820px) {
    .v2-listy-snippets-split { grid-template-columns: 1fr; }
}
.v2-listy-snippets-panel {
    display: flex;
    flex-direction: column;
    border: 1px solid #e2e8f0;
    border-radius: 8px;
    background: #fff;
    overflow: hidden;
}
.v2-listy-snippets-panel__head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.6rem;
    padding: 0.6rem 0.85rem;
    border-top: 3px solid #94a3b8;
    border-bottom: 1px solid #e2e8f0;
    background: #f8fafc;
}
.v2-listy-snippets-panel--incoming .v2-listy-snippets-panel__head { border-top-color: #1d4ed8; }
.v2-listy-snippets-panel--outgoing .v2-listy-snippets-panel__head { border-top-color: #0d9488; }
.v2-listy-snippets-panel__title-row { display: flex; align-items: center; gap: 0.5rem; min-width: 0; }
.v2-listy-snippets-panel__badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 22px;
    height: 22px;
    border-radius: 50%;
    font-size: 0.8rem;
    font-weight: 700;
    color: #fff;
    background: #94a3b8;
    flex: 0 0 auto;
}
.v2-listy-snippets-panel--incoming .v2-listy-snippets-panel__badge { background: #1d4ed8; }
.v2-listy-snippets-panel--outgoing .v2-listy-snippets-panel__badge { background: #0d9488; }
.v2-listy-snippets-panel__title {
    margin: 0;
    font-size: 0.95rem;
    font-weight: 700;
    color: #1e293b;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.v2-listy-snippets-panel__journal {
    font-size: 0.78rem;
    color: #1d4ed8;
    text-decoration: none;
    white-space: nowrap;
    flex: 0 0 auto;
}
.v2-listy-snippets-panel__journal:hover { text-decoration: underline; }
.v2-listy-snippets-table { padding: 0.5rem 0.7rem 0.25rem; }
.v2-listy-snippets-table__head,
.v2-listy-snippet-config-row {
    display: grid;
    grid-template-columns: 1.9rem minmax(0, 1fr) auto;
    align-items: center;
    gap: 0.5rem;
}
.v2-listy-snippets-table__head {
    padding: 0 0.1rem 0.35rem;
    font-size: 0.66rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: #94a3b8;
}
.v2-listy-snippets-table__body { display: flex; flex-direction: column; gap: 0.35rem; }
.v2-listy-snippet-config-row__num {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.6rem;
    height: 1.6rem;
    border-radius: 50%;
    background: #eef2ff;
    color: #3730a3;
    font-size: 0.74rem;
    font-weight: 700;
}
.v2-listy-snippet-config-row__num--outgoing { background: #ccfbf1; color: #0f766e; }
.v2-listy-snippet-config-row__field { display: block; margin: 0; min-width: 0; }
.v2-listy-snippet-config-row__field input {
    width: 100%;
    padding: 0.35rem 0.5rem;
    border: 1px solid #d0d7e2;
    border-radius: 4px;
    font-size: 0.85rem;
    box-sizing: border-box;
}
.v2-listy-snippet-config-row__field input:focus {
    outline: none;
    border-color: var(--tn-electric, #001ed2);
    box-shadow: 0 0 0 2px rgba(0, 30, 210, 0.12);
}
.v2-listy-snippet-config-row__act { display: flex; justify-content: flex-end; }
.v2-listy-snippets-panel__add { padding: 0.35rem 0.7rem 0.75rem; }
.v2-listy-snippets-config-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.6rem;
    margin-top: 1.1rem;
    padding-top: 0.9rem;
    border-top: 1px solid #e2e8f0;
}

/* Flota → Weryfikacja PJ: edycja (1/3) z lewej, lista kierowców (2/3) z prawej */
.v2-flota-license-verify {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 2fr);
    gap: 1rem 1.25rem;
    align-items: start;
    margin-top: 1rem;
}
.v2-flota-license-verify__panel { order: 1; min-width: 0; }
.v2-flota-license-verify__list { order: 2; min-width: 0; }
@media (max-width: 900px) {
    .v2-flota-license-verify { grid-template-columns: 1fr; }
    .v2-flota-license-verify__list { order: 1; }
    .v2-flota-license-verify__panel { order: 2; }
}
.v2-segmented .v2-segmented-btn {
    text-decoration: none;
    display: inline-block;
}
.v2-dl-compact dt { color: #64748b; min-width: 5rem; }
.v2-details { margin-top: 1rem; }
.v2-details summary { cursor: pointer; font-weight: 600; color: var(--tn-blue, #001ed2); }
.v2-mt { margin-top: 1rem; }
.v2-link-list { margin: 0; padding-left: 1.2rem; }
.v2-btn-sm { padding: 4px 10px !important; font-size: 0.78rem !important; }
.v2-inline-form { display: inline; }
.v2-num { text-align: right; font-variant-numeric: tabular-nums; }
.v2-nowrap { white-space: nowrap; max-width: 14rem; overflow: hidden; text-overflow: ellipsis; }

/* Katalog pracowników — pasek widoków (gradient jak mapa pokoi) */
.v2-prac-catalog-bar {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    justify-content: space-between;
    gap: 0.5rem 0.85rem;
    margin-bottom: 1rem;
    padding: 0.5rem 1rem;
}
.v2-prac-catalog-bar--hero {
    margin-bottom: 0.65rem;
    align-items: center;
}
.v2-prac-catalog-bar__actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-end;
    gap: 0.35rem 0.5rem;
    margin-left: auto;
}
.v2-prac-catalog-bar--hero a,
.v2-prac-catalog-bar--hero .v2-btn,
.v2-prac-catalog-bar--hero .v2-prac-view-switch__btn {
    text-decoration: none;
}
.v2-prac-catalog-bar--hero a:hover,
.v2-prac-catalog-bar--hero .v2-btn:hover,
.v2-prac-catalog-bar--hero .v2-prac-view-switch__btn:hover {
    text-decoration: none;
}
.v2-prac-catalog-bar--hero .v2-prac-view-switch {
    background: rgba(255, 255, 255, 0.12);
    padding: 4px;
    border-radius: 999px;
    gap: 4px;
}
.v2-prac-catalog-bar--hero .v2-prac-view-switch__btn {
    color: rgba(255, 255, 255, 0.88);
    border-radius: 999px;
}
.v2-prac-catalog-bar--hero .v2-prac-view-switch__btn:hover {
    color: #fff;
    background: rgba(255, 255, 255, 0.1);
}
.v2-prac-catalog-bar--hero .v2-prac-view-switch__btn.is-active {
    background: #fff;
    color: var(--tn-electric, #001ed2);
    box-shadow: 0 2px 8px rgba(0, 30, 210, 0.25);
}
.v2-prac-catalog-bar--hero .v2-btn-secondary {
    background: rgba(255, 255, 255, 0.12);
    border-color: rgba(255, 255, 255, 0.35);
    color: #fff;
}
.v2-prac-catalog-bar--hero .v2-btn-secondary:hover {
    background: rgba(255, 255, 255, 0.22);
    color: #fff;
}
.v2-prac-catalog-bar__search {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: 0.5rem;
    flex: 1 1 220px;
}
.v2-prac-view-switch {
    display: flex;
    background: #f0f2f5;
    padding: 4px;
    border-radius: 6px;
    gap: 4px;
}
.v2-prac-view-switch__btn {
    padding: 6px 14px;
    text-decoration: none;
    color: #666;
    font-size: 0.88rem;
    font-weight: 600;
    border-radius: 4px;
    transition: background 0.15s, color 0.15s;
}
.v2-prac-view-switch__btn.is-active {
    background: #fff;
    color: var(--tn-electric, #001ed2);
    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.08);
}
.v2-prac-dept {
    margin-bottom: 1.25rem;
    background: #fff;
    border-radius: 8px;
    box-shadow: 0 2px 8px rgba(0, 0, 60, 0.05);
    overflow: hidden;
}
.v2-prac-dept__head {
    display: flex;
    align-items: center;
    gap: 0.85rem;
    padding: 0.85rem 1rem;
    border-bottom: 1px solid #eee;
    border-left: 5px solid var(--prac-dept-color, #ccc);
    cursor: pointer;
    user-select: none;
}
.v2-prac-dept__head:hover { background: #f9fafb; }
.v2-prac-dept__head.is-orphan { border-left-color: #c62828; }
.v2-prac-dept__avatar {
    width: 48px;
    height: 48px;
    border-radius: 50%;
    overflow: hidden;
    border: 2px solid #e0e0e0;
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #fff;
}
.v2-prac-dept__avatar img { width: 100%; height: 100%; object-fit: cover; }
.v2-prac-dept__avatar-ph { font-weight: 700; color: #bbb; }
.v2-prac-dept__titles { flex: 1; min-width: 0; }
.v2-prac-dept__name {
    display: block;
    font-weight: 700;
    color: var(--tn-electric, #001ed2);
    font-size: 1.15rem;
}
.v2-prac-dept__meta {
    display: block;
    font-size: 0.85rem;
    color: #888;
    margin-top: 0.15rem;
}
.v2-prac-dept__toggle {
    color: #999;
    font-size: 0.85rem;
    transition: transform 0.25s;
}
.v2-prac-dept.is-collapsed .v2-prac-dept__toggle { transform: rotate(-90deg); }
.v2-prac-dept.is-collapsed .v2-prac-dept__body { display: none; }
.v2-prac-dept__body { padding: 1.25rem 1rem; }
.v2-prac-dept__director {
    margin-bottom: 1.5rem;
    padding-left: 1rem;
    border-left: 4px solid #e0e0e0;
}
.v2-prac-dept__others { margin-bottom: 1.5rem; }
.v2-prac-dept__team {
    margin-top: 1.25rem;
    padding-left: 0.75rem;
    border-left: 2px solid #eee;
}
.v2-prac-dept__team-title {
    margin: 0 0 0.65rem;
    font-size: 0.82rem;
    font-weight: 700;
    text-transform: uppercase;
    color: #999;
}
.v2-prac-dept--sub .v2-prac-dept__head { cursor: default; }
.v2-prac-emp-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
    gap: 1rem;
}
.v2-prac-emp-card-shell {
    position: relative;
}
.v2-prac-emp-card__foot {
    position: absolute;
    right: 8px;
    bottom: 6px;
    z-index: 3;
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 0.2rem;
    pointer-events: none;
    max-width: calc(100% - 112px);
}
.v2-prac-emp-card__foot .v2-prac-emp-card__qr,
.v2-prac-emp-card__foot .v2-prac-emp-card__mpk {
    pointer-events: auto;
}
.v2-prac-emp-card__qr {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 1.65rem;
    height: 1.65rem;
    padding: 0;
    border: 1px solid rgba(0, 30, 210, 0.12);
    border-radius: 6px;
    background: rgba(255, 255, 255, 0.95);
    color: var(--tn-electric, #001ed2);
    box-shadow: 0 1px 4px rgba(0, 30, 210, 0.12);
    cursor: pointer;
    transition: background 0.15s, color 0.15s, transform 0.15s;
}
.v2-prac-emp-card__qr:hover {
    background: var(--tn-electric, #001ed2);
    color: #fff;
    transform: translateY(-1px);
}
.v2-prac-emp-card__duty {
    position: absolute;
    top: 0.55rem;
    right: 0.55rem;
    z-index: 2;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 2rem;
    height: 2rem;
    border-radius: 8px;
    background: rgba(255, 255, 255, 0.95);
    color: var(--tn-electric, #001ed2);
    box-shadow: 0 2px 8px rgba(0, 30, 210, 0.15);
    border: 1px solid rgba(0, 30, 210, 0.12);
    text-decoration: none;
    transition: background 0.15s, color 0.15s, transform 0.15s;
}
.v2-prac-emp-card__duty:hover {
    background: var(--tn-electric, #001ed2);
    color: #fff;
    transform: translateY(-1px);
}
.v2-prac-emp-card__photo-dl {
    position: absolute;
    right: 4px;
    bottom: 4px;
    left: auto;
    z-index: 3;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 1.65rem;
    height: 1.65rem;
    border-radius: 6px;
    background: linear-gradient(180deg, #f8fafc 0%, #e4e8ee 100%);
    color: #5c6b8a;
    box-shadow: 0 1px 4px rgba(0, 30, 60, 0.12);
    border: 1px solid rgba(255, 255, 255, 0.85);
    text-decoration: none;
    transition: background 0.15s, color 0.15s, transform 0.15s, box-shadow 0.15s;
}
.v2-prac-emp-card__photo-dl:hover {
    background: linear-gradient(180deg, #fff 0%, #eef1f6 100%);
    color: var(--tn-electric, #001ed2);
    transform: translateY(-1px);
    box-shadow: 0 3px 8px rgba(0, 30, 210, 0.15);
}
.v2-prac-person-photo__frame {
    position: relative;
    display: inline-block;
    line-height: 0;
}
.v2-prac-emp-card__photo-dl--lg {
    position: absolute;
    right: 4px;
    bottom: 4px;
    left: auto;
}
.v2-prac-duty-scope .v2-form-inline {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: 0.75rem;
}
.v2-prac-duty-scope__title {
    margin: 0 0 0.75rem;
    font-size: 1rem;
    font-weight: 700;
    color: var(--tn-dark, #00003c);
}
.v2-prac-emp-grid__empty { grid-column: 1 / -1; }
.v2-prac-emp-card-shell.v2-prac-emp-card,
.v2-prac-emp-card {
    display: flex;
    flex-direction: row;
    align-items: stretch;
    min-height: 150px;
    background: #fff;
    border-radius: 6px;
    box-shadow: 0 3px 10px rgba(0, 0, 60, 0.06);
    color: inherit;
    position: relative;
    overflow: hidden;
    border-left: 5px solid var(--prac-dept-color, #5c6b8a);
    transition: transform 0.15s, box-shadow 0.15s;
}
.v2-prac-emp-card-shell.v2-prac-emp-card:hover,
.v2-prac-emp-card:hover {
    transform: translateY(-3px);
    box-shadow: 0 8px 22px rgba(0, 30, 210, 0.12);
}
.v2-prac-emp-card-shell.v2-prac-emp-card.is-new,
.v2-prac-emp-card.is-new { background: #fff8f8; }
.v2-prac-emp-card-shell.v2-prac-emp-card.is-director,
.v2-prac-emp-card.is-director {
    min-width: 280px;
    max-width: 420px;
    background: #fdfdfd;
}
.v2-prac-emp-card-shell.v2-prac-emp-card.is-manager,
.v2-prac-emp-card.is-manager { background: #f0f2f5; }
.v2-prac-emp-card__badge {
    position: absolute;
    top: 0;
    right: 0;
    background: #e43af1;
    color: #fff;
    font-size: 0.62rem;
    padding: 2px 7px;
    border-bottom-left-radius: 6px;
    font-weight: 700;
    z-index: 2;
}
.v2-prac-emp-card__photo {
    width: 100px;
    flex-shrink: 0;
    align-self: stretch;
    background: linear-gradient(180deg, #f6f8fb 0%, #e9edf2 100%);
    display: flex;
    align-items: stretch;
    justify-content: center;
    border-right: 1px solid #eee;
    overflow: hidden;
    position: relative;
}
.v2-prac-emp-card__photo-link {
    display: flex;
    align-items: center;
    justify-content: center;
    flex: 1;
    width: 100%;
    min-height: 100%;
    text-decoration: none;
    color: inherit;
}
.v2-prac-emp-card__photo-link img,
.v2-prac-emp-card__photo img { width: 100%; height: 100%; object-fit: cover; display: block; }
.v2-prac-emp-card__initials { font-size: 1.4rem; font-weight: 700; color: #ccc; }
.v2-prac-emp-card__body {
    flex: 1;
    padding: 0.65rem 2.1rem 2.35rem 0.75rem;
    display: flex;
    flex-direction: column;
    min-width: 0;
    text-decoration: none;
    color: inherit;
}
.v2-prac-emp-card__name {
    font-weight: 700;
    color: var(--tn-dark, #00003c);
    font-size: 1.05rem;
    line-height: 1.2;
    margin-bottom: 0.25rem;
}
.v2-prac-emp-card__role {
    font-size: 0.75rem;
    font-weight: 700;
    text-transform: uppercase;
    color: var(--prac-dept-color, #666);
    line-height: 1.25;
    margin-bottom: 0.5rem;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    overflow: hidden;
}
.v2-prac-emp-card__contact {
    margin-top: auto;
    font-size: 0.82rem;
    color: #555;
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
}
.v2-prac-emp-card__contact span {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.v2-prac-emp-card__mpk {
    font-size: 0.68rem;
    color: #bbb;
    line-height: 1.2;
    text-align: right;
}

/* Katalog — edycja inline (jeden wiersz = jedna osoba, max 3 linie pól @1920px) */
.v2-prac-katalog-form { margin-top: 0.5rem; }
.v2-prac-katalog-savebar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 1rem 1.5rem;
    margin-bottom: 1rem;
    padding: 1rem 1.25rem;
    border-radius: 10px;
    background: linear-gradient(135deg, #00003c 0%, #001ed2 55%, #0a4d8c 100%);
    box-shadow: 0 8px 24px rgba(0, 30, 210, 0.22);
}
.v2-prac-katalog-savebar__btn {
    font-size: 1.05rem;
    font-weight: 700;
    padding: 0.75rem 1.75rem;
    min-width: 16rem;
    background: var(--tn-lime, #8cf000);
    color: var(--tn-dark, #00003c);
    border: none;
    box-shadow: 0 4px 14px rgba(0, 0, 0, 0.25);
}
.v2-prac-katalog-savebar__btn:hover { filter: brightness(0.96); }
.v2-prac-katalog-savebar__hint {
    color: rgba(255, 255, 255, 0.92);
    font-size: 0.9rem;
}
.v2-prac-katalog-wrap { margin-top: 0; }
.v2-prac-katalog-table { width: 100%; table-layout: fixed; }
.v2-prac-katalog-row-td {
    padding: 0.85rem 0.85rem 1rem !important;
    vertical-align: top;
}
.v2-prac-katalog-row + .v2-prac-katalog-row .v2-prac-katalog-row-td {
    border-top: 3px solid var(--tn-dark, #00003c);
    box-shadow: inset 0 1px 0 rgba(0, 30, 210, 0.12);
}
.v2-prac-katalog-row:first-child .v2-prac-katalog-row-td {
    border-top: none;
}
.v2-prac-katalog-grid {
    display: grid;
    grid-template-columns: repeat(12, minmax(0, 1fr));
    gap: 0.35rem 0.55rem;
    align-items: end;
}
.v2-prac-katalog-field {
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
    min-width: 0;
}
.v2-prac-katalog-field__lbl {
    font-size: 0.68rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: #64748b;
    line-height: 1.1;
}
.v2-prac-katalog-field--s1 { grid-column: span 1; }
.v2-prac-katalog-field--s2 { grid-column: span 2; }
.v2-prac-katalog-field--s3 { grid-column: span 3; }
.v2-prac-katalog-field--s4 { grid-column: span 4; }
.v2-prac-katalog-field--flags { align-self: center; }
.v2-prac-katalog-field--actions { align-self: end; }
.v2-prac-katalog-flags {
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem 0.75rem;
    align-items: center;
    min-height: 2rem;
}
.v2-inline-input {
    width: 100%;
    min-width: 0;
    box-sizing: border-box;
    padding: 0.32rem 0.45rem;
    border: 1px solid #d0d7e2;
    border-radius: 4px;
    font: inherit;
    font-size: 0.82rem;
    background: #fff;
}
.v2-inline-input:focus {
    outline: none;
    border-color: var(--tn-electric, #001ed2);
    box-shadow: 0 0 0 2px rgba(0, 30, 210, 0.12);
}
.v2-inline-input--bold { font-weight: 700; }
.v2-inline-check {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    white-space: nowrap;
    font-size: 0.78rem;
}
@media (max-width: 1400px) {
    .v2-prac-katalog-grid {
        grid-template-columns: repeat(6, minmax(0, 1fr));
    }
    .v2-prac-katalog-field--s3 { grid-column: span 3; }
    .v2-prac-katalog-field--s4 { grid-column: span 6; }
}
@media (max-width: 900px) {
    .v2-prac-katalog-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
    .v2-prac-katalog-field--s1,
    .v2-prac-katalog-field--s2,
    .v2-prac-katalog-field--s3,
    .v2-prac-katalog-field--s4 {
        grid-column: span 2;
    }
}

/* Zakres obowiązków — drag & drop PDF */
.v2-duty-drop-form__input {
    position: absolute;
    width: 1px;
    height: 1px;
    opacity: 0;
    pointer-events: none;
}
.v2-duty-drop-wrap {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
    min-width: 0;
}
.v2-duty-drop__view {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    align-self: flex-start;
    padding: 0.15rem 0.45rem;
    border-radius: 4px;
    font-size: 0.72rem;
    font-weight: 700;
    text-decoration: none;
    color: var(--tn-electric, #001ed2);
    background: #eef2ff;
    border: 1px solid rgba(0, 30, 210, 0.25);
}
.v2-duty-drop__view:hover { background: #e0e7ff; }
.v2-duty-drop {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.15rem;
    min-height: 4.5rem;
    padding: 0.45rem 0.55rem;
    border: 2px dashed #94a3b8;
    border-radius: 8px;
    background: #f8fafc;
    cursor: pointer;
    text-align: center;
    transition: border-color 0.15s, background 0.15s, box-shadow 0.15s;
}
.v2-duty-drop--sm {
    min-height: 3.25rem;
    padding: 0.35rem 0.4rem;
}
.v2-duty-drop--sm .v2-duty-drop__label { font-size: 0.72rem; }
.v2-duty-drop--sm .v2-duty-drop__hint { font-size: 0.65rem; }
.v2-duty-drop--sm .v2-duty-drop__icon { font-size: 0.68rem; padding: 0.1rem 0.35rem; }
.v2-duty-drop:hover,
.v2-duty-drop:focus-visible {
    border-color: var(--tn-electric, #001ed2);
    background: #eef2ff;
    outline: none;
}
.v2-duty-drop.is-dragover {
    border-color: var(--tn-electric, #001ed2);
    background: #e8eeff;
    box-shadow: 0 0 0 3px rgba(0, 30, 210, 0.15);
}
.v2-duty-drop.is-busy { opacity: 0.75; pointer-events: none; }
.v2-duty-drop--has-file {
    border-style: solid;
    border-color: rgba(0, 0, 60, 0.35);
    background: #fff;
}
.v2-duty-drop__icon {
    font-size: 0.75rem;
    font-weight: 800;
    letter-spacing: 0.04em;
    color: #fff;
    background: var(--tn-dark, #00003c);
    border-radius: 4px;
    padding: 0.15rem 0.45rem;
}
.v2-duty-drop__label {
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--tn-dark, #00003c);
    line-height: 1.2;
}
.v2-duty-drop__hint {
    font-size: 0.72rem;
    color: #64748b;
    line-height: 1.2;
}
.v2-prac-katalog-field--duty .v2-duty-drop-wrap { width: 100%; }
.v2-prac-duty-scope .v2-duty-drop { max-width: 28rem; }

/* Edytor zdjęcia pracownika */
.v2-photo-editor {
    position: fixed;
    inset: 0;
    z-index: 5000;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1rem;
}
.v2-photo-editor[hidden] { display: none !important; }
/* Etapy/toolbar/nakładka AI/guziki przełączane atrybutem hidden — bez tego
   display:flex nadpisywałby `hidden` (oba etapy naraz, spinner AI nie znika). */
.v2-photo-editor [hidden] { display: none !important; }
.v2-photo-editor__backdrop {
    position: absolute;
    inset: 0;
    background: rgba(0, 0, 60, 0.72);
}
.v2-photo-editor__panel {
    position: relative;
    z-index: 1;
    width: min(960px, 100%);
    max-height: calc(100vh - 2rem);
    display: flex;
    flex-direction: column;
    background: #1e1e1e;
    border-radius: 10px;
    overflow: hidden;
    box-shadow: 0 16px 48px rgba(0, 0, 0, 0.45);
}
.v2-photo-editor__toolbar {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem 0.75rem;
    align-items: center;
    padding: 0.65rem 0.85rem;
    background: #2a2a2a;
    border-bottom: 1px solid #444;
    color: #eee;
    font-size: 0.82rem;
}
.v2-photo-editor__tool-group { display: flex; flex-wrap: wrap; gap: 0.35rem; }
.v2-photo-editor__tool {
    padding: 0.35rem 0.65rem;
    border: 1px solid #555;
    border-radius: 4px;
    background: #333;
    color: #eee;
    cursor: pointer;
    font-size: 0.78rem;
}
.v2-photo-editor__tool:hover { background: #444; }
.v2-photo-editor__tool.is-active { background: var(--tn-electric, #001ed2); border-color: var(--tn-electric, #001ed2); }
.v2-photo-editor__tool--ai { background: #4a148c; border-color: #7b1fa2; }
.v2-photo-editor__ranges { display: flex; flex-wrap: wrap; gap: 0.5rem 1rem; margin-left: auto; }
.v2-photo-editor__range { display: flex; align-items: center; gap: 0.35rem; }
.v2-photo-editor__stage {
    flex: 1;
    min-height: 320px;
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    background:
        repeating-conic-gradient(#808080 0% 25%, #a0a0a0 0% 50%) 50% / 16px 16px;
}
.v2-photo-editor__stage--light {
    background: #f0f0f0;
}
.v2-photo-editor__stage--cropper { padding: 1rem; }
.v2-photo-editor__stage--cropper img { max-width: 100%; max-height: 60vh; }
.v2-photo-editor__stage canvas { max-width: 100%; max-height: 60vh; cursor: crosshair; }
.v2-photo-editor__loading {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(0, 0, 0, 0.55);
    color: #fff;
    font-weight: 600;
}
.v2-photo-editor__step-hint {
    margin: 0;
    padding: 0.65rem 1rem 0;
    font-size: 0.82rem;
    color: #cbd5e1;
}
.v2-filter-select { position: relative; }
.v2-filter-select__filter {
    width: 100%;
    margin-bottom: 0.35rem;
}
.v2-filter-select__select {
    width: 100%;
    min-height: 2.25rem;
}
.v2-filter-select__select[size] {
    min-height: 0;
    max-height: 10rem;
    overflow-y: auto;
}
.v2-filter-select__labelrow {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.5rem;
}
.v2-filter-select__clear {
    border: 1px solid #cbd5e1;
    background: #fff;
    color: #64748b;
    border-radius: 4px;
    font-size: 0.72rem;
    padding: 0.05rem 0.45rem;
    cursor: pointer;
    line-height: 1.3;
}
.v2-filter-select__clear:hover { border-color: #c62828; color: #c62828; }
.v2-field-hint {
    display: block;
    margin-top: 0.3rem;
    font-size: 0.78rem;
    color: #64748b;
}
.v2-field-hint--warn { color: #b45309; }
.v2-input-readonly,
.v2-input-readonly:focus {
    background: #f1f5f9;
    color: #475569;
    cursor: not-allowed;
}
.v2-photo-editor__footer {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    justify-content: flex-end;
    padding: 0.75rem 0.85rem;
    background: #2a2a2a;
    border-top: 1px solid #444;
}

/* Załączniki per szablon */
.v2-contract-attachments-bar {
    flex-shrink: 0;
    max-height: 170px;
    overflow-y: auto;
    padding: 10px 12px 12px;
    background: #f8fafc;
    border-bottom: 1px solid #e2e8f0;
}
.v2-contract-attachments-head {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 0.5rem 1rem;
    margin-bottom: 8px;
}
.v2-contract-attachments-head strong {
    font-size: 0.9rem;
    color: var(--tn-dark, #00003c);
}
.v2-contract-attachments-sub {
    font-size: 0.78rem;
    color: #64748b;
}
.v2-contract-attachments-group {
    border: none;
    margin: 0 0 8px;
    padding: 0;
}
.v2-contract-attachments-group legend {
    font-size: 0.78rem;
    font-weight: 700;
    color: #475569;
    padding: 0;
    margin-bottom: 4px;
}
.v2-contract-attachments-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
    gap: 6px 14px;
}
.v2-contract-attachment-option {
    display: inline-flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.25rem 0.4rem;
    font-size: 0.82rem;
    cursor: pointer;
    color: var(--tn-dark, #00003c);
}
.v2-contract-attachment-label { font-weight: 500; }
.v2-contract-attachment-hint {
    font-size: 0.72rem;
    color: #94a3b8;
}
.v2-contract-attachments-empty,
.v2-contract-attachments-note {
    margin: 4px 0 0;
    font-size: 0.78rem;
    color: #64748b;
}

/* TinyMCE classic — jedna instancja, pełne menu */
/* Pasek formatowania edytora szablonu (Word-like, contenteditable).
   Sticky + flex-shrink:0: zawsze widoczny u góry, nie chowa się przy przewijaniu kartek. */
.v2-contract-fmtbar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.3rem;
    padding: 0.45rem 0.75rem;
    background: #fff;
    border-bottom: 1px solid #e2e8f0;
    flex-shrink: 0;
    position: sticky;
    top: 60px; /* tuż pod przyklejonym paskiem aplikacji (.v2-topbar, --v2-topbar-h) */
    z-index: 6;
}
.v2-contract-fmt {
    min-width: 2rem;
    height: 2rem;
    padding: 0 0.5rem;
    border: 1px solid #cbd5e1;
    border-radius: 4px;
    background: #fff;
    color: var(--tn-dark, #00003c);
    cursor: pointer;
    font-size: 0.85rem;
    line-height: 1;
}
.v2-contract-fmt:hover { background: #eef2ff; border-color: var(--tn-blue, #001ed2); }
.v2-contract-fmt-label { font-size: 0.8rem; color: #64748b; margin: 0 0.15rem; align-self: center; }
.v2-contract-fmt-sep {
    width: 1px;
    height: 1.4rem;
    background: #e2e8f0;
    margin: 0 0.25rem;
}
.v2-contract-fmt-select {
    min-width: 9rem;
    max-width: 16rem;
    height: 2rem;
    font-size: 0.8rem;
    border: 1px solid var(--tn-blue, #001ed2);
    border-radius: 4px;
    padding: 0 0.35rem;
    color: var(--tn-blue, #001ed2);
    background: #f0f4ff;
    cursor: pointer;
}
/* Małe selecty: rozmiar czcionki i interlinia */
.v2-contract-fmt-num {
    min-width: 0;
    width: auto;
    height: 2rem;
    font-size: 0.8rem;
    border: 1px solid #cbd5e1;
    border-radius: 4px;
    padding: 0 0.3rem;
    background: #fff;
    color: var(--tn-dark, #00003c);
    cursor: pointer;
}
.v2-contract-fmt-num-label {
    font-size: 0.72rem;
    color: #64748b;
    margin-left: 0.15rem;
}

/* Szary „pulpit" z przewijaną białą kartką A4 */
.v2-contract-paper-area {
    flex: 1 1 auto;
    /* wysoki szary „pulpit" (~3× ekran) — rośnie też z treścią; przewija się cała strona,
       a pasek formatowania pozostaje przyklejony u góry (position: sticky). */
    min-height: calc((100vh - 200px) * 3);
    overflow: visible;
    background: #525659;
    padding: 32px 20px 48px;
    display: flex;
    flex-direction: column;
    align-items: center;
}
.v2-contract-paper {
    --pg-mt: 15mm;
    --pg-mr: 15mm;
    --pg-mb: 15mm;
    --pg-ml: 15mm;
    --pg-gap: 22px; /* szerokość „szczeliny" między arkuszami */
    width: 210mm;
    max-width: 100%;
    min-height: 297mm;
    box-sizing: border-box;
    padding: var(--pg-mt) var(--pg-mr) var(--pg-mb) var(--pg-ml);
    box-shadow: 0 2px 18px rgba(0, 0, 0, 0.45);
    outline: none;
    position: relative;
    /* Wizualne rozdzielenie na arkusze A4: białe pasy co 297 mm z szarą szczeliną „pulpitu"
       między nimi (jak osobne kartki w Wordzie). Treść płynie ciągiem — szczelina to wskaźnik
       granicy strony; do twardego podziału użyj guzika „Podział strony". */
    background-color: transparent;
    background-image:
        repeating-linear-gradient(
            to bottom,
            #ffffff 0,
            #ffffff calc(297mm - var(--pg-gap)),
            #525659 calc(297mm - var(--pg-gap)),
            #525659 297mm
        ),
        repeating-linear-gradient(
            to bottom,
            rgba(0, 0, 0, 0.18) 0,
            rgba(0, 0, 0, 0) 6px,
            rgba(0, 0, 0, 0) calc(297mm - var(--pg-gap) - 6px),
            rgba(0, 0, 0, 0.18) calc(297mm - var(--pg-gap)),
            rgba(0, 0, 0, 0) calc(297mm - var(--pg-gap) + 6px),
            rgba(0, 0, 0, 0) 297mm
        );
    background-size: 100% 297mm, 100% 297mm;
}
.v2-contract-paper:focus {
    box-shadow: 0 0 0 2px rgba(0, 30, 210, 0.35), 0 2px 18px rgba(0, 0, 0, 0.45);
}
/* prowadnice marginesów — ramka ze wszystkich 4 stron (obszar druku), jak w Wordzie */
.v2-contract-paper::before {
    content: "";
    position: absolute;
    pointer-events: none;
    z-index: 0;
    top: var(--pg-mt);
    bottom: var(--pg-mb);
    right: var(--pg-mr);
    left: var(--pg-ml);
    border: 1px dashed rgba(0, 30, 210, 0.28);
}
.v2-contract-paper > * { position: relative; z-index: 1; }
/* wstawiane obrazy/logo nie wychodzą poza obszar treści */
.v2-contract-paper img { max-width: 100%; height: auto; }
.v2-contract-paper img.v2-doc-logo { width: 45mm; max-width: 100%; height: auto; }
/* wstawione tabele danych (z obramowaniem) — czytelne w edytorze i w PDF */
.v2-contract-paper table.v2-doc-table { width: 100%; border-collapse: collapse; margin: 4px 0; }
.v2-contract-paper table.v2-doc-table { border-collapse: collapse; border: none; }
.v2-contract-paper table.v2-doc-table td,
.v2-contract-paper table.v2-doc-table th { border: 0; border-right: 1px solid #00003c; border-bottom: 1px solid #00003c; padding: 4px 6px; vertical-align: top; }
.v2-contract-paper table.v2-doc-table tr > :last-child { border-right: 0; }
.v2-contract-paper table.v2-doc-table tr:last-child > * { border-bottom: 0; }
/* tabela „bez krawędzi" — delikatna prowadnica tylko w edytorze (outline nie drukuje się w PDF) */
.v2-contract-paper table.v2-doc-noborder td,
.v2-contract-paper table.v2-doc-noborder th { border: 0 !important; outline: 1px dashed #d8dde8; }
/* komórki bez nadmiarowych odstępów za tekstem (marginesy bloków w środku = 0) */
.v2-contract-paper td, .v2-contract-paper th { line-height: 1.3; }
.v2-contract-paper td > p, .v2-contract-paper th > p,
.v2-contract-paper td > div, .v2-contract-paper th > div,
.v2-contract-paper td > h1, .v2-contract-paper td > h2,
.v2-contract-paper td > h3, .v2-contract-paper td > h4 { margin: 0; }
/* menu kontekstowe tabel (prawy przycisk myszy w komórce) */
.v2-contract-tablemenu {
    position: fixed;
    z-index: 9999;
    background: #fff;
    border: 1px solid #cbd5e1;
    border-radius: 6px;
    box-shadow: 0 6px 24px rgba(0, 0, 0, 0.18);
    padding: 4px;
    min-width: 184px;
}
.v2-contract-tablemenu button {
    display: block;
    width: 100%;
    text-align: left;
    background: none;
    border: 0;
    padding: 6px 12px;
    font-size: 13px;
    color: #00003c;
    cursor: pointer;
    border-radius: 4px;
}
.v2-contract-tablemenu button:hover { background: #eef2ff; }
.v2-contract-tablemenu__sep { height: 1px; background: #e2e8f0; margin: 4px 0; }
/* dialog „Właściwości tabeli" */
.v2-contract-dialog-ov {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 30, 0.35);
    z-index: 10000;
    display: flex;
    align-items: center;
    justify-content: center;
}
.v2-contract-dialog {
    background: #fff;
    color: #00003c;
    border-radius: 10px;
    padding: 18px 20px;
    width: 340px;
    max-width: 92vw;
    box-shadow: 0 12px 40px rgba(0, 0, 0, 0.3);
}
.v2-contract-dialog h3 { margin: 0 0 12px; font-size: 1rem; }
.v2-cdlg-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px 12px; }
.v2-contract-dialog label { display: flex; flex-direction: column; gap: 4px; font-size: 12px; color: #475569; }
.v2-cdlg-row { flex-direction: row !important; align-items: center; gap: 8px; margin-top: 12px; font-size: 13px; color: #00003c; }
.v2-contract-dialog input[type="number"],
.v2-contract-dialog select { padding: 5px 7px; border: 1px solid #cbd5e1; border-radius: 5px; font-size: 13px; }
.v2-cdlg-actions { display: flex; justify-content: flex-end; gap: 8px; margin-top: 16px; }
/* Prognoza kosztów floty — wiersze umów kończących się w roku prognozy */
.v2-flota-ny-ends td { background: #fff8e6; }
/* Prognoza — nagłówek sekcji z guzikiem eksportu */
.v2-flota-ny-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    flex-wrap: wrap;
}
.v2-flota-ny-head .v2-section-title { margin-bottom: 0; }
/* Prognoza — wiersz grupy kierowcy (nazwisko + sumy częściowe) */
.v2-flota-ny-driver td {
    background: #eef1f6;
    border-top: 2px solid var(--tn-electric, #001ed2);
}
/* Prognoza — pojazd wirtualny (założony następca po kończącej się umowie) */
.v2-flota-ny-virtual td {
    background: #eef6ff;
    font-style: italic;
}
/* Rejestr sesji — filtr po nazwisku/loginie */
.v2-sess-filter {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin: 0.5rem 0 0.75rem;
}
.v2-sess-filter .v2-input { max-width: 320px; }
/* Karty wejściowe — pasek nadruku identyfikatorów (generuj dla zaznaczonych) */
.v2-prac-karty-badgebar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.6rem;
    margin: 0 0 0.9rem;
    padding: 0.55rem 0.8rem;
    border: 1px solid rgba(0, 30, 210, 0.18);
    border-radius: 8px;
    background: rgba(0, 30, 210, 0.04);
}
.v2-prac-karty-badgebar__label { font-size: 0.85rem; font-weight: 600; color: var(--tn-dark, #00003c); }
.v2-prac-karty-badgebar__opt { display: inline-flex; align-items: center; gap: 0.3rem; font-size: 0.85rem; color: #475569; }
/* checkbox nadruku + kosz siedzą w komórce numeru karty (między numerem a „+") */
.v2-prac-karty-idcell .v2-prac-karty-badgechk { flex: 0 0 auto; width: 1.05rem; height: 1.05rem; cursor: pointer; margin: 0; }
.v2-prac-karty-idcell .v2-prac-karty-cardel { flex: 0 0 auto; padding: 2px 3px; }
.v2-prac-karty-specialbar { margin-top: 0.5rem; }
.v2-prac-karty-specialbar__num { width: 4.2rem; padding: 0.2rem 0.35rem; border: 1px solid #cbd5e1; border-radius: 5px; }
.v2-prac-karty-section--special { margin-top: 1rem; }
.v2-prac-karty-spectype {
    display: inline-block;
    padding: 0.15rem 0.55rem;
    border-radius: 5px;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.03em;
}
.v2-prac-karty-spectype.is-guest { background: #FA3746; color: #fff; }
.v2-prac-karty-spectype.is-forget { background: #FFEB00; color: #00003c; }
.v2-prac-karty-spectype.is-temp { background: #fff; color: #00003c; border: 1px solid #cbd5e1; }
/* Katalog osób — widok „Data konta AD": kompaktowa lista, 1 linia na osobę, bez zdjęć */
.v2-prac-adlist { padding: 0.25rem 0; }
.v2-prac-adlist__row {
    display: flex;
    align-items: baseline;
    gap: 0.75rem;
    padding: 0.35rem 1rem;
    border-bottom: 1px solid #eef1f6;
    text-decoration: none;
    color: inherit;
    white-space: nowrap;
    overflow: hidden;
}
.v2-prac-adlist__row:last-child { border-bottom: 0; }
.v2-prac-adlist__row:hover { background: #f4f6fb; }
.v2-prac-adlist__year {
    display: flex;
    align-items: baseline;
    gap: 0.6rem;
    padding: 0.5rem 1rem 0.35rem;
    margin-top: 0.25rem;
    background: #eef1f6;
    border-top: 2px solid var(--tn-electric, #001ed2);
}
.v2-prac-adlist__year:first-child { margin-top: 0; }
.v2-prac-adlist__year-label {
    font-size: 1.05rem;
    font-weight: 700;
    color: var(--tn-dark, #00003c);
}
.v2-prac-adlist__year-count { color: #64748b; font-size: 0.85rem; }
.v2-prac-adlist__date {
    flex: 0 0 5.5rem;
    font-variant-numeric: tabular-nums;
    font-weight: 600;
    color: var(--tn-electric, #001ed2);
}
.v2-prac-adlist__name { font-weight: 600; color: #00003c; overflow: hidden; text-overflow: ellipsis; }
.v2-prac-adlist__login { font-weight: 400; color: #64748b; }
.v2-prac-adlist__meta { color: #64748b; font-size: 0.85rem; overflow: hidden; text-overflow: ellipsis; }
/* Odliczanie znaków nad rubryką (input[data-char-count] — v2-char-count.js) */
label.v2-has-char-count { position: relative; }
.v2-char-count {
    position: absolute;
    top: 0;
    right: 0;
    font-size: 11px;
    line-height: 1.2;
    color: #64748b;
    background: #fff;
    padding: 0 2px;
    visibility: hidden;
    pointer-events: none;
}
label.v2-has-char-count:focus-within .v2-char-count { visibility: visible; }
.v2-char-count.is-full { color: #c62828; font-weight: 700; }
.v2-contract-dialog button { padding: 7px 14px; border: 1px solid #cbd5e1; background: #fff; border-radius: 6px; cursor: pointer; font-size: 13px; }
.v2-contract-dialog button.primary { background: #001ed2; color: #fff; border-color: #001ed2; }
/* podział strony jako ciemna „szczelina" między kartkami (jak w Wordzie) */
.v2-contract-paper .v2-pagebreak {
    display: block;
    height: 28px;
    margin: 14px calc(-1 * var(--pg-mr)) 14px calc(-1 * var(--pg-ml));
    background: #525659;
    box-shadow: inset 0 9px 9px -9px rgba(0, 0, 0, 0.55), inset 0 -9px 9px -9px rgba(0, 0, 0, 0.55);
    position: relative;
}
.v2-contract-paper .v2-pagebreak::after {
    content: "— PODZIAŁ STRONY —";
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    color: #cbd5e1;
    font-size: 9px;
    font-weight: 700;
    letter-spacing: 0.08em;
    white-space: nowrap;
}
/* tabele układu (bez ramki) — czytelna podpowiedź w edytorze, niewidoczna w PDF */
.v2-contract-paper table td,
.v2-contract-paper table th { border: 1px dotted #ccc; padding: 2px; vertical-align: top; }
.v2-contract-paper table[border="1"] td,
.v2-contract-paper table[border="1"] th { border: 1px solid #000; }
.v2-contract-paper .tech-slip { display: none !important; }
.v2-contract-html-store { display: none !important; }

.v2-contract-page-footer {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    gap: 1.25rem;
    padding: 0.65rem 1rem;
    background: #fff;
    border-top: 1px solid #e2e8f0;
    font-size: 0.82rem;
}
.v2-contract-page-thumb {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.2rem;
    flex-shrink: 0;
}
.v2-contract-page-thumb-sheet {
    position: relative;
    width: 56px;
    height: 79px;
    background: #fff;
    border: 1px solid #94a3b8;
    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.12);
    box-sizing: border-box;
}
.v2-contract-page-thumb-margin {
    position: absolute;
    background: rgba(0, 30, 210, 0.12);
    border: 1px dashed rgba(0, 30, 210, 0.55);
    box-sizing: border-box;
    top: 12%;
    right: 12%;
    bottom: 12%;
    left: 12%;
}
.v2-contract-page-thumb-caption {
    font-size: 0.65rem;
    font-weight: 700;
    color: #64748b;
    letter-spacing: 0.05em;
}
.v2-contract-page-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem 2rem;
    margin: 0;
    flex: 1;
}
.v2-contract-page-meta div {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 0.15rem 0.65rem;
    align-items: baseline;
}
.v2-contract-page-meta dt {
    margin: 0;
    font-weight: 700;
    color: #64748b;
    font-size: 0.72rem;
    text-transform: uppercase;
}
.v2-contract-page-meta dd {
    margin: 0;
    color: var(--tn-dark, #00003c);
    font-weight: 600;
}
.v2-contract-editor-empty {
    padding: 3rem;
    text-align: center;
    color: #64748b;
}
.v2-contract-editor-empty-hint {
    font-size: 0.9rem;
    color: #94a3b8;
    margin-top: 0.5rem;
}
.v2-sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    border: 0;
}
.v2-btn-accent {
    background: var(--tn-lime, #8cf000);
    color: var(--tn-dark, #00003c);
    border: none;
}
.v2-btn-accent:hover { filter: brightness(0.95); }

@media (max-width: 900px) {
    .v2-contract-editor { height: auto; min-height: 400px; }
    .v2-contract-paper-area { min-height: calc((100vh - 200px) * 2); }
    .v2-contract-editor-sidebar {
        position: fixed;
        left: 0;
        top: 0;
        bottom: 0;
        z-index: 200;
        transform: translateX(-100%);
        transition: transform 0.2s ease;
    }
    .v2-contract-editor-sidebar.is-open { transform: translateX(0); }
    .v2-contract-editor-menu-btn { display: inline-flex; }
}

@media (max-width: 900px) {
    .v2-toolbar--card {
        flex-direction: column;
        align-items: stretch;
    }
    .v2-toolbar-actions { justify-content: flex-end; }
    .v2-kpi-strip { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* —— Parking —— */
.v2-park-grid td.v2-park-cell { vertical-align: top; min-width: 7rem; }
.v2-park-slot { margin-bottom: 0.2rem; }
.v2-park-slot:last-child { margin-bottom: 0; }
.v2-park-badge {
    display: inline-block;
    font-size: 0.68rem;
    padding: 0.1rem 0.3rem;
    margin: 0.05rem 0;
    background: var(--tn-bg);
    color: var(--tn-dark, #00003c);
    line-height: 1.2;
}
.v2-park-badge--fleet {
    background: var(--tn-dark);
    color: #fff;
    font-weight: 700;
    font-size: 0.65rem;
}
.v2-park-badge--guest { background: #ffeb00; }
.v2-park-row-mpk td { background: #e8f4f8; }
.v2-park-row-person { padding-left: 1.25rem !important; }
.v2-park-mpk-table .v2-park-mpk-col-name { text-align: left; min-width: 11rem; }
.v2-park-mpk-toggle { border: none; background: transparent; cursor: pointer; padding: 0 0.35rem 0 0; font-size: 0.75rem; color: #001ed2; line-height: 1; vertical-align: middle; }
.v2-park-mpk-group.is-collapsed .v2-park-mpk-person { display: none; }
.v2-park-mpk-group.is-collapsed .v2-park-mpk-cell-split { display: none; }
.v2-park-mpk-group:not(.is-collapsed) .v2-park-mpk-cell-total { display: none; }
.v2-park-mpk-puste { display: inline-block; font-size: 0.72rem; color: #b42318; font-weight: 600; line-height: 1.25; }
.v2-park-mpk-puste-col { color: #b42318; }
.v2-park-mpk-grand td { background: #e8f5e9 !important; border-top: 2px solid #28a745; }
.v2-park-mpk-mismatch { background: #fde8e8 !important; color: #991b1b; }
.v2-park-mpk-mismatch-hint { color: #991b1b; font-weight: 700; margin-left: 0.15rem; }
.v2-park-mpk-person-indent { color: #94a3b8; margin-right: 0.2rem; }
.v2-park-mpk-table-wrap { max-height: none; }
.v2-panel-note { margin: 0 0 12px; }
.v2-page-toolbar-form { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.v2-park-nav { display: flex; flex-wrap: wrap; gap: 1rem 1.5rem; align-items: center; padding: 0.75rem 1rem; margin-bottom: 1rem; }
.v2-park-nav-group { display: flex; flex-wrap: wrap; align-items: center; gap: 0.35rem 0.5rem; }
.v2-park-date-input { padding: 0.35rem 0.5rem; border: 1px solid #cbd5e1; border-radius: 4px; }

/* Plan tygodnia — gradientowy pasek (nawigacja + wyszukiwanie zaawansowane) */
.v2-park-hero,
.v2-czy-map-hero,
.v2-prac-catalog-bar--hero {
    --v2-hero-control-h: 30px;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.45rem 0.75rem;
    padding: 0.5rem 1rem;
    margin-bottom: 0.65rem;
    border-radius: 8px;
    background: linear-gradient(135deg, #00003c 0%, #001ed2 55%, #0a4d8c 100%);
    color: #fff;
    box-shadow: 0 4px 16px rgba(0, 30, 210, 0.15);
}
.v2-park-hero__toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    gap: 0.4rem 0.55rem;
    width: 100%;
}
.v2-park-hero__field {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    margin: 0;
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: rgba(255, 255, 255, 0.88);
    white-space: nowrap;
}
.v2-park-hero .v2-btn,
.v2-czy-map-hero .v2-btn,
.v2-prac-catalog-bar--hero .v2-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
    min-height: var(--v2-hero-control-h);
    height: var(--v2-hero-control-h);
    padding: 0 0.65rem;
    font-size: 0.8125rem;
    line-height: 1.2;
    border-radius: 6px;
}
.v2-park-hero .v2-btn-sm,
.v2-czy-map-hero .v2-btn-sm {
    min-height: var(--v2-hero-control-h);
    height: var(--v2-hero-control-h);
    padding: 0 0.55rem;
    font-size: 0.78rem !important;
}
.v2-park-hero__main {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    gap: 0.45rem 0.85rem;
    flex: 1;
    min-width: min(100%, 18rem);
}
.v2-park-hero__group {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.3rem 0.4rem;
}
.v2-park-hero__label {
    font-size: 0.68rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    opacity: 0.85;
    min-width: 0;
    line-height: var(--v2-hero-control-h);
}
.v2-park-hero__range {
    font-size: 0.88rem;
    font-weight: 700;
    min-width: 0;
    text-align: left;
    letter-spacing: -0.01em;
    line-height: var(--v2-hero-control-h);
}
.v2-park-hero-arrow {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: var(--v2-hero-control-h);
    height: var(--v2-hero-control-h);
    border-radius: 6px;
    font-size: 1.25rem;
    font-weight: 700;
    line-height: 1;
    text-decoration: none;
    color: #fff;
    background: rgba(255, 255, 255, 0.16);
    border: 1px solid rgba(255, 255, 255, 0.35);
    transition: background 0.15s ease;
    flex-shrink: 0;
}
.v2-park-hero-arrow:hover {
    background: rgba(255, 255, 255, 0.28);
    color: #fff;
    transform: none;
}
.v2-park-hero-date {
    box-sizing: border-box;
    height: var(--v2-hero-control-h);
    padding: 0 0.4rem;
    border: 1px solid rgba(255, 255, 255, 0.45);
    border-radius: 6px;
    background: rgba(255, 255, 255, 0.12);
    color: #fff;
    font-size: 0.8125rem;
    font-weight: 600;
}
.v2-park-hero-date:focus {
    outline: 2px solid rgba(255, 255, 255, 0.65);
    outline-offset: 2px;
}
.v2-park-hero-date::-webkit-calendar-picker-indicator {
    filter: invert(1);
    opacity: 0.85;
}
.v2-park-hero-text {
    box-sizing: border-box;
    width: 6.5rem;
    height: var(--v2-hero-control-h);
    padding: 0 0.4rem;
    border: 1px solid rgba(255, 255, 255, 0.45);
    border-radius: 6px;
    background: rgba(255, 255, 255, 0.12);
    color: #fff;
    font-size: 0.8125rem;
    font-weight: 600;
}
.v2-park-hero-text::placeholder { color: rgba(255, 255, 255, 0.55); }
.v2-park-hero-text:focus {
    outline: 2px solid rgba(255, 255, 255, 0.65);
    outline-offset: 2px;
}
.v2-park-hero__hint {
    font-size: 0.75rem;
    opacity: 0.88;
    max-width: 22rem;
    line-height: 1.3;
}
.v2-park-hero__link {
    color: #fff;
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 2px;
}
.v2-park-hero__link:hover { color: #fff; opacity: 0.9; }
.v2-park-hero__inline-form {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.3rem;
    margin: 0;
}
.v2-park-hero__actions {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    gap: 0.3rem;
}
.v2-park-hero .v2-btn-secondary {
    background: rgba(255, 255, 255, 0.12);
    border-color: rgba(255, 255, 255, 0.35);
    color: #fff;
}
.v2-park-hero .v2-btn-secondary:hover { background: rgba(255, 255, 255, 0.22); }
.v2-park-hero .v2-btn-secondary.is-active {
    background: rgba(255, 255, 255, 0.28);
    border-color: #fff;
    font-weight: 600;
}
.v2-park-hero .v2-btn-primary,
.v2-czy-map-hero .v2-btn-primary {
    background: #fff;
    color: var(--tn-electric, #001ed2);
    border-color: #fff;
}
.v2-park-hero .v2-btn-primary:hover,
.v2-czy-map-hero .v2-btn-primary:hover {
    filter: brightness(0.96);
    color: var(--tn-electric, #001ed2);
}
.v2-park-hero .v2-tag--muted {
    background: rgba(255, 255, 255, 0.15);
    color: rgba(255, 255, 255, 0.95);
    border-color: rgba(255, 255, 255, 0.25);
    font-weight: 600;
    vertical-align: middle;
}
.v2-park-hero .v2-mt-sm { margin-top: 0; }
.v2-park-hero__search {
    position: relative;
    width: min(100%, 22rem);
    flex-shrink: 0;
}
.v2-park-adv-search__title {
    display: block;
    font-size: 0.68rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    margin-bottom: 0.25rem;
}
.v2-park-hero .v2-park-adv-search__title {
    color: rgba(255, 255, 255, 0.88);
    text-align: right;
}
.v2-park-hero .v2-park-adv-search__input {
    background: rgba(255, 255, 255, 0.95);
    border-color: rgba(255, 255, 255, 0.5);
    color: var(--tn-dark, #00003c);
}
.v2-park-adv-search__row {
    display: flex;
    gap: 0.35rem;
    align-items: stretch;
}
.v2-park-adv-search__input {
    flex: 1;
    min-width: 0;
    padding: 0.35rem 0.55rem;
    border: 1px solid #cbd5e1;
    border-radius: 6px;
    font-size: 0.85rem;
}
.v2-park-adv-results {
    position: absolute;
    z-index: 40;
    top: calc(100% + 0.35rem);
    right: 0;
    left: 0;
    max-height: min(60vh, 420px);
    overflow: auto;
    background: #fff;
    border: 1px solid #dbe3ef;
    border-radius: 8px;
    box-shadow: 0 12px 32px rgba(0, 30, 210, 0.12);
    padding: 0.5rem 0;
    color: var(--tn-dark, #00003c);
}
.v2-park-adv-list { list-style: none; margin: 0; padding: 0; }
.v2-park-adv-item a,
.v2-park-adv-item--static {
    display: block;
    padding: 0.55rem 0.85rem;
    font-size: 0.88rem;
    line-height: 1.35;
    text-decoration: none;
    color: inherit;
}
.v2-park-adv-item a:hover { background: #eef3ff; }
.v2-park-adv-empty {
    margin: 0;
    padding: 0.75rem 0.85rem;
    font-size: 0.88rem;
    color: var(--tn-muted, #64748b);
}

/* Wyszukiwanie zaawansowane — okno modalne z tabelą wyników */
dialog.v2-park-adv-dialog {
    max-width: min(96vw, 72rem);
    width: min(96vw, 72rem);
    padding: 0;
    border: none;
    border-radius: 12px;
    box-shadow: 0 20px 48px rgba(0, 0, 60, 0.22);
}
.v2-park-adv-dialog::backdrop {
    background: rgba(15, 23, 42, 0.45);
}
.v2-park-adv-dialog__head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 0.85rem 1.1rem;
    border-bottom: 2px solid var(--tn-blue, #001ed2);
    background: #f8fbff;
}
.v2-park-adv-dialog__title {
    margin: 0;
    font-size: 1.05rem;
    color: var(--tn-dark, #00003c);
}
.v2-park-adv-dialog__close {
    font-size: 1.5rem;
    line-height: 1;
    padding: 0.15rem 0.35rem;
    color: #64748b;
}
.v2-park-adv-dialog__close:hover {
    color: var(--tn-blue, #001ed2);
    text-decoration: none;
}
.v2-park-adv-dialog__search {
    padding: 0.85rem 1.1rem;
    border-bottom: 1px solid var(--tn-border, #dce2ea);
    background: #fff;
}
.v2-park-adv-dialog__search-label {
    display: block;
    margin-bottom: 0.35rem;
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: #64748b;
}
.v2-park-adv-dialog__input {
    background: #fff;
    border-color: #cbd5e1;
    color: var(--tn-dark, #00003c);
}
.v2-park-adv-dialog__body {
    padding: 0.85rem 1.1rem 1.1rem;
    max-height: min(70vh, 640px);
    overflow: auto;
    background: #fff;
}
.v2-park-adv-dialog__summary {
    margin: 0 0 0.65rem;
    font-size: 0.88rem;
    color: #475569;
}
.v2-park-adv-dialog__table-wrap {
    border: 1px solid var(--tn-border, #dce2ea);
    border-radius: 8px;
}
.v2-park-adv-table th {
    white-space: nowrap;
    font-size: 0.72rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}
.v2-park-adv-table td {
    vertical-align: top;
    font-size: 0.84rem;
    line-height: 1.35;
}
.v2-park-adv-badge {
    display: inline-block;
    font-size: 0.68rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.03em;
}
.v2-park-adv-timing {
    display: inline-block;
    font-size: 0.75rem;
    font-weight: 600;
    color: #475569;
}
.v2-park-adv-timing.v2-park-adv-badge--past { color: #64748b; }
.v2-park-adv-timing.v2-park-adv-badge--future { color: #1d4ed8; }

.v2-park-grid tbody tr.is-hidden { display: none; }
.v2-park-board .v2-park-spot-card.is-hidden { display: none; }

/* Nagłówki dni w siatce — kompaktowo, dzień i data obok siebie */
.v2-park-grid--board thead th {
    vertical-align: middle;
    text-align: center;
    padding: 0.4rem 0.45rem;
    line-height: 1.15;
}
.v2-park-grid--board thead th:first-child {
    text-align: left;
    font-size: 0.82rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: #64748b;
    width: 4.5rem;
}
.v2-park-grid--board tbody td {
    padding: 0.35rem 0.4rem;
    line-height: 1.25;
}
.v2-park-day-head {
    min-width: 6.5rem;
    white-space: nowrap;
}
.v2-park-day-line {
    display: inline-flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: 0.35rem 0.45rem;
}
.v2-park-day-name {
    font-size: 0.95rem;
    font-weight: 800;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: var(--tn-dark, #00003c);
}
.v2-park-day-date {
    font-size: 0.88rem;
    font-weight: 700;
    color: #475569;
}
.v2-park-day-date::before {
    content: "·";
    margin-right: 0.45rem;
    color: #94a3b8;
    font-weight: 400;
}
.v2-park-day-head .v2-park-today-tag {
    margin: 0;
}
.v2-park-spot-label {
    width: 4.5rem;
    vertical-align: middle;
}
.v2-park-spot-label .v2-park-open-spot {
    font-size: 1.2rem;
    font-weight: 800;
    color: var(--tn-dark, #00003c);
    letter-spacing: -0.02em;
    padding: 0;
}
.v2-park-spot-label .v2-park-open-spot strong {
    font-weight: 800;
}
.v2-park-spot-label .v2-park-open-spot:hover {
    color: var(--tn-blue, #001ed2);
}

@media (max-width: 720px) {
    .v2-park-hero { flex-direction: column; align-items: flex-start; padding: 0.5rem 0.85rem; }
    .v2-park-hero__search { width: 100%; }
    .v2-park-hero .v2-park-adv-search__title { text-align: left; }
}
.v2-park-col-focus { background: #e8f0fe !important; }
.v2-park-col-today {
    background: #dbeafe !important;
    border-left: 2px solid #001ED2;
    border-right: 2px solid #001ED2;
    box-shadow: inset 0 -3px 0 #001ED2;
}
.v2-park-col-today.v2-park-col-focus {
    background: #c7d9fc !important;
}
.v2-park-day-head.v2-park-col-focus .v2-park-day-name { color: #001ed2; }
.v2-park-day-head.v2-park-col-today .v2-park-day-name { color: #001ed2; }
.v2-park-day-head.v2-park-col-today .v2-park-day-date { color: #00003c; }
.v2-park-today-tag {
    display: inline-block;
    margin: 0;
    padding: 0.08rem 0.35rem;
    font-size: 0.6rem;
    color: #fff;
    background: #001ED2;
    font-weight: 700;
    text-transform: uppercase;
    border-radius: 3px;
    letter-spacing: 0.04em;
    vertical-align: middle;
}
.v2-park-cell--focus { background: #f8fbff; }
.v2-park-cell--today {
    background: #eff6ff;
    border-left: 2px solid rgba(0, 30, 210, 0.45);
    border-right: 2px solid rgba(0, 30, 210, 0.45);
}
.v2-park-cell--today.v2-park-cell--focus { background: #e0eaff; }
.v2-park-cell--today.v2-park-cell--free { background: #ecfdf5; }
.v2-park-cell--free { background: #f0fdf4; }
.v2-park-legend-box { display: inline-block; width: 1rem; height: 0.75rem; background: #f0fdf4; border: 1px solid #ccc; vertical-align: middle; }

/* Plan miejsc — karty tygodnia (rezerwacje.php) */
.v2-park-board {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 1rem 1.1rem;
    align-items: start;
}
.v2-park-only-free .v2-park-spot-card[data-has-free="0"] {
    display: none;
}
.v2-park-spot-card {
    display: flex;
    flex-direction: column;
    align-self: start;
    height: auto;
    min-width: 0;
    background: var(--tn-white, #fff);
    border: 1px solid var(--tn-border);
    box-shadow: 0 2px 8px rgba(0, 0, 60, 0.08);
    isolation: isolate;
}
.v2-park-spot-card__head {
    flex: 0 0 auto;
    padding: 0.5rem 0.7rem;
    background: var(--tn-bg);
    border-bottom: 2px solid var(--tn-blue);
}
.v2-park-spot-card__head .v2-park-open-spot {
    font-size: 1.08rem;
    font-weight: 800;
    color: var(--tn-dark, #00003c);
    letter-spacing: -0.02em;
}
.v2-park-spot-card__head .v2-park-open-spot:hover {
    color: var(--tn-blue, #001ed2);
}
.v2-park-spot-card__week {
    display: flex;
    flex-direction: column;
    flex: 0 1 auto;
    background: #fafbfd;
}
.v2-park-dayrow {
    display: grid;
    grid-template-columns: 2.35rem minmax(0, 1fr);
    gap: 0.35rem;
    align-items: center;
    padding: 0.28rem 0.45rem;
    border-bottom: 1px solid #dde5f0;
}
.v2-park-dayrow:last-child { border-bottom: none; }
.v2-park-dayrow--focus {
    background: #f8fbff;
    box-shadow: inset 3px 0 0 var(--tn-blue, #001ed2);
}
.v2-park-dayrow--today {
    background: #eff6ff;
    box-shadow: inset 3px 0 0 rgba(0, 30, 210, 0.45);
}
.v2-park-dayrow--today.v2-park-dayrow--focus {
    background: #e0eaff;
    box-shadow: inset 3px 0 0 var(--tn-blue, #001ed2);
}
.v2-park-dayrow__lbl {
    display: flex;
    flex-direction: column;
    justify-content: center;
    line-height: 1.15;
    color: #64748b;
    align-self: center;
}
.v2-park-dayrow__name {
    font-size: 0.72rem;
    font-weight: 800;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--tn-dark, #00003c);
}
.v2-park-dayrow__date {
    font-size: 0.62rem;
    font-weight: 600;
    color: #94a3b8;
}
.v2-park-dayrow__content {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    align-content: flex-start;
    gap: 0.2rem 0.35rem;
    padding: 0.15rem 0.35rem;
}
.v2-park-dayrow__content--free {
    background: var(--tn-bg);
    border: 1px dashed var(--tn-border);
}
.v2-park-free {
    font-size: 0.72rem;
    font-weight: 700;
    color: var(--tn-dark);
}
.v2-park-dayrow__content .v2-park-quick-btn {
    margin-left: auto;
    flex-shrink: 0;
}
.v2-park-chip {
    display: inline-flex;
    align-items: center;
    gap: 0.15rem;
    max-width: 100%;
    font-size: 0.68rem;
    padding: 0.12rem 0.35rem;
    cursor: help;
}
.v2-park-board .v2-park-slot {
    margin-bottom: 0;
}
.v2-park-board .v2-park-slot + .v2-park-slot,
.v2-park-board .v2-park-slot + .v2-park-chip,
.v2-park-board .v2-park-chip + .v2-park-chip,
.v2-park-board .v2-park-chip + .v2-park-slot {
    margin-top: 0.15rem;
}
.v2-park-slot__line {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.25rem 0.4rem;
    width: 100%;
}
.v2-park-dayrow__content .v2-park-reg {
    display: inline;
}
.v2-park-dayrow__content .v2-muted {
    width: 100%;
    font-size: 0.65rem;
    line-height: 1.2;
}
@media (max-width: 1280px) {
    .v2-park-board {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}
@media (max-width: 1024px) {
    .v2-park-board {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}
@media (max-width: 768px) {
    .v2-park-board {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}
@media (max-width: 520px) {
    .v2-park-board {
        grid-template-columns: 1fr;
    }
}

.v2-park-reg { display: block; font-size: 0.72rem; font-weight: 700; letter-spacing: 0.02em; line-height: 1.2; }
.v2-park-cell .v2-muted { font-size: 0.65rem; line-height: 1.2; }
.v2-park-color-dot { display: inline-block; width: 0.55rem; height: 0.55rem; border-radius: 2px; border: 1px solid #999; vertical-align: middle; margin-right: 0.15rem; }
.v2-park-color-box {
    display: inline-block;
    width: 1.25rem;
    height: 1.25rem;
    border-radius: 3px;
    border: 1px solid rgba(0, 0, 0, 0.25);
    vertical-align: middle;
    margin-right: 0.35rem;
    flex-shrink: 0;
}
.v2-park-color-box--empty { background: repeating-linear-gradient(45deg, #e2e8f0, #e2e8f0 4px, #f8fafc 4px, #f8fafc 8px); }
.v2-park-color-picker { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 0.35rem; max-width: 100%; }
.v2-park-color-picker__open { font-size: 0.75rem; white-space: nowrap; padding: 0; }
.v2-park-hero .v2-park-color-picker__open { color: #fff; }
.v2-park-color-dialog { max-width: 22rem; }
.v2-park-color-dialog__title { margin: 0 0 0.35rem; font-size: 1.05rem; color: #00003C; }
.v2-park-color-dialog__hint { margin: 0 0 0.75rem; font-size: 0.85rem; }
.v2-park-color-dialog__swatches { display: flex; flex-wrap: wrap; gap: 0.45rem; justify-content: flex-start; }
.v2-park-color-swatch--lg { width: 2rem; height: 2rem; border-radius: 4px; }
.v2-park-vehicles-color-cell { white-space: nowrap; min-width: 6rem; }
.v2-park-vehicles-table .v2-input-inline--wide { min-width: 9rem; }
.v2-park-hero-select {
    box-sizing: border-box;
    height: var(--v2-hero-control-h);
    padding: 0 1.75rem 0 0.4rem;
    border: 1px solid rgba(255, 255, 255, 0.45);
    border-radius: 6px;
    background: rgba(255, 255, 255, 0.12);
    color: #fff;
    font-size: 0.8125rem;
    font-weight: 600;
    max-width: 8rem;
}
.v2-park-hero-select--wide { max-width: 11rem; }
.v2-park-hero-select--year { max-width: 5.5rem; min-width: 4.75rem; }
.v2-park-hero-select option { color: #0f172a; background: #fff; }
.v2-park-hero-text--wide { width: 9rem; }
.v2-park-hero-text--year { width: 4.5rem; text-align: center; }
.v2-park-hero-text--year::-webkit-outer-spin-button,
.v2-park-hero-text--year::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.v2-park-hero-text--year { -moz-appearance: textfield; appearance: textfield; }
.v2-park-hero__group--vehicles-add { flex: 1; min-width: min(100%, 20rem); }
.v2-park-hero__inline-form--vehicles { flex-wrap: wrap; max-width: 100%; }
.v2-park-hero__inline-form--vehicles .v2-park-color-inline { display: inline-flex; align-items: center; flex-wrap: wrap; gap: 0.25rem; }
.v2-park-hero .v2-park-color-swatch { border-color: rgba(255, 255, 255, 0.35); }
.v2-park-hero .v2-park-color-swatch.is-selected { border-color: #fff; box-shadow: 0 0 0 1px rgba(0, 0, 60, 0.5); }
.v2-park-quick-btn { border: 1px dashed #001ED2; background: #fff; color: #001ED2; width: 1.5rem; height: 1.5rem; cursor: pointer; font-weight: 700; font-size: 0.85rem; line-height: 1; padding: 0; }
.v2-park-quick-btn:hover { background: #e8f0fe; }
.v2-input-inline { width: 5rem; padding: 0.2rem 0.35rem; }
.v2-input-inline--num { width: 5.5rem; text-align: right; }
.v2-park-colors { display: inline-flex; flex-wrap: wrap; gap: 0.25rem; }
.v2-park-color-swatch { width: 1.25rem; height: 1.25rem; border: 2px solid transparent; border-radius: 3px; cursor: pointer; padding: 0; }
.v2-park-color-swatch.is-selected { border-color: #000; box-shadow: 0 0 0 1px #fff inset; }

.v2-link-btn { background: none; border: none; padding: 0; color: #001ED2; cursor: pointer; font: inherit; text-align: left; }
.v2-link-btn:hover { text-decoration: underline; }
.v2-park-open-cell { cursor: pointer; }
.v2-park-open-cell:focus { outline: 2px solid #001ED2; outline-offset: -2px; }
.v2-dialog { border: 1px solid #cbd5e1; border-radius: 8px; padding: 1rem 1.25rem; max-width: 36rem; width: 96%; box-sizing: border-box; }
.v2-dialog.v2-dialog--wide,
dialog.v2-park-spot-dialog {
    max-width: min(96vw, 88rem);
    width: min(96vw, 88rem);
    padding: 0;
}
.v2-park-spot-dialog { overflow: hidden; }
.v2-park-spot-dialog-head { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 1rem 1.25rem; border-bottom: 2px solid #001ED2; background: #f8fbff; }
.v2-park-spot-dialog-title { margin: 0; font-size: 1.15rem; color: #00003C; }
.v2-park-spot-dialog-body {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem;
    padding: 1rem 1.25rem 1.25rem;
    max-height: min(85vh, 52rem);
    overflow-x: hidden;
    overflow-y: auto;
    box-sizing: border-box;
    align-items: start;
}
@media (max-width: 960px) { .v2-park-spot-dialog-body { grid-template-columns: 1fr; } }
.v2-park-spot-form-panel,
.v2-park-spot-history-panel {
    min-width: 0;
    max-width: 100%;
    overflow: hidden;
    box-sizing: border-box;
}
.v2-park-spot-form-panel .v2-card,
.v2-park-spot-form-panel { box-sizing: border-box; width: 100%; }
.v2-park-spot-form-panel input,
.v2-park-spot-form-panel select,
.v2-park-spot-form-panel .v2-input,
.v2-park-spot-form-panel textarea { width: 100%; max-width: 100%; box-sizing: border-box; }
.v2-park-spot-form-panel h3,
.v2-park-spot-history-panel h3 { margin: 0 0 0.75rem; font-size: 1rem; }
.v2-park-type-step { margin-top: 0.25rem; }
.v2-park-type-cards { display: flex; flex-direction: column; gap: 0.65rem; margin-top: 0.75rem; }
.v2-park-type-card {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.35rem;
    width: 100%;
    max-width: 100%;
    box-sizing: border-box;
    padding: 0.85rem 1rem;
    border: 2px solid #cbd5e1;
    border-radius: 8px;
    background: #fff;
    cursor: pointer;
    text-align: left;
    font: inherit;
    transition: border-color 0.12s, background 0.12s, box-shadow 0.12s;
}
.v2-park-type-card:hover {
    border-color: #001ED2;
    background: #f8fbff;
    box-shadow: 0 2px 8px rgba(0, 30, 210, 0.08);
}
.v2-park-type-card-title { font-weight: 700; color: #00003C; font-size: 0.95rem; }
.v2-park-type-card-desc { font-size: 0.8rem; color: #64748b; line-height: 1.4; }
.v2-park-modal-form { margin-top: 0.5rem; max-width: 100%; overflow: hidden; }
.v2-park-form-step-head {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.25rem;
    margin-bottom: 0.85rem;
    padding-bottom: 0.65rem;
    border-bottom: 1px solid #e2e8f0;
}
.v2-park-form-step-title { margin: 0; font-weight: 700; color: #00003C; font-size: 0.95rem; }
.v2-park-form-fields { display: flex; flex-direction: column; gap: 0.85rem; max-width: 100%; }
.v2-park-field-group { display: flex; flex-direction: column; gap: 0.65rem; max-width: 100%; min-width: 0; }
.v2-park-date-range { display: flex; flex-direction: column; gap: 0.65rem; max-width: 100%; }
.v2-park-field-group[hidden],
.v2-park-date-range[hidden] { display: none !important; }
.v2-park-form-actions { margin-top: 1rem; padding-top: 0.75rem; border-top: 1px solid #e2e8f0; }
.v2-segmented--stack {
    display: flex;
    flex-direction: column;
    width: 100%;
    max-width: 100%;
    overflow: hidden;
    border-radius: 8px;
}
.v2-segmented--stack .v2-segmented-btn {
    width: 100%;
    text-align: left;
    border-bottom: 1px solid var(--tn-border, #e2e8f0);
}
.v2-segmented--stack .v2-segmented-btn:last-child { border-bottom: none; }
.v2-park-spot-form-panel .v2-park-colors { max-width: 100%; flex-wrap: wrap; }
.v2-park-mode-hint { margin: 0.5rem 0 0; }
.v2-park-panel { padding-top: 0.25rem; }
.v2-park-guest-box { background: #fffbeb; border: 1px solid #fcd34d; border-radius: 6px; padding: 0.75rem; box-sizing: border-box; }
.v2-park-guest-input { margin-top: 0; }
.v2-park-guest-car-btns { display: flex; flex-wrap: wrap; gap: 0.35rem; }
.v2-park-type-row { display: flex; flex-wrap: wrap; gap: 1rem; }
.v2-park-day-btns { display: flex; flex-wrap: wrap; gap: 0.35rem; }
.v2-park-day-btn { cursor: pointer; }
.v2-park-day-btn input { position: absolute; opacity: 0; pointer-events: none; }
.v2-park-day-btn span { display: inline-block; min-width: 2rem; text-align: center; padding: 0.35rem 0.55rem; border: 1px solid #cbd5e1; border-radius: 4px; background: #fff; font-weight: 700; font-size: 0.85rem; }
.v2-park-day-btn input:checked + span { background: #001ED2; color: #fff; border-color: #001ED2; }
.v2-park-spot-history-wrap { max-height: 28rem; overflow: auto; }
.v2-park-spot-history-wrap .v2-table { table-layout: fixed; }
.v2-park-spot-history-wrap .v2-table td,
.v2-park-spot-history-wrap .v2-table th { word-break: break-word; }
.v2-dialog::backdrop { background: rgba(0, 0, 60, 0.35); }
.v2-dialog-actions { display: flex; gap: 0.5rem; flex-wrap: wrap; }

.v2-flota-vat-table-wrap { overflow-x: auto; }
.v2-flota-vat-table th:first-child,
.v2-flota-vat-table td:first-child {
    position: sticky;
    left: 0;
    z-index: 1;
    background: #fff;
    min-width: 11rem;
}
.v2-flota-vat-col-sum { background: #f1f5f9 !important; }
.v2-flota-vat-row--total td { background: #fffbeb; font-weight: 700; }
.v2-flota-vat-row--vat td { background: #eff6ff; font-style: italic; }
.v2-flota-vat-row--brutto td { background: #fef2f2; font-weight: 800; }
.v2-flota-vat-hero { margin-bottom: 0.65rem; }

/* Faktury — karty flotowe: wyróżnienie kwoty i nr faktury nad tabelą podziału */
.v2-flota-fuel-inv-summary {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem 1.25rem;
    margin: 0 0 0.65rem;
    padding: 0.55rem 0.85rem;
    border-radius: 8px;
    border: 1px solid rgba(0, 30, 210, 0.22);
    border-left: 4px solid var(--tn-electric, #001ed2);
    background: linear-gradient(90deg, rgba(0, 30, 210, 0.1) 0%, rgba(0, 30, 210, 0.04) 55%, #f8fafc 100%);
    box-shadow: 0 1px 4px rgba(0, 30, 210, 0.08);
}
.v2-flota-fuel-inv-summary__main {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 0.35rem 0.75rem;
    min-width: min(100%, 12rem);
}
.v2-flota-fuel-inv-summary__caption {
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--tn-electric, #001ed2);
}
.v2-flota-fuel-inv-summary__amount {
    font-size: 1.35rem;
    font-weight: 800;
    line-height: 1.15;
    letter-spacing: -0.02em;
    color: var(--tn-dark, #00003c);
    font-variant-numeric: tabular-nums;
}
.v2-flota-fuel-inv-summary__meta {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 0.3rem 0.5rem;
    padding: 0.2rem 0.55rem;
    border-radius: 6px;
    background: rgba(255, 255, 255, 0.75);
    border: 1px solid rgba(0, 30, 210, 0.12);
}
.v2-flota-fuel-inv-summary__nr-label {
    font-size: 0.68rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: #64748b;
}
.v2-flota-fuel-inv-summary__nr {
    font-size: 0.95rem;
    font-weight: 700;
    font-family: ui-monospace, Consolas, monospace;
    color: var(--tn-dark, #00003c);
}
.v2-fuel-inv-cols {
    align-items: start;
    gap: 1rem 1.25rem;
}
@media (max-width: 900px) {
    .v2-flota-fuel-inv-summary {
        flex-direction: column;
        align-items: flex-start;
    }
}

/* —— Czynsz —— */
.v2-czy-room-card { min-height: 6rem; }
.v2-czy-room-card h4 { margin: 0 0 0.35rem; font-size: 0.95rem; }
.v2-list-compact { margin: 0; padding-left: 1.1rem; font-size: 0.85rem; }

/* Flota — lista pojazdów: filtr statusu (gradient jak mapa pokoi) */
.v2-flota-list-filter {
    flex-direction: column;
    align-items: flex-start;
    gap: 0.4rem;
    margin-bottom: 0.65rem;
}
.v2-flota-list-filter.v2-park-hero,
.v2-flota-list-filter.v2-czy-map-hero {
    gap: 0.35rem;
}
.v2-flota-list-filter__title {
    margin: 0;
    font-size: 0.78rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    opacity: 0.9;
}
.v2-flota-list-filter__switch {
    background: rgba(255, 255, 255, 0.12);
    padding: 4px;
    border-radius: 999px;
    gap: 4px;
    flex-wrap: wrap;
}
.v2-flota-list-filter__switch .v2-prac-view-switch__btn {
    color: rgba(255, 255, 255, 0.9);
    border-radius: 999px;
    text-decoration: none;
}
.v2-flota-list-filter__switch .v2-prac-view-switch__btn:hover {
    color: #fff;
    background: rgba(255, 255, 255, 0.1);
}
.v2-flota-list-filter__switch .v2-prac-view-switch__btn.is-active {
    background: #fff;
    color: var(--tn-electric, #001ed2);
    box-shadow: 0 2px 8px rgba(0, 30, 210, 0.25);
}
.v2-flota-list-filter__count {
    font-weight: 500;
    opacity: 0.85;
}

/* Harmonogram faktur — serwis z kartoteki pojazdu gdy brak w imporcie */
.v2-flota-svc-kartoteka {
    display: inline-block;
    margin-left: 0.2rem;
    color: #b45309;
    font-weight: 800;
    font-size: 0.85em;
    line-height: 1;
    vertical-align: super;
    cursor: help;
}
.v2-flota-svc-kartoteka-legend {
    color: #64748b;
    font-size: 0.85em;
}
.v2-flota-harmonogram-reg {
    white-space: nowrap;
}
.v2-flota-harmonogram-reg .v2-vehicle-link {
    margin-right: 0.35rem;
}
.v2-flota-harmonogram-driver {
    font-size: 0.78rem;
    font-weight: 500;
    color: #64748b;
    white-space: normal;
}
/* Harmonogram — wiersz sumy częściowej dla MPK (grupowanie po MPK) */
.v2-flota-harmonogram-mpk-sub td,
.v2-flota-harmonogram-mpk-sub th {
    background: #eef1f6;
    border-top: 1px solid #cbd5e1;
    font-weight: 700;
}
.v2-flota-harmonogram-mpk-sub th {
    text-align: left;
    color: #334155;
}
/* Karty flotowe — nagłówek grupy MPK w tabeli pojazdów (podział faktury) */
.v2-flota-fuel-mpk-group th,
.v2-flota-fuel-mpk-group td {
    background: #eef1f6;
    border-top: 1px solid #cbd5e1;
    font-weight: 700;
}
.v2-flota-fuel-mpk-group th {
    text-align: left;
    color: #334155;
}
.v2-flota-fuel-mpk-group code { font-weight: 700; }
/* Harmonogram — komentarz do miesiąca */
.v2-flota-month-comment__input {
    width: 100%;
    box-sizing: border-box;
    padding: 8px 10px;
    border: 1px solid #cbd5e1;
    border-radius: 6px;
    font: inherit;
    font-size: 0.9rem;
    resize: vertical;
    min-height: 3.2rem;
}
.v2-flota-month-comment__input:focus {
    outline: none;
    border-color: var(--tn-blue, #001ed2);
    box-shadow: 0 0 0 2px rgba(0, 30, 210, 0.12);
}
.v2-flota-month-comment__bar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    margin-top: 0.5rem;
    flex-wrap: wrap;
}
.v2-flota-month-comment__meta--error { color: #b42318; }
.v2-flota-month-comment__text {
    white-space: pre-line;
    margin: 0 0 0.35rem;
}

/* Flota — faktury: zakładki lewo, okres prawo */
.v2-flota-faktury-hero {
    flex-direction: row;
    flex-wrap: wrap;
    align-items: flex-start;
    justify-content: space-between;
    gap: 0.4rem 0.75rem;
}
.v2-flota-faktury-hero__tabs {
    flex: 1 1 auto;
    min-width: min(100%, 14rem);
    justify-content: flex-start;
}
.v2-flota-faktury-hero__period {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    justify-content: flex-end;
    gap: 0.35rem 0.5rem;
    flex: 0 1 auto;
    margin-left: auto;
    max-width: 100%;
}
.v2-flota-faktury-hero__period-label {
    display: inline-flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.35rem;
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: rgba(255, 255, 255, 0.88);
    line-height: var(--v2-hero-control-h, 30px);
    white-space: nowrap;
}
.v2-flota-faktury-hero__period-form {
    justify-content: flex-end;
}

/* Mapa pokoi (index modułu Czynsz) */
.v2-czy-map { margin-top: 0.5rem; }
.v2-czy-map-hero__stats {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    gap: 0.75rem 1.25rem;
}
.v2-czy-map-stat { display: flex; flex-direction: column; gap: 0.1rem; }
.v2-czy-map-stat__value { font-size: 1.35rem; font-weight: 800; line-height: 1.1; letter-spacing: -0.02em; }
.v2-czy-map-stat__label { font-size: 0.72rem; opacity: 0.85; text-transform: uppercase; letter-spacing: 0.04em; }
.v2-czy-map-hero__actions { display: flex; flex-wrap: wrap; align-items: flex-start; gap: 0.3rem; }
.v2-czy-map-hero .v2-btn-secondary {
    background: rgba(255, 255, 255, 0.12);
    border-color: rgba(255, 255, 255, 0.35);
    color: #fff;
}
.v2-czy-map-hero .v2-btn-secondary:hover { background: rgba(255, 255, 255, 0.22); }
.v2-czy-map-toolbar {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
    align-items: center;
    padding: 0.65rem 0.85rem;
    margin-bottom: 1.25rem;
}
.v2-czy-map-locs { display: flex; flex-wrap: wrap; gap: 0.4rem; }
.v2-czy-map-loc {
    display: inline-block;
    padding: 0.35rem 0.75rem;
    border-radius: 999px;
    font-size: 0.85rem;
    font-weight: 600;
    text-decoration: none;
    color: var(--tn-dark, #00003c);
    background: #eef1f6;
    border: 1px solid transparent;
    transition: background 0.15s, color 0.15s;
}
.v2-czy-map-loc:hover { background: #e3f2fd; color: var(--tn-electric, #001ed2); }
.v2-czy-map-loc.is-active {
    background: var(--tn-electric, #001ed2);
    color: #fff;
    box-shadow: 0 2px 8px rgba(0, 30, 210, 0.25);
}
.v2-czy-map-loc-head {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.75rem 1.25rem;
    margin: 2rem 0 0.75rem;
    padding: 0.75rem 1rem;
    background: var(--tn-dark, #00003c);
    color: #fff;
    border-radius: 8px;
    border-left: 5px solid var(--tn-mint, #00ebc8);
}
.v2-czy-map-loc-head h2 { margin: 0; font-size: 1.2rem; flex: 1 1 auto; }
.v2-czy-map-loc-rate { font-size: 0.88rem; opacity: 0.9; }
.v2-czy-map-floor {
    margin-bottom: 0.75rem;
    border: 1px solid #e2e8f0;
    border-radius: 10px;
    background: #fff;
    overflow: hidden;
    box-shadow: 0 2px 8px rgba(0, 0, 60, 0.04);
}
.v2-czy-map-floor.is-filter-empty { display: none; }
.v2-czy-map-floor__summary {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.85rem 1rem;
    cursor: pointer;
    list-style: none;
    background: linear-gradient(90deg, #f8fafc 0%, #fff 100%);
    border-bottom: 1px solid #eee;
}
.v2-czy-map-floor__summary::-webkit-details-marker { display: none; }
.v2-czy-map-floor[open] .v2-czy-map-floor__summary { border-bottom-color: #e2e8f0; }
.v2-czy-map-floor__icon {
    width: 2rem;
    height: 2rem;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #e8eeff;
    color: var(--tn-electric, #001ed2);
    border-radius: 8px;
    font-size: 1rem;
}
.v2-czy-map-floor__title { font-weight: 700; color: var(--tn-dark, #00003c); flex: 1; }
.v2-czy-map-floor__meta { font-size: 0.85rem; color: #666; }
.v2-czy-map-rooms {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    gap: 0.85rem;
    padding: 1rem;
}
.v2-czy-map-room {
    border: 1px solid #e2e8f0;
    border-radius: 10px;
    background: #fff;
    border-left: 4px solid var(--czy-room-accent, #5c6b8a);
    display: flex;
    flex-direction: column;
    min-height: 8rem;
    transition: box-shadow 0.15s, transform 0.15s;
}
.v2-czy-map-room:hover {
    box-shadow: 0 6px 18px rgba(0, 30, 210, 0.1);
    transform: translateY(-1px);
}
.v2-czy-map-room.is-empty { opacity: 0.92; }
.v2-czy-map-room.is-hidden { display: none !important; }
.v2-czy-map-room__head {
    display: flex;
    gap: 0.5rem;
    align-items: flex-start;
    padding: 0.65rem 0.75rem 0.35rem;
    background: var(--czy-room-soft, #eef1f6);
}
.v2-czy-map-room__icon {
    font-size: 1.1rem;
    color: var(--czy-room-accent, #5c6b8a);
    line-height: 1;
}
.v2-czy-map-room__title-wrap { flex: 1; min-width: 0; }
.v2-czy-map-room__nr { margin: 0; font-size: 1rem; color: var(--tn-dark, #00003c); }
.v2-czy-map-room__name { margin: 0.1rem 0 0; font-size: 0.8rem; font-weight: 600; color: var(--czy-room-accent); }
.v2-czy-map-room__type {
    display: inline-block;
    margin-top: 0.2rem;
    font-size: 0.68rem;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: #666;
}
.v2-czy-map-room__count {
    font-size: 0.75rem;
    font-weight: 700;
    color: #888;
    white-space: nowrap;
}
.v2-czy-map-room__print {
    display: flex;
    flex-wrap: wrap;
    gap: 0.2rem;
    margin-left: auto;
    flex-shrink: 0;
}
.v2-czy-map-print-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.55rem;
    height: 1.55rem;
    border-radius: 6px;
    border: 1px solid rgba(0, 30, 210, 0.25);
    background: #fff;
    color: var(--tn-electric, #001ed2);
    font-size: 0.72rem;
    text-decoration: none;
    line-height: 1;
    transition: background 0.12s, border-color 0.12s;
}
.v2-czy-map-print-btn:hover {
    background: var(--tn-electric, #001ed2);
    color: #fff;
    border-color: var(--tn-electric, #001ed2);
}
.v2-czy-map-bulk-print {
    display: inline-flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.3rem;
    padding: 0.3rem 0.5rem;
    border: 1px solid rgba(0, 30, 210, 0.18);
    border-radius: 8px;
    background: rgba(0, 30, 210, 0.04);
}
.v2-czy-map-bulk-print__label {
    font-size: 0.8rem;
    font-weight: 600;
    color: var(--tn-electric, #001ed2);
}
.v2-czy-map-room__meta {
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem 0.65rem;
    padding: 0.35rem 0.75rem;
    font-size: 0.78rem;
    color: #666;
    border-bottom: 1px solid #f0f0f0;
}
.v2-czy-map-room__cost { font-weight: 700; color: var(--tn-electric, #001ed2); }
.v2-czy-map-room__mpk {
    margin-left: auto;
    font-weight: 600;
    color: var(--tn-dark, #00003c);
}
.v2-czy-map-room__body { flex: 1; padding: 0.5rem 0.65rem 0.65rem; }
.v2-czy-map-room__empty {
    margin: 0.5rem 0;
    text-align: center;
    font-size: 0.82rem;
    color: #999;
    font-style: italic;
}
.v2-czy-map-people { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 0.35rem; }
.v2-czy-map-person {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.35rem 0.4rem;
    border-radius: 8px;
    text-decoration: none;
    color: inherit;
    transition: background 0.12s;
}
.v2-czy-map-person:hover { background: #f0f4fc; }
.v2-czy-map-person__photo,
.v2-czy-map-person__ph {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    flex-shrink: 0;
    object-fit: cover;
}
.v2-czy-map-person__ph {
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--tn-electric, #001ed2);
    color: #fff;
    font-size: 0.75rem;
    font-weight: 700;
}
.v2-czy-map-person__info { display: flex; flex-direction: column; min-width: 0; }
.v2-czy-map-person__name { font-weight: 600; font-size: 0.88rem; color: var(--tn-dark, #00003c); }
.v2-czy-map-person__role { font-size: 0.75rem; color: #666; }
.v2-czy-map-person__mpk { font-size: 0.72rem; color: var(--tn-electric, #001ed2); font-weight: 600; }

@media (max-width: 720px) {
    .v2-flota-faktury-hero { flex-direction: column; align-items: stretch; }
    .v2-flota-faktury-hero__period { margin-left: 0; justify-content: flex-start; }
    .v2-flota-faktury-hero__period-form { justify-content: flex-start; }
    .v2-czy-map-hero { padding: 0.5rem 0.85rem; }
    .v2-czy-map-stat__value { font-size: 1.35rem; }
    .v2-czy-map-toolbar { flex-direction: column; align-items: stretch; }
    .v2-czy-map-rooms { grid-template-columns: 1fr; }
}

.v2-czynsz-manage__grid {
    display: grid;
    grid-template-columns: minmax(280px, 360px) 1fr;
    gap: 1.25rem;
    align-items: start;
}
.v2-czynsz-manage__side {
    display: flex;
    flex-direction: column;
    gap: 0;
    min-width: 0;
}
.v2-czynsz-manage__side .v2-form-grid {
    gap: 0.75rem;
}
.v2-czynsz-manage__side .v2-field input,
.v2-czynsz-manage__side .v2-field select,
.v2-czynsz-manage__side .v2-field textarea {
    width: 100%;
    box-sizing: border-box;
    padding: 0.45rem 0.6rem;
    border: 1px solid #d0d7e2;
    border-radius: 6px;
    font-size: 0.9rem;
    font-family: inherit;
}
.v2-czynsz-manage__side .v2-field input:focus,
.v2-czynsz-manage__side .v2-field select:focus {
    outline: none;
    border-color: var(--tn-electric, #001ed2);
    box-shadow: 0 0 0 2px rgba(0, 30, 210, 0.15);
}
.v2-czynsz-rate-item__date {
    display: block;
    font-weight: 600;
    color: var(--tn-dark, #00003c);
}
.v2-czynsz-manage__toolbar {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    align-items: center;
    margin-bottom: 1rem;
}
.v2-czynsz-manage__loc-badge {
    font-weight: 700;
    color: var(--tn-dark, #00003c);
    padding: 0.35rem 0.75rem;
    background: #e3f2fd;
    border-radius: 6px;
    border-left: 4px solid var(--tn-electric, #001ed2);
}
.v2-czynsz-manage__rate-hint {
    float: right;
    font-size: 0.85rem;
    font-weight: normal;
    color: var(--tn-muted, #666);
}
.v2-czynsz-rate-list { max-height: 220px; overflow-y: auto; border-top: 1px solid #eee; padding-top: 0.5rem; }
.v2-czynsz-rate-item {
    display: flex;
    justify-content: space-between;
    gap: 0.5rem;
    padding: 0.4rem 0;
    border-bottom: 1px solid #eee;
    font-size: 0.9rem;
}
.v2-czynsz-rate-item.is-active { color: #1b7a3a; font-weight: 600; }
.v2-czynsz-rate-item__value { text-align: right; }
.v2-czynsz-mpk-box {
    padding: 0.65rem;
    border-radius: 6px;
    background: #fff3e0;
    border: 1px solid #ffe0b2;
}
.v2-czynsz-mpk-box--office { background: #f5f5f5; border-color: #eee; }
.v2-czynsz-mpk { font-weight: 700; color: var(--tn-electric, #001ed2); }

.v2-czynsz-report-wrap { margin-top: 1rem; }
.v2-czynsz-report-loc {
    background: var(--tn-dark, #00003c);
    color: #fff;
    padding: 0.85rem 1.25rem;
    font-size: 1.15rem;
    font-weight: 700;
    border-radius: 6px;
    margin: 2rem 0 1rem;
    border-left: 5px solid var(--tn-mint, #00ebc8);
}
.v2-czynsz-report-section:first-child .v2-czynsz-report-loc { margin-top: 0; }
.v2-table--report th { background: #333; color: #fff; }
.v2-czynsz-report-total { background: #e3f2fd; font-weight: 700; }
.v2-czynsz-report-sum-row td { background: #333; color: #fff; font-weight: 700; }
.v2-czynsz-report-section--break { page-break-before: always; }

@media (max-width: 960px) {
    .v2-czynsz-manage__grid { grid-template-columns: 1fr; }
    .v2-czynsz-manage__rate-hint { float: none; display: block; margin-top: 0.35rem; }
}
@media print {
    .v2-top-nav, .v2-app-header, .v2-footer, .no-print { display: none !important; }
    .v2-czynsz-report-section--break { page-break-before: always; }
    .v2-czynsz-report-loc {
        background: #eee !important;
        color: #000 !important;
        -webkit-print-color-adjust: exact;
        print-color-adjust: exact;
    }
}

/* SharePoint — webpart SharePointWebApp.php (pełna szerokość iframe) */
body.v2-moj-tel-embed {
    margin: 0;
    padding: 0;
    background: transparent;
    min-height: 0;
    overflow: hidden;
}
html:has(body.v2-sp-webapp--compact) {
    margin: 0;
    padding: 0;
    overflow: hidden;
}
body.v2-sp-webapp--compact .v2-moj-tel-operator-hint {
    display: none;
}
.v2-sp-webapp-msg {
    margin: 0.35rem 0.5rem;
    font-size: 0.82rem;
    color: #555;
}
.v2-sp-webapp-toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.65rem 1rem;
    margin: 0 -0.75rem 1rem;
    padding: 0.65rem 0.75rem;
    background: var(--v2-brand-blue, #003b7a);
    color: #fff;
    border-radius: 0;
}
.v2-sp-webapp-toolbar__brand {
    display: flex;
    flex-direction: column;
    gap: 0.1rem;
    min-width: 0;
}
.v2-sp-webapp-toolbar__title {
    font-size: 0.95rem;
    font-weight: 700;
    line-height: 1.2;
}
.v2-sp-webapp-toolbar__sub {
    font-size: 0.72rem;
    font-weight: 500;
    opacity: 0.88;
}
.v2-sp-webapp-toolbar__action {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0.45rem 0.9rem;
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--v2-brand-blue, #003b7a);
    background: #fff;
    border-radius: 4px;
    text-decoration: none;
    white-space: nowrap;
    flex-shrink: 0;
}
.v2-sp-webapp-toolbar__action:hover {
    background: #e8f4fc;
    color: var(--v2-brand-blue, #003b7a);
}
.v2-sp-webapp-toolbar__hint {
    font-size: 0.75rem;
    color: rgba(255, 255, 255, 0.85);
    max-width: 14rem;
    text-align: right;
}
.v2-sp-webapp-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.45rem;
    align-items: start;
}
.v2-sp-webapp-col {
    display: flex;
    flex-direction: column;
    min-width: 0;
}
.v2-sp-webapp-col__title {
    margin: 0 0 0.3rem;
    padding-bottom: 0.28rem;
    font-size: 0.68rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: #444;
    border-bottom: 1px solid #d1d5db;
}
.v2-sp-webapp-col-stack {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
}
/* Wspólny gradientowy prostokąt (TÜV NORD) */
.v2-sp-webapp-box {
    padding: 0.5rem 0.55rem;
    border-radius: 6px;
    color: #fff;
    background: linear-gradient(135deg, #00003c 0%, #001ed2 55%, #0a4d8c 100%);
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.14);
}
.v2-sp-webapp-box__empty {
    margin: 0;
    font-size: 0.75rem;
    line-height: 1.35;
    opacity: 0.92;
}
.v2-sp-webapp-box__lead {
    margin: 0;
    font-size: 0.75rem;
    line-height: 1.35;
}
.v2-sp-webapp-box__lead--sm {
    font-size: 0.72rem;
}
.v2-sp-webapp-box__list {
    margin: 0.35rem 0 0;
    padding-left: 1rem;
    font-size: 0.72rem;
    line-height: 1.35;
    opacity: 0.92;
}
.v2-sp-webapp-box__btn {
    display: block;
    width: 100%;
    margin-top: 0.4rem;
    padding: 0.4rem 0.5rem;
    font-size: 0.76rem;
    font-weight: 700;
    line-height: 1.25;
    text-align: center;
    color: var(--tn-blue, #001ed2);
    background: #fff;
    border: 0;
    border-radius: 4px;
    text-decoration: none;
    cursor: pointer;
}
.v2-sp-webapp-box__btn:hover {
    background: #e8f4fc;
}
.v2-sp-webapp-box__note,
.v2-sp-webapp-box__warn {
    margin: 0.35rem 0 0;
    font-size: 0.68rem;
    line-height: 1.3;
    opacity: 0.88;
}
.v2-sp-webapp-box__map-err {
    margin: 0.3rem 0 0;
    font-size: 0.68rem;
    color: #fecaca;
}
/* Telefon — kolumna 1 */
.v2-sp-webapp-phone__model {
    font-weight: 700;
    font-size: 0.95rem;
    line-height: 1.2;
}
.v2-sp-webapp-phone__number {
    margin-top: 0.12rem;
    font-size: 1rem;
    font-weight: 600;
    letter-spacing: 0.03em;
}
.v2-sp-webapp-kv {
    display: grid;
    grid-template-columns: 1fr;
    gap: 0.28rem;
    margin: 0.4rem 0 0;
    font-size: 0.75rem;
}
.v2-sp-webapp-kv dt {
    margin: 0;
    font-size: 0.62rem;
    font-weight: 700;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.65);
}
.v2-sp-webapp-kv dd {
    margin: 0.05rem 0 0;
    font-weight: 600;
}
.v2-sp-webapp-kv__due {
    color: #fecaca;
}
.v2-sp-webapp-badges {
    display: flex;
    flex-wrap: wrap;
    gap: 0.3rem;
    margin-top: 0.4rem;
    padding-top: 0.35rem;
    border-top: 1px solid rgba(255, 255, 255, 0.2);
}
.v2-sp-webapp-badge {
    display: inline-block;
    padding: 0.12rem 0.4rem;
    font-size: 0.65rem;
    font-weight: 700;
    border-radius: 3px;
    background: rgba(255, 255, 255, 0.18);
}
.v2-sp-webapp-badge--warn {
    background: rgba(250, 55, 70, 0.35);
}
/* Karta — kolumna 3, wyrównanie góra-lewo */
.v2-sp-webapp-box--card {
    align-self: start;
}
.v2-sp-webapp-card {
    display: flex;
    align-items: flex-start;
    justify-content: flex-start;
    gap: 0.45rem;
    text-align: left;
}
.v2-sp-webapp-card__photo {
    width: 72px;
    height: 72px;
    flex-shrink: 0;
    border-radius: 4px;
    overflow: hidden;
    border: 2px solid rgba(255, 255, 255, 0.85);
    background: rgba(255, 255, 255, 0.12);
}
.v2-sp-webapp-card__photo img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.v2-sp-webapp-card__initials {
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.35rem;
    font-weight: 700;
    color: #fff;
    background: rgba(255, 255, 255, 0.15);
}
.v2-sp-webapp-card__body {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.12rem;
    line-height: 1.25;
}
.v2-sp-webapp-card__id {
    font-size: 1.05rem;
    font-weight: 800;
    color: #fff;
    word-break: break-all;
}
.v2-sp-webapp-card__id--muted {
    font-size: 0.82rem;
    font-weight: 600;
    opacity: 0.88;
}
.v2-sp-webapp-card__bc {
    font-size: 0.68rem;
    opacity: 0.85;
}
.v2-sp-webapp-card__job {
    font-size: 0.8rem;
    font-weight: 700;
}
.v2-sp-webapp-card__name {
    font-size: 0.72rem;
    opacity: 0.85;
}
/* Paczkomat — drugi gradient w kolumnie 2 */
.v2-sp-webapp-box--locker {
    overflow: hidden;
}
.v2-sp-webapp-locker__head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 0.35rem;
    margin-bottom: 0.3rem;
}
.v2-sp-webapp-locker__controls {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 0.3rem;
    width: 100%;
    max-width: 100%;
}
.v2-sp-webapp-locker__field {
    width: 100%;
    max-width: 100%;
    min-width: 0;
    overflow: hidden;
}
.v2-sp-webapp-box--locker .v2-apaczka-locker,
.v2-sp-webapp-box--locker .v2-sp-webapp-locker__field [class*="apaczka"],
.v2-sp-webapp-box--locker .apaczka-map-combobox {
    width: 100% !important;
    max-width: 100% !important;
    box-sizing: border-box;
}
.v2-sp-webapp-box--locker .apaczka-map-combobox > * {
    max-width: 100%;
    box-sizing: border-box;
}
.v2-sp-webapp-locker__input {
    width: 100%;
    max-width: 100%;
    box-sizing: border-box;
    padding: 0.35rem 0.45rem;
    font-size: 0.78rem;
    border: 0;
    border-radius: 4px;
    background: #fff;
    color: #111;
}
.v2-sp-webapp-locker__clear {
    align-self: flex-start;
    padding: 0.28rem 0.5rem;
    font-size: 0.68rem;
    font-weight: 600;
    color: var(--tn-blue, #001ed2);
    background: rgba(255, 255, 255, 0.92);
    border: 0;
    border-radius: 4px;
    cursor: pointer;
}
.v2-sp-webapp-locker__clear:hover {
    background: #fff;
}
.v2-sp-webapp-locker__status {
    flex-shrink: 0;
    font-size: 0.65rem;
    opacity: 0.9;
}
.v2-sp-webapp-locker__status--ok {
    color: #bbf7d0;
}
.v2-sp-webapp-locker__status--error {
    color: #fecaca;
}
.v2-sp-webapp-locker__status--pending {
    opacity: 0.75;
}
@media (max-width: 720px) {
    .v2-sp-webapp-grid {
        grid-template-columns: 1fr;
    }
}
.v2-moj-tel-wrap {
    width: 100%;
    max-width: none;
    box-sizing: border-box;
    padding: 0.35rem 0.75rem 1.25rem;
}
body.v2-sp-webapp--compact .v2-moj-tel-wrap {
    padding: 0.15rem 0.4rem 0.2rem;
}
.v2-moj-tel-section {
    width: 100%;
    margin-bottom: 1.25rem;
}
.v2-moj-tel-section__title {
    margin: 0 0 0.65rem;
    font-size: 0.8rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: #555;
    border-bottom: 1px solid #e5e7eb;
    padding-bottom: 0.35rem;
}
.v2-moj-tel-empty {
    text-align: center;
    padding: 1.5rem 1rem;
    color: #555;
    background: #f9fafb;
    border: 1px dashed #d1d5db;
    border-radius: 6px;
}
.v2-moj-tel-empty--inline {
    padding: 1rem;
    text-align: left;
}
.v2-moj-tel-phone-card {
    background: var(--tn-blue, #001ed2);
    border-left: 5px solid var(--tn-red, #fa3746);
    color: #fff;
    border-radius: 6px;
    padding: 1rem 1.1rem;
    margin-bottom: 0.65rem;
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.12);
}
.v2-moj-tel-phone-card__model {
    font-weight: 700;
    font-size: 1.1rem;
    line-height: 1.2;
}
.v2-moj-tel-phone-card__number {
    font-size: 1.15rem;
    font-weight: 600;
    letter-spacing: 0.03em;
    margin-top: 0.2rem;
}
.v2-moj-tel-dl {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.5rem 1rem;
    margin: 0.75rem 0 0;
    font-size: 0.85rem;
}
.v2-moj-tel-dl__row--full {
    grid-column: 1 / -1;
}
.v2-moj-tel-dl dt {
    margin: 0;
    font-size: 0.68rem;
    font-weight: 700;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.65);
}
.v2-moj-tel-dl dd {
    margin: 0.1rem 0 0;
    font-weight: 600;
    color: #fff;
}
.v2-moj-tel-exchange--due {
    color: var(--tn-mint, #00ebc8);
}
.v2-moj-tel-badges {
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem;
    margin-top: 0.65rem;
    padding-top: 0.55rem;
    border-top: 1px solid rgba(255, 255, 255, 0.2);
}
.v2-moj-tel-badge {
    font-size: 0.72rem;
    font-weight: 700;
    padding: 0.2rem 0.5rem;
    border-radius: 4px;
}
.v2-moj-tel-badge--warn {
    background: #ffeb00;
    color: #000;
}
.v2-moj-tel-badge--accent {
    background: var(--tn-mint, #00ebc8);
    color: #000;
}
.v2-moj-tel-operator-hint {
    margin-top: 0.65rem;
    padding: 0.55rem 0.65rem;
    font-size: 0.78rem;
    line-height: 1.45;
    background: rgba(0, 0, 0, 0.15);
    border-radius: 4px;
}
.v2-moj-tel-section--card .v2-moj-tel-access {
    background: #fff;
    border: 1px solid #e5e7eb;
    border-radius: 8px;
    padding: 1rem 1.1rem;
    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.06);
}
.v2-moj-tel-access__number-block {
    margin-bottom: 1rem;
}
.v2-moj-tel-access__label {
    display: block;
    font-size: 0.68rem;
    font-weight: 700;
    text-transform: uppercase;
    color: #6b7280;
    margin-bottom: 0.2rem;
}
.v2-moj-tel-access__number {
    display: block;
    font-size: 1.35rem;
    font-weight: 800;
    color: var(--tn-blue, #001ed2);
    letter-spacing: 0.02em;
}
.v2-moj-tel-access__sub,
.v2-moj-tel-access__status {
    display: block;
    font-size: 0.8rem;
    color: #6b7280;
    margin-top: 0.15rem;
}
.v2-moj-tel-access__person {
    display: flex;
    align-items: center;
    gap: 1rem;
    padding-top: 0.85rem;
    border-top: 1px solid #eee;
}
.v2-moj-tel-access__photo {
    flex-shrink: 0;
    width: 96px;
    height: 96px;
    border-radius: 8px;
    overflow: hidden;
    background: #f3f4f6;
    display: flex;
    align-items: center;
    justify-content: center;
}
.v2-moj-tel-access__photo img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.v2-moj-tel-access__initials {
    font-size: 1.75rem;
    font-weight: 700;
    color: var(--tn-blue, #001ed2);
}
.v2-moj-tel-access__job {
    display: block;
    font-size: 1rem;
    font-weight: 700;
    color: var(--tn-dark, #00003c);
}
.v2-moj-tel-access__name {
    display: block;
    font-size: 0.85rem;
    margin-top: 0.2rem;
}
.v2-moj-tel-section--courier .v2-moj-tel-courier {
    background: linear-gradient(135deg, #f0f5ff 0%, #fff 55%);
    border: 1px solid #c7d7fe;
    border-radius: 8px;
    padding: 1rem 1.15rem;
}
.v2-moj-tel-courier__lead {
    margin: 0 0 0.85rem;
    font-size: 0.9rem;
    line-height: 1.45;
    color: #374151;
}
.v2-moj-tel-courier__btn {
    display: inline-block;
    padding: 0.55rem 1.1rem;
    background: var(--tn-blue, #001ed2);
    color: #fff !important;
    font-weight: 700;
    font-size: 0.9rem;
    text-decoration: none;
    border-radius: 6px;
}
.v2-moj-tel-courier__btn:hover {
    background: #00159c;
}
.v2-moj-tel-courier__note {
    margin: 0.65rem 0 0;
}
@media (max-width: 480px) {
    .v2-moj-tel-dl {
        grid-template-columns: 1fr;
    }
}

/* Start — podsumowanie kosztów MPK (Operator, Controling) */
.v2-dash-costs .v2-panel {
    margin-bottom: 0;
}
.v2-dash-costs-hero {
    margin-bottom: 1rem;
}
.v2-dash-costs__empty {
    margin: 0;
}
.v2-dash-costs-hero__row {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: 1rem 1.5rem;
    justify-content: space-between;
}
.v2-dash-costs-hero__period {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: 0.5rem 0.75rem;
}
.v2-dash-costs-hero__field {
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
    font-size: 0.8rem;
    color: rgba(255, 255, 255, 0.9);
}
.v2-dash-costs-hero__field .v2-input,
.v2-dash-costs-hero__input {
    min-width: 7rem;
    background: rgba(255, 255, 255, 0.95);
    color: var(--tn-navy, #00003c);
    border-color: rgba(255, 255, 255, 0.5);
}
.v2-dash-costs-hero .v2-segmented--hero {
    background: rgba(0, 0, 60, 0.25);
    border: 1px solid rgba(255, 255, 255, 0.45);
    box-shadow: none;
}
.v2-dash-costs-hero .v2-segmented--hero .v2-segmented-btn {
    color: #fff;
    padding: 8px 14px;
    font-size: 0.8125rem;
}
.v2-dash-costs-hero .v2-segmented--hero .v2-segmented-btn:hover {
    background: rgba(255, 255, 255, 0.18);
    color: #fff;
}
.v2-dash-costs-hero .v2-segmented--hero .v2-segmented-btn.is-active {
    background: #fff;
    color: var(--tn-electric, #001ed2);
    font-weight: 700;
}
.v2-dash-costs-hero .v2-btn-secondary.is-active {
    background: #fff;
    color: var(--tn-electric, #001ed2);
    border-color: #fff;
    font-weight: 700;
}
.v2-dash-costs-hero__label {
    margin: 0.65rem 0 0;
    font-size: 0.9rem;
    color: rgba(255, 255, 255, 0.95);
}
.v2-dash-costs-hero .v2-muted {
    color: rgba(255, 255, 255, 0.78);
}
.v2-dash-costs-table-wrap {
    overflow-x: auto;
    margin: 0 -18px -16px;
    border-top: 1px solid var(--tn-border);
}
.v2-dash-costs-col-mpk {
    text-align: left;
    min-width: 12rem;
}
.v2-dash-costs-row-mpk td {
    background: #e8f4f8;
}
.v2-dash-costs-row-person td {
    background: #f8fafc;
}
.v2-dash-costs-row-grand td {
    background: #e8f5e9 !important;
    border-top: 2px solid #28a745;
}
.v2-dash-costs-toggle {
    border: none;
    background: transparent;
    cursor: pointer;
    padding: 0 0.35rem 0 0;
    font-size: 0.75rem;
    color: #001ed2;
    line-height: 1;
    vertical-align: middle;
}
.v2-dash-costs-group.is-collapsed .v2-dash-costs-row-person {
    display: none;
}
.v2-dash-costs-person-indent {
    color: #94a3b8;
    margin-right: 0.2rem;
}

/* ===== Karty wejściowe (pracownicy) ===== */
.v2-prac-karty-bar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    flex-wrap: wrap;
    padding: 0 0 0.85rem;
    margin-bottom: 0.85rem;
    border-bottom: 1px solid #e2e8f0;
}
.v2-prac-karty-bar__info { font-size: 0.85rem; color: #64748b; }
.v2-prac-karty-section { margin-top: 1.25rem; }
.v2-prac-karty-section--sub { border-top: 3px solid #ff7100; padding-top: 0.5rem; }
.v2-prac-karty-section__head { display: flex; align-items: center; gap: 0.5rem; }
.v2-prac-karty-count { color: #94a3b8; font-weight: 600; font-size: 0.9rem; }
.v2-prac-karty-col-check { width: 36px; text-align: center; }
.v2-prac-karty-col-print { width: 68px; text-align: center; white-space: nowrap; }
.v2-prac-karty-print, .v2-prac-karty-cardel, .v2-prac-karty-printnow { padding: 3px 4px; font-size: 0.95rem; }
.v2-prac-karty-col-edit { width: 44px; text-align: right; }
.v2-prac-karty-print {
    display: inline-block;
    font-size: 1.1rem;
    text-decoration: none;
    padding: 4px 7px;
    border: none;
    background: transparent;
    border-radius: 4px;
    color: var(--tn-blue, #001ed2);
    cursor: pointer;
    transition: background 0.15s;
}
.v2-prac-karty-print:hover { background: #eef1f6; }
.v2-prac-karty-print:disabled { opacity: 0.5; cursor: default; }
.v2-prac-karty-print.is-disabled { color: #cbd5e1; cursor: not-allowed; }
.v2-prac-karty-printnow {
    display: inline-block;
    font-size: 1.1rem;
    text-decoration: none;
    padding: 4px 7px;
    border-radius: 4px;
    color: var(--tn-blue, #001ed2);
    transition: background 0.15s;
}
.v2-prac-karty-printnow:hover { background: #eef1f6; }
.v2-prac-karty-printnow.is-disabled { color: #cbd5e1; cursor: not-allowed; pointer-events: none; }
.v2-prac-karty-hint { font-size: 0.85rem; color: #64748b; margin: 0 0 1rem; }
.v2-prac-karty-cog {
    text-decoration: none;
    font-size: 1.05rem;
    color: #64748b;
    padding: 4px 6px;
    border-radius: 4px;
}
.v2-prac-karty-cog:hover { background: #eef1f6; color: var(--tn-blue, #001ed2); }
.v2-prac-karty-dept__name.is-sub { color: #ff7100; }
.v2-prac-karty-col-person { min-width: 150px; }
.v2-prac-karty-col-cardact { width: 130px; white-space: nowrap; text-align: center; }
.v2-prac-karty-table td.v2-prac-karty-col-foto,
.v2-prac-karty-table td.v2-prac-karty-col-person,
.v2-prac-karty-table td.v2-prac-karty-col-dept { vertical-align: top; padding-top: 10px; }
/* wiersze kart jednej osoby — wyraźny separator między pracownikami */
.v2-prac-karty-crow--first > td { border-top: 2px solid #cbd5e1; }
.v2-prac-karty-crow.is-active > td:not(.v2-prac-karty-col-foto):not(.v2-prac-karty-col-person):not(.v2-prac-karty-col-dept) { background: #f1fbf4; }
.v2-prac-karty-crow.is-blocked > td:not(.v2-prac-karty-col-foto):not(.v2-prac-karty-col-person):not(.v2-prac-karty-col-dept) { background: #fbf5f5; }
.v2-prac-karty-person-actions { margin-top: 8px; display: flex; gap: 8px; align-items: center; }
/* okrągły „+" przy numerze karty (dodaj nową kartę) */
.v2-prac-karty-idcell { display: flex; align-items: center; gap: 6px; }
.v2-prac-karty-idcell input { flex: 1 1 auto; min-width: 0; }
.v2-prac-karty-addcard {
    flex: 0 0 auto;
    width: 22px;
    height: 22px;
    line-height: 1;
    border: none;
    background: var(--tn-blue, #001ed2);
    color: #fff;
    font-size: 1rem;
    font-weight: 700;
    border-radius: 50%;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}
.v2-prac-karty-addcard:hover { background: #00159c; }
.v2-prac-karty-addcard:disabled { opacity: 0.5; cursor: default; }
.v2-prac-karty-th-hint { font-weight: 600; font-size: 0.7rem; color: #16a34a; text-transform: none; }
.v2-prac-karty-th-block { color: #b45309 !important; }
.v2-prac-karty-typebadge {
    display: inline-block;
    margin-top: 3px;
    font-size: 0.62rem;
    font-weight: 700;
    letter-spacing: 0.03em;
    color: #166534;
    background: #dcfce7;
    border-radius: 3px;
    padding: 1px 5px;
}
.v2-prac-karty-warn { color: #dc2626; margin-right: 3px; }
.v2-prac-karty-col-parking { width: 118px; }
.v2-prac-karty-col-parking .v2-prac-karty-parkchk-wrap { display: inline-flex; vertical-align: middle; margin-right: 3px; }
.v2-prac-karty-col-parking .v2-prac-karty-parkdate { width: calc(100% - 20px); }
.v2-prac-karty-col-dept { min-width: 130px; }
.v2-prac-karty-table input[type="date"] { width: 100%; min-width: 88px; }
.v2-prac-karty-activate {
    border: 1px solid #15803d;
    background: #f1fbf4;
    color: #15803d;
    font-size: 0.76rem;
    font-weight: 600;
    padding: 4px 8px;
    border-radius: 4px;
    cursor: pointer;
    margin-right: 4px;
}
.v2-prac-karty-activate:hover { background: #dcfce7; }
.v2-prac-karty-activate:disabled { opacity: 0.5; cursor: default; }
.v2-prac-karty-cardel {
    border: none;
    background: transparent;
    color: #b42318;
    font-size: 1rem;
    cursor: pointer;
    padding: 3px 5px;
    border-radius: 4px;
}
.v2-prac-karty-cardel:hover { background: #fde8e8; }
.v2-prac-karty-cardel:disabled { opacity: 0.5; cursor: default; }
.v2-prac-karty-exchange {
    border: 1px solid #ff7100;
    background: #fff7ef;
    color: #b45309;
    font-size: 0.78rem;
    font-weight: 600;
    padding: 4px 9px;
    border-radius: 4px;
    cursor: pointer;
}
.v2-prac-karty-exchange:hover { background: #ffedd5; }
/* modal wymiany karty */
.v2-prac-karty-modal {
    position: fixed;
    inset: 0;
    z-index: 1000;
    display: flex;
    align-items: center;
    justify-content: center;
}
.v2-prac-karty-modal[hidden] { display: none; }
.v2-prac-karty-modal__backdrop { position: absolute; inset: 0; background: rgba(0, 0, 30, 0.45); }
.v2-prac-karty-modal__box {
    position: relative;
    background: #fff;
    border-radius: 10px;
    padding: 1.25rem 1.5rem 1.5rem;
    width: min(680px, 92vw);
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.35);
}
.v2-prac-karty-modal__title { margin: 0 0 1rem; font-size: 1.1rem; color: var(--tn-dark, #00003c); }
.v2-prac-karty-modal__cols { display: grid; grid-template-columns: 1fr 1fr; gap: 1.25rem; }
@media (max-width: 560px) { .v2-prac-karty-modal__cols { grid-template-columns: 1fr; } }
.v2-prac-karty-modal__col {
    border: 1px solid #e2e8f0;
    border-radius: 8px;
    padding: 0.9rem 1rem;
}
.v2-prac-karty-modal__col h4 { margin: 0 0 0.75rem; font-size: 0.95rem; }
.v2-prac-karty-modal__col--old { background: #fbf5f5; border-color: #f3d6d6; }
.v2-prac-karty-modal__col--old h4 { color: #b42318; }
.v2-prac-karty-modal__col--new { background: #f1fbf4; border-color: #cdeed6; }
.v2-prac-karty-modal__col--new h4 { color: #15803d; }
.v2-prac-karty-modal__col .v2-field { margin-bottom: 0.6rem; }
.v2-prac-karty-modal__col .v2-field input,
.v2-prac-karty-modal__col .v2-field select { width: 100%; }
.v2-prac-karty-modal__actions { display: flex; justify-content: flex-end; gap: 0.6rem; margin-top: 1.1rem; }
.v2-prac-karty-subtitle { margin-top: 2rem; }
.v2-prac-karty-table td { vertical-align: middle; height: 48px; }
/* kompaktowo, żeby zmieścić wszystkie kolumny na ekranie */
.v2-prac-karty-table { font-size: 0.8rem; }
.v2-prac-karty-table th,
.v2-prac-karty-table td { padding-left: 6px; padding-right: 6px; }
.v2-prac-karty-table input,
.v2-prac-karty-table select { font-size: 0.78rem; padding: 4px 5px; }
.v2-prac-karty-col-foto { width: 44px; text-align: center; }
.v2-prac-karty-col-num { width: 168px; }
.v2-prac-karty-col-date { width: 98px; }
.v2-prac-karty-col-status { width: 120px; }
.v2-prac-karty-col-wz { width: 96px; }
.v2-prac-karty-name { font-weight: 700; color: var(--tn-dark, #00003c); }
.v2-prac-karty-avatar {
    display: inline-flex;
    width: 38px;
    height: 38px;
    border-radius: 50%;
    overflow: hidden;
    background: #e8eef5;
    align-items: center;
    justify-content: center;
    border: 2px solid #fff;
    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.12);
}
.v2-prac-karty-avatar img { width: 100%; height: 100%; object-fit: cover; }
.v2-prac-karty-avatar__ini { font-weight: 700; color: #94a3b8; font-size: 0.78rem; }
.v2-prac-karty-edit {
    width: 100%;
    padding: 6px 8px;
    border: 1px solid transparent;
    background: transparent;
    border-radius: 4px;
    font-size: 0.9rem;
    font-weight: 600;
    color: var(--tn-dark, #00003c);
    transition: border-color 0.15s, background 0.15s, box-shadow 0.15s;
}
.v2-prac-karty-edit:hover { background: #fff; border-color: #cbd5e1; }
.v2-prac-karty-edit:focus {
    background: #fff;
    border-color: var(--tn-blue, #001ed2);
    outline: none;
    box-shadow: 0 0 0 3px rgba(0, 30, 210, 0.15);
}
.v2-prac-karty-edit--bc { color: var(--tn-blue, #001ed2); }
.v2-prac-karty-edit--block { color: #b42318; }
.v2-prac-karty-edit.is-saving { opacity: 0.5; }
.v2-prac-karty-status { cursor: pointer; }
.v2-prac-karty-drop {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    height: 40px;
    border: 2px dashed #cbd5e1;
    border-radius: 6px;
    background: #fcfdff;
    cursor: pointer;
    position: relative;
    transition: border-color 0.15s, background 0.15s;
}
.v2-prac-karty-drop:hover { border-color: var(--tn-blue, #001ed2); background: #f0f4ff; }
.v2-prac-karty-drop.is-dragover { border-color: #16a34a; background: #eafaef; }
.v2-prac-karty-drop.has-file { border-style: solid; border-color: #bbf7d0; background: #f4fff8; }
.v2-prac-karty-drop__hint { font-size: 0.72rem; color: #94a3b8; pointer-events: none; }

/* Telefony — popup wysyłki informacji o telefonie + WZ e-mailem */
.v2-tel-mail-dialog {
    border: none;
    border-radius: 10px;
    padding: 18px 20px;
    width: 420px;
    max-width: 92vw;
    box-shadow: 0 12px 40px rgba(0, 0, 0, 0.3);
}
.v2-tel-mail-dialog::backdrop { background: rgba(0, 0, 60, 0.35); }
.v2-tel-mail-dialog h3 { margin: 0 0 10px; font-size: 1rem; }
.v2-tel-mail-dialog__phone { margin: 0 0 10px; color: #475569; font-size: 13px; }
.v2-tel-mail-dialog label {
    display: flex;
    flex-direction: column;
    gap: 4px;
    font-size: 12px;
    color: #475569;
    margin-bottom: 10px;
}
.v2-tel-mail-dialog select,
.v2-tel-mail-dialog input {
    padding: 6px 8px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    font-size: 13px;
    max-width: 100%;
}
.v2-tel-mail-dialog__hint { margin: 0 0 4px; color: #94a3b8; font-size: 12px; }
.v2-tel-mail-dialog__actions { display: flex; justify-content: flex-end; gap: 8px; margin-top: 12px; }
/* wgrany skan: link „Pobierz WZ” wypełnia całe pole (klik gdziekolwiek = pobranie) */
.v2-prac-karty-file {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 100%;
    font-size: 0.8rem;
    font-weight: 600;
    color: #166534;
    text-decoration: none;
}
.v2-prac-karty-file:hover { text-decoration: underline; }
.v2-prac-karty-dept__name { display: block; font-size: 0.78rem; font-weight: 600; color: #334155; }
.v2-prac-karty-dept__job { display: block; font-size: 0.72rem; color: #94a3b8; }
.v2-prac-karty-toast {
    position: fixed;
    bottom: 28px;
    right: 28px;
    background: var(--tn-dark, #00003c);
    color: #fff;
    padding: 11px 22px;
    border-radius: 40px;
    font-size: 0.88rem;
    font-weight: 600;
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3);
    z-index: 9999;
}
.v2-prac-karty-toast--ok { background: #16a34a; }
.v2-prac-karty-toast--err { background: #b42318; }

/* Magazyn telefonów — wiersz szybkiego dodawania nad tabelą */
.v2-tel-stock-add-row td { background: #f0f4ff; vertical-align: top; }
.v2-tel-stock-add-row .v2-input { width: 100%; }

/* Faktury — dodatkowe oprogramowanie */
.v2-tel-soft-head { display: flex; gap: 1rem; flex-wrap: wrap; margin-bottom: 0.75rem; }
.v2-tel-soft-head .v2-field { min-width: 200px; }
.v2-tel-soft-lines .v2-input { width: 100%; }
.v2-tel-soft-actions { display: flex; gap: 0.6rem; margin-top: 0.75rem; align-items: center; }
.v2-tel-soft-summaries { display: grid; grid-template-columns: 1fr 1.4fr; gap: 1rem; align-items: start; margin-bottom: 1rem; }
@media (max-width: 800px) { .v2-tel-soft-summaries { grid-template-columns: 1fr; } }
.v2-tel-soft-total td { border-top: 2px solid #cbd5e1; background: #f1f5f9; }
.v2-tel-soft-pivot th, .v2-tel-soft-pivot td { white-space: nowrap; }
.v2-tel-soft-inv-link {
    border: none;
    background: none;
    color: var(--tn-blue, #001ed2);
    font-weight: 700;
    cursor: pointer;
    padding: 0;
    font-size: inherit;
    text-decoration: underline;
}
.v2-tel-soft-inv-link:hover { color: #00159c; }
.v2-tel-soft-inv-cell { display: flex; align-items: center; gap: 6px; white-space: nowrap; }
.v2-tel-soft-del-form { display: inline; margin: 0; }
.v2-tel-soft-del { border: none; background: none; color: #b42318; cursor: pointer; font-size: 0.95rem; padding: 2px 4px; border-radius: 4px; }
.v2-tel-soft-del:hover { background: #fde8e8; }
.v2-tel-soft-modal { position: fixed; inset: 0; z-index: 1000; display: flex; align-items: center; justify-content: center; }
.v2-tel-soft-modal[hidden] { display: none; }
.v2-tel-soft-modal__backdrop { position: absolute; inset: 0; background: rgba(0, 0, 30, 0.45); }
.v2-tel-soft-modal__box {
    position: relative;
    background: #fff;
    border-radius: 10px;
    width: min(760px, 94vw);
    max-height: 85vh;
    overflow: auto;
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.35);
}
.v2-tel-soft-modal__head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.9rem 1.1rem;
    border-bottom: 1px solid #e2e8f0;
    position: sticky;
    top: 0;
    background: #fff;
}
.v2-tel-soft-modal__title { margin: 0; font-size: 1.05rem; color: var(--tn-dark, #00003c); }
.v2-tel-soft-modal__x { border: none; background: none; font-size: 1.4rem; line-height: 1; cursor: pointer; color: #64748b; }
.v2-tel-soft-modal__box .v2-table-wrap { padding: 0 1.1rem 1.1rem; }

/* Procedura mandatowa — infografika w dashboardzie kierowcy */
.v2-dash-driver-fines__img {
    max-width: 100%;
    height: auto;
    display: block;
    margin-top: 0.75rem;
    border: 1px solid #e2e8f0;
    border-radius: 8px;
}

/* ============================================================
   Admin → Usługodawcy (admin/uslugodawcy.php + views/admin-uslugodawcy.php)
   Samowystarczalny styl scopowany pod .v2-suppliers — nie zależy od
   niezdefiniowanych klas bazowych (.v2-input/.v2-label/.v2-form-stack).
   ============================================================ */
.v2-suppliers { padding: 18px 20px; }
.v2-suppliers .v2-sup-tabs { margin-bottom: 18px; }

/* Pasek nad listą */
.v2-suppliers .v2-sup-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
    margin-bottom: 16px;
}
.v2-suppliers .v2-sup-toolbar__title { margin: 0; font-size: 13px; color: #6b7280; font-weight: 600; }

/* Tabela firm */
.v2-suppliers .v2-sup-table { width: 100%; border-collapse: collapse; }
.v2-suppliers .v2-sup-table th {
    text-align: left;
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: #6b7280;
    font-weight: 700;
    padding: 8px 12px;
    border-bottom: 2px solid var(--tn-border);
}
.v2-suppliers .v2-sup-table td {
    padding: 11px 12px;
    border-bottom: 1px solid var(--tn-border);
    vertical-align: middle;
}
.v2-suppliers .v2-sup-table tbody tr:last-child td { border-bottom: none; }
.v2-suppliers .v2-sup-table tbody tr:hover td { background: #f8fafc; }
.v2-suppliers .v2-sup-fullname { color: var(--tn-dark); font-weight: 600; }
.v2-suppliers .v2-sup-contact { font-size: 13px; color: #4b5563; line-height: 1.55; }
.v2-suppliers .v2-sup-contact a { color: var(--tn-blue); text-decoration: none; }
.v2-suppliers .v2-sup-contact a:hover { text-decoration: underline; }
.v2-suppliers .v2-sup-cell-actions { text-align: right; white-space: nowrap; }
.v2-suppliers .v2-sup-chip {
    display: inline-block;
    padding: 3px 11px;
    border-radius: 999px;
    background: #eef2ff;
    color: #3730a3;
    font-weight: 700;
    font-size: 13px;
}

/* Pusty stan */
.v2-suppliers .v2-sup-empty {
    padding: 40px 24px;
    text-align: center;
    color: #6b7280;
    background: #f8fafc;
    border: 1px dashed var(--tn-border);
    border-radius: 10px;
}

/* Sekcje-karty (edycja + teksty wspólne) */
.v2-suppliers .v2-sup-section {
    border: 1px solid var(--tn-border);
    border-radius: 10px;
    padding: 16px 18px 18px;
    margin-bottom: 16px;
    background: #fff;
}
.v2-suppliers .v2-sup-section__head {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 14px;
    padding-bottom: 10px;
    border-bottom: 1px solid #eef1f6;
}
.v2-suppliers .v2-sup-section__title {
    margin: 0;
    font-size: 12px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--tn-blue);
}
.v2-suppliers .v2-sup-section__hint { margin: -6px 0 14px; font-size: 12px; color: #6b7280; }
.v2-suppliers .v2-sup-section__hint code {
    background: #f1f5f9;
    padding: 1px 5px;
    border-radius: 4px;
    font-size: 11px;
    color: #334155;
}

/* Siatka pól */
.v2-suppliers .v2-sup-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
    gap: 14px 16px;
}
.v2-suppliers .v2-sup-stack { display: flex; flex-direction: column; gap: 14px; }
.v2-suppliers .v2-sup-field { display: flex; flex-direction: column; gap: 5px; margin: 0; }
.v2-suppliers .v2-sup-field--wide { grid-column: 1 / -1; }
.v2-suppliers .v2-sup-field__label { font-size: 12px; font-weight: 700; color: #374151; }
.v2-suppliers .v2-sup-field__label .req { color: #b91c1c; }

/* Pola formularza */
.v2-suppliers .v2-sup-input,
.v2-suppliers .v2-sup-textarea {
    width: 100%;
    padding: 8px 11px;
    border: 1px solid var(--tn-border);
    border-radius: 8px;
    font: inherit;
    color: var(--tn-dark);
    background: #fff;
    transition: border-color 0.12s ease, box-shadow 0.12s ease;
}
.v2-suppliers .v2-sup-input:focus,
.v2-suppliers .v2-sup-textarea:focus {
    outline: none;
    border-color: var(--tn-blue);
    box-shadow: 0 0 0 3px rgba(0, 30, 210, 0.12);
}
.v2-suppliers .v2-sup-textarea { resize: vertical; min-height: 84px; line-height: 1.5; }
.v2-suppliers input[type="file"].v2-sup-input {
    padding: 7px 9px;
    background: #f8fafc;
    cursor: pointer;
    font-size: 13px;
}

/* Lista plików */
.v2-suppliers .v2-sup-files {
    list-style: none;
    margin: 0 0 14px;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.v2-suppliers .v2-sup-file {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 9px 12px;
    border: 1px solid var(--tn-border);
    border-radius: 8px;
    background: #f8fafc;
}
.v2-suppliers .v2-sup-file__name {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-size: 13px;
    font-weight: 600;
    color: var(--tn-dark);
    text-decoration: none;
    word-break: break-word;
}
.v2-suppliers a.v2-sup-file__name:hover { color: var(--tn-blue); text-decoration: underline; }
.v2-suppliers .v2-sup-file__missing { color: #9ca3af; font-style: italic; font-weight: 500; }

/* Wgrywanie pliku (inline) */
.v2-suppliers .v2-sup-upload {
    display: flex;
    gap: 10px;
    align-items: center;
    flex-wrap: wrap;
}
.v2-suppliers .v2-sup-upload .v2-sup-input { max-width: 360px; }

/* Pasek akcji */
.v2-suppliers .v2-sup-actions {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
    margin-top: 4px;
    padding-top: 4px;
}

/* Mały przycisk usuwania */
.v2-suppliers .v2-sup-del {
    border: 1px solid #fecaca;
    background: #fff;
    color: #b91c1c;
    border-radius: 6px;
    padding: 5px 12px;
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
    white-space: nowrap;
}
.v2-suppliers .v2-sup-del:hover { background: #fef2f2; }
.v2-suppliers .v2-inline-form { display: inline; margin: 0; }

@media (max-width: 640px) {
    .v2-suppliers { padding: 14px; }
    .v2-suppliers .v2-sup-grid { grid-template-columns: 1fr; }
    .v2-suppliers .v2-sup-cell-actions { text-align: left; }
}

/* --- Akcenty marki (kolorowe krawędzie sekcji) --- */
.v2-panel.v2-suppliers { border-top: 4px solid var(--tn-blue); }
.v2-suppliers .v2-sup-section { --sup-accent: var(--tn-blue); border-top: 3px solid var(--sup-accent); }
.v2-suppliers .v2-sup-section--blue { --sup-accent: var(--tn-blue); }
.v2-suppliers .v2-sup-section--turquoise { --sup-accent: var(--tn-turquoise); }
.v2-suppliers .v2-sup-section--green { --sup-accent: var(--tn-light-green); }
.v2-suppliers .v2-sup-section--orange { --sup-accent: var(--tn-orange); }
.v2-suppliers .v2-sup-section--purple { --sup-accent: var(--tn-purple); }
.v2-suppliers .v2-sup-section--red { --sup-accent: var(--tn-red); }
.v2-suppliers .v2-sup-section__title::before {
    content: "";
    width: 9px;
    height: 9px;
    flex: 0 0 auto;
    background: var(--sup-accent);
    display: inline-block;
    margin-right: 8px;
    vertical-align: middle;
}
.v2-suppliers .v2-sup-chip { background: var(--tn-blue); color: #fff; padding: 3px 12px; }

/* --- Strefa „przeciągnij i upuść" (upload plików) --- */
.v2-suppliers .v2-sup-upload-form { display: flex; flex-direction: column; gap: 12px; }
.v2-suppliers .v2-dropzone {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 6px;
    text-align: center;
    padding: 26px 20px;
    border: 2px dashed #c2ccd9;
    background: #f8fafc;
    color: #4b5563;
    cursor: pointer;
    transition: border-color 0.15s ease, background 0.15s ease, color 0.15s ease;
}
.v2-suppliers .v2-dropzone:hover,
.v2-suppliers .v2-dropzone:focus-within {
    border-color: var(--tn-blue);
    background: #f0f4ff;
    color: var(--tn-dark);
}
.v2-suppliers .v2-dropzone.is-dragover {
    border-color: var(--tn-blue);
    border-style: solid;
    background: rgba(0, 30, 210, 0.06);
    color: var(--tn-blue);
    box-shadow: inset 0 0 0 3px rgba(0, 235, 200, 0.35);
}
.v2-suppliers .v2-dropzone.has-file { border-color: var(--tn-light-green); background: #f4fff0; }
.v2-suppliers .v2-dropzone.is-uploading { opacity: 0.6; pointer-events: none; }
.v2-suppliers .v2-dropzone__input {
    position: absolute;
    width: 1px;
    height: 1px;
    opacity: 0;
    overflow: hidden;
}
.v2-suppliers .v2-dropzone__icon { color: var(--tn-blue); }
.v2-suppliers .v2-dropzone__text { font-size: 14px; font-weight: 600; }
.v2-suppliers .v2-dropzone__text strong { color: var(--tn-blue); }
.v2-suppliers .v2-dropzone__hint { font-size: 11px; text-transform: uppercase; letter-spacing: 0.05em; color: #9ca3af; }
.v2-suppliers .v2-dropzone__file { font-size: 13px; font-weight: 700; color: #166534; margin-top: 4px; word-break: break-word; }
.v2-suppliers .v2-dropzone__actions { display: flex; justify-content: flex-end; }
.v2-suppliers .v2-dropzone-meta { display: flex; align-items: flex-end; gap: 12px; flex-wrap: wrap; }
.v2-suppliers .v2-dropzone-labelfield { flex: 1 1 260px; min-width: 200px; }
.v2-suppliers .v2-dropzone-meta .v2-btn { flex: 0 0 auto; }

/* Linki do plików pod nazwą firmy na liście usługodawców */
.v2-suppliers .v2-sup-rowfiles { display: flex; flex-wrap: wrap; gap: 6px 10px; margin-top: 8px; }
.v2-suppliers .v2-sup-rowfile {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    max-width: 240px;
    padding: 3px 8px;
    border: 1px solid var(--tn-border);
    background: #f8fafc;
    font-size: 12px;
    font-weight: 600;
    color: var(--tn-blue);
    text-decoration: none;
}
.v2-suppliers .v2-sup-rowfile:hover { background: #eef2ff; }
.v2-suppliers .v2-sup-rowfile span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.v2-suppliers .v2-sup-rowfile svg { flex: 0 0 auto; }
.v2-suppliers .v2-sup-rowfile.v2-sup-file__missing { color: #9ca3af; }

/* Parking — baner „do uzupełnienia": duże ikony miejsc otwierające istniejącą edycję rezerwacji */
.v2-park-complete { margin-bottom: 16px; }
.v2-park-complete__head { display: flex; flex-direction: column; gap: 2px; margin-bottom: 12px; }
.v2-park-complete__tiles { display: flex; flex-wrap: wrap; gap: 12px; }
.v2-park-complete__tile {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    min-width: 104px;
    min-height: 96px;
    padding: 12px 16px;
    border: 2px solid var(--tn-blue);
    background: var(--tn-blue);
    color: var(--tn-white);
    cursor: pointer;
    font: inherit;
    transition: filter 0.12s ease, transform 0.06s ease;
}
.v2-park-complete__tile:hover { filter: brightness(1.08); }
.v2-park-complete__tile:active { transform: translateY(1px); }
.v2-park-complete__spotnr { font-size: 1.7rem; font-weight: 800; line-height: 1; }
.v2-park-complete__spotdate { margin-top: 6px; font-size: 0.8rem; color: rgba(255, 255, 255, 0.85); }

/* ============================================================
   Ekrany HD+ (html.v2-hd-screen — pomiar fizycznej rozdzielczości w shell.php):
   gęstszy układ WSZYSTKICH zakładek strony pojazdu — mniejsze KPI, karty,
   kafle TCO i tabele. Elementy były niepotrzebnie duże.
   ============================================================ */
.v2-hd-screen .v2-vehicle-tab-content .v2-card { padding: 10px 12px; }
.v2-hd-screen .v2-vehicle-tab-content .v2-card h3 { margin: 0 0 6px; font-size: 13px; }
.v2-hd-screen .v2-vehicle-tab-content .v2-kpi { font-size: 22px; }
.v2-hd-screen .v2-vehicle-tab-content .v2-kpi-sm { font-size: 17px; }
.v2-hd-screen .v2-vehicle-tab-content .v2-section { margin-top: 14px; }
.v2-hd-screen .v2-vehicle-tab-content .v2-grid { gap: 10px; }

.v2-hd-screen .v2-vehicle-tab-content .v2-table { font-size: 13px; }
.v2-hd-screen .v2-vehicle-tab-content .v2-table th,
.v2-hd-screen .v2-vehicle-tab-content .v2-table td { padding: 7px 10px; }

.v2-hd-screen .v2-vehicle-tab-content .v2-tco-kpi-row { gap: 10px; margin-bottom: 12px; }
.v2-hd-screen .v2-vehicle-tab-content .v2-tco-kpi { min-width: 150px; padding: 10px 12px; }
.v2-hd-screen .v2-vehicle-tab-content .v2-tco-kpi--muted { min-width: 140px; }
.v2-hd-screen .v2-vehicle-tab-content .v2-tco-kpi-value { font-size: 1.1rem; }
.v2-hd-screen .v2-vehicle-tab-content .v2-tco-kpi-sub { font-size: 0.74rem; }


/* ————— Katalog osób: kropki obecności "jak w Teams" (ISOKUS, tylko Operator) ————— */
.v2-prac-emp-card__photo { position: relative; }
.v2-prac-isokus-dot {
    position: absolute;
    left: 3px;
    top: 3px;
    width: 15px;
    height: 15px;
    border-radius: 50%;
    border: 2px solid #fff;
    box-shadow: 0 0 3px rgba(0, 0, 0, 0.35);
    z-index: 2;
    display: flex;
    align-items: center;
    justify-content: center;
    pointer-events: auto;
}
.v2-prac-isokus-dot--free { background: #16a34a; }   /* zielony: brak wpisów na dziś */
.v2-prac-isokus-dot--ho { background: #f59e0b; }     /* pomarańczowy: Home Office */
.v2-prac-isokus-dot--other { background: #9ca3af; }  /* szary: inna nieobecność */
.v2-prac-isokus-dot--away { background: #dc2626; }   /* kółko z krzyżykiem: urlop wyp. / L4 */
.v2-prac-isokus-dot--away::before {
    content: "\00d7";
    color: #fff;
    font: 700 11px/1 sans-serif;
    transform: translateY(-0.5px);
}
/* Wariant w linii tekstu (plan parkingu, legendy) — bez pozycjonowania na awatarze. */
.v2-prac-isokus-dot--inline {
    position: static;
    display: inline-flex;
    width: 12px;
    height: 12px;
    margin-right: 4px;
    border-width: 1px;
    vertical-align: middle;
    flex: 0 0 auto;
}
.v2-prac-isokus-dot--inline.v2-prac-isokus-dot--away::before { font-size: 9px; }

/* ══════════════════════════════════════════════════════════════════════════
   Wordmark „KAMIŃSKI" — wersja demonstracyjna (w miejscu logo TÜV NORD).
   Krój firmowy TNG Pro Black serwujemy z assets/fonts — lokalnie, bez CDN,
   więc nic nie wycieka do zewnętrznych serwerów i nie ma czego blokować.
   ══════════════════════════════════════════════════════════════════════════ */
@font-face {
    font-family: 'TNGProDisplay';
    src: url('../fonts/TNGProBlack.ttf') format('truetype');
    font-weight: 900;
    font-style: normal;
    font-display: swap;
}

.v2-sidebar-logo { line-height: 1; }

.v2-brand {
    display: inline-flex;
    align-items: center;
    gap: .5ch;
    font-family: 'TNGProDisplay', 'Segoe UI', Tahoma, Arial, sans-serif;
    font-weight: 900;
    font-size: 21px;
    line-height: 1;
    letter-spacing: .07em;
    text-transform: uppercase;
    text-decoration: none;
    white-space: nowrap;
    color: var(--tn-blue);           /* fallback, gdy brak background-clip: text */
}

/* Kwadrat akcentu — kanciasty, zgodnie z zasadą marki „zero zaokrągleń". */
.v2-brand::before {
    content: "";
    width: .42em;
    height: .42em;
    flex: 0 0 auto;
    background: var(--tn-turquoise);
    transform: translateY(-.06em);
    transition: background-color .18s ease;
}

@supports ((-webkit-background-clip: text) or (background-clip: text)) {
    .v2-brand {
        background-image: linear-gradient(100deg,
            var(--tn-blue) 0%,
            var(--tn-purple) 58%,
            var(--tn-turquoise) 100%);
        -webkit-background-clip: text;
        background-clip: text;
        color: transparent;
        -webkit-text-fill-color: transparent;
    }
}

a.v2-brand:hover::before,
.v2-brand:hover::before { background: var(--tn-orange); }

/* Duży wariant na ekranie logowania. */
.v2-brand--xl {
    font-size: clamp(30px, 5vw, 46px);
    letter-spacing: .09em;
}
