.ab-billing{display:grid;gap:var(--s-6);min-width:0}.ab-billing *, .ab-bill-dialog *{box-sizing:border-box}.ab-bill-toolbar,.ab-bill-actions{display:flex;gap:var(--s-2);align-items:center;flex-wrap:wrap}.ab-bill-toolbar{justify-content:space-between}.ab-bill-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-panel);padding:var(--s-6);min-width:0}.ab-bill-card h2{font:800 var(--fs-h2) var(--font-display);margin:0 0 var(--s-4)}.ab-bill-muted{color:var(--fg-2);font-size:var(--fs-small);line-height:1.65}.ab-bill-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s-4)}.ab-bill-stats strong{display:block;font:800 var(--fs-money) var(--font-display);color:var(--gold);margin-top:var(--s-2)}.ab-bill-button{display:inline-flex;align-items:center;justify-content:center;gap:var(--s-2);border:1px solid var(--line-2);border-radius:var(--r-btn);background:var(--panel-2);color:var(--fg);padding:var(--s-3) var(--s-4);min-height:var(--tap-min);font:600 var(--fs-small) var(--font-ui);text-decoration:none;cursor:pointer}.ab-bill-button.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.ab-bill-button:disabled{opacity:.5;cursor:wait}.ab-bill-table{overflow:auto}.ab-bill-table table{width:100%;border-collapse:collapse}.ab-bill-table th,.ab-bill-table td{padding:var(--s-4);text-align:left;border-bottom:1px solid var(--line);white-space:nowrap}.ab-bill-table th{color:var(--fg-3);font:500 var(--fs-label) var(--font-mono)}.ab-bill-badge{display:inline-block;padding:var(--s-1) var(--s-2);border-radius:var(--r-tag);background:var(--panel-2);font-size:var(--fs-small)}.ab-bill-badge.paid,.ab-bill-badge.sent{background:var(--ok-bg);color:var(--ok)}.ab-bill-badge.overdue,.ab-bill-badge.unknown,.ab-bill-badge.void{background:var(--danger-bg);color:var(--danger)}.ab-bill-dialog{width:min(780px,calc(100% - 24px));max-height:90dvh;padding:0;border:1px solid var(--line-2);border-radius:var(--r-sheet);color:var(--fg);background:var(--panel);box-shadow:var(--sh-modal);font-family:var(--font-ui)}.ab-bill-dialog::backdrop{background:rgba(0,0,0,.7)}.ab-bill-dialog header{position:sticky;top:0;z-index:1;background:var(--panel);padding:var(--s-5) var(--s-6);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:var(--s-4)}.ab-bill-dialog h2{font:800 var(--fs-h2) var(--font-display);margin:0}.ab-bill-dialog-body{padding:var(--s-6)}.ab-bill-form{display:grid;gap:var(--s-4)}.ab-bill-form label{display:grid;gap:var(--s-2);font-size:var(--fs-small);color:var(--fg-2)}.ab-bill-form input:not([type=checkbox]),.ab-bill-form select,.ab-bill-form textarea,.ab-bill-toolbar select{width:100%;min-height:var(--tap-min);padding:var(--s-3);background:var(--bg);color:var(--fg);border:1px solid var(--line-2);border-radius:var(--r-input);font:400 var(--fs-ui) var(--font-ui)}.ab-bill-form textarea{min-height:80px}.ab-bill-form .ab-bill-check{display:flex;align-items:center;gap:var(--s-3);min-height:var(--tap-min)}.ab-bill-check input[type=checkbox]{appearance:auto;width:18px;height:18px;min-height:0;flex:0 0 18px;padding:0;margin:0;accent-color:var(--accent)}.ab-bill-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s-4)}.ab-bill-error{color:var(--danger);white-space:pre-wrap}.ab-bill-lines{display:grid;gap:var(--s-2)}.ab-bill-line{display:grid;grid-template-columns:1fr 140px auto;gap:var(--s-2)}.ab-bill-summary{display:grid;grid-template-columns:1fr auto;gap:var(--s-3);padding:var(--s-4) 0}.ab-bill-summary strong{font-variant-numeric:tabular-nums}.ab-bill-dialog[open]{animation:ab-bill-in var(--dur-slow) var(--ease-out)}@keyframes ab-bill-in{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@media(max-width:600px){.ab-bill-stats{grid-template-columns:1fr}.ab-bill-fields{grid-template-columns:1fr}.ab-bill-dialog-body{padding:var(--s-4)}.ab-bill-line{grid-template-columns:1fr 100px auto}.ab-bill-card{padding:var(--s-4)}}@media(prefers-reduced-motion:reduce){.ab-bill-dialog[open]{animation:none}}

.ab-bill-dialog .ab-billing{gap:var(--s-4)}.ab-bill-dialog .ab-billing p{margin:0;overflow-wrap:anywhere}.ab-bill-dialog .ab-bill-table td:first-child{white-space:normal;overflow-wrap:anywhere}.ab-bill-dialog .ab-bill-table td:last-child{padding-right:0;text-align:right}.ab-bill-dialog .ab-bill-table td:first-child{padding-left:0}.ab-bill-dialog h2{overflow-wrap:anywhere;min-width:0}.ab-bill-dialog header button{flex-shrink:0}
