/* INBICOM App — component stylesheet. Every value comes from tokens.css (var(--…)). */

.ib{font-family:var(--font-sans);color:var(--ink-100);background:var(--bg-000);font-size:14px;line-height:20px;-webkit-font-smoothing:antialiased}
.ib *,.ib *::before,.ib *::after{box-sizing:border-box}
.ib button,.ib input{font:inherit}
.ib :focus-visible{outline:2px solid var(--ink-100);outline-offset:2px}
.ib .num,.ib [data-num]{font-variant-numeric:tabular-nums}

/* Gradient bar — the brand attribute, once per screen */
.ib-gbar{height:var(--gradient-bar);background:linear-gradient(90deg,var(--brand-white) 0%,var(--brand-black) 100%)}

/* Brand row (mobile) */
.ib-brandrow{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);padding:0 var(--space-5)}
.ib-brandrow img{display:block;height:14px;width:auto}
.ib-h1{font-family:var(--font-display);font-size:26px;line-height:1.2;font-weight:400;margin:0}
.ib-title{font-family:var(--font-display);font-size:22px;line-height:1.2;font-weight:400}
.ib-display{font-family:var(--font-display);font-size:48px;line-height:1.05;font-weight:400;letter-spacing:-.01em;font-variant-numeric:tabular-nums}
.ib-brandrow .ib-brandrow__ctx{font-size:11px;line-height:14px;font-weight:500;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-300)}

/* Button */
.ib-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:var(--control-md);padding:0 14px;border-radius:var(--radius-sm);border:var(--hairline) solid var(--line-hi);background:transparent;color:var(--ink-100);font-size:14px;font-weight:600;line-height:1;white-space:nowrap;cursor:pointer;text-decoration:none}
.ib-btn:hover{background:var(--bg-200)}
.ib-btn--primary{background:var(--action-fill);color:var(--action-ink);border-color:var(--action-fill)}
.ib-btn--primary:hover{background:var(--ink-200);border-color:var(--ink-200)}
.ib-btn--quiet{border-color:var(--line-300)}
.ib-btn--ghost{border:var(--hairline) dashed var(--line-hi);color:var(--ink-200)}
.ib-btn--sm{min-height:var(--control-sm);font-size:13px;padding:0 12px}
.ib-btn--lg{min-height:var(--control-lg);font-size:17px;font-weight:700}
.ib-btn--block{display:flex;width:100%}
.ib-btn[disabled],.ib-btn--disabled{border-color:var(--line-300);color:var(--ink-300);background:transparent;cursor:default}

/* Pill */
.ib-pill{display:inline-flex;align-items:center;gap:6px;font-size:11px;line-height:14px;font-weight:600;letter-spacing:.02em;border-radius:var(--radius-xs);padding:3px 8px;border:var(--hairline) solid var(--line-300);color:var(--ink-200);white-space:nowrap}
.ib-pill--on{border-color:var(--ink-100);color:var(--ink-100)}
.ib-pill--inverse{background:var(--action-fill);border-color:var(--action-fill);color:var(--action-ink)}
.ib-pill--warn{border-color:var(--signal-warn);color:var(--signal-warn)}
.ib-pill--bad{border-color:var(--signal-bad);color:var(--signal-bad)}

/* Chip — selectable (cost code, filter) */
.ib-chip{display:inline-flex;align-items:center;min-height:36px;padding:0 12px;border-radius:var(--radius-xs);border:var(--hairline) solid var(--line-300);background:transparent;color:var(--ink-200);font-size:13px;font-weight:500;white-space:nowrap;cursor:pointer}
.ib-chip:hover{border-color:var(--line-hi);color:var(--ink-100)}
.ib-chip[aria-pressed="true"],.ib-chip--on{background:var(--action-fill);border-color:var(--action-fill);color:var(--action-ink);font-weight:600}
.ib-chips{display:flex;gap:var(--space-2);overflow-x:auto;padding-bottom:2px}

/* Segmented control */
.ib-seg{display:inline-flex;align-self:flex-start;gap:2px;border:var(--hairline) solid var(--line-200);border-radius:var(--radius-sm);padding:2px;background:var(--bg-000)}
.ib-seg--block{display:flex;align-self:stretch}
.ib-seg--block .ib-seg__btn{flex:1}
.ib-seg__btn{min-height:34px;padding:0 14px;border-radius:var(--radius-xs);border:0;background:transparent;color:var(--ink-200);font-size:13px;font-weight:600;white-space:nowrap;cursor:pointer}
.ib-seg__btn[aria-selected="true"]{background:var(--action-fill);color:var(--action-ink)}

/* Card and panel */
.ib-card{background:var(--bg-100);border:var(--hairline) solid var(--line-200);border-radius:var(--radius-md);padding:14px var(--space-4);display:flex;flex-direction:column;gap:10px}
.ib-card--hi{border-color:var(--line-hi)}
.ib-card--warn{border-color:var(--signal-warn)}
.ib-card--flush{padding:0;gap:0;overflow:hidden}
.ib-panel{background:var(--bg-100);border:var(--hairline) solid var(--line-200);border-radius:var(--radius-md);padding:18px var(--space-5);display:flex;flex-direction:column;gap:var(--space-3)}
.ib-card__title{font-size:14px;line-height:1.35;font-weight:700}
.ib-panel__title{font-size:15px;line-height:1.3;font-weight:700;letter-spacing:.01em;margin:0}
.ib-label{font-size:11px;line-height:14px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-300)}
.ib-meta{font-size:12px;line-height:16px;color:var(--ink-200)}
.ib-muted{color:var(--ink-200)}
.ib-dim{color:var(--ink-300)}

/* KPI tile */
.ib-kpi{background:var(--bg-100);border:var(--hairline) solid var(--line-200);border-radius:var(--radius-md);padding:var(--space-4) 18px;display:flex;flex-direction:column;gap:6px;min-width:0}
.ib-kpi__value{font-family:var(--font-display);font-size:32px;line-height:1.05;font-weight:400;letter-spacing:-.01em;font-variant-numeric:tabular-nums}
.ib-kpi--md .ib-kpi__value{font-size:26px}
.ib-kpi__value--warn{color:var(--signal-warn)}
.ib-kpi__value--bad{color:var(--signal-bad)}
.ib-kpi__value--muted{color:var(--ink-200)}

/* Progress track + percent */
.ib-track{height:6px;background:var(--bg-300);overflow:hidden}
.ib-track--thick{height:8px}
.ib-track__fill{height:100%;background:var(--ink-100)}
.ib-track__fill--warn{background:var(--signal-warn)}
.ib-track__fill--bad{background:var(--signal-bad)}
.ib-pct{font-size:13px;line-height:18px;font-weight:700;min-width:42px;text-align:right;font-variant-numeric:tabular-nums}
.ib-pct--warn{color:var(--signal-warn)}
.ib-pct--bad{color:var(--signal-bad)}
.ib-progress{display:flex;align-items:center;gap:var(--space-2)}
.ib-progress .ib-track{flex:1}

/* Split bar (overhead allocation) */
.ib-split{display:flex;height:12px;overflow:hidden;background:var(--bg-300);gap:1px}
.ib-split__seg{height:100%}
.ib-split__seg:nth-child(1){background:var(--ink-100)}
.ib-split__seg:nth-child(2){background:var(--ink-200)}
.ib-split__seg:nth-child(3){background:var(--split-3)}
.ib-split__seg:nth-child(n+4){background:var(--line-300)}
.ib-split__legend{display:flex;gap:var(--space-3);flex-wrap:wrap;font-size:12px;line-height:16px;color:var(--ink-200)}
.ib-split__legend span{display:inline-flex;align-items:center;gap:6px}
.ib-split__legend i{display:inline-block;width:8px;height:8px}
.ib-split__legend span:nth-child(1) i{background:var(--ink-100)}
.ib-split__legend span:nth-child(2) i{background:var(--ink-200)}
.ib-split__legend span:nth-child(3) i{background:var(--split-3)}
.ib-split__legend span:nth-child(n+4) i{background:var(--line-300)}

/* Status dot */
.ib-dot{display:inline-block;width:8px;height:8px;flex-shrink:0;background:var(--ink-100)}
.ib-dot--muted{background:var(--ink-300)}
.ib-dot--warn{background:var(--signal-warn)}
.ib-dot--bad{background:var(--signal-bad)}

/* List row */
.ib-row{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-bottom:var(--hairline) solid var(--line-100)}
.ib-row:last-child{border-bottom:0}
.ib-row__body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.ib-row__title{font-size:14px;line-height:20px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ib-row__meta{font-size:12px;line-height:16px;color:var(--ink-200)}
.ib-row__value{font-size:14px;line-height:20px;font-weight:600;white-space:nowrap;font-variant-numeric:tabular-nums}

/* Input */
.ib-field{display:flex;flex-direction:column;gap:var(--space-2)}
.ib-field label{font-size:13px;line-height:18px;font-weight:600}
.ib-input{min-height:var(--control-md);border-radius:var(--radius-sm);border:var(--hairline) solid var(--line-300);background:var(--bg-000);padding:0 12px;font-size:14px;color:var(--ink-100);width:100%}
.ib-input::placeholder{color:var(--ink-300)}
.ib-input:focus{border-color:var(--ink-100);outline:none}
.ib-input[aria-invalid="true"]{border-color:var(--signal-bad)}
.ib-field__hint{font-size:12px;line-height:16px;color:var(--ink-200)}
.ib-field__hint--bad{color:var(--signal-bad)}

/* Top bar (web) */
.ib-topbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--space-3);min-height:var(--topbar);padding:0 var(--space-7);background:var(--bg-000);border-bottom:var(--hairline) solid var(--line-200)}
.ib-topbar__brand{display:flex;align-items:center;gap:10px}
.ib-topbar__brand img{display:block;height:16px;width:auto}
.ib-topbar__group{display:flex;align-items:center;gap:var(--space-7);flex-wrap:wrap}
.ib-topbar nav{display:flex;gap:2px;flex-wrap:wrap}
.ib-topbar nav a{display:flex;align-items:center;min-height:40px;padding:8px 12px;border-radius:var(--radius-xs);border:var(--hairline) solid transparent;color:var(--ink-200);font-size:14px;font-weight:500;text-decoration:none}
.ib-topbar nav a:hover{color:var(--ink-100)}
.ib-topbar nav a[aria-current]{color:var(--ink-100);font-weight:600;border-color:var(--line-hi)}
.ib-avatar{width:36px;height:36px;border-radius:var(--radius-sm);border:var(--hairline) solid var(--line-hi);display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;flex-shrink:0}
.ib-avatar--lg{width:40px;height:40px;font-size:13px}
.ib-avatar--fill{background:var(--bg-200);border-color:var(--line-300);width:32px;height:32px;font-size:11px;border-radius:var(--radius-xs)}

/* Tab bar (mobile) */
.ib-tabbar{height:var(--tabbar);background:var(--bg-000);border-top:var(--hairline) solid var(--line-200);display:grid;grid-template-columns:repeat(5,minmax(0,1fr));padding:8px 4px 20px}
.ib-tabbar a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-1);min-height:var(--control-md);text-decoration:none;color:var(--ink-300);font-size:11px;line-height:14px;font-weight:500}
.ib-tabbar a svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.ib-tabbar a[aria-current]{color:var(--ink-100);font-weight:600}

/* Data table (web) */
.ib-table{width:100%;border-collapse:collapse;font-size:14px;line-height:20px}
.ib-table th{color:var(--ink-300);font-size:11px;line-height:14px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;text-align:left;padding:8px;border-bottom:var(--hairline) solid var(--line-200);white-space:nowrap}
.ib-table td{padding:10px 8px;border-bottom:var(--hairline) solid var(--line-100);vertical-align:middle;font-variant-numeric:tabular-nums}
.ib-table th:first-child,.ib-table td:first-child{padding-left:0}
.ib-table th:last-child,.ib-table td:last-child{padding-right:0}
.ib-table .r{text-align:right}
.ib-table tr.ib-table__total td{border-bottom:0;font-weight:700}
.ib-table a{color:var(--ink-100);font-weight:600;text-decoration:none}
.ib-table__sub{font-size:12px;line-height:16px;color:var(--ink-200);font-weight:400}
.ib-scroll-x{overflow-x:auto}
