/* =========================================================
   KELNER.PRO — Generator Testów AI v0.2
   Wynik jako dwie strony A4 + ekran oczekiwania
========================================================= */

.kp-ai-loading {
    position: fixed;
    inset: 0;
    z-index: 1000005;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px;
    background: rgba(17, 17, 17, 0.92);
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: opacity .2s ease, visibility .2s ease;
}

.kp-ai-loading.is-visible {
    opacity: 1;
    visibility: visible;
    pointer-events: all;
}

.kp-ai-loading-card {
    width: min(560px, 100%);
    padding: 52px 44px;
    text-align: center;
    background: #111111;
    color: #FFFFFF;
    border: 1px solid #2d2d2d;
}

.kp-ai-loading-kicker {
    margin: 24px 0 14px;
    color: #A7D8FF;
    font-size: 11px;
    line-height: 1;
    font-weight: 800;
    letter-spacing: 1.8px;
}

.kp-ai-loading-card h3 {
    margin: 0 0 12px !important;
    color: #A7D8FF !important;
    font-size: clamp(28px, 5vw, 42px) !important;
    line-height: 1.05 !important;
    letter-spacing: -1.5px !important;
}

.kp-ai-loading-card p {
    margin: 0 !important;
    color: #FFFFFF !important;
    font-size: 18px !important;
    line-height: 1.55 !important;
}

.kp-ai-loading-card small {
    display: block;
    margin-top: 14px;
    color: #8f969f;
    font-size: 12px;
}

.kp-ai-loader {
    display: flex;
    justify-content: center;
    gap: 8px;
}

.kp-ai-loader span {
    width: 9px;
    height: 9px;
    border-radius: 50%;
    background: #A7D8FF;
    animation: kp-ai-bounce 1.1s infinite ease-in-out;
}

.kp-ai-loader span:nth-child(2) { animation-delay: .12s; }
.kp-ai-loader span:nth-child(3) { animation-delay: .24s; }

@keyframes kp-ai-bounce {
    0%, 70%, 100% { transform: translateY(0); opacity: .45; }
    35% { transform: translateY(-9px); opacity: 1; }
}

.kp-ai-loading-line {
    position: relative;
    height: 2px;
    margin: 30px auto 0;
    overflow: hidden;
    background: #2c2c2c;
}

.kp-ai-loading-line span {
    position: absolute;
    inset: 0 auto 0 0;
    width: 38%;
    background: #60A5FA;
    animation: kp-ai-progress 1.7s infinite ease-in-out;
}

@keyframes kp-ai-progress {
    0% { transform: translateX(-110%); }
    100% { transform: translateX(380%); }
}

body.kp-ai-is-generating {
    overflow: hidden !important;
}


/* Po wygenerowaniu testu modal rozszerza się, aby kartki A4 były wygodne do podglądu. */
#kpGeneratorModal .kp-modal-window.kp-has-result {
    width: min(980px, calc(100vw - 28px)) !important;
    max-width: none !important;
}

/* Result wrapper */
.kp-ai-result-wrap {
    margin-top: 32px;
    color: #111111;
}

.kp-test-result-head {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 24px;
    margin-bottom: 26px;
    padding: 0 2px;
}

.kp-result-kicker {
    margin-bottom: 7px;
    color: #60A5FA;
    font-size: 10px;
    font-weight: 900;
    letter-spacing: 1.5px;
}

.kp-test-result-head h3 {
    margin: 0 0 7px !important;
    color: #111111 !important;
    font-size: 28px !important;
    line-height: 1.1 !important;
}

.kp-test-result-head p {
    margin: 0 !important;
    color: #667085 !important;
    font-size: 13px !important;
}

.kp-result-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.kp-result-btn {
    min-height: 44px;
    padding: 0 16px;
    border-radius: 0;
    font-size: 11px;
    font-weight: 850;
    text-transform: uppercase;
    letter-spacing: .5px;
    cursor: pointer;
}

.kp-result-btn-primary {
    border: 1px solid #111111;
    background: #111111;
    color: #FFFFFF;
}

.kp-result-btn-primary:hover {
    border-color: #60A5FA;
    background: #60A5FA;
}

.kp-result-btn-secondary {
    border: 1px solid #cfd5dc;
    background: #FFFFFF;
    color: #111111;
}

/* Stage */
.kp-pages-stage {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 28px;
    padding: 30px;
    overflow-x: auto;
    background: #edf1f4;
    border: 1px solid #dfe4e9;
}

/* A4 */
.kp-test-page {
    position: relative;
    display: flex;
    flex-direction: column;
    flex: 0 0 auto;
    width: 210mm;
    height: 297mm;
    padding: 12mm 14mm 11mm;
    overflow: hidden;
    background: #FFFFFF;
    color: #111111;
    box-shadow: 0 12px 36px rgba(17, 17, 17, .10);
    font-family: Arial, Helvetica, sans-serif !important;
}

.kp-test-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding-bottom: 4mm;
    border-bottom: .35mm solid #111111;
}

.kp-test-brand {
    color: #111111;
    font-size: 11pt;
    font-weight: 900;
    letter-spacing: .4mm;
}

.kp-test-brand span { color: #60A5FA; }

.kp-page-counter {
    color: #60A5FA;
    font-size: 8pt;
    font-weight: 800;
    letter-spacing: .35mm;
}

.kp-test-title {
    margin-top: 4.5mm;
    color: #111111;
    font-size: 17pt;
    line-height: 1.08;
    font-weight: 900;
    letter-spacing: -.35mm;
}

.kp-continuation {
    margin: 4.5mm 0 4mm;
    color: #111111;
    font-size: 11pt;
    line-height: 1.2;
    font-weight: 850;
    text-transform: uppercase;
    letter-spacing: .1mm;
}

.kp-meta-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    column-gap: 8mm;
    row-gap: 2mm;
    margin-top: 4mm;
    padding: 3.3mm 0;
    border-top: .25mm solid #dfe4e9;
    border-bottom: .25mm solid #dfe4e9;
}

.kp-meta-item {
    display: flex;
    align-items: baseline;
    min-width: 0;
    gap: 2mm;
    font-size: 8.6pt;
}

.kp-meta-label {
    flex: 0 0 auto;
    color: #667085;
    font-size: 7.3pt;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: .15mm;
}

.kp-meta-value {
    min-width: 0;
    flex: 1;
    color: #111111;
    font-weight: 700;
}

.kp-fill-line {
    display: inline-block;
    width: 100%;
    min-width: 32mm;
    border-bottom: .25mm solid #6f7680;
}

.kp-instructions {
    margin-top: 3.5mm;
    padding: 3mm 3.5mm;
    background: #F3F9FF;
    border-left: 1mm solid #A7D8FF;
}

.kp-instructions-label {
    margin-bottom: 1.6mm;
    color: #356c9d;
    font-size: 7.1pt;
    font-weight: 900;
    letter-spacing: .25mm;
}

.kp-instructions ul {
    margin: 0 !important;
    padding: 0 0 0 4mm !important;
}

.kp-instructions li {
    margin: .7mm 0 !important;
    color: #3d4652 !important;
    font-size: 7.5pt !important;
    line-height: 1.28 !important;
}

.kp-questions {
    display: grid;
    flex: 1 1 auto;
    min-height: 0;
    grid-template-rows: repeat(5, minmax(0, 1fr));
}

.kp-questions-page-one {
    margin-top: 3.2mm;
}

.kp-questions-page-two {
    margin-top: 1mm;
}

.kp-question-block {
    display: grid;
    grid-template-columns: 8mm 1fr;
    gap: 2.5mm;
    min-height: 0;
    padding: 2.4mm 0 2.2mm;
    border-top: .23mm solid #dfe4e9;
    overflow: hidden;
}

.kp-question-block:first-child {
    border-top: none;
}

.kp-question-number {
    color: #60A5FA;
    font-size: 10pt;
    line-height: 1.25;
    font-weight: 900;
}

.kp-question-body {
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.kp-question-text {
    flex: 0 0 auto;
    color: #111111;
    font-size: 8.35pt;
    line-height: 1.28;
    font-weight: 700;
}

.kp-answer-label {
    margin-top: 1.8mm;
    color: #8a919b;
    font-size: 6.2pt;
    font-weight: 900;
    letter-spacing: .2mm;
}

.kp-answer-space {
    flex: 1 1 auto;
    min-height: 10mm;
    margin-top: .6mm;
    background-color: #FFFFFF !important;
    background-image: repeating-linear-gradient(
        to bottom,
        #FFFFFF 0,
        #FFFFFF 5.15mm,
        #2F343A 5.15mm,
        #2F343A 5.35mm
    ) !important;
    background-repeat: repeat !important;
}

.kp-test-footer {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex: 0 0 auto;
    padding-top: 2mm;
    border-top: .22mm solid #e3e7eb;
    color: #8f969f;
    font-size: 6.5pt;
    text-transform: uppercase;
    letter-spacing: .15mm;
}

.kp-ai-parse-warning {
    padding: 24px;
    border: 1px solid #d6b36a;
    background: #fffaf0;
    color: #5f4b22;
}

.kp-ai-parse-warning pre {
    max-height: 500px;
    overflow: auto;
    white-space: pre-wrap;
    margin-top: 18px;
    padding: 18px;
    background: #FFFFFF;
    border: 1px solid #eee3c8;
    color: #111111;
    font-size: 12px;
}

@media (max-width: 900px) {
    .kp-test-result-head {
        align-items: flex-start;
        flex-direction: column;
    }

    .kp-pages-stage {
        align-items: flex-start;
        padding: 16px;
    }

    .kp-test-page {
        transform-origin: top left;
    }
}

/* PRINT — v0.2.1
   Drukujemy osobny kontener #kpPrintRoot umieszczony bezpośrednio w <body>.
   Dzięki temu nagłówek WordPressa, hero i cała strona generatora nie uczestniczą
   w paginacji i PDF zawiera wyłącznie dwie kartki testu.
*/
#kpPrintRoot {
    display: none;
}

@page {
    size: A4 portrait;
    margin: 0;
}

@media print {
    html,
    body {
        width: 210mm !important;
        margin: 0 !important;
        padding: 0 !important;
        background: #FFFFFF !important;
    }

    body.kp-print-test > *:not(#kpPrintRoot) {
        display: none !important;
    }

    body.kp-print-test #kpPrintRoot {
        display: block !important;
        width: 210mm !important;
        margin: 0 !important;
        padding: 0 !important;
        background: #FFFFFF !important;
    }

    body.kp-print-test #kpPrintRoot .kp-test-page {
        display: flex !important;
        box-sizing: border-box !important;
        width: 210mm !important;
        height: 297mm !important;
        min-width: 210mm !important;
        min-height: 297mm !important;
        max-width: 210mm !important;
        max-height: 297mm !important;
        margin: 0 !important;
        padding: 12mm 14mm 11mm !important;
        overflow: hidden !important;
        box-shadow: none !important;
        transform: none !important;
        break-inside: avoid !important;
        page-break-inside: avoid !important;
        page-break-after: always !important;
        break-after: page !important;
        background: #FFFFFF !important;
        -webkit-print-color-adjust: exact !important;
        print-color-adjust: exact !important;
    }

    body.kp-print-test #kpPrintRoot .kp-answer-space {
        background-color: #FFFFFF !important;
        background-image: repeating-linear-gradient(
            to bottom,
            #FFFFFF 0,
            #FFFFFF 5.15mm,
            #111111 5.15mm,
            #111111 5.35mm
        ) !important;
        background-repeat: repeat !important;
        -webkit-print-color-adjust: exact !important;
        print-color-adjust: exact !important;
    }

    body.kp-print-test #kpPrintRoot .kp-test-page:last-child {
        page-break-after: auto !important;
        break-after: auto !important;
    }
}

/* =========================================================
   OSTATNI TEST Z KATEGORII — v0.2.2
========================================================= */

.kp-last-test-panel {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    margin: 0 0 24px;
    padding: 18px 20px;
    background: #F3F9FF;
    border: 1px solid #A7D8FF;
    border-left: 4px solid #60A5FA;
}

.kp-last-test-copy {
    min-width: 0;
}

.kp-last-test-kicker {
    margin-bottom: 6px;
    color: #356C9D;
    font-size: 9px;
    line-height: 1;
    font-weight: 900;
    letter-spacing: 1.25px;
}

.kp-last-test-copy strong {
    display: block;
    margin-bottom: 5px;
    color: #111111;
    font-size: 14px;
    line-height: 1.3;
}

.kp-last-test-copy span {
    display: block;
    color: #667085;
    font-size: 11px;
    line-height: 1.4;
}

.kp-last-test-open {
    flex: 0 0 auto;
    min-height: 42px;
    padding: 0 15px;
    border: 1px solid #111111;
    border-radius: 0;
    background: #111111;
    color: #FFFFFF;
    font-size: 10px;
    line-height: 1.2;
    font-weight: 850;
    text-transform: uppercase;
    letter-spacing: .45px;
    cursor: pointer;
    transition: .2s ease;
}

.kp-last-test-open:hover {
    border-color: #60A5FA;
    background: #60A5FA;
    color: #FFFFFF;
}

@media (max-width: 650px) {
    .kp-last-test-panel {
        align-items: flex-start;
        flex-direction: column;
    }

    .kp-last-test-open {
        width: 100%;
    }
}


/* =========================================================
   TEST NAPOJÓW — upload karty v0.3.0
========================================================= */
.kp-drink-file-hint {
    margin-top: 10px;
    padding: 12px 14px;
    border-left: 3px solid #60A5FA;
    background: #F3F9FF;
    color: #344054;
    font-size: 12px;
    line-height: 1.45;
}
.kp-drink-file-hint strong,
.kp-drink-file-hint span { display: block; }
.kp-drink-file-hint strong { margin-bottom: 3px; color: #111111; }


/* v0.3.4 — pobieranie PDF */
.kp-result-actions { flex-wrap: wrap; }
.kp-result-btn:disabled { cursor: wait; opacity: .65; }
@media (max-width: 700px) {
    .kp-result-actions { width: 100%; }
    .kp-result-actions .kp-result-btn { width: 100%; justify-content: center; }
}

/* v0.3.5 — serwerowe pobieranie PDF na urządzenia mobilne */


/* v0.3.6 — automatyczne pobieranie PDF na urządzeniach mobilnych */
@media (max-width: 700px) {
    .kp-test-result-head p { line-height: 1.45; }
}


/* v0.3.8 — desktop wraca do natywnego Drukuj / Zapisz jako PDF */


/* v0.4.0 — mobilny eksport PDF / Word */
@media (max-width: 700px) {
    .kp-result-actions {
        display: grid !important;
        grid-template-columns: 1fr 1fr;
        gap: 10px;
        width: 100%;
    }
    .kp-result-actions #kpGenerateAgain {
        grid-column: 1 / -1;
    }
    .kp-result-actions .kp-result-btn {
        width: 100%;
        min-height: 48px;
        justify-content: center;
        text-align: center;
    }
}


/* =========================================================
   v0.5.3 - SALDO KREDYTÓW I DOŁADOWANIE
========================================================= */

.kp-credit-status-bar {
    display: none;
    align-items: center;
    justify-content: space-between;
    gap: 24px;
    width: 100%;
    margin: 0 0 32px;
    padding: 18px 20px;
    border: 1px solid #DCE3EA;
    background: #FFFFFF;
    color: #111111;
}

.kp-credit-status-bar > div {
    min-width: 0;
}

.kp-credit-status-kicker {
    display: block;
    margin-bottom: 4px;
    color: #60A5FA;
    font-size: 9px;
    line-height: 1.2;
    font-weight: 900;
    letter-spacing: 1.25px;
}

.kp-credit-status-bar strong {
    display: block;
    font-size: 16px;
    line-height: 1.25;
    font-weight: 850;
}

.kp-credit-status-value,
.kp-credit-status-action {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 40px;
    padding: 0 15px;
    border: 1px solid #A7D8FF;
    background: #F3F9FF;
    color: #356C9D;
    font-size: 10px;
    font-weight: 900;
    letter-spacing: .7px;
    text-transform: uppercase;
    text-decoration: none;
}

button.kp-credit-status-action {
    cursor: pointer;
    font-family: inherit;
}

.kp-credit-status-bar.is-unlimited {
    border-color: #A7D8FF;
    background: #F3F9FF;
}

.kp-credit-status-bar.is-unlimited .kp-credit-status-value {
    border-color: #60A5FA;
    background: #60A5FA;
    color: #FFFFFF;
}

.kp-credit-status-bar.is-empty {
    border-color: #D6B36A;
    background: #FFFCF5;
}

.kp-credit-status-bar.is-empty .kp-credit-status-action {
    border-color: #111111;
    background: #111111;
    color: #FFFFFF;
}

body.kp-credits-dialog-open {
    overflow: hidden !important;
}

.kp-credits-dialog {
    position: fixed;
    inset: 0;
    z-index: 10000050;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
    background: rgba(17,17,17,.76);
    backdrop-filter: blur(5px);
}

.kp-credits-dialog-card {
    position: relative;
    width: min(680px, 100%);
    max-height: 92vh;
    overflow-y: auto;
    padding: 38px;
    background: #FFFFFF;
    box-shadow: 0 30px 100px rgba(0,0,0,.3);
}

.kp-credits-dialog-close {
    position: absolute;
    top: 15px;
    right: 15px;
    width: 36px;
    height: 36px;
    border: 1px solid #DDE1E6;
    background: #FFFFFF;
    color: #111111;
    font-size: 21px;
    cursor: pointer;
}

.kp-credits-dialog-kicker {
    display: block;
    margin: 0 45px 10px 0;
    color: #60A5FA;
    font-size: 10px;
    font-weight: 900;
    letter-spacing: 1.3px;
}

.kp-credits-dialog-card h3 {
    max-width: 560px;
    margin: 0;
    color: #111111;
    font-size: 30px;
    line-height: 1.08;
    letter-spacing: -1px;
}

.kp-credits-dialog-card > p {
    max-width: 570px;
    margin: 13px 0 25px;
    color: #667085;
    font-size: 14px;
    line-height: 1.65;
}

.kp-credits-buy-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 13px;
}

.kp-credits-buy-card {
    position: relative;
    display: flex;
    flex-direction: column;
    min-height: 230px;
    padding: 22px;
    border: 1px solid #DCE3EA;
    background: #FFFFFF;
    color: #111111;
    text-decoration: none;
    transition: .2s ease;
}

.kp-credits-buy-card:hover {
    border-color: #60A5FA;
    transform: translateY(-2px);
}

.kp-credits-buy-card.is-best {
    border: 2px solid #60A5FA;
    background: #F3F9FF;
}

.kp-credits-buy-card > span {
    color: #60A5FA;
    font-size: 9px;
    font-weight: 900;
    letter-spacing: 1px;
}

.kp-credits-buy-card > strong {
    margin-top: 14px;
    font-size: 23px;
    line-height: 1.1;
}

.kp-credits-buy-card > b {
    margin-top: 7px;
    font-size: 32px;
    line-height: 1;
    letter-spacing: -1px;
}

.kp-credits-buy-card > small {
    margin-top: 5px;
    color: #667085;
    font-size: 11px;
}

.kp-credits-buy-card > em {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 42px;
    margin-top: auto;
    background: #111111;
    color: #FFFFFF;
    font-size: 10px;
    font-style: normal;
    font-weight: 900;
    letter-spacing: .6px;
}

.kp-credits-buy-card.is-best > em {
    background: #60A5FA;
}

.kp-credits-forkly-note {
    margin-top: 18px;
    padding: 13px 15px;
    border-left: 3px solid #D6B36A;
    background: #FBF8F0;
    color: #6E5A2F;
    font-size: 11px;
    line-height: 1.55;
}

.kp-credits-login-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 46px;
    padding: 0 22px;
    background: #111111;
    color: #FFFFFF;
    text-decoration: none;
    font-size: 10px;
    font-weight: 900;
    letter-spacing: .7px;
}

@media (max-width: 700px) {
    .kp-credit-status-bar {
        align-items: flex-start;
        gap: 12px;
        margin-bottom: 22px;
        padding: 15px;
    }

    .kp-credit-status-bar strong {
        font-size: 14px;
    }

    .kp-credit-status-value,
    .kp-credit-status-action {
        min-height: 36px;
        padding: 0 11px;
        font-size: 9px;
    }

    .kp-credits-dialog {
        align-items: flex-end;
        padding: 0;
    }

    .kp-credits-dialog-card {
        width: 100%;
        max-height: 90vh;
        padding: 30px 18px 22px;
        border-radius: 18px 18px 0 0;
    }

    .kp-credits-dialog-card h3 {
        padding-right: 25px;
        font-size: 26px;
    }

    .kp-credits-buy-grid {
        grid-template-columns: 1fr;
    }

    .kp-credits-buy-card {
        min-height: 185px;
    }
}
