.vptf-tool {
    --vptf-primary: #247346;
    --vptf-primary-dark: #195c36;
    --vptf-disabled: #4a5f52;
    --vptf-surface: var(--wp--preset--color--base, #ffffff);
    --vptf-soft: #eaf7ef;
    --vptf-text: var(--wp--preset--color--contrast, #222222);
    --vptf-muted: #5f6368;
    --vptf-border: #d6ddd9;
    --vptf-warning: #fff8e5;
    box-sizing: border-box;
    width: 100%;
    max-width: 760px;
    margin: 2rem auto;
    padding: clamp(1.25rem, 4vw, 2.5rem);
    border: 1px solid var(--vptf-border);
    border-radius: 1.5rem;
    background: var(--vptf-surface);
    color: var(--vptf-text);
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.08);
    font-family: inherit;
    line-height: 1.6;
}

.vptf-tool *,
.vptf-tool *::before,
.vptf-tool *::after {
    box-sizing: inherit;
}

.vptf-tool [hidden] {
    display: none !important;
}

/* Cost calculator 1.2.2 — all selectors are confined to this module. */
.vptf-cost-calculator .vptf-cost__tabs { display: grid; grid-template-columns: 1fr 1fr; gap: .5rem; margin: 1.5rem 0; }
.vptf-cost-calculator .vptf-cost__tabs button { min-height: 48px; border: 2px solid #0f4b35; border-radius: 999px; background: #fff; color: #0f4b35; font-weight: 700; cursor: pointer; }
.vptf-cost-calculator .vptf-cost__tabs button[aria-selected="true"] { background: #0f4b35; color: #fff; }
.vptf-cost-calculator fieldset { min-width: 0; margin: 0 0 1rem; padding: 0; border: 0; }
.vptf-cost-calculator fieldset legend { margin-bottom: .6rem; font-weight: 700; }
.vptf-cost-calculator .vptf-choice-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .75rem; }
.vptf-cost-calculator .vptf-choice-grid label { display: flex; align-items: center; gap: .65rem; min-width: 0; padding: .85rem; border: 1px solid #cfd9d4; border-radius: 12px; }
.vptf-cost-calculator .vptf-cost__dog-size { margin: 1rem 0; }
.vptf-cost-calculator .vptf-cost__dog-size > label { display: block; margin-bottom: .35rem; font-weight: 700; }
.vptf-cost-calculator select, .vptf-cost-calculator input[type="number"] { box-sizing: border-box; width: 100%; max-width: 100%; min-height: 48px; border: 1px solid #bdcac4; border-radius: 10px; background: #fff; color: #12241e; padding: .65rem .75rem; font: inherit; }
.vptf-cost-calculator .vptf-cost__values { display: grid; gap: .85rem; margin-top: 1rem; }
.vptf-cost-calculator .vptf-cost__values > label { display: grid; grid-template-columns: minmax(0, 1fr) minmax(145px, 220px); align-items: center; gap: 1rem; }
.vptf-cost-calculator .vptf-money-input { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: .5rem; }
.vptf-cost-calculator .vptf-actions { display: flex; justify-content: space-between; gap: .75rem; margin-top: 1.5rem; }
.vptf-cost-calculator .vptf-field-error { padding: .8rem 1rem; border-left: 4px solid #b42318; background: #fff1f0; color: #7a271a; }
.vptf-cost-calculator .vptf-cost__result { margin-top: 1.5rem; padding-top: 1.5rem; border-top: 1px solid #d8dedb; outline: none; }
.vptf-cost-calculator .vptf-cost__totals { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
.vptf-cost-calculator .vptf-cost__totals > div { padding: 1rem; border-radius: 14px; background: #eef7f1; }
.vptf-cost-calculator .vptf-cost__totals span, .vptf-cost-calculator .vptf-cost__totals strong { display: block; }
.vptf-cost-calculator .vptf-cost__totals strong { margin-top: .35rem; color: #0f4b35; font-size: clamp(1.15rem, 3vw, 1.55rem); }
.vptf-cost-calculator .vptf-cost__breakdown { list-style: none; margin: 1rem 0; padding: 0; }
.vptf-cost-calculator .vptf-cost__breakdown li { margin-bottom: .85rem; }
.vptf-cost-calculator .vptf-cost__breakdown li > div { display: flex; justify-content: space-between; gap: 1rem; }
.vptf-cost-calculator .vptf-cost__bar { display: block; height: 8px; margin-top: .35rem; overflow: hidden; border-radius: 999px; background: #e5e9e7; }
.vptf-cost-calculator .vptf-cost__bar i { display: block; height: 100%; border-radius: inherit; background: #f36a21; }
.vptf-cost-calculator .vptf-cost__source, .vptf-cost-calculator .vptf-cost__notice, .vptf-cost-calculator .vptf-cost__method-note, .vptf-cost-calculator .vptf-products p, .vptf-cost-calculator .vptf-products small { color: #59655f; font-size: .9rem; }
.vptf-cost-calculator .vptf-products { margin-top: 1.5rem; }
.vptf-cost-calculator .vptf-products__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .75rem; }
.vptf-cost-calculator .vptf-product { display: flex; flex-direction: column; gap: .55rem; min-width: 0; padding: 1rem; border: 1px solid #d9dfdc; border-radius: 14px; background: #fff; }
.vptf-cost-calculator .vptf-product h5 { margin: 0; font-size: 1rem; }
.vptf-cost-calculator .vptf-product a { margin-top: auto; color: #0f4b35; font-weight: 700; }
.vptf-cost-calculator .vptf-product__category { color: #8a3b10; font-size: .75rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; }
.vptf-cost-calculator .vptf-product__price { font-weight: 700; }
.vptf-cost-calculator .vptf-product__comparison { font-size: .85rem; }

@media (max-width: 600px) {
    .vptf-cost-calculator .vptf-cost__tabs, .vptf-cost-calculator .vptf-choice-grid, .vptf-cost-calculator .vptf-cost__totals, .vptf-cost-calculator .vptf-products__grid { grid-template-columns: 1fr; }
    .vptf-cost-calculator .vptf-cost__values > label { grid-template-columns: 1fr; gap: .35rem; }
    .vptf-cost-calculator .vptf-actions { flex-direction: column-reverse; }
    .vptf-cost-calculator .vptf-actions .vptf-button { width: 100%; }
    .vptf-cost-calculator .vptf-cost__breakdown li > div { align-items: flex-start; flex-direction: column; gap: .15rem; }
}

@media (prefers-reduced-motion: reduce) {
    .vptf-cost-calculator * { scroll-behavior: auto !important; transition: none !important; }
}

.vptf-intro {
    text-align: center;
}

.vptf-tool h2,
.vptf-tool h3,
.vptf-tool p {
    margin-top: 0;
}

.vptf-tool h2 {
    font-size: clamp(1.75rem, 5vw, 2.375rem);
    line-height: 1.2;
}

.vptf-tool h3 {
    font-size: clamp(1.2rem, 3vw, 1.625rem);
    line-height: 1.3;
}

.vptf-tag {
    display: inline-block;
    margin-bottom: 1rem;
    padding: 0.5rem 0.875rem;
    border-radius: 999px;
    background: var(--vptf-soft);
    color: var(--vptf-primary-dark);
    font-size: 0.875rem;
    font-weight: 700;
}

.vptf-button {
    min-width: 44px;
    min-height: 44px;
    margin: 0;
    padding: 0.75rem 1.4rem;
    border: 2px solid var(--vptf-primary);
    border-radius: 999px;
    font: inherit;
    font-weight: 700;
    line-height: 1.2;
    cursor: pointer;
    transition: background-color 160ms ease, color 160ms ease, border-color 160ms ease;
}

.vptf-button-primary {
    background: var(--vptf-primary);
    color: #ffffff;
}

.vptf-button-secondary {
    background: var(--vptf-surface);
    color: var(--vptf-primary-dark);
}

.vptf-button:hover:not(:disabled) {
    border-color: var(--vptf-primary-dark);
    background: var(--vptf-primary-dark);
    color: #ffffff;
}

.vptf-button:disabled {
    cursor: not-allowed;
}

.vptf-button-primary:disabled {
    border-color: var(--vptf-disabled);
    background: var(--vptf-disabled);
    color: #ffffff;
}

.vptf-button-secondary:disabled {
    border-color: var(--vptf-disabled);
    background: #ffffff;
    color: var(--vptf-disabled);
}

.vptf-button:focus-visible,
.vptf-answer input:focus-visible + label,
.vptf-choice input:focus-visible + label,
.vptf-age-fields input:focus-visible,
.vptf-age-fields select:focus-visible,
.vptf-error:focus-visible,
.vptf-result:focus-visible {
    outline: 3px solid #0b65c2;
    outline-offset: 3px;
}

.vptf-progress-wrap {
    margin-bottom: 1.5rem;
}

.vptf-progress-text {
    margin-bottom: 0.4rem;
    color: var(--vptf-muted);
    font-size: 0.9375rem;
    font-weight: 700;
}

.vptf-progress {
    display: block;
    width: 100%;
    height: 0.75rem;
    border: 0;
    border-radius: 999px;
    overflow: hidden;
    accent-color: var(--vptf-primary);
}

.vptf-question {
    min-width: 0;
    margin: 0;
    padding: 0;
    border: 0;
}

.vptf-question legend {
    width: 100%;
    margin-bottom: 1.25rem;
    padding: 0;
    font-size: clamp(1.2rem, 3vw, 1.5rem);
    font-weight: 700;
    line-height: 1.35;
}

.vptf-answers {
    display: grid;
    gap: 0.75rem;
}

.vptf-answer {
    position: relative;
}

.vptf-answer input {
    position: absolute;
    top: 1.1rem;
    left: 1rem;
    width: 1.25rem;
    height: 1.25rem;
    margin: 0;
    accent-color: var(--vptf-primary);
}

.vptf-answer label {
    display: flex;
    min-height: 52px;
    padding: 0.875rem 1rem 0.875rem 3rem;
    border: 2px solid var(--vptf-border);
    border-radius: 0.75rem;
    align-items: center;
    background: var(--vptf-surface);
    cursor: pointer;
}

.vptf-answer input:checked + label {
    border-color: var(--vptf-primary);
    background: var(--vptf-soft);
}

.vptf-error {
    margin: 1rem 0 0;
    padding: 0.75rem 1rem;
    border-left: 4px solid #b42318;
    background: #fff1f0;
    color: #8a1c13;
    font-weight: 700;
}

.vptf-error-title {
    margin-bottom: 0.35rem;
    font-weight: 700;
}

.vptf-error ul {
    margin: 0;
    padding-inline-start: 1.25rem;
}

.vptf-actions {
    display: flex;
    gap: 0.75rem;
    justify-content: space-between;
    margin-top: 1.5rem;
}

.vptf-result-card h2 {
    color: var(--vptf-primary-dark);
    text-align: center;
}

.vptf-control-group {
    min-width: 0;
    margin: 0 0 1.5rem;
    padding: 0;
    border: 0;
}

.vptf-control-group legend {
    width: 100%;
    margin-bottom: 0.75rem;
    padding: 0;
    font-size: 1.125rem;
    font-weight: 700;
}

.vptf-choice-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.75rem;
}

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

.vptf-choice {
    position: relative;
}

.vptf-choice input {
    position: absolute;
    top: 1rem;
    left: 1rem;
    width: 1.25rem;
    height: 1.25rem;
    margin: 0;
    accent-color: var(--vptf-primary);
}

.vptf-choice label {
    display: flex;
    min-height: 52px;
    padding: 0.75rem 1rem 0.75rem 3rem;
    border: 2px solid var(--vptf-border);
    border-radius: 0.75rem;
    align-items: center;
    background: var(--vptf-surface);
    cursor: pointer;
}

.vptf-choice input:checked + label {
    border-color: var(--vptf-primary);
    background: var(--vptf-soft);
}

.vptf-age-fields {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.75rem;
}

.vptf-age-fields label {
    display: block;
    margin-bottom: 0.35rem;
    font-weight: 700;
}

.vptf-age-fields input,
.vptf-age-fields select {
    width: 100%;
    min-height: 44px;
    margin: 0;
    padding: 0.65rem 0.75rem;
    border: 2px solid var(--vptf-border);
    border-radius: 0.625rem;
    background: var(--vptf-surface);
    color: var(--vptf-text);
    font: inherit;
}

.vptf-help {
    color: var(--vptf-muted);
    font-size: 0.9375rem;
}

.vptf-source-note {
    margin: 0 0 1.5rem;
    padding: 0.875rem 1rem;
    border: 1px solid var(--vptf-border);
    border-radius: 0.75rem;
    background: #f7f9f8;
}

.vptf-source-note summary {
    min-height: 44px;
    font-weight: 700;
    cursor: pointer;
}

.vptf-source-note p:last-child {
    margin-bottom: 0;
}

.vptf-age-result {
    margin-top: 1.5rem;
}

.vptf-age-equivalent,
.vptf-age-phase {
    padding: 0.875rem;
    border-radius: 0.75rem;
    background: var(--vptf-soft);
}

.vptf-age-equivalent {
    font-size: 1.125rem;
}

.vptf-age-explanation {
    margin-top: 1rem;
}

.vptf-coverage-message {
    padding: 0.875rem;
    border-left: 4px solid #9a6700;
    border-radius: 0.5rem;
    background: var(--vptf-warning);
    font-weight: 700;
}

.vptf-profile-quote {
    margin: 1.25rem 0;
    padding: 1rem;
    border-left: 5px solid var(--vptf-primary);
    border-radius: 0.625rem;
    background: #f4f7f6;
    font-style: italic;
}

.vptf-result-section {
    margin-top: 1.5rem;
}

.vptf-result-section ul {
    padding-inline-start: 1.4rem;
}

.vptf-article-list li {
    margin-bottom: 0.625rem;
}

.vptf-article-list a {
    color: var(--vptf-primary-dark);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 0.18em;
}

.vptf-disclaimer,
.vptf-message {
    margin-top: 1.25rem;
    padding: 0.875rem;
    border-radius: 0.625rem;
    background: var(--vptf-warning);
    color: #4f4530;
    font-size: 0.875rem;
}

.vptf-restart {
    display: block;
    margin: 1.75rem auto 0;
}

.vptf-screen-reader-text {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

@media (max-width: 600px) {
    .vptf-tool {
        margin: 1rem auto;
        padding: 1.25rem;
        border-radius: 1.125rem;
    }

    .vptf-actions {
        flex-direction: column-reverse;
    }

    .vptf-button {
        width: 100%;
    }

    .vptf-choice-grid,
    .vptf-size-grid,
    .vptf-age-fields {
        grid-template-columns: 1fr;
    }
}

@media (prefers-reduced-motion: reduce) {
    .vptf-tool *,
    .vptf-tool *::before,
    .vptf-tool *::after {
        scroll-behavior: auto !important;
        transition-duration: 0.01ms !important;
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
    }
}
