/* Use these controls with either theme. Keep screen layout outside this module. */
.bo-ui { font-family: var(--bo-font); color: var(--bo-ink); }
.bo-icon { width: 20px; height: 20px; display: inline-block; flex: 0 0 auto; vertical-align: middle; }
.bo-button, .bo-icon-button {
  display: inline-flex; align-items: center; justify-content: center; gap: var(--bo-space-2);
  min-height: var(--bo-control-height); border: 1px solid var(--bo-line); border-radius: var(--bo-radius-sm);
  padding: 8px 14px; background: var(--bo-surface); color: var(--bo-ink); font: inherit;
  font-size: var(--bo-text-sm); font-weight: 500; text-decoration: none; cursor: pointer;
}
.bo-icon-button { width: var(--bo-control-height); padding: 8px; border-color: transparent; background: transparent; color: var(--bo-muted); }
.bo-button:hover:not(:disabled), .bo-icon-button:hover:not(:disabled) { background: var(--bo-surface-soft); border-color: var(--bo-muted); }
.bo-button[data-variant="primary"] { background: var(--bo-accent-fill); color: #fff; border-color: var(--bo-accent-fill); }
.bo-button[data-variant="primary"]:hover:not(:disabled) { filter: brightness(.94); }
.bo-button[data-variant="soft"] { background: var(--bo-accent-soft); color: var(--bo-accent); border-color: transparent; }
.bo-button[data-variant="danger"] { color: var(--bo-danger); }
.bo-button:disabled, .bo-icon-button:disabled { opacity: .55; cursor: not-allowed; }
.bo-ui :is(button, a, summary, input, select, textarea):focus-visible { outline: 2px solid var(--bo-accent); outline-offset: 3px; }
.bo-field {
  box-sizing: border-box; width: 100%; min-height: var(--bo-control-height); min-width: 0;
  border: 1px solid var(--bo-line); border-radius: var(--bo-radius-sm); padding: 9px 12px;
  background: var(--bo-surface); color: var(--bo-ink); font: inherit; font-size: var(--bo-text-sm);
}
.bo-field:disabled { background: var(--bo-surface-soft); color: var(--bo-muted); cursor: not-allowed; }
.bo-field[aria-invalid="true"] { border-color: var(--bo-danger); }
.bo-field option { background: var(--bo-surface); color: var(--bo-ink); }
.bo-label { display: block; color: var(--bo-muted); font-size: var(--bo-text-sm); margin-bottom: var(--bo-space-2); }
.bo-hint { margin: var(--bo-space-2) 0 0; color: var(--bo-muted); font-size: var(--bo-text-xs); line-height: 1.5; }
.bo-chip { display: inline-flex; align-items: center; gap: 5px; max-width: 100%; border-radius: var(--bo-radius-sm); padding: 5px 10px; color: var(--bo-accent); background: var(--bo-accent-soft); font-size: var(--bo-text-sm); overflow-wrap: anywhere; }
.bo-chip[data-tone="neutral"] { color: var(--bo-muted); background: var(--bo-surface-soft); }
.bo-chip[data-tone="success"] { color: var(--bo-success); background: var(--bo-success-soft); }
.bo-chip[data-tone="warning"] { color: var(--bo-warning); background: var(--bo-warning-soft); }
.bo-chip[data-tone="danger"] { color: var(--bo-danger); background: var(--bo-danger-soft); }
.bo-avatar { display: grid; place-items: center; width: 34px; height: 34px; flex: 0 0 34px; border-radius: 50%; color: var(--bo-muted); background: var(--bo-line); font-size: var(--bo-text-xs); font-weight: 600; }
.bo-property { display: grid; grid-template-columns: 20px minmax(94px, .85fr) minmax(0, 1.15fr); align-items: center; gap: 12px; min-height: 56px; font-size: var(--bo-text-sm); }
.bo-property > .bo-icon, .bo-property-label { color: var(--bo-muted); }
.bo-property-label { margin: 0; }
.bo-property-value { min-width: 0; }
.bo-property-value :is(select, input) { width: 100%; min-width: 0; min-height: 40px; padding: 7px 5px; border: 1px solid transparent; border-radius: var(--bo-radius-sm); background: transparent; color: var(--bo-ink); font: inherit; }
.bo-property-value :is(select, input):hover:not(:disabled) { background: var(--bo-surface); border-color: var(--bo-line); }
.bo-property-value :is(select, input):disabled { color: var(--bo-muted); opacity: .6; cursor: not-allowed; }
.bo-property-value select option { background: var(--bo-surface); color: var(--bo-ink); }
.bo-tabs { display: flex; flex-wrap: wrap; gap: 8px; }
.bo-tabs button { border: 0; border-radius: var(--bo-radius-sm); padding: 8px 12px; background: transparent; color: var(--bo-muted); font: inherit; font-size: var(--bo-text-sm); cursor: pointer; }
.bo-tabs button[aria-selected="true"] { background: var(--bo-accent-soft); color: var(--bo-accent); }
.bo-file { display: flex; align-items: center; gap: 12px; min-width: 0; border: 1px solid var(--bo-line); border-radius: var(--bo-radius-sm); padding: 14px; background: var(--bo-surface); color: var(--bo-ink); text-decoration: none; font-size: var(--bo-text-sm); }
.bo-file-icon { display: grid; place-items: center; width: 44px; height: 44px; flex: 0 0 44px; border-radius: var(--bo-radius-md); background: var(--bo-accent-soft); color: var(--bo-accent); }
.bo-file-copy { flex: 1; min-width: 0; }
.bo-file-copy b { display: block; font-weight: 600; overflow-wrap: anywhere; }
.bo-file-copy small { display: block; color: var(--bo-muted); margin-top: 5px; }
.bo-file > .bo-icon { width: 16px; height: 16px; color: var(--bo-muted); }
.bo-notice { padding: 12px 14px; border: 1px solid var(--bo-line); border-radius: var(--bo-radius-sm); color: var(--bo-muted); background: var(--bo-surface-soft); font-size: var(--bo-text-sm); line-height: 1.5; }
.bo-notice[data-tone="danger"] { color: var(--bo-danger); background: var(--bo-danger-soft); border-color: var(--bo-danger); }
.bo-notice[data-tone="success"] { color: var(--bo-success); background: var(--bo-success-soft); }
.bo-empty { padding: 24px; text-align: center; color: var(--bo-muted); border: 1px dashed var(--bo-line); border-radius: var(--bo-radius-md); }
.bo-skeleton { min-height: 16px; border-radius: var(--bo-radius-sm); background: var(--bo-line); animation: bo-pulse 1.4s ease-in-out infinite alternate; }
@keyframes bo-pulse { to { opacity: .45; } }
@media (prefers-reduced-motion: reduce) { .bo-ui *, .bo-skeleton { animation: none !important; transition: none !important; } }
