:root{--fw-regular: 400;--fw-medium: 500;--fw-semibold: 600;--fw-bold: 700;--fw-extra: 800;--fw-black: 900;--text-2xs: .6875rem;--text-xs: .75rem;--text-sm: .875rem;--text-md: 1rem;--text-lg: 1.125rem;--text-xl: 1.375rem;--text-2xl: 1.75rem;--text-3xl: 2.25rem;--text-4xl: 3rem;--leading-none: 1;--leading-tight: 1.08;--leading-snug: 1.25;--leading-base: 1.5;--leading-relaxed: 1.65;--tracking-tighter: -.03em;--tracking-tight: -.015em;--tracking-normal: 0;--tracking-wide: .04em;--tracking-wider: .12em;--font-h1: var(--fw-extra) var(--text-4xl)/var(--leading-tight) var(--font-display);--font-h2: var(--fw-bold) var(--text-3xl)/var(--leading-tight) var(--font-display);--font-h3: var(--fw-bold) var(--text-2xl)/var(--leading-snug) var(--font-sans);--font-h4: var(--fw-semibold) var(--text-xl)/var(--leading-snug) var(--font-sans);--font-body: var(--fw-regular) var(--text-md)/var(--leading-base) var(--font-sans);--font-body-sm: var(--fw-regular) var(--text-sm)/var(--leading-base) var(--font-sans);--font-label: var(--fw-semibold) var(--text-sm)/var(--leading-snug) var(--font-sans);--font-data: var(--fw-medium) var(--text-md)/var(--leading-none) var(--font-mono);--font-kicker: var(--fw-semibold) var(--text-2xs)/var(--leading-none) var(--font-mono);--space-0: 0;--space-px: 1px;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--space-16: 4rem;--control-sm: 34px;--control-md: 44px;--control-lg: 54px;--z-base: 0;--z-raised: 10;--z-sticky: 100;--z-overlay: 1000;--z-modal: 1100;--z-toast: 1200;--border-width: 1px;--border-width-strong: 1.5px;--shadow-sm: 0 1px 2px oklch(0 0 0 / .4);--shadow-xl: 0 28px 64px -12px oklch(0 0 0 / .65);--surface-overlay: oklch(.19 .013 162 / .86);--ease-in-out: cubic-bezier(.65, 0, .35, 1);--live: oklch(.66 .24 18);--success: oklch(.79 .26 149);--warning: oklch(.8 .17 86);--danger: oklch(.62 .22 22);--info: oklch(.85 .16 200)}[data-theme=light]{--shadow-sm: 0 1px 2px oklch(.3 .04 160 / .1);--shadow-xl: 0 28px 60px -14px oklch(.3 .04 160 / .2);--surface-overlay: oklch(.3 .02 160 / .4)}.loading{text-align:center;padding:var(--space-12) 0}.loader{width:28px;height:28px;margin:0 auto;border:3px solid var(--border-default);border-top-color:var(--accent);border-radius:var(--radius-pill);animation:kb-spin .8s linear infinite}.loader--sm{width:18px;height:18px}@keyframes kb-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.loader{animation:none}}.empty-state{background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);box-shadow:var(--inset-top);text-align:center;display:flex;flex-direction:column;align-items:center;gap:var(--space-2);padding:var(--space-8) var(--space-5)}.empty-state-mark{width:52px;height:52px;margin-bottom:var(--space-2);border-radius:var(--radius-pill);display:grid;place-items:center;background:var(--accent-soft);color:var(--text-neon);border:2px solid var(--border-neon)}.empty-state-title{font:var(--font-h4);text-transform:uppercase;letter-spacing:var(--tracking-tight)}.empty-state .text-muted,.empty-state-text{color:var(--text-muted);font:var(--font-body-sm);max-width:34ch;margin:0}.empty-state .btn{margin-top:var(--space-3)}.status-badge{display:inline-flex;align-items:center;padding:.25rem .6rem;border-radius:var(--radius-pill);font-family:var(--font-mono);font-size:.62rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;font-variant-numeric:tabular-nums}.status-badge--paid{background:var(--accent);color:var(--accent-contrast)}.status-badge--pending{background:var(--orange);color:#000}.status-badge--waitlist{background:var(--blue);color:#000}.status-badge--rejected{background:var(--red);color:#fff}.status-badge--overdue{background:#ff5722;color:#fff}.status-badge--requested{background:#ff950029;color:var(--orange);border:1px solid rgba(255,149,0,.45)}.status-badge--refunded{background:#7c5cff;color:#fff}[data-theme=light] .status-badge--paid{background:var(--neon);color:#fff;box-shadow:none}.kb-kicker--muted{color:var(--text-faint)}
