/* ─── Viisi Tools – formulier styling ─────────────────────────── */
:root {
    /* Viisi merkpalet */
    --vt-blackish:     #002333;
    --vt-grey:         #7D7D7D;
    --vt-purple:       #D5B2D4;
    --vt-pink:         #F5979A;
    --vt-green:        #98D4CA;
    --vt-yellow:       #FFC445;
    --vt-red:          #CA433D;
    --vt-sand:         #F6F4ED;

    /* Afgeleide tonen */
    --vt-green-dark:   #67B6A3;
    --vt-green-bg:     #EDF7F5;
    --vt-purple-bg:    #F4EDF4;
    --vt-red-bg:       #FCEAEA;
    --vt-sand-dark:    #EAE8E0;
    --vt-grey-light:   #E3E3E3;
    --vt-grey-lighter: #F7F7F7;
    --vt-white:        #FFFFFF;

    --vt-radius:       8px;
    --vt-shadow:       0 1px 4px rgba(0,35,51,.07);
    --vt-shadow-md:    0 4px 16px rgba(0,35,51,.10);
    --vt-focus-ring:   0 0 0 3px rgba(152,212,202,.30);
}

/* Card */
.tool-card {
    background: var(--vt-white);
    border: 1px solid var(--vt-grey-light);
    border-radius: 12px;
    padding: 1.5rem;
    box-shadow: var(--vt-shadow);
}

/* Grid */
.tool-grid { display: grid; gap: 1.5rem; }
@media (min-width: 768px) { .tool-grid-2 { grid-template-columns: 1fr 1fr; } }

/* Section heading inside card */
.tool-heading {
    font-size: .6875rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .06em;
    color: var(--vt-grey);
    padding-bottom: .75rem;
    margin-bottom: 1rem;
    border-bottom: 1px solid var(--vt-grey-light);
}

/* Field wrapper */
.tool-field { margin-bottom: 1.125rem; }
.tool-field:last-child { margin-bottom: 0; }

/* Label */
.tool-label {
    display: block;
    font-size: .8125rem;
    font-weight: 600;
    color: var(--vt-blackish);
    margin-bottom: .375rem;
}

/* Plain input / select / textarea */
.tool-input,
.tool-select,
.tool-textarea {
    width: 100%;
    padding: .5625rem .875rem;
    font-size: .875rem;
    color: var(--vt-blackish);
    background: var(--vt-grey-lighter);
    border: 1px solid var(--vt-grey-light);
    border-radius: var(--vt-radius);
    outline: none;
    transition: border-color .15s, box-shadow .15s, background .15s;
    font-family: inherit;
    box-sizing: border-box;
}
.tool-input:focus,
.tool-select:focus,
.tool-textarea:focus {
    background: var(--vt-white);
    border-color: var(--vt-green);
    box-shadow: var(--vt-focus-ring);
}
.tool-textarea { resize: vertical; }

/* Input with prefix/suffix (€, %) */
.tool-input-group {
    display: flex;
    border: 1px solid var(--vt-grey-light);
    border-radius: var(--vt-radius);
    overflow: hidden;
    background: var(--vt-grey-lighter);
    transition: border-color .15s, box-shadow .15s;
}
.tool-input-group:focus-within {
    border-color: var(--vt-green);
    box-shadow: var(--vt-focus-ring);
    background: var(--vt-white);
}
.tool-input-group input,
.tool-input-group select {
    flex: 1;
    padding: .5625rem .875rem;
    font-size: .875rem;
    color: var(--vt-blackish);
    background: transparent;
    border: none;
    outline: none;
    font-family: inherit;
    min-width: 0;
}
.tool-affix {
    display: flex;
    align-items: center;
    padding: 0 .75rem;
    font-size: .875rem;
    font-weight: 600;
    color: var(--vt-green-dark);
    background: var(--vt-green-bg);
    border-right: 1px solid var(--vt-grey-light);
    white-space: nowrap;
    flex-shrink: 0;
    user-select: none;
}
.tool-affix-right {
    border-right: none;
    border-left: 1px solid var(--vt-grey-light);
}

/* Radio group */
.tool-radio-group { display: flex; flex-wrap: wrap; gap: .5rem 1.25rem; }
.tool-radio-label {
    display: flex;
    align-items: center;
    gap: .4rem;
    font-size: .875rem;
    color: var(--vt-blackish);
    cursor: pointer;
}
.tool-radio-label input[type="radio"],
.tool-radio-label input[type="checkbox"] {
    accent-color: var(--vt-green);
    width: 15px;
    height: 15px;
    flex-shrink: 0;
}

/* Buttons */
.tool-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .4rem;
    padding: .625rem 1.375rem;
    font-size: .875rem;
    font-weight: 600;
    border-radius: var(--vt-radius);
    border: none;
    cursor: pointer;
    transition: background .15s, transform .1s, box-shadow .15s;
    font-family: inherit;
}
.tool-btn:disabled { opacity: .55; cursor: not-allowed; transform: none !important; }
.tool-btn-primary { background: var(--vt-green); color: var(--vt-blackish); }
.tool-btn-primary:not(:disabled):hover {
    background: var(--vt-yellow);
    transform: translateY(-1px);
    box-shadow: 0 4px 12px rgba(255,196,69,.35);
}
.tool-btn-secondary {
    background: var(--vt-white);
    color: var(--vt-blackish);
    border: 1px solid var(--vt-grey-light);
}
.tool-btn-secondary:not(:disabled):hover { background: var(--vt-grey-lighter); }

/* Result table */
.tool-result-title { font-size: 1.25rem; font-weight: 700; color: var(--vt-blackish); margin-bottom: .2rem; }
.tool-result-sub   { font-size: .8125rem; color: var(--vt-grey); margin-bottom: 1.25rem; }
.tool-result-table { width: 100%; font-size: .875rem; border-collapse: collapse; }
.tool-result-table td {
    padding: .5rem 0;
    border-bottom: 1px solid var(--vt-grey-lighter);
    vertical-align: middle;
}
.tool-result-table td:last-child { text-align: right; font-weight: 600; color: var(--vt-blackish); }
.tool-result-table td:first-child { color: var(--vt-grey); }

/* Placeholder / spinner */
.tool-empty {
    display: flex; flex-direction: column; align-items: center;
    justify-content: center; gap: .75rem;
    padding: 3rem 1rem;
    color: var(--vt-grey); font-size: .875rem; text-align: center;
}
.tool-empty svg { opacity: .35; }
.tool-spinner {
    display: flex; align-items: center; justify-content: center;
    gap: .75rem; padding: 3rem;
    color: var(--vt-grey); font-size: .875rem;
}

/* Error */
.tool-error {
    background: var(--vt-red-bg);
    border: 1px solid rgba(202,67,61,.25);
    border-left: 3px solid var(--vt-red);
    border-radius: var(--vt-radius);
    padding: .875rem 1rem; font-size: .875rem; color: var(--vt-red);
}

/* URL copy box */
.tool-url-box {
    width: 100%; box-sizing: border-box;
    padding: .625rem .875rem;
    font-size: .8125rem; font-family: monospace;
    background: var(--vt-grey-lighter);
    border: 1px solid var(--vt-grey-light);
    border-radius: var(--vt-radius);
    color: var(--vt-blackish); cursor: pointer;
}
.tool-url-box:focus { outline: none; border-color: var(--vt-green); }

/* Divider */
.tool-divider { border: none; border-top: 1px solid var(--vt-grey-light); margin: 1.25rem 0; }

/* Vue/Livewire toggle */
.hidden--element { display: none !important; }

/* Spin keyframe */
@keyframes spin { to { transform: rotate(360deg); } }

/* Alpine x-cloak */
[x-cloak] { display: none !important; }

/* ─── API response tables (Bootstrap .table / .table-striped) ──────────────
   Overrides Bootstrap defaults so API-returned HTML fits the tool design.
   Handles both ORV-style (thead/tbody) and annuiteit-style (bare tr/th/td). */

/* Bootstrap alert → prominent result card */
.tool-api-result .alert {
    border-radius: var(--vt-radius);
    padding: .875rem 1.125rem;
    font-size: .9375rem;
    margin-bottom: 1.25rem;
    border: none;
}
.tool-api-result .alert-success {
    background: var(--vt-green-bg);
    color: var(--vt-blackish);
    border-left: 3px solid var(--vt-green-dark);
}
.tool-api-result .alert-success strong {
    font-weight: 700;
}

.tool-api-result .table {
    width: 100%;
    font-size: .875rem;
    border-collapse: collapse;
    margin-bottom: 1.25rem;
}

/* th — works for both thead > tr > th  and  bare tr > th */
.tool-api-result .table th {
    font-size: .75rem;
    font-weight: 600;
    color: var(--vt-blackish);
    padding: .5rem .75rem .5rem 0;
    border-bottom: 2px solid var(--vt-grey-light);
    border-top: none;
    white-space: nowrap;
    text-align: left;
}

/* ORV summary table: single colspan header styled as section heading */
.tool-api-result .table thead th[colspan] {
    font-size: .6875rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .06em;
    color: var(--vt-grey);
    padding: 0 0 .75rem;
    border-bottom: 1px solid var(--vt-grey-light);
}

/* td — works for both tbody > tr > td  and  bare tr > td */
.tool-api-result .table td {
    padding: .5rem .75rem .5rem 0;
    border-bottom: 1px solid var(--vt-grey-lighter);
    border-top: none;
    color: var(--vt-grey);
    vertical-align: middle;
}

/* Last column: right-aligned, dark, bold */
.tool-api-result .table td:last-child,
.tool-api-result .table th:last-child {
    text-align: right;
    padding-right: 0;
    font-weight: 600;
    color: var(--vt-blackish);
}

/* First column: dark */
.tool-api-result .table td:first-child,
.tool-api-result .table th:first-child {
    color: var(--vt-blackish);
    font-weight: 500;
    padding-left: 0;
}

/* ORV summary only: separator column (€ / :) — only on the non-striped summary table */
.tool-api-result--orv .table:not(.table-striped) td:nth-child(2) {
    width: 1.5rem;
    color: var(--vt-grey-light);
    text-align: center;
    font-weight: 400;
    padding-right: 0;
}

/* Alternating rows on every table (not just .table-striped) */
.tool-api-result .table tr:nth-child(odd)  td { background: var(--vt-grey-lighter); }
.tool-api-result .table tr:nth-child(even) td { background: var(--vt-white); }

/* …except the ORV summary table header row (thead has no background) */
.tool-api-result .table thead tr td,
.tool-api-result .table thead tr th { background: transparent !important; }

/* Footer paragraph */
.tool-api-result p {
    font-size: .75rem;
    color: var(--vt-grey);
    margin-top: .5rem;
    line-height: 1.5;
}

/* ─── Adviesblok ───────────────────────────────────────────────────────────
   Twee-kolom layout: donkere sidebar links + content rechts.
   Alle inline styles in adviesblok.blade.php zijn hernoemd naar deze klassen.
   ───────────────────────────────────────────────────────────────────────── */

/* Layout */
.adv-layout {
    display: grid;
    grid-template-columns: 210px 1fr;
    gap: 1.5rem;
    align-items: start;
}

/* ── Sidebar ── */
.adv-sidebar {
    background: var(--vt-blackish);
    border-radius: 12px;
    overflow: hidden;
    position: sticky;
    top: 1.5rem;
    box-shadow: var(--vt-shadow-md);
}

.adv-sidebar-meta {
    padding: .875rem 1rem;
    border-bottom: 1px solid rgba(255,255,255,.08);
}
.adv-sidebar-meta-id {
    font-size: .6875rem;
    font-weight: 600;
    color: rgba(255,255,255,.4);
    text-transform: uppercase;
    letter-spacing: .08em;
    margin-bottom: .2rem;
}
.adv-sidebar-meta-naam {
    font-size: .9375rem;
    font-weight: 700;
    color: var(--vt-white);
    line-height: 1.3;
}
.adv-sidebar-meta-partner {
    font-size: .8125rem;
    color: rgba(255,255,255,.5);
    margin-top: .1rem;
}

/* Nav items */
.adv-nav {
    padding: .375rem 0;
}
.adv-nav-item {
    display: flex;
    align-items: center;
    gap: .5rem;
    width: 100%;
    padding: .5rem 1rem;
    text-align: left;
    border: none;
    background: transparent;
    cursor: pointer;
    border-left: 3px solid transparent;
    transition: background .15s, border-color .15s;
}
.adv-nav-item:hover {
    background: rgba(255,255,255,.06);
}
.adv-nav-item.adv-nav-actief {
    background: rgba(152,212,202,.15);
    border-left-color: var(--vt-green);
}
.adv-nav-nr {
    font-size: .625rem;
    font-family: monospace;
    color: rgba(255,255,255,.3);
    width: 22px;
    flex-shrink: 0;
}
.adv-nav-label {
    font-size: .8125rem;
    font-weight: 500;
    color: rgba(255,255,255,.7);
}
.adv-nav-item.adv-nav-actief .adv-nav-label {
    color: var(--vt-white);
}

/* Sidebar acties */
.adv-sidebar-acties {
    padding: .875rem 1rem;
    border-top: 1px solid rgba(255,255,255,.08);
    display: flex;
    flex-direction: column;
    gap: .5rem;
}

/* ── Slide section label (boven sub-blokken in een kaart) ── */
.adv-section-label {
    font-size: .6875rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .07em;
    color: var(--vt-grey);
    margin-bottom: .75rem;
}

/* ── Klantgegevens header kaart ── */
.adv-header-card {
    background: var(--vt-white);
    border: 1px solid var(--vt-grey-light);
    border-radius: 12px;
    padding: 1.25rem 1.5rem;
    margin-bottom: 1.5rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    box-shadow: var(--vt-shadow);
}
.adv-header-title {
    font-size: 1.0625rem;
    font-weight: 700;
    color: var(--vt-blackish);
}
.adv-header-sub {
    font-size: .8125rem;
    color: var(--vt-grey);
    margin-top: .15rem;
}
.adv-header-meta {
    display: flex;
    gap: 1.5rem;
    align-items: center;
    flex-shrink: 0;
}
.adv-header-meta-item {
    text-align: right;
}
.adv-header-meta-label {
    font-size: .6875rem;
    color: var(--vt-grey);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .06em;
}
.adv-header-meta-value {
    font-size: .875rem;
    font-weight: 600;
    color: var(--vt-blackish);
}

/* ── Slide kop (titre boven een slide) ── */
.adv-slide-kop {
    margin-bottom: 1.25rem;
}
.adv-slide-nr {
    font-size: .6875rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .1em;
    color: var(--vt-green-dark);
    margin-bottom: .2rem;
}
.adv-slide-titel {
    font-size: 1.1875rem;
    font-weight: 700;
    color: var(--vt-blackish);
}

/* ── Zoekresultaten ── */
.adv-result-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: .875rem 1rem;
    border: 1px solid var(--vt-grey-light);
    border-radius: var(--vt-radius);
    background: var(--vt-sand);
    transition: border-color .15s, background .15s;
}
.adv-result-item:hover {
    border-color: var(--vt-green);
    background: var(--vt-green-bg);
}
.adv-result-naam {
    font-size: .9375rem;
    font-weight: 600;
    color: var(--vt-blackish);
}
.adv-result-sub {
    font-size: .8125rem;
    color: var(--vt-grey);
    margin-top: .125rem;
}

/* ── Sub-grid in kaarten (2 kolommen) ── */
.adv-grid-2 {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1.25rem;
}
@media (max-width: 900px) {
    .adv-grid-2 { grid-template-columns: 1fr; }
    .adv-layout  { grid-template-columns: 1fr; }
}

/* ── Navigatieknoppen onderaan slides ── */
.adv-slide-nav {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-top: 1.5rem;
    padding-top: 1.25rem;
    border-top: 1px solid var(--vt-grey-light);
}

/* ── Zoek-stap container ── */
.adv-search-card {
    max-width: 480px;
}
.adv-results-card {
    max-width: 580px;
}
