/* Budget is a native Coach Toolkit module. Every selector is scoped so the
   standalone helper's generic CSS can never leak into the host application. */
.budget-shell{display:grid;gap:14px;padding-bottom:12px}
.budget-shell *{min-width:0}
.budget-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.budget-head h2,.budget-head h3{margin:0}
.budget-kicker{font-family:Helvetica,Arial,sans-serif;font-size:10px;font-weight:800;letter-spacing:.11em;text-transform:uppercase;color:var(--accent)}
.budget-title{font-family:Helvetica,Arial,sans-serif;font-size:22px;line-height:1.1;margin:3px 0 4px;color:var(--ink)}
.budget-tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;padding:4px;background:var(--surface-2);border:1px solid var(--line);border-radius:12px}
.budget-tab{min-height:44px;border:0;border-radius:9px;background:transparent;color:var(--mut);font:700 12px/1 Helvetica,Arial,sans-serif;cursor:pointer}
.budget-tab[aria-selected="true"]{background:var(--surface);color:var(--accent);box-shadow:0 1px 2px rgba(0,0,0,.08)}
.budget-hero{position:relative;overflow:hidden;border-color:color-mix(in srgb,var(--accent) 52%,var(--line));padding:17px}
.budget-hero:before{content:"";position:absolute;inset:0 auto 0 0;width:4px;background:var(--accent)}
.budget-hero-grid{display:grid;grid-template-columns:1fr;gap:14px}
.budget-hero-copy{padding-left:4px}
.budget-hero-copy p{margin:5px 0 0;color:var(--mut);font-size:13px}
.budget-kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}
.budget-kpi{background:var(--surface-2);border:1px solid var(--line);border-radius:11px;padding:11px 8px;text-align:center}
.budget-kpi b{display:block;font:750 17px/1.15 Helvetica,Arial,sans-serif;color:var(--ink);font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.budget-kpi span{display:block;margin-top:5px;font:700 9px/1.2 Helvetica,Arial,sans-serif;letter-spacing:.06em;text-transform:uppercase;color:var(--mut)}
.budget-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.budget-actions>.btn{flex:0 1 auto}
.budget-stack{display:grid;gap:10px}
.budget-event{width:100%;text-align:left;color:inherit;cursor:pointer;display:block;position:relative}
.budget-event:hover{border-color:color-mix(in srgb,var(--accent) 60%,var(--line))}
.budget-event:active{transform:translateY(1px)}
.budget-event-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.budget-event-title{font:750 16px/1.22 Helvetica,Arial,sans-serif;color:var(--ink)}
.budget-meta{margin-top:4px;font:600 11px/1.4 Helvetica,Arial,sans-serif;color:var(--mut)}
.budget-status{display:inline-flex;align-items:center;min-height:26px;padding:4px 8px;border-radius:999px;background:var(--surface-2);color:var(--ink-2);font:750 10px/1 Helvetica,Arial,sans-serif;white-space:nowrap}
.budget-status.good{background:color-mix(in srgb,var(--ok) 13%,var(--surface));color:var(--ok)}
.budget-status.warn{background:var(--warn-soft);color:var(--warn)}
.budget-status.closed{background:var(--accent-soft);color:var(--action,var(--accent))}
.budget-ledger{margin-top:12px;display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line);padding-top:11px}
.budget-ledger>div{padding:0 8px;border-left:1px solid var(--line)}
.budget-ledger>div:first-child{border-left:0;padding-left:0}
.budget-ledger>div:last-child{padding-right:0}
.budget-ledger b{display:block;font:750 14px/1.2 Helvetica,Arial,sans-serif;font-variant-numeric:tabular-nums;color:var(--ink)}
.budget-ledger span{font:700 9px/1.2 Helvetica,Arial,sans-serif;text-transform:uppercase;letter-spacing:.06em;color:var(--mut)}
.budget-grid{display:grid;grid-template-columns:1fr;gap:10px}
.budget-field label{margin-top:0}
.budget-field input,.budget-field select,.budget-field textarea{margin:0}
.budget-field textarea{resize:none;min-height:86px}
.budget-section-title{font:800 10px/1.2 Helvetica,Arial,sans-serif;letter-spacing:.1em;text-transform:uppercase;color:var(--mut);margin:5px 2px -4px}
.budget-tablewrap{overflow-x:auto;scrollbar-gutter:stable}
.budget-table{min-width:590px;font-variant-numeric:tabular-nums}
.budget-table .num{text-align:right;white-space:nowrap}
.budget-table .pos{color:var(--ok)}
.budget-table .neg{color:var(--warn)}
.budget-total td{font-weight:800;border-top:2px solid var(--line)}
.budget-note{padding:10px 11px;border:1px solid var(--line);border-radius:10px;background:var(--surface-2);font-size:12px;color:var(--ink-2)}
.budget-note.warn{border-color:color-mix(in srgb,var(--warn) 55%,var(--line));background:var(--warn-soft);color:var(--warn)}
.budget-note.good{border-color:color-mix(in srgb,var(--ok) 45%,var(--line));color:var(--ok)}
.budget-empty{text-align:center;padding:24px 14px}
.budget-empty .budget-empty-mark{width:46px;height:46px;border-radius:50%;display:grid;place-items:center;margin:0 auto 10px;background:var(--accent-soft);color:var(--accent);font:800 21px/1 Helvetica,Arial,sans-serif}
.budget-empty h3{margin:0 0 5px}
.budget-empty p{max-width:420px;margin:0 auto 14px;color:var(--mut);font-size:13px}
.budget-participant{display:grid;gap:10px}
.budget-person{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.budget-person-name{font:750 14px/1.25 Helvetica,Arial,sans-serif;color:var(--ink)}
.budget-person-meta{margin-top:3px;font-size:11px;color:var(--mut)}
.budget-checklist{display:grid;gap:6px;max-height:360px;overflow:auto;scrollbar-gutter:stable}
.budget-check{display:grid;grid-template-columns:24px 1fr;gap:10px;align-items:center;padding:10px;border:1px solid var(--line);border-radius:10px;cursor:pointer;margin:0}
.budget-check:hover{border-color:var(--accent)}
.budget-check input{width:20px;height:20px;margin:0}
.budget-check strong{display:block;font:700 13px/1.25 Helvetica,Arial,sans-serif;color:var(--ink)}
.budget-check small{display:block;margin-top:2px;font-size:10.5px;color:var(--mut)}
.budget-membership-unknown{color:var(--warn);font-weight:700}
.budget-form-actions{position:sticky;bottom:calc(66px + env(safe-area-inset-bottom));z-index:4;padding:9px;margin:6px -4px -4px;background:color-mix(in srgb,var(--bg) 92%,transparent);backdrop-filter:blur(8px);border-radius:12px}
.budget-inline-msg{display:block;min-height:20px;margin-top:7px;font:650 12px/1.35 Helvetica,Arial,sans-serif;color:var(--mut)}
.budget-inline-msg.error{color:var(--warn)}
.budget-inline-msg.good{color:var(--ok)}
.budget-danger{border-color:color-mix(in srgb,var(--warn) 55%,var(--line))}
.budget-receipt{display:grid;grid-template-columns:72px 1fr auto;gap:9px;align-items:start;padding:10px 0;border-bottom:1px solid var(--line-2)}
.budget-receipt:last-child{border-bottom:0}
.budget-receipt-date{font:650 10px/1.35 Helvetica,Arial,sans-serif;color:var(--mut)}
.budget-receipt-main strong{display:block;font-size:13px}
.budget-receipt-main span{display:block;margin-top:2px;font-size:10.5px;color:var(--mut)}
.budget-receipt-amount{text-align:right;font:750 13px/1.3 Helvetica,Arial,sans-serif;font-variant-numeric:tabular-nums}
.budget-billing-row{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center;padding:11px 0;border-bottom:1px solid var(--line-2)}
.budget-billing-row:last-child{border-bottom:0}
.budget-billing-amount{font:800 15px/1.2 Helvetica,Arial,sans-serif;font-variant-numeric:tabular-nums;text-align:right}
.budget-link-note{font-size:11px;color:var(--mut);margin-top:7px}

@media (min-width:600px){
  .budget-hero-grid{grid-template-columns:minmax(0,1.15fr) minmax(280px,.85fr);align-items:center}
  .budget-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}
  .budget-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}
  .budget-form-actions{bottom:12px}
}
@media (max-width:390px){
  .budget-kpis{grid-template-columns:1fr}
  .budget-ledger b{font-size:12px}
  .budget-actions>.btn{flex:1 1 130px}
  .budget-receipt{grid-template-columns:1fr auto}
  .budget-receipt-date{grid-column:1/-1}
}
@media (prefers-reduced-motion:reduce){.budget-event:active{transform:none}}
@media (forced-colors:active){.budget-status,.budget-note,.budget-check{border:1px solid CanvasText}}
@media print{.budget-tabs,.budget-actions,.budget-form-actions{display:none!important}.budget-shell{display:block}.budget-shell>.card{break-inside:avoid}}
