/* Budget calculator (page module [site:budget-calc]). Loaded only on pages that render it.
   Colours come from the per-site brand tokens. One container per level: the module root is flat,
   only the result card and the comparison table are boxed. */
.bdg {
    --bdg-ink: var(--gym-dark, #24211e);
    --bdg-muted: color-mix(in srgb, var(--bdg-ink) 62%, transparent);
    --bdg-line: color-mix(in srgb, var(--bdg-ink) 14%, transparent);
    --bdg-accent: var(--gym-accent, #db5a32);
    --bdg-strong: var(--gym-button, var(--bdg-accent));
    --bdg-paper: var(--gym-paper, #f6f1ea);
    margin-block: 32px;
    color: var(--bdg-ink);
    font-family: var(--gym-font-body, 'Montserrat', ui-sans-serif, system-ui, sans-serif);
    font-size: .9375rem;
    line-height: 1.5;
}

.bdg *, .bdg *::before, .bdg *::after { box-sizing: border-box; }
.bdg [hidden] { display: none !important; }

.bdg__head { display: grid; gap: 6px; margin-bottom: clamp(18px, 2.4vw, 26px); }
.bdg__eyebrow { color: var(--bdg-accent); font-size: .7rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }
.bdg__title { font-size: clamp(1.25rem, 2.6vw, 1.6rem); font-weight: 600; line-height: 1.2; letter-spacing: -.02em; }
.bdg__lead { max-width: 62ch; color: var(--bdg-muted); }

/* ---------- Formats ---------- */
.bdg__formats { display: grid; gap: 8px; }
@media (min-width: 720px) { .bdg__formats { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.bdg__format {
    display: grid; grid-template-columns: 40px minmax(0, 1fr); gap: 12px; align-items: center; padding: 12px 14px; text-align: left;
    border: 1px solid var(--bdg-line); border-radius: 16px; background: transparent; color: inherit; font: inherit; cursor: pointer;
    transition: border-color .15s ease, background-color .15s ease;
}
.bdg__format:hover { border-color: var(--bdg-accent); }
.bdg__format:focus-visible, .bdg__number:focus-visible, .bdg__check-input:focus-visible + .bdg__box { outline: 2px solid var(--bdg-accent); outline-offset: 2px; }
.bdg__format-text { display: grid; gap: 1px; }
.bdg__format-text strong { font-size: .95rem; font-weight: 650; }
.bdg__format-text small { color: var(--bdg-muted); font-size: .8rem; line-height: 1.35; }
.bdg__format[aria-checked="true"] { border-color: var(--bdg-accent); background: color-mix(in srgb, var(--bdg-accent) 9%, transparent); }

/* ---------- Lines ---------- */
.bdg__layout { display: grid; gap: 22px; margin-top: 22px; align-items: start; }
@media (min-width: 980px) { .bdg__layout { grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: 32px; } .bdg__result { position: sticky; top: 24px; } }
.bdg__lines { display: grid; gap: 0; }
.bdg__lines-title { padding-bottom: 8px; color: var(--bdg-muted); font-size: .72rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.bdg__line { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px 14px; align-items: center; padding: 12px 0; border-top: 1px solid var(--bdg-line); }
.bdg__line.is-off .bdg__fields, .bdg__line.is-off .bdg__line-total, .bdg__line.is-off .bdg__visits { opacity: .38; }
.bdg__line.is-off .bdg__name strong { color: var(--bdg-muted); }
.bdg__check { display: grid; grid-template-columns: auto 40px minmax(0, 1fr); gap: 12px; align-items: center; cursor: pointer; }
.bdg__check-input { position: absolute; opacity: 0; pointer-events: none; }
.bdg__box { position: relative; width: 22px; height: 22px; border: 1.5px solid var(--bdg-line); border-radius: 7px; background: #fff; transition: background-color .15s ease, border-color .15s ease; }
.bdg__box::after { position: absolute; inset: 4px; background: #fff; -webkit-mask: var(--bdg-tick) center / contain no-repeat; mask: var(--bdg-tick) center / contain no-repeat; content: ''; opacity: 0; transition: opacity .15s ease; }
.bdg__check-input:checked + .bdg__box { border-color: var(--bdg-accent); background: var(--bdg-accent); }
.bdg__check-input:checked + .bdg__box::after { opacity: 1; }
.bdg__name { display: grid; gap: 1px; min-width: 0; }
.bdg__name strong { font-size: .95rem; font-weight: 650; line-height: 1.3; }
.bdg__name small { color: var(--bdg-muted); font-size: .8rem; line-height: 1.35; }
.bdg__fields { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: 4px 6px; grid-column: 1 / -1; padding-left: 74px; }
.bdg__field { display: inline-flex; align-items: center; gap: 6px; }
.bdg__number {
    width: 7ch; min-width: 0; padding: 7px 8px; border: 1px solid var(--bdg-line); border-radius: 10px; background: #fff; color: var(--bdg-ink);
    font: inherit; font-weight: 600; text-align: right; font-variant-numeric: tabular-nums; -moz-appearance: textfield; appearance: textfield;
}
.bdg__number::-webkit-outer-spin-button, .bdg__number::-webkit-inner-spin-button { margin: 0; -webkit-appearance: none; }
.bdg__number--small { width: 5ch; }
.bdg__unit { color: var(--bdg-muted); font-size: .8rem; white-space: nowrap; }
.bdg__times { color: var(--bdg-muted); }
.bdg__line-total { grid-row: 1; grid-column: 2; font-weight: 650; font-variant-numeric: tabular-nums; white-space: nowrap; }
.bdg__visits { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 12px; grid-column: 1 / -1; padding-left: 74px; color: var(--bdg-muted); font-size: .85rem; }
.bdg__visits-label { font-size: .8rem; }
.bdg__visit-price { font-weight: 650; color: var(--bdg-ink); font-variant-numeric: tabular-nums; }

/* ---------- Result card ---------- */
.bdg__result { padding: clamp(16px, 2.6vw, 26px); border: 1px solid var(--bdg-line); border-radius: 20px; background: #fff; }
.bdg__result-top { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 6px 12px; }
.bdg__result-label { color: var(--bdg-muted); font-size: .72rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.bdg__badge { padding: 3px 10px; border-radius: 999px; background: color-mix(in srgb, var(--bdg-accent) 12%, transparent); font-size: .72rem; font-weight: 700; }
.bdg__total { margin-top: 6px; color: var(--bdg-accent); font-size: clamp(2rem, 4.4vw, 2.9rem); font-weight: 650; letter-spacing: -.03em; line-height: 1.1; font-variant-numeric: tabular-nums; }
.bdg__month { min-height: 1.5em; color: var(--bdg-muted); font-size: .9rem; }
.bdg__bar { display: flex; gap: 2px; height: 14px; margin-top: 14px; overflow: hidden; border-radius: 999px; background: color-mix(in srgb, var(--bdg-ink) 6%, transparent); }
.bdg__seg, .bdg__dot { --m: 100%; background: color-mix(in srgb, var(--bdg-accent) var(--m), var(--bdg-paper)); }
.bdg__seg { flex: 1 1 0; min-width: 4px; transition: flex-grow .3s ease; }
.bdg .bdg__list { display: grid; gap: 4px; margin: 14px 0 0; padding: 0; list-style: none; }
.bdg .bdg__item { display: grid; grid-template-columns: 10px 28px minmax(0, 1fr) auto auto; gap: 10px; align-items: center; margin: 0; padding: 6px 0; font-size: .9rem; line-height: 1.3; }
.bdg .bdg__item::before { content: none; }
.bdg__dot { width: 10px; height: 10px; border-radius: 50%; }
.bdg__item-share { color: var(--bdg-muted); font-size: .8rem; font-variant-numeric: tabular-nums; }
.bdg__item-sum { min-width: 9ch; font-weight: 650; text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.bdg__open { margin-top: 14px; padding: 12px 14px; border-radius: 14px; background: color-mix(in srgb, var(--bdg-accent) 8%, transparent); }
.bdg__open-title { font-size: .72rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.bdg__open-chips { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.bdg__chip { padding: 3px 10px; border: 1px solid var(--bdg-line); border-radius: 999px; background: #fff; font-size: .8rem; font-weight: 600; }
.bdg__open-hint { margin-top: 8px; color: var(--bdg-muted); font-size: .85rem; }
.bdg__note { margin-top: 14px; color: var(--bdg-muted); font-size: .85rem; line-height: 1.5; }

/* ---------- Icons ---------- */
.bdg__icon { display: block; flex: none; width: 40px; height: 40px; border-radius: 12px; background: color-mix(in srgb, var(--bdg-accent) 12%, transparent); position: relative; }
.bdg__icon::after { position: absolute; inset: 8px; background: var(--bdg-accent); -webkit-mask: var(--bdg-icon) center / contain no-repeat; mask: var(--bdg-icon) center / contain no-repeat; content: ''; }
.bdg__icon--small { width: 28px; height: 28px; border-radius: 9px; }
.bdg__icon--small::after { inset: 5px; }
.bdg { --bdg-tick: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48' fill='none' stroke='%23000' stroke-width='6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 25l10 10 20-22'/%3E%3C/svg%3E"); }

.bdg__icon--classes { --bdg-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48' fill='none' stroke='%23000' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='7' y='10' width='34' height='31' rx='5'/%3E%3Cpath d='M7 20h34M16 6v8M32 6v8'/%3E%3C/svg%3E"); }
.bdg__icon--kit { --bdg-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48' fill='none' stroke='%23000' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M17 7L7 13l4 8 5-3v22h16V18l5 3 4-8-10-6c-1.5 3.5-4 5-7 5s-5.500-1.500-7-5z'/%3E%3C/svg%3E"); }
.bdg__icon--docs { --bdg-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48' fill='none' stroke='%23000' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 5h16l9 9v29H12zM28 5v9h9M18 25h14M18 33h14'/%3E%3C/svg%3E"); }
.bdg__icon--starts, .bdg__icon--format-local { --bdg-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48' fill='none' stroke='%23000' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10 42V6'/%3E%3Cpath d='M10 8h26l-6 9 6 9H10'/%3E%3C/svg%3E"); }
.bdg__icon--road { --bdg-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48' fill='none' stroke='%23000' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M24 43S10 30.500 10 20a14 14 0 0 1 28 0c0 10.500-14 23-14 23z'/%3E%3Ccircle cx='24' cy='20' r='5'/%3E%3C/svg%3E"); }
.bdg__icon--costume { --bdg-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48' fill='none' stroke='%23000' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M24 5l5 14 14 5-14 5-5 14-5-14-14-5 14-5z'/%3E%3C/svg%3E"); }
.bdg__icon--music { --bdg-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48' fill='none' stroke='%23000' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18 36V10l20-4v26'/%3E%3Ccircle cx='13' cy='37' r='5'/%3E%3Ccircle cx='33' cy='33' r='5'/%3E%3C/svg%3E"); }
.bdg__icon--private { --bdg-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48' fill='none' stroke='%23000' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='24' cy='15' r='7'/%3E%3Cpath d='M9 42c0-8.500 6.500-14 15-14s15 5.500 15 14'/%3E%3C/svg%3E"); }
.bdg__icon--trip, .bdg__icon--format-season { --bdg-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48' fill='none' stroke='%23000' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M43 5L5 21l14 6 6 14z'/%3E%3Cpath d='M19 27L43 5'/%3E%3C/svg%3E"); }
.bdg__icon--camps { --bdg-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48' fill='none' stroke='%23000' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 40L24 8l20 32zM24 8v32M16 40l8-14 8 14'/%3E%3C/svg%3E"); }
.bdg__icon--format-intro { --bdg-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48' fill='none' stroke='%23000' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='24' cy='24' r='16'/%3E%3Cpath d='M8 24c8 4 24 4 32 0M24 8c-6 8-6 24 0 32'/%3E%3C/svg%3E"); }

/* ---------- Comparison table ---------- */
.bdg__sheet { margin-top: clamp(26px, 3.6vw, 40px); }
.bdg__sheet-title { margin-bottom: 12px; font-size: 1.05rem; font-weight: 600; letter-spacing: -.01em; }
.bdg__table-wrap { overflow-x: auto; border: 1px solid var(--bdg-line); border-radius: 18px; -webkit-overflow-scrolling: touch; }
.bdg .bdg__table { display: table; width: 100%; min-width: 600px; max-width: none; margin: 0; border: 0; border-radius: 0; border-collapse: collapse; background: transparent; color: inherit; font-size: .875rem; font-variant-numeric: tabular-nums; }
.bdg .bdg__table :is(th, td) { min-width: 0; padding: 10px 12px; border: 0; border-bottom: 1px solid var(--bdg-line); background: transparent; font-size: .875rem; line-height: 1.4; text-align: left; vertical-align: middle; text-transform: none; letter-spacing: normal; }
.bdg .bdg__table thead th { color: var(--bdg-muted); font-size: .7rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; white-space: nowrap; }
.bdg .bdg__table tbody th, .bdg .bdg__table tfoot th { font-weight: 600; }
.bdg .bdg__table th small { display: block; color: var(--bdg-muted); font-size: .78rem; font-weight: 500; }
.bdg .bdg__table td { white-space: nowrap; }
.bdg .bdg__table tbody tr:last-child :is(th, td) { border-bottom: 0; }
.bdg .bdg__table tfoot :is(th, td) { border-top: 1px solid var(--bdg-line); border-bottom: 0; font-weight: 700; }
.bdg .bdg__table tbody tr, .bdg .bdg__table tbody tr:nth-child(even), .bdg .bdg__table tfoot tr { background: transparent; }

@media (max-width: 520px) {
    .bdg__fields, .bdg__visits { padding-left: 0; justify-content: flex-start; }
    .bdg .bdg__item { grid-template-columns: 10px minmax(0, 1fr) auto auto; }
    .bdg .bdg__item .bdg__icon { display: none; }
}
@media (prefers-reduced-motion: reduce) { .bdg * { transition: none !important; } }
