﻿/* =================== Bootstrap defaults / global =================== */
html {
    font-size: 14px;
}

@media (min-width: 768px) {
    html {
        font-size: 16px;
    }
}

.btn:focus, .btn:active:focus, .btn-link.nav-link:focus, .form-control:focus, .form-check-input:focus {
    box-shadow: 0 0 0 0.1rem #fff, 0 0 0 0.25rem #258cfb;
}

/* html & body setup for sticky footer */
html {
    position: relative;
    min-height: 100%;
    height: 100%;
}

body {
    margin-bottom: 0;
    min-height: 100vh;
    display: flex;
    flex-direction: column;
}

/* =================== Motyw 2025 =================== */
:root {
    --nav-h: 64px;
    --brand-purple: #6A00FF;
    --brand-purple-600: #5700d2;
    --brand-orange: #FFA51F;
    --brand-orange-600: #e58c0a;
    --bg-1: #0c0b10;
    --bg-2: #12111a0a;
    --card: #fff;
    --muted: #6b7280;
    --ring: 0 8px 30px rgba(106,0,255,.20), 0 2px 10px rgba(255,165,31,.14);
}

body {
    font-family: "Inter",system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Apple Color Emoji","Segoe UI Emoji";
    background: var(--bg-2);
    color: #111827;
}

.gradient-hero {
    position: absolute;
    inset: 0;
    height: 240px;
    z-index: -1;
    background: radial-gradient(900px 300px at 75% -100px, rgba(255,165,31,.55), transparent 60%), radial-gradient(900px 300px at 20% -120px, rgba(106,0,255,.55), transparent 60%), linear-gradient(180deg,#fff 0%,#f7f6ff 60%,#f9fafb 100%);
}

/* Wyłącz stary overlay */
.gradient-hero {
    display: none !important;
}

/* Jedno tło na całe body – stałe względem okna (bez szwów) */
body.app-bg {
    background: radial-gradient(900px 300px at 75% -120px, rgba(255,165,31,.30), transparent 60%), radial-gradient(900px 300px at 20% -140px, rgba(106,0,255,.30), transparent 60%), linear-gradient(180deg, #ffffff 0%, #f8f7ff 60%, #f8fafc 100%);
    background-repeat: no-repeat, no-repeat, no-repeat;
    background-attachment: fixed, fixed, fixed; /* ← klucz: brak „szwu” przy długich stronach */
    background-color: #ffffff; /* kolor bazowy pod gradientami */
}


/* =================== NAVBAR =================== */
.navbar-glass {
    background: rgba(255,255,255,.78);
    backdrop-filter: saturate(140%) blur(10px);
    border: 1px solid rgba(106,0,255,.15);
    box-shadow: 0 12px 30px rgba(106,0,255,.10), 0 2px 10px rgba(255,165,31,.06);
    padding-block: .35rem !important;
}

.fixed-top {
    z-index: 1080;
}

.nav-offset {
    height: var(--nav-h);
}

header {
    position: relative;
}

@media (max-width: 991.98px) {
    :root {
        --nav-h: 56px;
    }
}

/* host dla menu generatora – brak ścinania dropdownów */
#mainMenuHost {
    overflow: visible !important;
    position: relative;
    gap: .25rem !important;
}

.navbar {
    overflow: visible;
}

.hide-scrollbar {
    -ms-overflow-style: none;
    scrollbar-width: none;
}

    .hide-scrollbar::-webkit-scrollbar {
        display: none;
    }

/* Brand */
.navbar-brand {
    flex: 0 0 auto;
}

.brand-logo {
    display: inline-flex;
    align-items: center;
    gap: .48rem;
    padding: .34rem .58rem;
    border-radius: 999px;
    background: linear-gradient(#fff,#fff) padding-box, linear-gradient(135deg,var(--brand-purple),var(--brand-orange)) border-box;
    border: 1.5px solid transparent;
    box-shadow: 0 10px 24px rgba(106,0,255,.10);
    width: max-content;
    max-width: 100%;
    white-space: nowrap;
}

.brand-spark {
    filter: drop-shadow(0 2px 6px rgba(106,0,255,.25));
}

.brand-wordmark-svg {
    height: 18px;
    width: auto;
    display: block;
}

@media (min-width:992px) {
    .brand-wordmark-svg {
        height: 20px;
    }

    .brand-logo {
        padding: .36rem .62rem;
        gap: .52rem;
    }
}
/* wymuszenia w pasku */
.navbar .navbar-brand {
    flex: 0 0 auto !important;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
    margin-right: .5rem !important;
}

    .navbar .navbar-brand.brand-logo {
        display: inline-flex !important;
        align-items: center !important;
        gap: .48rem !important;
        padding: .26rem .46rem !important;
        border-radius: 9999px !important;
        background: linear-gradient(#fff,#fff) padding-box, linear-gradient(135deg,#6A00FF,#FFA51F) border-box !important;
        border: 1.5px solid transparent !important;
        width: auto !important;
        white-space: nowrap !important;
        box-shadow: 0 10px 24px rgba(106,0,255,.10) !important;
    }

.navbar .brand-logo .brand-wordmark-svg {
    height: 16px !important;
    width: auto !important;
    display: block !important;
}

@media (max-width:1200px) {
    .navbar .navbar-brand.brand-logo {
        padding: .22rem .42rem !important;
    }

    .navbar .brand-logo .brand-wordmark-svg {
        height: 15px !important;
    }
}

/* Nav links */
.navbar .nav-link {
    font-size: clamp(12px, .92vw, 14px);
    padding: .35rem .55rem !important;
}

.nav-link.nav-pill {
    padding: .45rem .75rem;
    border-radius: 999px;
    transition: all .2s ease;
}

    .nav-link.nav-pill:hover, .nav-link.nav-pill:focus {
        background: rgba(106,0,255,.08);
        color: #111827;
    }

/* Avatar */
.avatar-initial {
    width: 28px;
    height: 28px;
    display: inline-grid;
    place-items: center;
    border-radius: 999px;
    background: #f3e8ff;
}

/* =================== Buttons =================== */
.btn-primary {
    --bs-btn-bg: var(--brand-purple);
    --bs-btn-border-color: var(--brand-purple);
    --bs-btn-hover-bg: var(--brand-purple-600);
    --bs-btn-hover-border-color: var(--brand-purple-600);
    --bs-btn-focus-shadow-rgb: 106,0,255;
    box-shadow: 0 8px 18px rgba(106,0,255,.25);
}

.btn-warning {
    --bs-btn-bg: var(--brand-orange);
    --bs-btn-border-color: var(--brand-orange);
    --bs-btn-hover-bg: var(--brand-orange-600);
    --bs-btn-hover-border-color: var(--brand-orange-600);
    color: #111827;
}

.btn-auth {
    border-radius: 999px;
    padding: .5rem 1rem;
    font-weight: 600;
    background: var(--brand-purple);
    color: #fff;
    border: 0;
    box-shadow: 0 8px 18px rgba(106,0,255,.25);
}

    .btn-auth:hover {
        background: var(--brand-purple-600);
        color: #fff;
    }

.btn-auth--alt {
    border-radius: 999px;
    padding: .5rem 1rem;
    font-weight: 600;
    background: linear-gradient(135deg,var(--brand-orange),var(--brand-purple));
    color: #111827;
    border: 0;
    box-shadow: 0 8px 18px rgba(17,24,39,.1);
}

    .btn-auth--alt:hover {
        filter: brightness(.98);
        color: #111827;
    }

/* =================== Cards =================== */
.card, .shadow-card {
    border: 1px solid rgba(17,24,39,.05);
    box-shadow: 0 10px 30px rgba(17,24,39,.06);
    border-radius: 1.25rem;
}

    .shadow-card .card-header {
        background: linear-gradient(180deg,#fff,#fbfaff);
        border-bottom: 1px solid rgba(106,0,255,.08);
    }

/* =================== Dropdowns (BASE) =================== */
.dropdown-menu {
    border-radius: .9rem;
    border: 1px solid rgba(17,24,39,.08);
    box-shadow: 0 16px 50px rgba(17,24,39,.12);
}

.dropdown-item:hover, .dropdown-item:focus {
    background: rgba(106,0,255,.08);
}

/* --- HOVER-FRIENDLY: bez gapów między poziomami --- */
/* top-level: żadnej przerwy w pionie + mostek */
.navbar .dropdown-menu {
    z-index: 2100;
    margin-top: 0 !important;
    overflow: visible;
}

    .navbar .dropdown-menu::before {
        content: "";
        position: absolute;
        top: -8px;
        left: 0;
        right: 0;
        height: 8px; /* mostek pionowy */
    }

/* submenus (poziom 2+) */
.dropdown-submenu {
    position: relative;
}

    .dropdown-submenu > a::after {
        content: "▶";
        font-size: .65em;
        color: #6c757d;
        margin-left: auto;
        padding-left: 10px;
    }

    .dropdown-submenu > .dropdown-menu {
        position: absolute;
        top: 0;
        left: calc(100% - 1px); /* lekkie nałożenie */
        margin-left: 0 !important;
        min-width: 200px;
        display: none;
        z-index: 2200;
    }
        /* mostek poziomy między poziomami */
        .dropdown-submenu > .dropdown-menu::before {
            content: "";
            position: absolute;
            top: 0;
            left: -10px;
            width: 10px;
            height: 100%;
        }

/* Desktop: wszystko na hover */
@media (hover:hover) {
    .navbar .dropdown:hover > .dropdown-menu {
        display: block !important;
    }

    .dropdown-submenu:hover > .dropdown-menu {
        display: block !important;
    }
}

/* Dzwonek NIE otwiera się na hover – tylko klik (Bootstrap) */
/* To masz teraz (i to chowa dropdown dzwonka również po kliknięciu) */
/* #notifDropdown:hover > .dropdown-menu { display: none !important; } */

/* Zamiast tego: włącz hover-open dla WSZYSTKICH poza dzwonkiem */
@media (hover:hover) {
    .navbar .nav-item.dropdown:not(#notifDropdown):hover > .dropdown-menu {
        display: block !important;
    }
}

/* Fallback: gdy Bootstrap doda .show, ma się wyświetlić */
.navbar .dropdown.show > .dropdown-menu,
.dropdown-submenu.show > .dropdown-menu,
.dropdown-menu .dropdown.show > .dropdown-menu {
    display: block !important;
}


/* =================== Select2 =================== */
.select2-container .select2-selection--single {
    height: 44px;
    border-radius: 12px !important;
    border: 1px solid rgba(17,24,39,.12);
}

.select2-container--default .select2-selection--single .select2-selection__rendered {
    line-height: 44px;
    padding-left: 12px;
}

.select2-container--default .select2-results__option--highlighted.select2-results__option--selectable {
    background: linear-gradient(135deg, rgba(106,0,255,.15), rgba(255,165,31,.14));
    color: #111827;
}

.select2-dropdown {
    border-radius: 12px !important;
    border: 1px solid rgba(17,24,39,.12);
    box-shadow: 0 14px 42px rgba(17,24,39,.12);
}

/* =================== Utilities =================== */
.app-section {
    background: #fff;
    border-radius: 24px;
    padding: 24px;
}

.app-bg {
    background: linear-gradient(180deg,#fff 0%, #f8f7ff 50%, #f8fafc 100%);
}

a {
    color: var(--brand-purple);
}

    a:hover {
        color: var(--brand-purple-600);
    }

:where(a,button,.form-control,.select2-selection) {
    outline: none !important;
}

    :where(a,button,.form-control,.select2-selection):focus-visible {
        box-shadow: 0 0 0 3px rgba(106,0,255,.25) !important;
    }

.form-control {
    border-radius: 14px;
    border: 1px solid rgba(17,24,39,.12);
    padding: .6rem .9rem;
}

    .form-control:focus {
        border-color: var(--brand-purple);
        box-shadow: 0 0 0 .2rem rgba(106,0,255,.15);
    }

.footer-glass {
    background: rgba(255,255,255,.65);
    backdrop-filter: saturate(140%) blur(8px);
    border: 1px solid rgba(106,0,255,.12);
    box-shadow: 0 6px 20px rgba(17,24,39,.06);
}

/* RWD kompakt */
@media (max-width:1400px) {
    .navbar .nav-link {
        font-size: 12.5px;
        padding: .32rem .5rem !important;
    }
}

@media (max-width:1200px) {
    .navbar .nav-link {
        font-size: 12px;
        padding: .28rem .45rem !important;
    }
}

.navbar-nav > .nav-item {
    margin-right: .1rem;
}

/* ====== STATUS BAR ====== */
.status-bar {
    background: rgba(255,255,255,.82);
    backdrop-filter: saturate(140%) blur(6px);
    border-top: 1px solid rgba(17,24,39,.06);
    border-bottom: 1px solid rgba(17,24,39,.06);
    box-shadow: 0 8px 22px rgba(17,24,39,.06);
    padding-block: .25rem;
}

.status-scroll {
    overflow-x: auto;
    white-space: nowrap;
}

    .status-scroll::-webkit-scrollbar {
        height: 6px;
    }

    .status-scroll::-webkit-scrollbar-thumb {
        background: rgba(17,24,39,.15);
        border-radius: 6px;
    }

.status-bar .badge, .status-bar .btn, .status-bar .alert {
    font-size: 12px !important;
    line-height: 1.1;
    padding: .23rem .45rem !important;
    border-radius: .5rem !important;
    margin-right: .25rem;
}

    .status-bar .badge.bg-danger, .status-bar .badge.text-bg-danger {
        box-shadow: 0 2px 8px rgba(220,53,69,.25);
    }

/* ====== Powiadomienia (dzwonek) ====== */
#notifDropdown {
    position: relative;
}

.notif-toggle {
    position: relative;
}

.notif-dot {
    position: absolute;
    top: 6px;
    right: 8px;
    width: 10px;
    height: 10px;
    background: #ff3b3b;
    border-radius: 50%;
    display: inline-block;
    z-index: 2;
}

.notif-menu {
    width: min(290px,90vw);
    max-height: 60vh;
    overflow: auto;
    box-shadow: 0 20px 50px rgba(17,24,39,.18);
}

.notif-content ul {
    list-style: none;
    margin: 0;
    padding: 0;
}

.notif-content li {
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    margin-right: .35rem;
}
/* awaryjnie usuń markery, gdy VC zwróci listę poza .notif-content */
#notif-source ul {
    list-style: none;
    margin: 0;
    padding: 0;
}


/* Powiadomienia Urlopy tabelka */

.vac-card {
    width: 270px;
    min-width: 270px;
    background: var(--bs-body-bg);
    border: 1px solid var(--bs-border-color);
    border-radius: .75rem;
    padding: .5rem;
    box-shadow: var(--bs-box-shadow-sm);
    transition: transform .15s ease, box-shadow .15s ease, border-color .15s ease;
}

    .vac-card:hover {
        transform: translateY(-1px);
        box-shadow: var(--bs-box-shadow);
        border-color: rgba(0,0,0,.075);
    }

.vac-row {
    display: grid;
    grid-template-columns: 1fr auto;
    align-items: center;
    padding: .25rem .25rem;
    border-radius: .5rem;
}

    .vac-row + .vac-row {
        margin-top: .15rem;
    }

.vac-left {
    display: flex;
    align-items: center;
    gap: .5rem;
    min-width: 0;
}

.vac-label {
    font-size: .875rem;
    color: var(--bs-secondary-color);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.vac-dot {
    width: .55rem;
    height: .55rem;
    border-radius: 50%;
    display: inline-block;
}

.vac-dot-n {
    background: var(--bs-danger);
}

.vac-dot-p {
    background: var(--bs-success);
}

.vac-dot-r {
    background: var(--bs-warning);
}

.vac-badge-soft-danger {
    background: rgba(var(--bs-danger-rgb), .12);
    color: var(--bs-danger);
}

.vac-badge-soft-success {
    background: rgba(var(--bs-success-rgb), .12);
    color: var(--bs-success);
}

.vac-badge-soft-warning {
    background: rgba(var(--bs-warning-rgb), .15);
    color: var(--bs-warning);
}

/* anchor reset inside navbar item */
.nav-link .vac-card {
    color: inherit;
    text-decoration: none;
}


/* Koniec tabelki */



/* MOBILE: submenusy układ pionowy zamiast "flyout" w prawo */
@media (max-width: 991.98px), (hover: none) {
    /* top-level dropdown w kolumnie */
    .navbar .dropdown-menu {
        position: static !important;
        float: none;
        transform: none !important;
        width: 100%;
        margin: 0 !important;
    }
        /* wyłącz "mostek" i inne pseudo-elementy, które psują layout na mobile */
        .navbar .dropdown-menu::before {
            display: none !important;
        }

    /* 2+ poziom: nie w prawo, tylko pod rodzicem */
    .navbar .dropdown-submenu > .dropdown-menu {
        position: static !important;
        left: 0 !important;
        top: 0 !important;
        display: none; /* domyślnie schowane */
        margin: 0 !important;
        padding-left: .75rem; /* delikatne wcięcie */
        border-left: 1px solid rgba(17,24,39,.08);
    }

    .navbar .dropdown-submenu.show > .dropdown-menu {
        display: block; /* pokaż, gdy .show */
    }

    /* Strzałki: w prawo (zamknięte) → w dół (otwarte) */
    .navbar .dropdown-submenu > a::after {
        content: "▸";
        font-size: .75em;
        margin-left: auto;
        padding-left: .5rem;
    }

    .navbar .dropdown-submenu.show > a::after {
        content: "▾";
    }
}

/* Wymuś widoczny „hamburger” na jasnym tle */
.navbar {
    --bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3E%3Cpath stroke='rgba(17,24,39,0.85)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E");
}

    .navbar .navbar-toggler-icon {
        background-image: var(--bs-navbar-toggler-icon-bg) !important;
        width: 1.5rem; /* na wypadek gdyby coś to nadpisało */
        height: 1.5rem;
        background-size: 100% 100%;
    }

    .navbar.navbar-dark {
        --bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3E%3Cpath stroke='rgba(255,255,255,0.9)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E");
    }


/* Compact, płaskie przyciski akcji w tabelach */
.btn-compact {
    padding: .25rem .55rem; /* mniejsze niż standardowe .btn-sm */
    font-size: .8rem;
    line-height: 1.1;
    border-radius: .375rem; /* spójne z kartami */
    white-space: nowrap;
}

/* Gradient w kolorach motywu + brak cienia = "flat" */
.btn-gradient {
    background-image: linear-gradient(135deg, var(--brand-purple-600), var(--brand-purple)) !important;
    border: 0 !important;
    box-shadow: none !important;
}

    .btn-gradient:hover {
        filter: brightness(1.04);
    }

    .btn-gradient:active {
        filter: brightness(0.98);
    }

/* Opcjonalnie: w tabelach zawsze minimalny gabaryt */
.table .btn {
    padding-top: .25rem;
    padding-bottom: .25rem;
}

/* Modale ~200px niżej */
.modal--offset-200 {
    --bs-modal-margin: 200px;
}

/* Na niskich ekranach nie przesadzajmy z odstępem */
@media (max-height: 700px) {
    .modal--offset-200 {
        --bs-modal-margin: 16px;
    }
}

.dropdown-menu {
    z-index: 3000 !important;
}

.table-responsive {
    overflow: visible !important;
}
