/* Base + component classes used by the Launchbox React components. */
body{margin:0;background:var(--bg);color:var(--text);font:400 14px/21px var(--font-body);-webkit-font-smoothing:antialiased}
a{color:var(--accent)}a:hover{color:var(--text)}
:where(button,a,input,select,[tabindex]):focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.lb-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* Logo */
.lb-logo{display:inline-flex;align-items:center;gap:var(--space-3);text-decoration:none}
.lb-mark{display:inline-block;flex:none;background:url("../assets/logos/mark-dark.svg") center/contain no-repeat}
:root[data-theme="light"] .lb-mark{background-image:url("../assets/logos/mark-light.svg")}

/* Buttons */
.lb-btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);border:0;cursor:pointer;font-family:var(--font-body);font-weight:600;white-space:nowrap;transition:background-color .15s ease}
.lb-btn--primary{min-height:52px;padding:0 32px;border-radius:var(--radius-button);background:var(--accent);color:var(--on-accent);font-size:16px;line-height:20px}
.lb-btn--primary:hover:not(:disabled){background:color-mix(in srgb,var(--accent) 88%,var(--text))}
.lb-btn--secondary{min-height:44px;padding:0 16px;border-radius:var(--radius-md);border:1px solid var(--border);background:var(--bg);color:var(--text);font-size:13px;line-height:18px}
.lb-btn--secondary:hover:not(:disabled){background:color-mix(in srgb,var(--bg) 92%,var(--text))}
.lb-btn:disabled{opacity:.4;cursor:not-allowed}
.lb-btn[aria-busy="true"]{cursor:progress}
.lb-btn[aria-busy="true"] .lb-btn__label{visibility:hidden}
.lb-btn__spinner{position:absolute;inset:0;margin:auto;width:18px;height:18px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:lb-spin .8s linear infinite}
@keyframes lb-spin{to{transform:rotate(360deg)}}

/* Tabs */
.lb-tabs{display:flex;flex-wrap:wrap;gap:var(--space-2)}
.lb-tab{min-height:44px;padding:0 18px;border-radius:var(--radius-md);border:1px solid transparent;background:transparent;color:var(--muted);font:600 14px/20px var(--font-body);cursor:pointer;transition:color .15s ease}
.lb-tab:hover{color:var(--text)}
.lb-tab[aria-current="page"]{background:var(--bg);border-color:var(--accent);color:var(--accent)}

/* Header */
.lb-header{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3) var(--space-5);padding:16px 32px;background:var(--surface);border-bottom:1px solid var(--border)}
.lb-header__actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3);margin-left:auto}

/* Card, tile */
.lb-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:20px;min-width:0;box-sizing:border-box}
.lb-card--roomy{padding:24px}
.lb-card--tile{padding:18px;display:flex;flex-direction:column;gap:var(--space-1)}
.lb-card__head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-2) var(--space-4);margin-bottom:var(--space-3)}
.lb-delta{font:600 13px/18px var(--font-body);color:var(--accent)}
.lb-delta--neutral{color:var(--muted)}

/* Pill */
.lb-pill{display:inline-flex;align-items:center;border-radius:var(--radius-pill);padding:5px 12px;font:600 12px/16px var(--font-body);color:var(--on-status);white-space:nowrap}

/* Rows */
.lb-row{display:flex;justify-content:space-between;align-items:center;gap:var(--space-3);padding:11px 0;border-top:1px solid var(--border)}
.lb-row__value{font:400 14px/21px var(--font-body);color:var(--muted);text-align:right}
.lb-invoice-row{flex-wrap:wrap;justify-content:flex-start}
.lb-invoice-row>*{flex:1 1 120px;min-width:0}
.lb-invoice-row>.lb-invoice-row__status{flex:0 0 auto;margin-left:auto}

/* Chart */
.lb-chart{display:block;width:100%;height:220px;overflow:visible}
.lb-legend{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-4);font:500 13px/18px var(--font-body);color:var(--muted)}
.lb-legend__item{display:inline-flex;align-items:center;gap:var(--space-2)}
.lb-legend__swatch{display:inline-block;width:18px;border-top:2.5px solid var(--accent)}
.lb-legend__swatch--dashed{border-top:2px dashed var(--accent-2)}

/* Layout helpers */
.lb-main{max-width:1200px;margin:0 auto;padding:var(--space-6);display:flex;flex-direction:column;gap:var(--space-5);box-sizing:border-box}
.lb-tile-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:var(--space-4)}
.lb-card-row{display:flex;flex-wrap:wrap;gap:var(--space-4)}
.lb-card-row>*{flex:1 1 380px}

@media (max-width:640px){.lb-header{padding:16px}.lb-main{padding:var(--space-4)}.lb-card-row>*{flex-basis:100%}}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important}.lb-btn__spinner{animation-duration:2.4s}}
