/* Buttons */
.ofi-button {
  min-height: var(--ofi-button-height);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  padding: 0 13px;
  border-radius: var(--ofi-radius-md);
  border: 1px solid transparent;
  font-weight: var(--ofi-font-weight-semibold);
  font-size: var(--ofi-font-size-md);
  line-height: 1;
  cursor: pointer;
  user-select: none;
  transition: background-color 120ms ease, border-color 120ms ease, transform 80ms ease;
}
.ofi-button:active:not(:disabled) { transform: translateY(1px); }
.ofi-button:focus-visible { box-shadow: var(--ofi-focus-ring); }
.ofi-button:disabled { opacity: .55; cursor: not-allowed; }
.ofi-button--primary { background: var(--ofi-primary); color: var(--ofi-on-primary); border-color: var(--ofi-primary); }
.ofi-button--primary:hover:not(:disabled) { background: var(--ofi-primary-hover); border-color: var(--ofi-primary-hover); }
.ofi-button--primary:active:not(:disabled) { background: var(--ofi-primary-active); border-color: var(--ofi-primary-active); }
.ofi-button--secondary { background: var(--ofi-secondary-bg); color: var(--ofi-secondary-text); border-color: var(--ofi-secondary-border); }
.ofi-button--secondary:hover:not(:disabled) { background: var(--ofi-secondary-hover); }
.ofi-button--secondary:active:not(:disabled) { background: var(--ofi-secondary-active); }
.ofi-button--soft { background: var(--ofi-primary-soft); color: var(--ofi-primary-active); border-color: var(--ofi-primary-border); }
.ofi-button--soft:hover:not(:disabled) { background: var(--ofi-primary-soft); filter: brightness(.98); }
.ofi-button--danger { background: var(--ofi-danger); color: #fff; border-color: var(--ofi-danger); }
.ofi-button--danger:hover:not(:disabled) { background: var(--ofi-danger-hover); }
.ofi-button--icon { width: var(--ofi-button-height); padding: 0; }
.ofi-button--sm { min-height: var(--ofi-control-height-sm); padding: 0 10px; font-size: var(--ofi-font-size-sm); }

/* Form controls */
.ofi-field { display: grid; gap: 6px; min-width: 0; }
.ofi-label { color: var(--ofi-text); font-size: var(--ofi-font-size-sm); font-weight: var(--ofi-font-weight-medium); }
.ofi-required { color: var(--ofi-danger); }
.ofi-help { color: var(--ofi-text-muted); font-size: var(--ofi-font-size-xs); }
.ofi-input,
.ofi-select,
.ofi-textarea {
  width: 100%;
  min-height: var(--ofi-control-height);
  border: 1px solid var(--ofi-border-strong);
  border-radius: var(--ofi-radius-md);
  background: var(--ofi-surface);
  padding: 0 10px;
  box-shadow: inset 0 1px 1px rgba(24, 38, 54, .02);
}
.ofi-textarea { min-height: 84px; padding-top: 8px; padding-bottom: 8px; resize: vertical; }
.ofi-input:hover, .ofi-select:hover, .ofi-textarea:hover { border-color: #9eafba; }
.ofi-input:focus, .ofi-select:focus, .ofi-textarea:focus { outline: 0; border-color: var(--ofi-focus); box-shadow: var(--ofi-focus-ring); }
.ofi-input:disabled, .ofi-select:disabled, .ofi-textarea:disabled { background: var(--ofi-surface-muted); color: var(--ofi-text-muted); cursor: not-allowed; }
.ofi-field--error .ofi-input, .ofi-field--error .ofi-select, .ofi-field--error .ofi-textarea { border-color: var(--ofi-danger); }
.ofi-field--error .ofi-help { color: var(--ofi-danger); }

/* Cards / surfaces */
.ofi-card { background: var(--ofi-surface); border: 1px solid var(--ofi-border); border-radius: var(--ofi-radius-lg); box-shadow: var(--ofi-shadow-sm); }
.ofi-card__header { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 44px; padding: 10px 14px; border-bottom: 1px solid var(--ofi-border); }
.ofi-card__title { margin: 0; font-size: var(--ofi-font-size-md); font-weight: var(--ofi-font-weight-semibold); color: var(--ofi-text-strong); }
.ofi-card__body { padding: 14px; }
.ofi-kpi { min-width: 0; padding: 12px 14px; }
.ofi-kpi__label { color: var(--ofi-text-muted); font-size: var(--ofi-font-size-xs); font-weight: var(--ofi-font-weight-medium); text-transform: uppercase; letter-spacing: .02em; }
.ofi-kpi__value { margin-top: 5px; color: var(--ofi-text-strong); font-size: 24px; font-weight: var(--ofi-font-weight-semibold); line-height: 1.15; font-variant-numeric: tabular-nums; }
.ofi-kpi__meta { margin-top: 5px; color: var(--ofi-text-muted); font-size: var(--ofi-font-size-xs); }

/* Badges */
.ofi-badge { display: inline-flex; align-items: center; min-height: 22px; padding: 2px 8px; border-radius: var(--ofi-radius-pill); background: var(--ofi-surface-muted); color: var(--ofi-text); border: 1px solid var(--ofi-border); font-size: var(--ofi-font-size-xs); font-weight: var(--ofi-font-weight-medium); }
.ofi-badge--success { background: var(--ofi-success-soft); color: var(--ofi-success); border-color: #bfdfcf; }
.ofi-badge--warning { background: var(--ofi-warning-soft); color: var(--ofi-warning); border-color: #ead5a7; }
.ofi-badge--danger { background: var(--ofi-danger-soft); color: var(--ofi-danger); border-color: #ebc1c1; }
.ofi-badge--info { background: var(--ofi-info-soft); color: var(--ofi-info); border-color: #c9daeb; }

/* SmartSelect */
.ofi-smart-select { position: relative; min-width: 0; }
.ofi-smart-select__row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 6px; }
.ofi-smart-select__control { position: relative; }
.ofi-smart-select__input { padding-right: 34px; }
.ofi-smart-select__toggle { position: absolute; inset-block: 1px; right: 1px; width: 32px; display: grid; place-items: center; border-radius: 0 7px 7px 0; background: transparent; color: var(--ofi-text-muted); cursor: pointer; }
.ofi-smart-select__toggle:hover { background: var(--ofi-surface-muted); color: var(--ofi-text); }
.ofi-smart-select__quick-add { min-width: var(--ofi-control-height); width: var(--ofi-control-height); padding: 0; background: var(--ofi-primary-soft); color: var(--ofi-primary); border: 1px solid var(--ofi-primary-border); }
.ofi-smart-select__quick-add:hover { background: var(--ofi-primary-soft); filter: brightness(.97); }
.ofi-smart-select__list { position: absolute; z-index: calc(var(--ofi-z-menu) + 10); left: 0; right: 0; top: calc(100% + 4px); max-height: 260px; overflow: auto; background: var(--ofi-surface); border: 1px solid var(--ofi-border-strong); border-radius: var(--ofi-radius-md); box-shadow: var(--ofi-shadow-md); padding: 4px; }
.ofi-smart-select__option { min-height: 34px; display: grid; align-content: center; gap: 2px; padding: 6px 8px; border-radius: 6px; cursor: pointer; }
.ofi-smart-select__option:hover, .ofi-smart-select__option[aria-selected="true"] { background: var(--ofi-primary-soft); }
.ofi-smart-select__option-title { font-weight: var(--ofi-font-weight-medium); color: var(--ofi-text-strong); }
.ofi-smart-select__option-meta { font-size: var(--ofi-font-size-xs); color: var(--ofi-text-muted); }
.ofi-smart-select__empty { padding: 10px; color: var(--ofi-text-muted); font-size: var(--ofi-font-size-sm); }

/* Data grids */
.ofi-grid-wrap { width: 100%; overflow: auto; background: var(--ofi-surface); border: 1px solid var(--ofi-border); border-radius: var(--ofi-radius-lg); }
.ofi-data-grid, .ofi-transaction-grid, .ofi-report-table { width: 100%; border-collapse: separate; border-spacing: 0; font-size: var(--ofi-font-size-md); color: var(--ofi-text); }
.ofi-data-grid th, .ofi-transaction-grid th, .ofi-report-table th { position: relative; background: var(--ofi-surface-soft); color: var(--ofi-text-strong); font-size: var(--ofi-font-size-sm); font-weight: var(--ofi-font-weight-semibold); text-align: left; white-space: nowrap; border-bottom: 1px solid var(--ofi-border-strong); padding: 0 10px; height: 36px; }
.ofi-data-grid td, .ofi-report-table td { height: var(--ofi-grid-row-height); padding: 5px 10px; border-bottom: 1px solid var(--ofi-border); vertical-align: middle; white-space: nowrap; }
.ofi-data-grid tbody tr:last-child td, .ofi-report-table tbody tr:last-child td { border-bottom: 0; }
.ofi-data-grid tbody tr:hover td { background: var(--ofi-surface-soft); }
.ofi-data-grid__actions { width: 56px; text-align: center !important; }
.ofi-grid-empty { height: 78px !important; text-align: center; color: var(--ofi-text-muted); }

/* Transaction grid is intentionally spreadsheet-dense. */
.ofi-transaction-grid td { height: var(--ofi-transaction-row-height); padding: 0; border-bottom: 1px solid var(--ofi-border); border-right: 1px solid var(--ofi-border); vertical-align: middle; }
.ofi-transaction-grid td:last-child, .ofi-transaction-grid th:last-child { border-right: 0; }
.ofi-transaction-grid__cell { width: 100%; height: calc(var(--ofi-transaction-row-height) - 1px); border: 0; border-radius: 0; background: transparent; padding: 0 8px; outline: 0; }
.ofi-transaction-grid__cell:focus { box-shadow: inset 0 0 0 2px var(--ofi-focus); background: #fff; }
.ofi-transaction-grid__remove { width: 30px; height: 30px; display: grid; place-items: center; margin: auto; border-radius: 6px; background: var(--ofi-secondary-bg); color: var(--ofi-text-muted); cursor: pointer; }
.ofi-transaction-grid__remove:hover { background: var(--ofi-danger-soft); color: var(--ofi-danger); }

/* Action menu */
.ofi-action-menu { position: relative; display: inline-flex; }
.ofi-action-menu__trigger { min-height: 30px; width: 32px; display: grid; place-items: center; border-radius: 6px; background: var(--ofi-secondary-bg); border: 1px solid var(--ofi-secondary-border); color: var(--ofi-secondary-text); cursor: pointer; font-weight: var(--ofi-font-weight-semibold); }
.ofi-action-menu__trigger:hover { background: var(--ofi-secondary-hover); }
.ofi-action-menu__list { position: fixed; z-index: var(--ofi-z-menu); min-width: 190px; max-width: 280px; background: var(--ofi-surface); border: 1px solid var(--ofi-border-strong); border-radius: var(--ofi-radius-md); box-shadow: var(--ofi-shadow-md); padding: 4px; }
.ofi-action-menu__item { width: 100%; min-height: 34px; display: flex; align-items: center; gap: 8px; padding: 5px 9px; border-radius: 6px; background: transparent; color: var(--ofi-text); text-align: left; cursor: pointer; }
.ofi-action-menu__item:hover:not(:disabled) { background: var(--ofi-surface-muted); }
.ofi-action-menu__item:disabled { color: var(--ofi-text-subtle); cursor: not-allowed; }
.ofi-action-menu__item--danger { color: var(--ofi-danger); }
.ofi-action-menu__separator { height: 1px; margin: 4px 6px; background: var(--ofi-border); }

/* Modal */
.ofi-modal-backdrop { position: fixed; z-index: var(--ofi-z-modal); inset: 0; display: grid; place-items: center; padding: 18px; background: rgba(18, 31, 43, .42); }
.ofi-modal { width: min(560px, 100%); max-height: min(84vh, 780px); overflow: auto; background: var(--ofi-surface); border: 1px solid var(--ofi-border-strong); border-radius: var(--ofi-radius-lg); box-shadow: var(--ofi-shadow-lg); }
.ofi-modal__header { min-height: 48px; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 14px; border-bottom: 1px solid var(--ofi-border); }
.ofi-modal__title { margin: 0; font-size: var(--ofi-font-size-lg); font-weight: var(--ofi-font-weight-semibold); color: var(--ofi-text-strong); }
.ofi-modal__body { padding: 14px; }
.ofi-modal__footer { display: flex; justify-content: flex-end; gap: 8px; padding: 10px 14px; border-top: 1px solid var(--ofi-border); background: var(--ofi-surface-soft); }

/* Toasts */
.ofi-toast-region { position: fixed; z-index: var(--ofi-z-toast); right: 16px; bottom: 16px; display: grid; gap: 8px; width: min(360px, calc(100vw - 32px)); }
.ofi-toast { display: grid; grid-template-columns: 1fr auto; gap: 10px; padding: 10px 12px; border: 1px solid var(--ofi-border-strong); border-radius: var(--ofi-radius-md); background: var(--ofi-surface); box-shadow: var(--ofi-shadow-md); }
.ofi-toast__title { font-weight: var(--ofi-font-weight-semibold); color: var(--ofi-text-strong); }
.ofi-toast__message { margin-top: 2px; color: var(--ofi-text-muted); font-size: var(--ofi-font-size-sm); }

/* Toolbars / forms */
.ofi-toolbar { min-height: var(--ofi-toolbar-height); display: flex; align-items: center; flex-wrap: wrap; gap: 8px; padding: 6px 0; }
.ofi-toolbar__spacer { flex: 1 1 auto; }
.ofi-form-grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 12px; }
.ofi-col-12 { grid-column: span 12; } .ofi-col-8 { grid-column: span 8; } .ofi-col-6 { grid-column: span 6; } .ofi-col-4 { grid-column: span 4; } .ofi-col-3 { grid-column: span 3; }

/* Reports */
.ofi-report-title { margin: 0; color: var(--ofi-text-strong); font-size: 20px; font-weight: var(--ofi-font-weight-semibold); }
.ofi-report-subtitle { margin-top: 2px; color: var(--ofi-text-muted); font-size: var(--ofi-font-size-sm); }
.ofi-report-table .ofi-report-group td { background: var(--ofi-surface-soft); font-weight: var(--ofi-font-weight-semibold); color: var(--ofi-text-strong); }
.ofi-report-table .ofi-report-total td { border-top: 1px solid var(--ofi-border-strong); font-weight: var(--ofi-font-weight-semibold); color: var(--ofi-text-strong); }

@media (max-width: 760px) {
  .ofi-form-grid { grid-template-columns: 1fr; }
  .ofi-col-12, .ofi-col-8, .ofi-col-6, .ofi-col-4, .ofi-col-3 { grid-column: 1; }
  .ofi-toolbar { align-items: stretch; }
  .ofi-toolbar .ofi-input { min-width: 0; }
}

/* Workspace Launcher 1.0.1 */
.ofi-workspace-launcher { min-height: 100vh; display: grid; grid-template-columns: minmax(330px,.86fr) minmax(540px,1.14fr); background: var(--ofi-bg); color: var(--ofi-text); }
.ofi-workspace-launcher--compact { grid-template-columns: 1fr; min-height: auto; }
.ofi-workspace-launcher__brand { position: relative; overflow: hidden; display: grid; align-content: center; gap: 16px; padding: clamp(38px,4.5vw,68px); color: #fff; background: radial-gradient(circle at 18% 12%,rgba(255,255,255,.18),transparent 31%),linear-gradient(145deg,var(--ofi-primary),var(--ofi-primary-hover) 52%,#2c82bd); }
.ofi-workspace-launcher__brand::after { content:''; position:absolute; width:420px; height:420px; right:-180px; bottom:-185px; border:1px solid rgba(255,255,255,.14); border-radius:50%; box-shadow:0 0 0 80px rgba(255,255,255,.035),0 0 0 160px rgba(255,255,255,.02); }
.ofi-workspace-launcher__brand > * { position: relative; z-index: 1; }
.ofi-workspace-launcher__mark { width: 70px; height: 70px; display:grid; place-items:center; border-radius:20px; background:#fff; color:var(--ofi-primary); font-size:24px; font-weight:600; box-shadow:0 10px 28px rgba(0,0,0,.12); }
.ofi-workspace-launcher__edition,.ofi-workspace-launcher__eyebrow { font-size:11px; font-weight:600; letter-spacing:.09em; text-transform:uppercase; }
.ofi-workspace-launcher__edition { color:rgba(255,255,255,.68); }
.ofi-workspace-launcher__brand h1 { max-width:560px; margin:5px 0 0; font-size:clamp(32px,3.35vw,47px); line-height:1.06; letter-spacing:-.038em; font-weight:600; }
.ofi-workspace-launcher__brand > p { max-width:540px; margin:0; color:rgba(255,255,255,.80); font-size:15px; line-height:1.58; }
.ofi-workspace-launcher__features { max-width:540px; display:grid; gap:9px; margin-top:5px; }
.ofi-workspace-launcher__feature { display:grid; grid-template-columns:38px minmax(0,1fr); align-items:center; gap:11px; padding:10px 12px; border:1px solid rgba(255,255,255,.18); border-radius:13px; background:rgba(255,255,255,.08); }
.ofi-workspace-launcher__feature-icon { width:38px; height:38px; display:grid; place-items:center; border-radius:10px; background:rgba(255,255,255,.12); }
.ofi-workspace-launcher__feature-icon svg { width:20px; height:20px; }
.ofi-workspace-launcher__feature-copy { display:grid; gap:2px; }
.ofi-workspace-launcher__feature-copy strong { font-size:13px; font-weight:600; }
.ofi-workspace-launcher__feature-copy small { color:rgba(255,255,255,.68); font-size:11.5px; line-height:1.35; }
.ofi-workspace-launcher__action-panel { display:grid; place-items:center; align-content:center; gap:14px; padding:clamp(28px,3.8vw,58px); min-width:0; }
.ofi-workspace-launcher__card { width:min(720px,100%); padding:clamp(28px,3vw,42px); border:1px solid var(--ofi-border); border-radius:24px; background:var(--ofi-surface); box-shadow:var(--ofi-shadow-lg); }
.ofi-workspace-launcher__eyebrow { color:var(--ofi-primary); }
.ofi-workspace-launcher__card h2 { margin:8px 0 8px; color:var(--ofi-text-strong); font-size:29px; letter-spacing:-.035em; font-weight:600; }
.ofi-workspace-launcher__lead { margin:0 0 20px; color:var(--ofi-text-muted); font-size:15px; line-height:1.55; }
.ofi-workspace-launcher__overview { margin:18px 0 14px; border:1px solid var(--ofi-border); border-radius:15px; background:var(--ofi-surface-soft); overflow:hidden; }
.ofi-workspace-launcher__plan { display:grid; gap:2px; padding:14px 16px; }
.ofi-workspace-launcher__plan small,.ofi-workspace-launcher__account-copy small,.ofi-workspace-launcher__recent-copy small { color:var(--ofi-text-muted); font-size:10.5px; font-weight:600; letter-spacing:.055em; }
.ofi-workspace-launcher__plan strong { font-size:17px; font-weight:600; color:var(--ofi-text-strong); }
.ofi-workspace-launcher__plan span { color:var(--ofi-text-muted); font-size:12px; }
.ofi-workspace-launcher__account { display:grid; grid-template-columns:42px minmax(0,1fr) auto; align-items:center; gap:12px; padding:13px 16px; border-top:1px solid var(--ofi-border); }
.ofi-workspace-launcher__avatar { width:42px; height:42px; display:grid; place-items:center; border-radius:12px; background:var(--ofi-primary-soft); color:var(--ofi-primary); font-weight:600; }
.ofi-workspace-launcher__account-copy { display:grid; gap:2px; min-width:0; }
.ofi-workspace-launcher__account-copy strong { color:var(--ofi-text-strong); font-size:13px; font-weight:600; overflow-wrap:anywhere; }
.ofi-workspace-launcher__account-copy em { color:var(--ofi-text-muted); font-size:11px; font-style:normal; }
.ofi-workspace-launcher__recent { display:grid; grid-template-columns:44px minmax(0,1fr) auto; align-items:center; gap:12px; margin:14px 0 16px; padding:13px 14px; border:1px solid var(--ofi-border); border-radius:15px; background:linear-gradient(135deg,var(--ofi-primary-soft),#fff 70%); }
.ofi-workspace-launcher__recent-icon,.ofi-workspace-launcher__recovery-icon { display:grid; place-items:center; color:var(--ofi-primary); background:var(--ofi-primary-soft); border-radius:12px; }
.ofi-workspace-launcher__recent-icon { width:44px; height:44px; }
.ofi-workspace-launcher__recent-icon svg,.ofi-workspace-launcher__recovery-icon svg { width:21px; height:21px; }
.ofi-workspace-launcher__recent-copy { display:grid; gap:3px; min-width:0; }
.ofi-workspace-launcher__recent-copy strong { color:var(--ofi-text-strong); font-size:16px; font-weight:600; overflow-wrap:anywhere; }
.ofi-workspace-launcher__recent-copy > span { color:var(--ofi-text-muted); font-size:11.5px; line-height:1.35; }
.ofi-workspace-launcher__primary-actions { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.ofi-workspace-launcher__primary-actions .ofi-button { min-height:50px; justify-content:center; }
.ofi-workspace-launcher__primary-actions .ofi-button:only-child { grid-column:1/-1; width:min(100%,320px); justify-self:center; }
.ofi-workspace-launcher__button-icon { width:18px; height:18px; }
.ofi-workspace-launcher__manage,.ofi-workspace-launcher__link { border:0; background:transparent; color:var(--ofi-primary); min-height:34px; display:inline-flex; align-items:center; justify-content:center; gap:7px; padding:5px 8px; font:inherit; font-weight:600; cursor:pointer; }
.ofi-workspace-launcher__manage { width:100%; margin-top:8px; }
.ofi-workspace-launcher__manage svg,.ofi-workspace-launcher__link svg { width:16px; height:16px; }
.ofi-workspace-launcher__continuity { display:grid; gap:8px; margin-top:12px; padding:12px 14px; border:1px dashed var(--ofi-border-strong); border-radius:14px; background:var(--ofi-surface-soft); }
.ofi-workspace-launcher__continuity > small { color:var(--ofi-text-muted); font-size:11px; }
.ofi-workspace-launcher__continuity-links { display:flex; flex-wrap:wrap; gap:12px; }
.ofi-workspace-launcher__recovery { width:100%; display:grid; grid-template-columns:38px minmax(0,1fr) auto; align-items:center; gap:11px; margin-top:18px; padding:11px 12px; border:1px solid var(--ofi-border); border-radius:14px; background:var(--ofi-surface-soft); color:var(--ofi-text); text-align:left; cursor:pointer; }
.ofi-workspace-launcher__recovery:hover { border-color:var(--ofi-primary-border); background:var(--ofi-primary-soft); }
.ofi-workspace-launcher__recovery-icon { width:38px; height:38px; }
.ofi-workspace-launcher__recovery-copy { display:grid; gap:2px; }
.ofi-workspace-launcher__recovery-copy strong { color:var(--ofi-text-strong); font-size:13px; font-weight:600; }
.ofi-workspace-launcher__recovery-copy small { color:var(--ofi-text-muted); font-size:11px; }
.ofi-workspace-launcher__recovery-action { color:var(--ofi-primary); font-size:11.5px; font-weight:600; white-space:nowrap; }
.ofi-workspace-launcher__footnote { margin:0; color:var(--ofi-text-subtle); font-size:11px; text-align:center; }
@media(max-width:980px){.ofi-workspace-launcher{grid-template-columns:1fr}.ofi-workspace-launcher__brand{min-height:460px}.ofi-workspace-launcher__action-panel{padding:24px}.ofi-workspace-launcher__card{width:min(760px,100%)}}
@media(max-width:620px){.ofi-workspace-launcher__brand{min-height:auto;padding:36px 25px}.ofi-workspace-launcher__brand h1{font-size:36px}.ofi-workspace-launcher__action-panel{padding:16px}.ofi-workspace-launcher__card{padding:24px 18px;border-radius:19px}.ofi-workspace-launcher__primary-actions{grid-template-columns:1fr}.ofi-workspace-launcher__account{grid-template-columns:38px minmax(0,1fr)}.ofi-workspace-launcher__account .ofi-button{grid-column:2;justify-self:start}.ofi-workspace-launcher__recent{grid-template-columns:40px minmax(0,1fr)}.ofi-workspace-launcher__recent>.ofi-badge{grid-column:2;justify-self:start}.ofi-workspace-launcher__continuity-links{display:grid}.ofi-workspace-launcher__recovery{grid-template-columns:36px minmax(0,1fr)}.ofi-workspace-launcher__recovery-action{grid-column:2}.ofi-workspace-launcher__footnote{padding:0 8px}}

/* Language Selector 1.1.0 F6 */
.ofi-language-selector { display:inline-flex; align-items:center; gap:8px; min-width:0; }
.ofi-language-selector[hidden] { display:none !important; }
.ofi-language-selector__label { color:var(--ofi-text-muted); font-size:11px; font-weight:600; white-space:nowrap; }
.ofi-language-selector__controls { display:inline-flex; align-items:center; gap:2px; padding:2px; border:1px solid var(--ofi-border); border-radius:10px; background:var(--ofi-surface-soft); }
.ofi-language-selector__option { min-height:30px; padding:4px 9px; border:0; border-radius:7px; background:transparent; color:var(--ofi-text-muted); font:inherit; font-size:12px; font-weight:600; cursor:pointer; }
.ofi-language-selector__option:hover { color:var(--ofi-text-strong); background:var(--ofi-surface); }
.ofi-language-selector__option[aria-pressed="true"] { color:var(--ofi-primary); background:var(--ofi-surface); box-shadow:0 1px 2px rgba(15,23,42,.08); }
.ofi-language-selector--select .ofi-language-selector__controls { padding:0; border:0; background:transparent; }
.ofi-language-selector__select { min-width:116px; height:32px; font-size:12px; }
@media(max-width:620px){.ofi-language-selector__label{display:none}.ofi-language-selector__option{padding-inline:7px}.ofi-language-selector__select{min-width:104px}}
.ofi-workspace-launcher__workspace-list { display:grid; gap:8px; margin:16px 0; }
.ofi-workspace-launcher__workspace-list-title { color:var(--ofi-text-muted); font-size:10.5px; font-weight:600; letter-spacing:.055em; }
.ofi-workspace-launcher__workspace-row { display:grid; grid-template-columns:38px minmax(0,1fr) auto; gap:10px; align-items:center; padding:10px 11px; border:1px solid var(--ofi-border); border-radius:12px; background:var(--ofi-surface); }
.ofi-workspace-launcher__workspace-row.is-remote { background:var(--ofi-surface-soft); }
.ofi-workspace-launcher__workspace-row-icon { width:36px; height:36px; display:grid; place-items:center; border-radius:10px; color:var(--ofi-primary); background:var(--ofi-surface-soft); }
.ofi-workspace-launcher__workspace-row-icon svg { width:19px; height:19px; }
.ofi-workspace-launcher__workspace-row-copy { display:grid; gap:2px; min-width:0; }
.ofi-workspace-launcher__workspace-row-copy strong { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:13px; font-weight:600; }
.ofi-workspace-launcher__workspace-row-copy small { color:var(--ofi-text-muted); font-size:11.5px; }


/* F5 reusable work/transaction pattern primitives */
.ofi-work-cards { display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:8px; margin-bottom:10px; }
.ofi-work-card { min-height:62px; display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:2px 10px; padding:9px 11px; border:1px solid var(--ofi-border); border-radius:var(--ofi-radius-md); background:var(--ofi-surface); color:var(--ofi-text); text-align:left; cursor:pointer; }
.ofi-work-card:hover { border-color:var(--ofi-primary-border); background:var(--ofi-surface-soft); }
.ofi-work-card[data-active="true"], .ofi-work-card[aria-pressed="true"] { border-color:var(--ofi-primary-border); background:var(--ofi-primary-soft); box-shadow:inset 3px 0 0 var(--ofi-primary); }
.ofi-work-card__label { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:var(--ofi-font-size-sm); color:var(--ofi-text-muted); }
.ofi-work-card__value { font-weight:var(--ofi-font-weight-semibold); color:var(--ofi-text-strong); font-variant-numeric:tabular-nums; }
.ofi-work-card__meta { grid-column:1/-1; color:var(--ofi-text-subtle); font-size:var(--ofi-font-size-xs); }
.ofi-segmented-tabs { display:inline-flex; align-items:center; gap:2px; padding:2px; border:1px solid var(--ofi-border); border-radius:9px; background:var(--ofi-surface-soft); }
.ofi-segmented-tabs__tab { min-height:30px; display:inline-flex; align-items:center; gap:6px; padding:4px 9px; border:0; border-radius:6px; background:transparent; color:var(--ofi-text-muted); font:inherit; font-size:var(--ofi-font-size-sm); font-weight:var(--ofi-font-weight-medium); cursor:pointer; }
.ofi-segmented-tabs__tab[data-active="true"], .ofi-segmented-tabs__tab[aria-selected="true"] { background:var(--ofi-surface); color:var(--ofi-primary); box-shadow:var(--ofi-shadow-sm); font-weight:var(--ofi-font-weight-semibold); }
.ofi-segmented-tabs__count { min-width:19px; min-height:19px; display:grid; place-items:center; padding:0 5px; border-radius:999px; background:var(--ofi-surface-muted); font-size:11px; }
.ofi-work-filter-bar { min-height:42px; display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin:8px 0; padding:4px 0; }
.ofi-work-filter-bar__search { width:min(360px,100%); }
.ofi-work-filter-bar__filters { display:flex; gap:6px; flex-wrap:wrap; }
.ofi-work-filter-bar__filters [data-active="true"] { background:var(--ofi-primary-soft); border-color:var(--ofi-primary-border); color:var(--ofi-primary); }
.ofi-work-filter-bar__trailing { margin-left:auto; }
.ofi-transaction-grid-wrap { border-radius:var(--ofi-radius-md); }
.ofi-transaction-grid tbody tr[data-selected="true"] > td { background:var(--ofi-primary-soft); }
.ofi-transaction-grid tbody tr[data-editing="true"] > td { box-shadow:inset 0 1px 0 var(--ofi-primary-border), inset 0 -1px 0 var(--ofi-primary-border); }
.ofi-transaction-grid tbody tr:hover > td { background:var(--ofi-surface-soft); }
.ofi-transaction-grid tbody tr[data-selected="true"]:hover > td { background:var(--ofi-primary-soft); }
.ofi-transaction-grid td[data-numeric="true"], .ofi-transaction-grid th[data-numeric="true"] { text-align:right; font-variant-numeric:tabular-nums; }
.ofi-transaction-grid__display { display:block; min-width:0; padding:0 8px; font-weight:var(--ofi-font-weight-regular); line-height:calc(var(--ofi-transaction-row-height) - 1px); }
.ofi-transaction-grid__display.is-truncated { overflow:hidden; white-space:nowrap; text-overflow:ellipsis; }
.ofi-transaction-grid__badge { font-weight:var(--ofi-font-weight-semibold); margin:0 6px; }
.ofi-badge--neutral { background:var(--ofi-surface-muted); color:var(--ofi-text-muted); border-color:var(--ofi-border); }
.ofi-transaction-grid__row-actions { min-height:var(--ofi-transaction-row-height); display:flex; align-items:center; justify-content:flex-end; gap:4px; padding:0 4px; }
.ofi-button--xs { min-height:26px; height:26px; padding:2px 7px; font-size:var(--ofi-font-size-xs); }
.ofi-transaction-grid__expand-cell { width:34px; text-align:center; }
.ofi-transaction-grid__expand { width:24px; height:24px; display:grid; place-items:center; margin:auto; border:1px solid var(--ofi-border); border-radius:5px; background:var(--ofi-surface); color:var(--ofi-primary); cursor:pointer; }
.ofi-transaction-grid__expanded-row > td { padding:10px 12px; background:var(--ofi-surface-soft); border-bottom:1px solid var(--ofi-border); }
.ofi-transaction-grid__combobox { margin:0; }
.ofi-transaction-grid__combobox.ofi-field { gap:0; }
.ofi-transaction-grid__combobox .ofi-smart-select__row, .ofi-transaction-grid__combobox .ofi-smart-select__control { min-height:calc(var(--ofi-transaction-row-height) - 1px); }
.ofi-transaction-grid__combobox .ofi-input { min-height:calc(var(--ofi-transaction-row-height) - 1px); height:calc(var(--ofi-transaction-row-height) - 1px); border:0; border-radius:0; background:transparent; }
.ofi-transaction-grid__combobox .ofi-smart-select__toggle { height:calc(var(--ofi-transaction-row-height) - 1px); border:0; border-left:1px solid var(--ofi-border); border-radius:0; }

/* Shared Staging operator status — Foundation 1.2.1 F4 */
.ofi-shared-staging-status { display:grid; gap:12px; padding:14px; border:1px solid var(--ofi-border); border-radius:var(--ofi-radius-lg); background:var(--ofi-surface); box-shadow:var(--ofi-shadow-sm); }
.ofi-shared-staging-status__header { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.ofi-shared-staging-status__heading { display:grid; gap:2px; }
.ofi-shared-staging-status__eyebrow { color:var(--ofi-text-muted); font-size:var(--ofi-font-size-xs); font-weight:var(--ofi-font-weight-semibold); letter-spacing:.045em; text-transform:uppercase; }
.ofi-shared-staging-status__state { color:var(--ofi-text-strong); font-size:var(--ofi-font-size-lg); font-weight:var(--ofi-font-weight-semibold); }
.ofi-shared-staging-status__badge { white-space:nowrap; }
.ofi-badge--success { background:var(--ofi-success-soft); color:var(--ofi-success); border-color:color-mix(in srgb,var(--ofi-success) 25%,var(--ofi-border)); }
.ofi-badge--warning { background:var(--ofi-warning-soft); color:var(--ofi-warning); border-color:color-mix(in srgb,var(--ofi-warning) 25%,var(--ofi-border)); }
.ofi-badge--danger { background:var(--ofi-danger-soft); color:var(--ofi-danger); border-color:color-mix(in srgb,var(--ofi-danger) 25%,var(--ofi-border)); }
.ofi-shared-staging-status__message,.ofi-shared-staging-status__production { margin:0; color:var(--ofi-text-muted); line-height:var(--ofi-line-height-normal); }
.ofi-shared-staging-status__production { padding:8px 10px; border-radius:var(--ofi-radius-md); background:var(--ofi-surface-soft); font-size:var(--ofi-font-size-xs); }
.ofi-shared-staging-status__meta { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:7px 14px; margin:0; }
.ofi-shared-staging-status__meta-row { min-width:0; display:grid; grid-template-columns:max-content minmax(0,1fr); gap:7px; }
.ofi-shared-staging-status__meta dt { color:var(--ofi-text-subtle); font-size:var(--ofi-font-size-xs); }
.ofi-shared-staging-status__meta dd { margin:0; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:var(--ofi-text-strong); font-family:var(--ofi-font-mono); font-size:var(--ofi-font-size-xs); }
.ofi-shared-staging-status__checks { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:7px; }
.ofi-shared-staging-status__check { display:grid; grid-template-columns:22px minmax(0,1fr); gap:1px 6px; align-items:center; min-width:0; padding:8px; border:1px solid var(--ofi-border); border-radius:var(--ofi-radius-md); background:var(--ofi-surface-soft); }
.ofi-shared-staging-status__check-mark { grid-row:1/3; width:22px; height:22px; display:grid; place-items:center; border-radius:999px; background:var(--ofi-surface-muted); color:var(--ofi-text-muted); font-weight:var(--ofi-font-weight-semibold); }
.ofi-shared-staging-status__check[data-ok="true"] .ofi-shared-staging-status__check-mark { background:var(--ofi-success-soft); color:var(--ofi-success); }
.ofi-shared-staging-status__check[data-checked="true"][data-ok="false"] .ofi-shared-staging-status__check-mark { background:var(--ofi-warning-soft); color:var(--ofi-warning); }
.ofi-shared-staging-status__check-label { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:var(--ofi-text-strong); font-size:var(--ofi-font-size-sm); font-weight:var(--ofi-font-weight-semibold); }
.ofi-shared-staging-status__check-state { color:var(--ofi-text-muted); font-size:var(--ofi-font-size-xs); }
.ofi-shared-staging-status__errors { color:var(--ofi-text-muted); font-size:var(--ofi-font-size-xs); }
.ofi-shared-staging-status__errors summary { cursor:pointer; color:var(--ofi-primary); font-weight:var(--ofi-font-weight-semibold); }
.ofi-shared-staging-status__errors ul { margin:7px 0 0 20px; }
.ofi-shared-staging-status__actions { display:flex; justify-content:flex-end; gap:7px; flex-wrap:wrap; }
@media(max-width:760px){.ofi-shared-staging-status__checks{grid-template-columns:repeat(2,minmax(0,1fr))}.ofi-shared-staging-status__meta{grid-template-columns:1fr}}
@media(max-width:480px){.ofi-shared-staging-status__checks{grid-template-columns:1fr}.ofi-shared-staging-status__header{align-items:flex-start;flex-direction:column}.ofi-shared-staging-status__actions{justify-content:stretch}.ofi-shared-staging-status__actions .ofi-button{flex:1}}
