/* FiscalOS component styles.
   Components are React + classNames; every value resolves to a token.
   Hover / press / focus / disabled live here so states are real CSS, not JS. */

/* ── Icon ─────────────────────────────────────────────────────────────────── */
.fos-icon{display:inline-flex;flex:none;align-items:center;justify-content:center;color:currentColor;vertical-align:-0.125em}
.fos-icon svg{width:100%;height:100%;stroke-width:1.5;display:block}

/* ── Logo / Symbol ────────────────────────────────────────────────────────── */
.fos-logo{display:inline-block}
.fos-logo img{display:block;width:auto}
.fos-symbol{display:inline-block}
.fos-symbol img{display:block;width:100%;height:100%;object-fit:contain}
.fos-symbol--watermark{opacity:.06;pointer-events:none;user-select:none}

/* ── FlowRule (process rule, slide 09 motif) ──────────────────────────────── */
.fos-flow{display:block;width:100%}
.fos-flow__line{position:relative;height:1px;background:var(--text-primary)}
.fos-flow__ticks{position:relative;height:0}
.fos-flow__tick{position:absolute;top:-8px;width:5px;height:17px;background:var(--text-primary)}
.fos-flow__steps{display:grid;gap:var(--sp-7);margin-top:var(--sp-6)}
.fos-flow__num{font:var(--type-label);letter-spacing:var(--ls-label);color:var(--text-secondary)}
.fos-flow__title{font:var(--fw-semibold) var(--fs-18)/var(--lh-snug) var(--font-ui);color:var(--text-primary);margin-top:var(--sp-4)}
.fos-flow__desc{font:var(--type-body-sm);color:var(--text-secondary);margin-top:var(--sp-3);max-width:22ch}

/* ── Button ───────────────────────────────────────────────────────────────── */
.fos-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-3);border:1px solid transparent;border-radius:var(--r-control);font-family:var(--font-ui);font-weight:var(--fw-medium);cursor:pointer;white-space:nowrap;text-decoration:none;transition:var(--transition-control)}
.fos-btn:focus-visible{outline:var(--focus-ring);outline-offset:var(--focus-ring-offset)}
.fos-btn--xs{height:var(--control-h-xs);padding:0 var(--sp-4);font-size:var(--fs-11)}
.fos-btn--sm{height:var(--control-h-sm);padding:0 var(--sp-5);font-size:var(--fs-12)}
.fos-btn--md{height:var(--control-h-md);padding:0 var(--sp-6);font-size:var(--fs-13)}
.fos-btn--lg{height:var(--control-h-lg);padding:0 var(--sp-8);font-size:var(--fs-14)}
.fos-btn--primary{background:var(--action-primary-bg);color:var(--action-primary-fg)}
.fos-btn--primary:hover:not(:disabled){background:var(--action-primary-bg-hover)}
.fos-btn--primary:active:not(:disabled){background:var(--action-primary-bg-active)}
.fos-btn--secondary{background:var(--action-secondary-bg);color:var(--action-secondary-fg);border-color:var(--border-default)}
.fos-btn--secondary:hover:not(:disabled){background:var(--action-secondary-bg-hover);border-color:var(--border-field-hover)}
.fos-btn--secondary:active:not(:disabled){background:var(--bg-active)}
.fos-btn--ghost{background:transparent;color:var(--text-primary)}
.fos-btn--ghost:hover:not(:disabled){background:var(--action-ghost-bg-hover)}
.fos-btn--danger{background:var(--action-danger-bg);color:#fff}
.fos-btn--danger:hover:not(:disabled){background:var(--action-danger-bg-hover)}
.fos-btn--link{background:none;padding:0;height:auto;color:var(--text-primary);border-bottom:1px solid var(--n-400);border-radius:0}
.fos-btn--link:hover:not(:disabled){color:var(--text-secondary);border-bottom-color:var(--text-secondary)}
.fos-btn:disabled{cursor:not-allowed;background:var(--bg-disabled);color:var(--text-disabled);border-color:var(--border-subtle)}
.fos-btn--ghost:disabled,.fos-btn--link:disabled{background:transparent}
.fos-btn--block{width:100%}
.fos-btn__spinner{width:12px;height:12px;border:1.5px solid currentColor;border-top-color:transparent;border-radius:var(--r-pill);animation:fos-spin .7s linear infinite}
@keyframes fos-spin{to{transform:rotate(360deg)}}

/* ── IconButton ───────────────────────────────────────────────────────────── */
.fos-iconbtn{display:inline-flex;align-items:center;justify-content:center;border:1px solid transparent;border-radius:var(--r-control);background:transparent;color:var(--text-secondary);cursor:pointer;transition:var(--transition-control)}
.fos-iconbtn:hover:not(:disabled){background:var(--action-ghost-bg-hover);color:var(--text-primary)}
.fos-iconbtn:active:not(:disabled){background:var(--bg-active)}
.fos-iconbtn:focus-visible{outline:var(--focus-ring);outline-offset:var(--focus-ring-offset)}
.fos-iconbtn:disabled{color:var(--text-disabled);cursor:not-allowed}
.fos-iconbtn--sm{width:var(--control-h-sm);height:var(--control-h-sm)}
.fos-iconbtn--md{width:var(--control-h-md);height:var(--control-h-md)}
.fos-iconbtn--lg{width:var(--control-h-lg);height:var(--control-h-lg)}
.fos-iconbtn--bordered{border-color:var(--border-default);background:var(--bg-surface)}
.fos-iconbtn--active{background:var(--bg-selected);color:var(--text-primary)}

/* ── ActionMenu ───────────────────────────────────────────────────────────── */
.fos-menu{position:relative;display:inline-flex}
.fos-menu__panel{position:absolute;top:calc(100% + var(--sp-2));min-width:212px;background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--r-overlay);box-shadow:var(--shadow-md);padding:var(--sp-2);z-index:60}
.fos-menu__panel--right{right:0}.fos-menu__panel--left{left:0}
.fos-menu__item{display:flex;align-items:center;gap:var(--sp-5);width:100%;background:none;border:0;text-align:left;padding:var(--sp-4) var(--sp-5);border-radius:var(--r-sm);font:var(--type-body-sm);color:var(--text-primary);cursor:pointer;transition:background-color var(--dur-fast) var(--ease-standard)}
.fos-menu__item:hover:not(:disabled){background:var(--bg-hover)}
.fos-menu__item:focus-visible{outline:var(--focus-ring);outline-offset:-2px}
.fos-menu__item:disabled{color:var(--text-disabled);cursor:not-allowed}
.fos-menu__item--danger{color:var(--danger-fg)}
.fos-menu__item--danger:hover:not(:disabled){background:var(--danger-bg)}
.fos-menu__hint{margin-left:auto;font:var(--type-caption);color:var(--text-tertiary)}
.fos-menu__sep{height:1px;background:var(--border-subtle);margin:var(--sp-2) var(--sp-3)}
.fos-menu__label{padding:var(--sp-4) var(--sp-5) var(--sp-2);font:var(--type-label);letter-spacing:var(--ls-label);text-transform:uppercase;color:var(--text-tertiary)}

/* ── FormField ────────────────────────────────────────────────────────────── */
.fos-field{display:flex;flex-direction:column;gap:var(--sp-3)}
.fos-field__label{display:flex;align-items:center;gap:var(--sp-3);font:var(--fw-medium) var(--fs-12)/1.3 var(--font-ui);color:var(--text-primary)}
.fos-field__req{color:var(--danger-fg)}
.fos-field__optional{font-weight:var(--fw-regular);color:var(--text-tertiary)}
.fos-field__hint{font:var(--type-caption);color:var(--text-tertiary)}
.fos-field__error{display:flex;align-items:center;gap:var(--sp-3);font:var(--type-caption);color:var(--danger-fg)}
.fos-field__lock{display:flex;align-items:center;gap:var(--sp-3);font:var(--type-caption);color:var(--text-tertiary)}

/* ── Input / Textarea / Select / SearchField ──────────────────────────────── */
.fos-input{display:flex;align-items:center;gap:var(--sp-4);background:var(--bg-surface);border:1px solid var(--border-field);border-radius:var(--r-control);padding:0 var(--sp-5);transition:var(--transition-control)}
.fos-input:hover:not(.fos-input--disabled){border-color:var(--border-field-hover)}
.fos-input--focused{border-color:var(--border-field-focus);box-shadow:inset 0 0 0 1px var(--border-field-focus)}
.fos-input--invalid{border-color:var(--danger-fg)}
.fos-input--invalid.fos-input--focused{box-shadow:inset 0 0 0 1px var(--danger-fg)}
.fos-input--disabled{background:var(--bg-disabled);border-color:var(--border-subtle);cursor:not-allowed}
.fos-input--sm{height:var(--control-h-sm)}.fos-input--md{height:var(--control-h-md)}.fos-input--lg{height:var(--control-h-lg)}
.fos-input--multiline{height:auto;padding:var(--sp-5)}
.fos-input__el{flex:1;min-width:0;background:none;border:0;outline:none;color:var(--text-primary);font:var(--type-body-sm)}
.fos-input__el::placeholder{color:var(--text-tertiary)}
.fos-input__el:disabled{color:var(--text-disabled);cursor:not-allowed}
.fos-input__el--mono{font:var(--type-numeric);font-variant-numeric:tabular-nums}
.fos-input__el--area{resize:vertical;min-height:76px;line-height:var(--lh-normal)}
.fos-input__affix{font:var(--type-caption);color:var(--text-tertiary);flex:none}
.fos-input__icon{color:var(--text-tertiary);flex:none}
.fos-select{position:relative;display:flex;align-items:center}
.fos-select__el{appearance:none;flex:1;min-width:0;background:none;border:0;outline:none;color:var(--text-primary);font:var(--type-body-sm);padding-right:var(--sp-7);cursor:pointer}
.fos-select__el:disabled{color:var(--text-disabled);cursor:not-allowed}
.fos-select__caret{position:absolute;right:0;pointer-events:none;color:var(--text-tertiary);display:flex}
.fos-search{position:relative}
.fos-search__kbd{font:var(--fw-medium) var(--fs-10)/1 var(--font-numeric);color:var(--text-tertiary);border:1px solid var(--border-subtle);border-radius:var(--r-xs);padding:3px 4px;background:var(--bg-surface-sunken)}

/* ── Checkbox / Radio / Switch ────────────────────────────────────────────── */
.fos-check{display:inline-flex;align-items:flex-start;gap:var(--sp-5);cursor:pointer;font:var(--type-body-sm);color:var(--text-primary)}
.fos-check--disabled{cursor:not-allowed;color:var(--text-disabled)}
.fos-check__box{position:relative;flex:none;width:16px;height:16px;margin-top:1px;border:1px solid var(--border-field);border-radius:var(--r-xs);background:var(--bg-surface);display:grid;place-items:center;transition:var(--transition-control)}
.fos-check__box--round{border-radius:var(--r-pill)}
.fos-check:hover:not(.fos-check--disabled) .fos-check__box{border-color:var(--border-field-hover)}
.fos-check__box--on{background:var(--n-900);border-color:var(--n-900);color:var(--fos-white)}
[data-theme="dark"] .fos-check__box--on{background:var(--fos-white);border-color:var(--fos-white);color:var(--n-900)}
.fos-check__box--disabled{background:var(--bg-disabled);border-color:var(--border-subtle);color:var(--text-disabled)}
.fos-check__dot{width:6px;height:6px;border-radius:var(--r-pill);background:currentColor}
.fos-check__native{position:absolute;opacity:0;width:100%;height:100%;margin:0;cursor:inherit}
.fos-check__native:focus-visible + .fos-check__mark,.fos-check__box:has(:focus-visible){outline:var(--focus-ring);outline-offset:2px}
.fos-check__desc{display:block;font:var(--type-caption);color:var(--text-tertiary);margin-top:2px}
.fos-switch{display:inline-flex;align-items:center;gap:var(--sp-5);cursor:pointer;font:var(--type-body-sm);color:var(--text-primary)}
.fos-switch__track{position:relative;flex:none;width:34px;height:18px;border-radius:var(--r-pill);background:var(--n-300);transition:background-color var(--dur-base) var(--ease-standard)}
.fos-switch__track--on{background:var(--n-900)}
[data-theme="dark"] .fos-switch__track--on{background:var(--fos-white)}
.fos-switch__knob{position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:var(--r-pill);background:var(--n-0);box-shadow:var(--shadow-xs);transition:transform var(--dur-base) var(--ease-standard)}
.fos-switch__track--on .fos-switch__knob{transform:translateX(16px)}
[data-theme="dark"] .fos-switch__track--on .fos-switch__knob{background:var(--n-900)}
.fos-switch--disabled{cursor:not-allowed;color:var(--text-disabled)}
.fos-switch--disabled .fos-switch__track{background:var(--n-200)}
.fos-switch input:focus-visible + .fos-switch__track{outline:var(--focus-ring);outline-offset:2px}

/* ── StatusBadge / Tag ────────────────────────────────────────────────────── */
.fos-badge{display:inline-flex;align-items:center;gap:var(--sp-3);height:20px;padding:0 var(--sp-4);border:1px solid;border-radius:var(--r-badge);font:var(--fw-medium) var(--fs-11)/1 var(--font-ui);white-space:nowrap}
.fos-badge--lg{height:24px;font-size:var(--fs-12);padding:0 var(--sp-5)}
.fos-badge__dot{width:5px;height:5px;border-radius:var(--r-pill);background:currentColor;flex:none}
.fos-badge--neutral{color:var(--status-neutral-fg);background:var(--status-neutral-bg);border-color:var(--status-neutral-border)}
.fos-badge--info{color:var(--status-info-fg);background:var(--status-info-bg);border-color:var(--status-info-border)}
.fos-badge--success{color:var(--success-fg);background:var(--success-bg);border-color:var(--success-border)}
.fos-badge--warning{color:var(--warning-fg);background:var(--warning-bg);border-color:var(--warning-border)}
.fos-badge--danger{color:var(--danger-fg);background:var(--danger-bg);border-color:var(--danger-border)}
.fos-badge--solid{color:var(--fos-white);background:var(--n-900);border-color:var(--n-900)}
.fos-badge--ai{color:var(--text-secondary);background:transparent;border-style:dashed;border-color:var(--border-default)}
.fos-tag{display:inline-flex;align-items:center;gap:var(--sp-3);height:24px;padding:0 var(--sp-4);background:var(--bg-subtle);border:1px solid var(--border-subtle);border-radius:var(--r-sm);font:var(--type-caption);color:var(--text-primary)}
.fos-tag__x{display:grid;place-items:center;width:14px;height:14px;border:0;background:none;color:var(--text-tertiary);cursor:pointer;border-radius:var(--r-xs);padding:0}
.fos-tag__x:hover{background:var(--bg-active);color:var(--text-primary)}
.fos-tag--filter{background:var(--bg-surface)}

/* ── Alert ────────────────────────────────────────────────────────────────── */
.fos-alert{display:flex;gap:var(--sp-6);padding:var(--sp-6) var(--sp-7);border:1px solid;border-left-width:1px;border-radius:var(--r-surface);background:var(--bg-surface)}
.fos-alert__icon{flex:none;margin-top:1px}
.fos-alert__body{min-width:0;flex:1}
.fos-alert__title{font:var(--fw-semibold) var(--fs-13)/1.35 var(--font-ui)}
.fos-alert__text{font:var(--type-body-sm);color:var(--text-secondary);margin-top:var(--sp-2)}
.fos-alert__actions{display:flex;gap:var(--sp-5);margin-top:var(--sp-6)}
.fos-alert--neutral{border-color:var(--border-default);color:var(--text-primary);background:var(--bg-surface-sunken)}
.fos-alert--success{border-color:var(--success-border);background:var(--success-bg);color:var(--success-fg)}
.fos-alert--warning{border-color:var(--warning-border);background:var(--warning-bg);color:var(--warning-fg)}
.fos-alert--danger{border-color:var(--danger-border);background:var(--danger-bg);color:var(--danger-fg)}
.fos-alert--success .fos-alert__text,.fos-alert--warning .fos-alert__text,.fos-alert--danger .fos-alert__text{color:inherit;opacity:.86}

/* ── Tooltip ──────────────────────────────────────────────────────────────── */
.fos-tip{position:relative;display:inline-flex}
.fos-tip__bubble{position:absolute;z-index:80;background:var(--n-900);color:var(--fos-white);font:var(--type-caption);padding:var(--sp-3) var(--sp-5);border-radius:var(--r-sm);white-space:nowrap;box-shadow:var(--shadow-md);pointer-events:none}
[data-theme="dark"] .fos-tip__bubble{background:var(--fos-white);color:var(--n-900)}
.fos-tip__bubble--top{bottom:calc(100% + 6px);left:50%;transform:translateX(-50%)}
.fos-tip__bubble--bottom{top:calc(100% + 6px);left:50%;transform:translateX(-50%)}
.fos-tip__bubble--right{left:calc(100% + 6px);top:50%;transform:translateY(-50%)}
.fos-tip__bubble--multiline{white-space:normal;width:220px}

/* ── Dialog ───────────────────────────────────────────────────────────────── */
.fos-scrim{position:fixed;inset:0;background:var(--overlay-scrim);backdrop-filter:var(--overlay-blur);display:grid;place-items:center;padding:var(--sp-10);z-index:100;animation:fos-fade var(--dur-base) var(--ease-out)}
@keyframes fos-fade{from{opacity:0}}
@keyframes fos-rise{from{opacity:0;transform:translateY(8px)}}
.fos-dialog{width:100%;background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--r-overlay);box-shadow:var(--shadow-lg);animation:fos-rise var(--dur-deliberate) var(--ease-out);display:flex;flex-direction:column;max-height:100%}
.fos-dialog--sm{max-width:420px}.fos-dialog--md{max-width:560px}.fos-dialog--lg{max-width:760px}
.fos-dialog__head{display:flex;align-items:flex-start;gap:var(--sp-7);padding:var(--sp-8) var(--sp-9) var(--sp-6)}
.fos-dialog__title{font:var(--type-title-md);color:var(--text-primary)}
.fos-dialog__eyebrow{font:var(--type-label);letter-spacing:var(--ls-label);text-transform:uppercase;color:var(--text-tertiary);margin-bottom:var(--sp-3)}
.fos-dialog__body{padding:0 var(--sp-9) var(--sp-8);font:var(--type-body-sm);color:var(--text-secondary);overflow:auto}
.fos-dialog__foot{display:flex;align-items:center;gap:var(--sp-5);padding:var(--sp-7) var(--sp-9);border-top:1px solid var(--border-subtle);background:var(--bg-surface-sunken);border-radius:0 0 var(--r-overlay) var(--r-overlay)}
.fos-dialog__foot--end{justify-content:flex-end}
.fos-dialog__impact{display:grid;gap:var(--sp-4);margin-top:var(--sp-7);padding:var(--sp-6) var(--sp-7);border:1px solid var(--border-subtle);border-radius:var(--r-sm);background:var(--bg-surface-sunken)}
.fos-dialog__impact-row{display:flex;gap:var(--sp-5);font:var(--type-caption)}
.fos-dialog__impact-row dt{color:var(--text-tertiary);min-width:132px}
.fos-dialog__impact-row dd{margin:0;color:var(--text-primary)}

/* ── Toast ────────────────────────────────────────────────────────────────── */
.fos-toasts{position:fixed;right:var(--sp-9);bottom:var(--sp-9);display:grid;gap:var(--sp-5);z-index:120}
.fos-toast{display:flex;align-items:flex-start;gap:var(--sp-5);min-width:320px;max-width:420px;padding:var(--sp-6) var(--sp-7);background:var(--n-900);color:var(--fos-white);border-radius:var(--r-surface);box-shadow:var(--shadow-lg);animation:fos-rise var(--dur-slow) var(--ease-out)}
[data-theme="dark"] .fos-toast{background:var(--n-800);border:1px solid var(--border-subtle)}
.fos-toast__title{font:var(--fw-semibold) var(--fs-13)/1.35 var(--font-ui)}
.fos-toast__text{font:var(--type-caption);color:var(--n-300);margin-top:2px}
.fos-toast__x{margin-left:auto;background:none;border:0;color:var(--n-400);cursor:pointer;display:flex;padding:0}
.fos-toast__x:hover{color:var(--fos-white)}
.fos-toast--success .fos-toast__icon{color:var(--success-on-dark)}
.fos-toast--danger .fos-toast__icon{color:var(--danger-on-dark)}
.fos-toast--warning .fos-toast__icon{color:var(--warning-on-dark)}

/* ── Card ─────────────────────────────────────────────────────────────────── */
.fos-card{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--r-surface)}
.fos-card--flat{background:var(--bg-surface-sunken)}
.fos-card--raised{box-shadow:var(--shadow-sm)}
.fos-card--inverse{background:var(--bg-inverse-surface);border-color:transparent;color:var(--fos-white)}
.fos-card--interactive{cursor:pointer;transition:var(--transition-surface)}
.fos-card--interactive:hover{border-color:var(--border-default);box-shadow:var(--shadow-sm)}
.fos-card--interactive:focus-visible{outline:var(--focus-ring);outline-offset:var(--focus-ring-offset)}
.fos-card__head{display:flex;align-items:center;gap:var(--sp-6);padding:var(--sp-6) var(--sp-7);border-bottom:1px solid var(--border-subtle);min-height:44px}
.fos-card__title{font:var(--type-title-sm);color:var(--text-primary)}
.fos-card__actions{margin-left:auto;display:flex;align-items:center;gap:var(--sp-3)}
.fos-card__body{padding:var(--sp-7)}
.fos-card__body--flush{padding:0}
.fos-card__foot{padding:var(--sp-5) var(--sp-7);border-top:1px solid var(--border-subtle);font:var(--type-caption);color:var(--text-tertiary);display:flex;align-items:center;gap:var(--sp-5)}

/* ── MetricCard ───────────────────────────────────────────────────────────── */
.fos-metric{display:flex;flex-direction:column;gap:var(--sp-4);padding:var(--sp-7);background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--r-surface)}
.fos-metric--bare{border:0;border-top:1px solid var(--text-primary);border-radius:0;background:none;padding:var(--sp-6) 0 0}
.fos-metric__label{font:var(--type-label);letter-spacing:var(--ls-label);text-transform:uppercase;color:var(--text-secondary)}
.fos-metric__value{font:var(--fw-black) var(--fs-32)/1.05 var(--font-display);letter-spacing:var(--ls-display);color:var(--text-primary);font-variant-numeric:tabular-nums}
.fos-metric__value--lg{font-size:var(--fs-40)}
.fos-metric__unit{font-size:var(--fs-16);font-weight:var(--fw-bold);color:var(--text-secondary);margin-left:var(--sp-3)}
.fos-metric__delta{display:inline-flex;align-items:center;gap:var(--sp-2);font:var(--fw-medium) var(--fs-12)/1 var(--font-ui)}
.fos-metric__delta--up{color:var(--success-fg)}
.fos-metric__delta--down{color:var(--danger-fg)}
.fos-metric__delta--flat{color:var(--text-tertiary)}
.fos-metric__note{font:var(--type-caption);color:var(--text-tertiary);max-width:34ch}
.fos-metric__spark{display:flex;align-items:flex-end;gap:2px;height:28px;margin-top:var(--sp-3)}
.fos-metric__spark i{flex:1;background:var(--chart-ink-3);display:block}
.fos-metric__spark i:last-child{background:var(--chart-ink-1)}

/* ── KeyValue ─────────────────────────────────────────────────────────────── */
.fos-kv{display:grid;gap:0;margin:0}
.fos-kv__row{display:grid;grid-template-columns:var(--fos-kv-label,168px) 1fr;gap:var(--sp-6);padding:var(--sp-5) 0;border-bottom:1px solid var(--border-subtle)}
.fos-kv__row:last-child{border-bottom:0}
.fos-kv--flush .fos-kv__row{border-bottom:0;padding:var(--sp-3) 0}
.fos-kv__k{font:var(--type-caption);color:var(--text-tertiary);margin:0}
.fos-kv__v{font:var(--type-body-sm);color:var(--text-primary);margin:0;display:flex;align-items:center;gap:var(--sp-4);min-width:0}
.fos-kv__v--mono{font:var(--type-numeric);font-variant-numeric:tabular-nums}

/* ── DataTable ────────────────────────────────────────────────────────────── */
.fos-table-wrap{border:1px solid var(--border-subtle);border-radius:var(--r-surface);background:var(--bg-surface);overflow:hidden}
.fos-table-scroll{overflow:auto}
.fos-table{width:100%;border-collapse:separate;border-spacing:0;font:var(--type-body-sm)}
.fos-table th{position:sticky;top:0;z-index:2;background:var(--table-header-bg);color:var(--table-header-fg);font:var(--fw-semibold) var(--fs-11)/1 var(--font-ui);letter-spacing:var(--ls-caps);text-transform:uppercase;text-align:left;padding:0 var(--sp-6);height:34px;border-bottom:1px solid var(--border-subtle);white-space:nowrap}
.fos-table th.fos-th--sortable{cursor:pointer;user-select:none}
.fos-table th.fos-th--sortable:hover{color:var(--text-primary)}
.fos-table th.fos-th--num,.fos-table td.fos-td--num{text-align:right;font-variant-numeric:tabular-nums}
.fos-table td{padding:0 var(--sp-6);height:var(--row-h);border-bottom:1px solid var(--table-row-border);color:var(--text-primary);vertical-align:middle}
.fos-table--dense td{height:var(--row-h-dense)}
.fos-table--comfortable td{height:48px}
.fos-table--zebra tbody tr:nth-child(even) td{background:var(--bg-zebra)}
.fos-table tbody tr:hover td{background:var(--table-row-hover)}
.fos-table tbody tr.fos-tr--selected td{background:var(--bg-selected)}
.fos-table tbody tr:last-child td{border-bottom:0}
.fos-table td.fos-td--mono{font:var(--type-numeric);font-variant-numeric:tabular-nums;color:var(--text-secondary)}
.fos-table td.fos-td--strong{font-weight:var(--fw-medium)}
.fos-table__sort{margin-left:var(--sp-3);opacity:.55;display:inline-flex;vertical-align:-2px}
.fos-table__check{width:36px;padding-left:var(--sp-6)}
.fos-table__row-actions{opacity:0;display:flex;gap:var(--sp-2);justify-content:flex-end;transition:opacity var(--dur-fast) var(--ease-standard)}
.fos-table tbody tr:hover .fos-table__row-actions,.fos-table tbody tr:focus-within .fos-table__row-actions{opacity:1}
.fos-table__bulk{display:flex;align-items:center;gap:var(--sp-6);padding:var(--sp-5) var(--sp-6);background:var(--n-900);color:var(--fos-white);font:var(--type-body-sm)}
[data-theme="dark"] .fos-table__bulk{background:var(--n-950)}
.fos-table__ai{border-left:2px dashed var(--border-default)}

/* ── Pagination ───────────────────────────────────────────────────────────── */
.fos-pag{display:flex;align-items:center;gap:var(--sp-6);padding:var(--sp-5) var(--sp-6);border-top:1px solid var(--border-subtle);font:var(--type-caption);color:var(--text-secondary)}
.fos-pag__count{margin-right:auto;font-variant-numeric:tabular-nums}
.fos-pag__pages{display:flex;align-items:center;gap:var(--sp-2)}
.fos-pag__page{min-width:24px;height:24px;padding:0 var(--sp-3);border:1px solid transparent;border-radius:var(--r-xs);background:none;color:var(--text-secondary);font:var(--type-caption);cursor:pointer;font-variant-numeric:tabular-nums}
.fos-pag__page:hover{background:var(--bg-hover);color:var(--text-primary)}
.fos-pag__page--current{background:var(--n-900);color:var(--fos-white);border-color:var(--n-900)}
[data-theme="dark"] .fos-pag__page--current{background:var(--fos-white);color:var(--n-900)}

/* ── EmptyState ───────────────────────────────────────────────────────────── */
.fos-empty{display:flex;flex-direction:column;align-items:center;text-align:center;gap:var(--sp-5);padding:var(--sp-13) var(--sp-9)}
.fos-empty--left{align-items:flex-start;text-align:left;padding:var(--sp-10) 0}
.fos-empty__mark{width:34px;height:34px;display:grid;place-items:center;color:var(--text-tertiary);border:1px solid var(--border-subtle);border-radius:var(--r-surface);margin-bottom:var(--sp-2)}
.fos-empty__title{font:var(--type-title-sm);color:var(--text-primary)}
.fos-empty__text{font:var(--type-body-sm);color:var(--text-secondary);max-width:46ch}
.fos-empty__actions{display:flex;gap:var(--sp-5);margin-top:var(--sp-4)}
.fos-empty--restricted .fos-empty__mark{border-style:dashed}

/* ── Skeleton ─────────────────────────────────────────────────────────────── */
.fos-skel{background:var(--bg-subtle);border-radius:var(--r-xs);animation:fos-pulse 1.4s var(--ease-standard) infinite}
@keyframes fos-pulse{0%,100%{opacity:1}50%{opacity:.5}}
.fos-skel--text{height:10px}
.fos-skel--row{height:var(--row-h);border-radius:0;border-bottom:1px solid var(--table-row-border);background:none;animation:none;display:flex;align-items:center;gap:var(--sp-7);padding:0 var(--sp-6)}
.fos-skel--row > i{display:block;height:10px;background:var(--bg-subtle);border-radius:var(--r-xs);animation:fos-pulse 1.4s var(--ease-standard) infinite}

/* ── TopBar ───────────────────────────────────────────────────────────────── */
.fos-topbar{display:flex;align-items:center;gap:var(--sp-7);height:var(--topbar-h);padding:0 var(--sp-7);background:var(--n-900);border-bottom:1px solid #000;color:var(--fos-white);flex:none}
.fos-topbar__brand{display:flex;align-items:center;gap:var(--sp-6);flex:none}
.fos-topbar__brand img{height:16px;width:auto;display:block}
.fos-topbar__sep{width:1px;height:20px;background:rgba(248,248,248,.16)}
.fos-topbar__spacer{flex:1}
.fos-topbar__nav{display:flex;align-items:center;gap:var(--sp-2)}
.fos-topbar__link{display:inline-flex;align-items:center;height:28px;padding:0 var(--sp-5);border-radius:var(--r-control);font:var(--fw-medium) var(--fs-12)/1 var(--font-ui);color:var(--n-400);background:none;border:0;cursor:pointer;text-decoration:none;transition:var(--transition-control)}
.fos-topbar__link:hover{color:var(--fos-white);background:rgba(248,248,248,.08)}
.fos-topbar__link--active{color:var(--fos-white);background:rgba(248,248,248,.12)}
.fos-topbar__icon{display:grid;place-items:center;width:28px;height:28px;border:0;background:none;color:var(--n-400);border-radius:var(--r-control);cursor:pointer;position:relative}
.fos-topbar__icon:hover{color:var(--fos-white);background:rgba(248,248,248,.08)}
.fos-topbar__dot{position:absolute;top:5px;right:5px;width:5px;height:5px;border-radius:var(--r-pill);background:var(--warning-on-dark)}
.fos-topbar__user{display:flex;align-items:center;gap:var(--sp-4);height:28px;padding:0 var(--sp-3) 0 var(--sp-4);border:0;background:none;color:var(--fos-white);border-radius:var(--r-control);cursor:pointer;font:var(--type-caption)}
.fos-topbar__user:hover{background:rgba(248,248,248,.08)}
.fos-avatar{display:grid;place-items:center;width:22px;height:22px;border-radius:var(--r-pill);background:rgba(248,248,248,.14);font:var(--fw-semibold) var(--fs-10)/1 var(--font-ui);letter-spacing:.02em;flex:none}

/* ── CompanySwitcher ──────────────────────────────────────────────────────── */
.fos-cswitch{position:relative}
.fos-cswitch__btn{display:flex;align-items:center;gap:var(--sp-5);height:32px;padding:0 var(--sp-5);background:rgba(248,248,248,.06);border:1px solid rgba(248,248,248,.14);border-radius:var(--r-control);color:var(--fos-white);cursor:pointer;text-align:left;transition:var(--transition-control)}
.fos-cswitch__btn:hover{background:rgba(248,248,248,.12)}
.fos-cswitch__name{font:var(--fw-medium) var(--fs-12)/1.2 var(--font-ui);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:220px}
.fos-cswitch__cnpj{font:var(--fw-regular) var(--fs-10)/1.2 var(--font-numeric);color:var(--n-400);font-variant-numeric:tabular-nums}
.fos-cswitch__panel{position:absolute;top:calc(100% + var(--sp-3));left:0;width:360px;background:var(--bg-surface);color:var(--text-primary);border:1px solid var(--border-subtle);border-radius:var(--r-overlay);box-shadow:var(--shadow-lg);z-index:70;overflow:hidden}
.fos-cswitch__search{padding:var(--sp-5);border-bottom:1px solid var(--border-subtle)}
.fos-cswitch__list{max-height:288px;overflow:auto;padding:var(--sp-2)}
.fos-cswitch__item{display:flex;align-items:center;gap:var(--sp-5);width:100%;padding:var(--sp-4) var(--sp-5);border:0;background:none;border-radius:var(--r-sm);cursor:pointer;text-align:left}
.fos-cswitch__item:hover{background:var(--bg-hover)}
.fos-cswitch__item--current{background:var(--bg-selected)}
.fos-cswitch__foot{padding:var(--sp-4);border-top:1px solid var(--border-subtle);background:var(--bg-surface-sunken)}

/* ── Sidebar ──────────────────────────────────────────────────────────────── */
.fos-side{display:flex;flex-direction:column;width:var(--sidebar-w);flex:none;background:var(--bg-surface);border-right:1px solid var(--border-subtle);overflow:auto}
.fos-side--collapsed{width:var(--sidebar-w-collapsed)}
.fos-side__group{padding:var(--sp-6) var(--sp-5) var(--sp-2)}
.fos-side__grouplabel{font:var(--type-label);letter-spacing:var(--ls-label);text-transform:uppercase;color:var(--text-tertiary);padding:0 var(--sp-4) var(--sp-4)}
.fos-side__item{display:flex;align-items:center;gap:var(--sp-5);width:100%;height:32px;padding:0 var(--sp-4);border:0;border-left:2px solid transparent;background:none;border-radius:0 var(--r-sm) var(--r-sm) 0;color:var(--text-secondary);font:var(--fw-medium) var(--fs-13)/1 var(--font-ui);cursor:pointer;text-align:left;transition:var(--transition-control)}
.fos-side__item:hover{background:var(--bg-hover);color:var(--text-primary)}
.fos-side__item--active{background:var(--bg-selected);color:var(--text-primary);border-left-color:var(--n-900)}
[data-theme="dark"] .fos-side__item--active{border-left-color:var(--fos-white)}
.fos-side__item:focus-visible{outline:var(--focus-ring);outline-offset:-2px}
.fos-side__label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fos-side__count{font:var(--fw-medium) var(--fs-11)/1 var(--font-numeric);color:var(--text-tertiary);font-variant-numeric:tabular-nums}
.fos-side__count--alert{color:var(--danger-fg)}
.fos-side__foot{margin-top:auto;padding:var(--sp-6) var(--sp-7);border-top:1px solid var(--border-subtle)}

/* ── Tabs ─────────────────────────────────────────────────────────────────── */
.fos-tabs{display:flex;align-items:center;gap:var(--sp-8);border-bottom:1px solid var(--border-subtle)}
.fos-tabs__tab{position:relative;display:inline-flex;align-items:center;gap:var(--sp-4);height:var(--subbar-h);padding:0;border:0;background:none;color:var(--text-secondary);font:var(--fw-medium) var(--fs-13)/1 var(--font-ui);cursor:pointer;transition:color var(--dur-fast) var(--ease-standard)}
.fos-tabs__tab:hover{color:var(--text-primary)}
.fos-tabs__tab--active{color:var(--text-primary)}
.fos-tabs__tab--active::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--text-primary)}
.fos-tabs__tab:disabled{color:var(--text-disabled);cursor:not-allowed}
.fos-tabs__count{font:var(--fw-medium) var(--fs-11)/1 var(--font-numeric);color:var(--text-tertiary);font-variant-numeric:tabular-nums}
.fos-tabs--pill{border:0;gap:var(--sp-2);background:var(--bg-surface-sunken);padding:var(--sp-1);border-radius:var(--r-control);display:inline-flex}
.fos-tabs--pill .fos-tabs__tab{height:26px;padding:0 var(--sp-6);border-radius:var(--r-sm);font-size:var(--fs-12)}
.fos-tabs--pill .fos-tabs__tab--active{background:var(--bg-surface);box-shadow:var(--shadow-xs)}
.fos-tabs--pill .fos-tabs__tab--active::after{display:none}

/* ── Breadcrumbs ──────────────────────────────────────────────────────────── */
.fos-crumbs{display:flex;align-items:center;gap:var(--sp-4);font:var(--type-caption);color:var(--text-tertiary);flex-wrap:wrap}
.fos-crumbs a,.fos-crumbs button{color:var(--text-tertiary);background:none;border:0;padding:0;cursor:pointer;font:inherit;text-decoration:none}
.fos-crumbs a:hover,.fos-crumbs button:hover{color:var(--text-primary)}
.fos-crumbs__sep{color:var(--n-400)}
.fos-crumbs__current{color:var(--text-primary)}

/* ── PageHeader / Toolbar ─────────────────────────────────────────────────── */
.fos-pagehead{display:flex;flex-direction:column;gap:var(--sp-5);padding:var(--sp-8) var(--sp-9) var(--sp-7)}
.fos-pagehead__top{display:flex;align-items:flex-start;gap:var(--sp-7)}
.fos-pagehead__titles{min-width:0;flex:1;display:flex;flex-direction:column;gap:var(--sp-3)}
.fos-pagehead__title{display:flex;align-items:center;gap:var(--sp-5);font:var(--type-title-lg);letter-spacing:var(--ls-title);color:var(--text-primary)}
.fos-pagehead__desc{font:var(--type-body-sm);color:var(--text-secondary);max-width:78ch}
.fos-pagehead__actions{display:flex;align-items:center;gap:var(--sp-5);flex:none}
.fos-toolbar{display:flex;align-items:center;gap:var(--sp-5);padding:var(--sp-5) var(--sp-6);border-bottom:1px solid var(--border-subtle);background:var(--bg-surface);flex-wrap:wrap}
.fos-toolbar--sunken{background:var(--bg-surface-sunken)}
.fos-toolbar__spacer{flex:1}
.fos-toolbar__group{display:flex;align-items:center;gap:var(--sp-3)}
.fos-toolbar__divider{width:1px;height:20px;background:var(--border-subtle)}

/* ── ActivityTimeline ─────────────────────────────────────────────────────── */
.fos-trail{display:grid;gap:0;position:relative;margin:0;padding:0;list-style:none}
.fos-trail__item{position:relative;display:grid;grid-template-columns:20px 1fr;gap:var(--sp-6);padding:0 0 var(--sp-8)}
.fos-trail__item:last-child{padding-bottom:0}
.fos-trail__rail{position:relative;display:flex;justify-content:center}
.fos-trail__rail::before{content:"";position:absolute;top:14px;bottom:-8px;width:1px;background:var(--border-subtle)}
.fos-trail__item:last-child .fos-trail__rail::before{display:none}
.fos-trail__node{width:9px;height:9px;margin-top:5px;border-radius:var(--r-pill);background:var(--bg-surface);border:1px solid var(--border-default);z-index:1}
.fos-trail__node--done{background:var(--text-primary);border-color:var(--text-primary)}
.fos-trail__node--danger{background:var(--danger-fg);border-color:var(--danger-fg)}
.fos-trail__node--warning{background:var(--warning-fg);border-color:var(--warning-fg)}
.fos-trail__node--pending{border-style:dashed}
.fos-trail__body{min-width:0;padding-top:0}
.fos-trail__head{display:flex;align-items:baseline;gap:var(--sp-5);flex-wrap:wrap}
.fos-trail__what{font:var(--fw-medium) var(--fs-13)/1.4 var(--font-ui);color:var(--text-primary)}
.fos-trail__who{font:var(--type-caption);color:var(--text-secondary)}
.fos-trail__when{margin-left:auto;font:var(--fw-regular) var(--fs-11)/1.4 var(--font-numeric);color:var(--text-tertiary);font-variant-numeric:tabular-nums;white-space:nowrap}
.fos-trail__detail{font:var(--type-caption);color:var(--text-secondary);margin-top:var(--sp-3)}
.fos-trail__meta{display:flex;gap:var(--sp-5);margin-top:var(--sp-4);flex-wrap:wrap}
.fos-trail__hash{font:var(--fw-regular) var(--fs-10)/1.4 var(--font-numeric);color:var(--text-tertiary)}
