/* ================================================================
   UNIVERSAL
================================================================ */
:root {
    
    --form-link-color: #d81835;
    --form-select-arrow-color: #212529;
    --form-text-color: #006d65;
    --form-color: var(--form-text-color);
    --form-control-color: #006d65;
    --form-accent-color: #006d65;
    --form-accent-hover: #00564f;
    --form-interaction-color: #71bf44;
    --form-surface: #fff;
    --form-border-color: var(--form-text-color);
    --form-muted-color: #969998;
    --form-button-bg: #e9e9e8;
    --form-radius: 4px;
    --form-padding-x: 8px;
    --form-padding-y: 8px;
    --form-field-height: 50px;
    --form-floating-padding-y: 14px;
    --form-row-gap: .7rem;
    
    --form-grid-gutter: 16px;
    --form-grid-half-gutter: calc(var(--form-grid-gutter) / 2);
    --form-radio-size: clamp(16px, 1.05em, 18px);
    --form-checkbox-size: 16px;
    --form-checkbox-gap: clamp(12px, 1.5vw, 16px);
    --form-checkbox-offset: calc(var(--form-checkbox-size) + var(--form-checkbox-gap));
    --form-checkbox-border-width: 2px;
    --form-checkmark-thickness: 4px;
    --form-checkmark-short: 70%;
    --form-checkmark-long: 150%;
    --form-checkbox-border-color: #006d65;
    --form-checkbox-check-color: #d81835;
    --form-checkbox-focus-color: rgba(0, 109, 101, .22);
    --form-validation-color: #dc3545;
    --form-focus-ring: rgba(0, 109, 101, .22);
    --form-transition: .2s ease;
}

@supports (color: color-mix(in srgb, black, transparent)) {
    :root {
        --form-focus-ring: color-mix(in srgb, var(--form-control-color) 22%, transparent);
    }
}

/* ================================================================
   LAYOUT AND LABELS
================================================================ */
.wpcf7-form {
    color: var(--form-color);

    
    --agree-control-color: var(--form-control-color);
    --agree-accent-color: var(--form-accent-color);
    --agree-focus-color: var(--form-focus-ring);
}

.wpcf7-form :is(
    .form-group,
    .form-check,
    .form-check-one,
    .wpcf7-list-item-label,
    .legal-more,
    .legal-more-content,
    .morelink,
    label,
    input[type="text"],
    input[type="number"],
    input[type="email"],
    input[type="tel"],
    input[type="date"],
    select,
    option,
    .form-check-label
) {
    color: var(--form-text-color) !important;
}

.wpcf7-form :is(
    input[type="text"],
    input[type="number"],
    input[type="email"],
    input[type="tel"],
    input[type="date"]
)::placeholder {
    color: var(--form-text-color) !important;
    opacity: .72;
}

.wpcf7-form .row {
    --bs-gutter-x: var(--form-grid-gutter);
    column-gap: 0;
    margin-left: calc(-1 * var(--form-grid-half-gutter));
    margin-right: calc(-1 * var(--form-grid-half-gutter));
}

.wpcf7-form .row > [class*="col"] {
    padding-left: var(--form-grid-half-gutter);
    padding-right: var(--form-grid-half-gutter);
}

.wpcf7-form .form-group.row:not(.checkboxes) {
    margin-bottom: var(--form-row-gap);
}

.wpcf7-form .form-group.row:has(.wpcf7-form-control-wrap[data-name="y_prefix"]) {
    margin-bottom: clamp(1rem, 2vw, 1.35rem);
}

.wpcf7-form label {
    display: block;
    width: 100%;
    margin-bottom: 4px;
    color: var(--form-color);
    font-weight: 400;
    cursor: pointer;
}

.wpcf7-form label sup {
    color: var(--form-accent-color);
}

.wpcf7-form label a,
.wpcf7-form .form-check a,
.wpcf7-form .agree a,
.wpcf7-form-control-wrap a,
.wpcf7-form .expand-agreements {
    color: var(--form-control-color) !important;
    text-decoration: none;
    transition: color var(--form-transition);
    font-weight: 600;
}

.wpcf7-form label a,
.wpcf7-form .expand-agreements {
    font-weight: 500;
}

.wpcf7-form label a:hover,
.wpcf7-form label a:focus-visible,
.wpcf7-form .form-check a:hover,
.wpcf7-form .form-check a:focus-visible,
.wpcf7-form .agree a:hover,
.wpcf7-form .agree a:focus-visible,
.wpcf7-form-control-wrap a:hover,
.wpcf7-form-control-wrap a:focus-visible,
.wpcf7-form .expand-agreements:hover,
.wpcf7-form .expand-agreements:focus-visible {
    color: var(--form-accent-color) !important;
    text-decoration: underline;
}

/* ================================================================
   TEXT FIELDS AND SELECTS
================================================================ */
.wpcf7-form :is(
    input[type="text"],
    input[type="number"],
    input[type="email"],
    input[type="tel"],
    input[type="date"],
    select
) {
    appearance: none;
    box-sizing: border-box;
    width: 100%;
    height: var(--form-field-height);
    min-height: var(--form-field-height);
    padding: var(--form-padding-y) var(--form-padding-x);
    color: var(--form-color);
    background-color: var(--form-surface);
    border: 1px solid var(--form-border-color);
    border-radius: var(--form-radius);
    transition: border-color var(--form-transition);
}

.wpcf7-form :is(
    input[type="text"],
    input[type="number"],
    input[type="email"],
    input[type="tel"],
    input[type="date"],
    select
):is(:hover, :focus) {
    outline: none;
    box-shadow: none;
    border-color: var(--form-border-color);
}

.wpcf7-form :is(
    input[type="text"],
    input[type="number"],
    input[type="email"],
    input[type="tel"],
    input[type="date"],
    select
):focus-visible {
    outline: 0;
    box-shadow: none;
}

.wpcf7-form :is(
    input[type="text"],
    input[type="number"],
    input[type="email"],
    input[type="tel"],
    input[type="date"],
    select
):is(.is-valid, .is-invalid, .wpcf7-not-valid):focus {
    outline: 0 !important;
    box-shadow: none !important;
}

.wpcf7-form :is(
    input[type="text"],
    input[type="number"],
    input[type="email"],
    input[type="tel"],
    input[type="date"],
    select
):is(.is-valid, .is-invalid, .wpcf7-not-valid) {
    border-color: var(--form-border-color) !important;
}

.wpcf7-form select {
    display: block;
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
    padding-right: calc(2 * var(--form-padding-x) + 18px);
    background-image: none !important;
    cursor: pointer;
}

.wpcf7-form .wpcf7-form-control-wrap[data-name="y_prefix"] {
    position: relative;
    display: block;
    height: auto;
}

.wpcf7-form .wpcf7-form-control-wrap[data-name="y_prefix"] > select {
    box-sizing: border-box;
    height: var(--form-field-height);
    min-height: 0;
}

.wpcf7-form .wpcf7-form-control-wrap[data-name="y_prefix"]::after {
    content: "";
    position: absolute;
    top: calc(var(--form-field-height) / 2);
    right: var(--form-padding-x);
    width: 12px;
    height: 8px;
    background-color: var(--form-select-arrow-color);
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%23212529' d='M1.41 0 6 4.58 10.59 0 12 1.41l-6 6-6-6z'/%3E%3C/svg%3E") center / contain no-repeat;
    pointer-events: none;
    transform: translateY(-50%);
    transition: transform .4s ease;
}

.wpcf7-form .wpcf7-form-control-wrap[data-name="y_prefix"]:has(select:open)::after {
    transform: translateY(-50%) rotate(180deg);
}

/* ================================================================
   FLOATING LABELS
================================================================ */
.wpcf7-form .np-label-container {
    position: relative;
    display: block;
    width: 100%;
}

.wpcf7-form .np-label-container :is(input, select) {
    padding: var(--form-floating-padding-y) var(--form-padding-x);
    transition: border-color var(--form-transition);
}

.wpcf7-form .np-label-container input::placeholder {
    opacity: 0;
}

.wpcf7-form .np-label-container input[type="date"]::before {
    display: none;
}

.wpcf7-form .np-label-container label {
    position: absolute;
    z-index: 1;
    top: 0;
    left: var(--form-padding-x);
    display: inline-block;
    width: auto;
    max-width: calc(100% - 2 * var(--form-padding-x));
    padding: var(--form-floating-padding-y) 0;
    border-radius: var(--form-radius);
    background: transparent;
    font-size: 15px;
    line-height: 24px;
    opacity: .9;
    cursor: text;
    user-select: none;
    transition: all var(--form-transition);
}

.wpcf7-form .np-label-container input:is(:focus, :not(:placeholder-shown)) ~ label,
.wpcf7-form .np-label-container select:focus ~ label,
.wpcf7-form .np-label-container select:has(option:checked:not([value=""])) ~ label {
    top: 0;
    left: calc(var(--form-padding-x) / 2);
    padding: 0 calc(var(--form-padding-x) / 2);
    background: linear-gradient(180deg, transparent 50%, var(--form-surface) 50%);
    font-size: .7rem;
    line-height: 1.5;
    opacity: 1;
    transform: translateY(-50%);
}

/* ================================================================
   RADIO BUTTONS
================================================================ */
.wpcf7-form .form-check-inline {
    display: inline-flex;
    align-items: center;
}

.wpcf7-form .form-check-inline:has(input[type="radio"][name="gender"]) {
    gap: clamp(7px, 1.5vw, 10px);
    margin: 0 clamp(16px, 4vw, 24px) clamp(3px, .8vw, 6px) 0 !important;
    padding-block: clamp(3px, .7vw, 5px);
}

.wpcf7-form input[type="radio"][name="gender"] {
    appearance: none;
    width: var(--form-radio-size);
    height: var(--form-radio-size);
    margin: 0;
    flex: 0 0 auto;
    border: 2px solid var(--form-control-color);
    border-radius: 50%;
    background-color: var(--form-surface);
    background-clip: content-box;
    cursor: pointer;
    transform: translateY(1px);
    transition: border-color var(--form-transition), box-shadow var(--form-transition), background-color var(--form-transition);
}

.wpcf7-form input[type="radio"][name="gender"]:checked {
    border-color: var(--form-control-color);
    background-color: var(--form-surface);
    background-image: radial-gradient(
        circle at center,
        var(--form-control-color) 0,
        var(--form-control-color) 32%,
        transparent 35%
    );
    box-shadow: none;
}

.wpcf7-form input[type="radio"][name="gender"]:hover:not(:disabled) {
    border-color: var(--form-accent-color);
}

.wpcf7-form input[type="radio"][name="gender"]:focus-visible {
    outline: 0;
    box-shadow: 0 0 0 3px var(--form-focus-ring);
}

.wpcf7-form input[type="radio"][name="gender"]:checked:focus-visible {
    box-shadow: 0 0 0 3px var(--form-focus-ring);
}

.wpcf7-form input[type="radio"][name="gender"] + label {
    display: inline-block;
    width: auto;
    margin: 0;
    line-height: 1.5;
}

/* ================================================================
   ACCEPTANCE
================================================================ */
.wpcf7-form .form-check {
    position: relative;
    max-width: 100%;
    padding-left: 0;
    --agreement-line-height: 1.35;
    --agreement-control-top: calc((1em * var(--agreement-line-height) - var(--form-checkbox-size)) / 2);
}

.wpcf7-form .agreement-agree,
.wpcf7-form .agreement-agree label,
.wpcf7-form .agreement-agree .wpcf7-list-item-label,
.wpcf7-form .agreement-agree :is(.agree-check, input[type="checkbox"]),
.wpcf7-form .legal-more .morelink {
    cursor: pointer;
}

.wpcf7-form .form-check .wpcf7-form-control-wrap[data-name="agree"],
.wpcf7-form .form-check .wpcf7-form-control-wrap[data-name="agree"] :is(.wpcf7-acceptance, .wpcf7-list-item) {
    display: block;
    width: 100%;
    margin: 0;
    padding: 0;
}

.wpcf7-form .form-check .wpcf7-form-control-wrap[data-name="agree"] label {
    position: relative;
    display: block;
    width: 100%;
    margin: 0;
    padding-left: var(--form-checkbox-offset);
    line-height: var(--agreement-line-height);
}

.wpcf7-form .form-check .wpcf7-form-control-wrap[data-name="agree"] .wpcf7-list-item-label,
.wpcf7-form .form-check .wpcf7-form-control-wrap[data-name="agree"] .wpcf7-list-item-label :is(a, a span) {
    display: inline;
    margin: 0;
    line-height: inherit;
}

.wpcf7-form .wpcf7-form-control-wrap:is([data-name="agree"], [data-name="agree-thp"]):has(.check) input[type="checkbox"] {
    position: absolute !important;
    inset: 0 auto auto 0 !important;
    width: 1px !important;
    height: 1px !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    overflow: hidden !important;
    clip: rect(0, 0, 0, 0) !important;
    clip-path: inset(50%) !important;
    opacity: 0 !important;
    white-space: nowrap !important;
    appearance: none !important;
    -webkit-appearance: none !important;
}

.wpcf7-form :is(.agree-check, .agree-thp-check) {
    position: absolute;
    top: var(--agreement-control-top, .15em);
    left: 0;
    display: block;
    width: var(--form-checkbox-size);
    height: var(--form-checkbox-size);
    border: var(--form-checkbox-border-width) solid var(--form-checkbox-border-color);
    border-radius: clamp(2px, .16em, 4px);
    background: var(--form-surface);
    z-index: 1;
}

.wpcf7-form :is(.agree-check, .agree-thp-check)::before,
.wpcf7-form :is(.agree-check, .agree-thp-check)::after {
    content: '';
    position: absolute;
    height: var(--form-checkmark-thickness);
    background: var(--form-checkbox-check-color);
    visibility: hidden;
}

.wpcf7-form :is(.agree-check, .agree-thp-check)::before {
    width: var(--form-checkmark-short);
    top: 60%;
    left: 40%;
    transform: translate(-50%, -50%) rotate(45deg);
}

.wpcf7-form :is(.agree-check, .agree-thp-check)::after {
    width: var(--form-checkmark-long);
    top: 20%;
    left: 110%;
    transform: translate(-50%, -50%) rotate(-45deg);
}

.wpcf7-form input[type="checkbox"]:checked + :is(.agree-check, .agree-thp-check)::before,
.wpcf7-form input[type="checkbox"]:checked + :is(.agree-check, .agree-thp-check)::after {
    visibility: visible;
}

.wpcf7-form input[type="checkbox"]:focus-visible + :is(.agree-check, .agree-thp-check) {
    outline: 2px solid var(--form-checkbox-border-color);
    outline-offset: 2px;
    box-shadow: 0 0 0 3px var(--form-checkbox-focus-color);
}

/* CF7 can render acceptance copy outside its generated label. */
.wpcf7-form .form-check.agree-form-check:has(.agree-label-detached) {
    position: relative;
    padding-left: var(--form-checkbox-offset);
    line-height: var(--agreement-line-height);
}

.wpcf7-form .form-check.agree-form-check:has(.agree-label-detached) > .wpcf7-form-control-wrap[data-name="agree"] {
    position: absolute;
    top: 0;
    left: 0;
    width: var(--form-checkbox-size);
    height: var(--form-checkbox-size);
}

.wpcf7-form .form-check.agree-form-check:has(.agree-label-detached) > .wpcf7-form-control-wrap[data-name="agree"] label,
.wpcf7-form .agree-label-detached > label {
    width: var(--form-checkbox-size);
    height: var(--form-checkbox-size);
    padding: 0;
}

.wpcf7-form .agree-label-detached {
    position: relative;
    padding-left: 0 !important;
    line-height: var(--agreement-line-height);
}

.wpcf7-form .agree-label-detached > label {
    position: absolute !important;
    top: 0;
    left: 0;
    display: block !important;
    margin: 0 !important;
}

.wpcf7-form .agree-label-detached > label .agree-check {
    top: var(--agreement-control-top);
}

/* ================================================================
   THP
================================================================ */
.wpcf7-form .form-check-one.agreement-agree {
    position: relative;
    --agreement-line-height: 1.5;
    --agreement-control-top: calc((1em * var(--agreement-line-height) - var(--form-checkbox-size)) / 2);
    padding-left: var(--form-checkbox-offset);
    color: var(--form-color);
    line-height: var(--agreement-line-height);
}

.wpcf7-form .form-check-one.agreement-agree > .wpcf7-form-control-wrap {
    position: absolute;
    top: var(--agreement-control-top);
    left: 0;
    width: var(--form-checkbox-size);
    height: var(--form-checkbox-size);
}

.wpcf7-form .form-check-one.agreement-agree :is(
    .wpcf7-form-control,
    .wpcf7-list-item,
    .wpcf7-list-item label
) {
    display: block;
    width: var(--form-checkbox-size);
    height: var(--form-checkbox-size);
    margin: 0;
    padding: 0;
}

.wpcf7-form .form-check-one.agreement-agree .wpcf7-list-item label {
    position: relative;
}

.wpcf7-form .form-check-one.agreement-agree .agree-thp-check {
    top: 0;
    left: 0;
}

.wpcf7-form .form-check-one.agreement-agree > .wpcf7-list-item-label {
    display: inline;
    margin: 0;
    color: var(--form-color);
    line-height: inherit;
}

.wpcf7-form .form-check .wpcf7-form-control-wrap[data-name="agree-thp"],
.wpcf7-form .form-check .wpcf7-form-control-wrap[data-name="agree-thp"] :is(.wpcf7-list-item, .wpcf7-list-item-label) {
    display: inline;
    margin: 0;
    padding: 0;
}

.wpcf7-form .form-check .wpcf7-form-control-wrap[data-name="agree-thp"] .wpcf7-list-item,
.wpcf7-form .form-check .wpcf7-form-control-wrap[data-name="agree-thp"] label {
    position: relative;
    display: block;
    width: 100%;
}

.wpcf7-form .form-check .wpcf7-form-control-wrap[data-name="agree-thp"] label {
    padding-left: var(--form-checkbox-offset);
}

.wpcf7-form .form-check .wpcf7-form-control-wrap[data-name="agree-thp"] .agree-thp-check {
    top: .25em;
}

.wpcf7-form .form-check .wpcf7-form-control-wrap[data-name="agree-thp"] label {
    margin: 0;
    line-height: 1.5;
}

.wpcf7-form .wpcf7-form-control-wrap[data-name="agree-thp"] .wpcf7-list-item-label {
    display: inline;
    color: var(--form-color);
    line-height: 1.5;
}

.wpcf7-form .wpcf7-form-control-wrap[data-name="agree-thp"] a {
    text-decoration: underline;
}

.wpcf7-form #acceptAll {
    position: relative;
    top: 1px;
    margin-right: 8px;
}

/* ================================================================
   AGREEMENT
================================================================ */
.wpcf7-form .agreements label.btn-agreement {
    border-color: var(--form-muted-color);
    background-color: var(--form-button-bg);
    background-image: none;
    transition: all var(--form-transition);
}

.wpcf7-form .agreements label.btn-agreement:is(:hover, .active) {
    border-color: var(--form-interaction-color);
    background-color: var(--form-interaction-color);
    color: var(--form-surface);
}

.wpcf7-form .agreements label.btn-agreement:focus-visible {
    outline: 2px solid var(--form-control-color);
    outline-offset: 2px;
}

.wpcf7-form .summary .shipping-options {
    margin: 10px 0;
}

.wpcf7-form .summary .shipping-option {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    width: auto;
    margin: 0 0 12px;
    color: var(--form-color);
    font-size: 16px;
    line-height: 1.5;
}

.wpcf7-form .summary .shipping-option input[type="checkbox"] {
    width: var(--form-checkbox-size);
    height: var(--form-checkbox-size);
    margin-top: 3px;
}

.wpcf7-form .summary .shipping-option.active span {
    font-weight: 600;
}

/* ================================================================
   VALIDATION
================================================================ */
/* Gender: walidacja przez komunikat, bez czerwonej obwódki. */
.wpcf7-form input[type="radio"]:is([name="gender"], [name="y_gender"], [name="y_y_gender"]):is(.is-valid, .is-invalid, .wpcf7-not-valid) {
    border-color: var(--form-choice-color, var(--form-control-color)) !important;
    outline: 0 !important;
    box-shadow: none !important;
}

.wpcf7-form input[type="radio"]:is([name="gender"], [name="y_gender"], [name="y_y_gender"]):is(.is-valid, .is-invalid, .wpcf7-not-valid):focus-visible {
    box-shadow: 0 0 0 3px var(--form-focus-ring) !important;
}

.wpcf7-form input[type="checkbox"]:is(.is-valid, .is-invalid, .wpcf7-not-valid),
.wpcf7-form input[type="checkbox"]:is(.is-valid, .is-invalid, .wpcf7-not-valid) + :is(.agree-check, .agree-thp-check) {
    border-color: var(--form-checkbox-border-color) !important;
}

.wpcf7-form input[type="checkbox"]:is(.is-valid, .is-invalid, .wpcf7-not-valid) {
    background-image: none !important;
}

.wpcf7-form input[type="radio"][name="gender"]:checked:is(.is-valid, .is-invalid, .wpcf7-not-valid) {
    background-image: radial-gradient(
        circle at center,
        var(--form-control-color) 0,
        var(--form-control-color) 32%,
        transparent 35%
    ) !important;
}

.wpcf7-form input[type="radio"][name="gender"]:is(.is-valid, .is-invalid, .wpcf7-not-valid) + label,
.wpcf7-form .form-check-input:is(.is-valid, .is-invalid, .wpcf7-not-valid) ~ .form-check-label,
.wpcf7-form :is(.form-check, .form-check-one):has(input[type="checkbox"]:is(.is-valid, .is-invalid, .wpcf7-not-valid)),
.wpcf7-form .form-check-label.error {
    color: var(--form-color) !important;
}

.gender-error,
.error-agree-label,
.invalid-feedback {
    display: block;
}

.wpcf7-form :is(label.error, .wpcf7-not-valid-tip, .gender-error, .error-agree-label, .invalid-feedback) {
    color: var(--form-validation-color) !important;
    font-size:13px;
}

/* ================================================================
   DISABLED STATE
================================================================ */
.is-disabled,
button[disabled],
input[disabled] {
    opacity: .65;
    pointer-events: none !important;
    cursor: not-allowed !important;
}

@media (prefers-reduced-motion: reduce) {
    .wpcf7-form *,
    .wpcf7-form *::before,
    .wpcf7-form *::after {
        scroll-behavior: auto !important;
        transition-duration: .01ms !important;
    }
}

.wpcf7-not-valid-tip,
.screen-reader-response {
    display: none;
}
.wpcf7-list-item {
    margin: 0 !important;
}
.wpcf7 .ajax-loader {
    display: none !important;
}

.wpcf7 .wpcf7-form .wpcf7-mail-sent-ok { 
    display: none !important; 
}

div.wpcf7-response-output, div.wpcf7-validation-errors { display: none !important; }
span.wpcf7-not-valid-tip { display: none; }  

/* Prefix placeholder behaves like the other floating labels. */
.wpcf7-form .np-label-container select:has(option[value=""]:checked) { color: transparent !important; }
.wpcf7-form .np-label-container select option { color: var(--form-text-color) !important; }
.wpcf7-form .np-label-container select ~ label { pointer-events: none; }
.wpcf7-form .np-label-container select { padding-right: calc(2 * var(--form-padding-x) + 18px); }
.wpcf7-form .np-label-container > .invalid-feedback { margin-top: 4px; width: 100%; }
.wpcf7-form .wpcf7-not-valid-tip { display: block; color: var(--form-validation-color); font-size: 13px; margin-top: 4px; }
.wpcf7-form.np-custom-validation .wpcf7-not-valid-tip { display: none; }
/* .wpcf7-form :is(input.y_phone, select[name="y_prefix"]):is(.is-invalid, .wpcf7-not-valid) {
    border-color: var(--form-validation-color) !important;
} */
.wpcf7-form:not(.np-custom-validation):is(.invalid, .failed, .aborted) .wpcf7-response-output {
    display: block !important;
}



.wpcf7-form .btn-order { font-size:1.2rem !important; }
.wpcf7-form .btn-order .fs-5 { font-size:.9rem !important; }

.wpcf7-form .wpcf7-list-item-label a { color:var(--form-link-color); }
