/* Bundlekeep workspace. Root rules are scoped to .uwapp-root.uwapp-bundlekeep (the body carries the app class too);
   dialogs live under <body> and use the same tokens via .bk-dialog. Follows the site theme (html[data-theme] or the OS). */
.uwapp-root.uwapp-bundlekeep, .bk-dialog, .bk-print {
  --bk-bg: #f1f3ec; --bk-surface: #ffffff; --bk-surface-2: #f6f8f3; --bk-ink: #1d2c26; --bk-muted: #4a5a52; --bk-line: #cfd9d0;
  --bk-control: #6a7d72; --bk-accent: #365b49; --bk-on-accent: #ffffff; --bk-accent-soft: #e2ece5; --bk-accent-ink: #26473a;
  --bk-focus: #b45309; --bk-danger: #a3271f; --bk-danger-soft: #fbe9e7; --bk-warn-ink: #7a4300; --bk-warn-soft: #fdf1dc;
  --bk-good-ink: #1d6438; --bk-good-soft: #e3f3e8; --bk-shadow: 0 1px 3px #1d2c2614, 0 8px 24px #1d2c2610;
  color-scheme: light;
}
html[data-theme=dark] .uwapp-root.uwapp-bundlekeep, html[data-theme=dark] .bk-dialog {
  --bk-bg: #121815; --bk-surface: #1a221e; --bk-surface-2: #222c27; --bk-ink: #e6eee8; --bk-muted: #a9b9af; --bk-line: #34433b;
  --bk-control: #82978b; --bk-accent: #8fd1ad; --bk-on-accent: #0f2419; --bk-accent-soft: #24382e; --bk-accent-ink: #a9e0c2;
  --bk-focus: #fbbf24; --bk-danger: #ff9a90; --bk-danger-soft: #3a2422; --bk-warn-ink: #f6c875; --bk-warn-soft: #3a3020;
  --bk-good-ink: #93dbb2; --bk-good-soft: #1f3a2b; --bk-shadow: 0 1px 3px #0008, 0 8px 24px #0006;
  color-scheme: dark;
}
@media (prefers-color-scheme: dark) {
  html:not([data-theme=light]) .uwapp-root.uwapp-bundlekeep, html:not([data-theme=light]) .bk-dialog {
    --bk-bg: #121815; --bk-surface: #1a221e; --bk-surface-2: #222c27; --bk-ink: #e6eee8; --bk-muted: #a9b9af; --bk-line: #34433b;
    --bk-control: #82978b; --bk-accent: #8fd1ad; --bk-on-accent: #0f2419; --bk-accent-soft: #24382e; --bk-accent-ink: #a9e0c2;
    --bk-focus: #fbbf24; --bk-danger: #ff9a90; --bk-danger-soft: #3a2422; --bk-warn-ink: #f6c875; --bk-warn-soft: #3a3020;
    --bk-good-ink: #93dbb2; --bk-good-soft: #1f3a2b; --bk-shadow: 0 1px 3px #0008, 0 8px 24px #0006;
    color-scheme: dark;
  }
}

.uwapp-root.uwapp-bundlekeep { background: var(--bk-bg); color: var(--bk-ink); font: 15px/1.45 system-ui, -apple-system, "Segoe UI", sans-serif; overflow: hidden; }
.uwapp-root.uwapp-bundlekeep *, .bk-dialog * { box-sizing: border-box; }
.uwapp-root.uwapp-bundlekeep [hidden], .bk-dialog [hidden] { display: none !important; }
.uwapp-root.uwapp-bundlekeep :focus-visible, .bk-dialog :focus-visible { outline: 3px solid var(--bk-focus); outline-offset: 2px; }
.uwapp-root.uwapp-bundlekeep .sr-only, .bk-dialog .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; }
/* Neutralise platform element styles (button padding, full-width mobile buttons, table header colours). */
:where(.uwapp-root.uwapp-bundlekeep, .bk-dialog) :where(button, input, select, textarea) { font: inherit; color: inherit; width: auto; margin: 0; }
:where(.uwapp-root.uwapp-bundlekeep, .bk-dialog) :where(h1, h2, h3, p, ul, ol, dl, dd, figure) { margin: 0; }
.uwapp-root.uwapp-bundlekeep code, .uwapp-root.uwapp-bundlekeep pre, .bk-dialog code, .bk-dialog pre, .bk-dialog kbd { font-family: ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace; background: var(--bk-surface-2); color: var(--bk-ink); }
.uwapp-root.uwapp-bundlekeep a:not(.bk-btn), .bk-dialog a:not(.bk-btn) { color: var(--bk-accent-ink); }

.bk-icon { width: 18px; height: 18px; flex: none; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.bk-btn { display: inline-flex; align-items: center; gap: 6px; min-height: 36px; padding: 6px 12px; font-size: 14px; font-weight: 500; border: 1px solid var(--bk-control); border-radius: 8px; background: var(--bk-surface); color: var(--bk-ink); cursor: pointer; text-decoration: none; line-height: 1.2; white-space: nowrap; }
.bk-btn:hover:not(:disabled) { background: var(--bk-accent-soft); }
.bk-btn:disabled { opacity: .55; cursor: not-allowed; }
.bk-btn.bk-primary { background: var(--bk-accent); border-color: var(--bk-accent); color: var(--bk-on-accent); font-weight: 600; }
.bk-btn.bk-primary:hover:not(:disabled) { background: var(--bk-accent); filter: brightness(1.08); }
.bk-btn.bk-danger { color: var(--bk-danger); border-color: var(--bk-danger); }
.bk-btn.bk-danger:hover:not(:disabled) { background: var(--bk-danger-soft); }
.bk-btn.bk-link-btn { border-color: transparent; background: transparent; text-decoration: underline; color: var(--bk-accent-ink); }
.bk-icon-btn { display: inline-grid; place-items: center; width: 36px; height: 36px; padding: 0; border: 1px solid transparent; border-radius: 8px; background: transparent; color: var(--bk-ink); cursor: pointer; }
.bk-icon-btn:hover { background: var(--bk-accent-soft); }

/* toolbar */
.bk-toolbar { flex: none; display: flex; flex-wrap: wrap; align-items: center; gap: 8px 14px; padding: 8px 14px; background: var(--bk-surface); border-bottom: 1px solid var(--bk-line); }
.bk-group { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.bk-group-end { margin-inline-start: auto; }
.bk-menu-wrap { position: relative; }
.bk-menu { position: absolute; inset-inline-start: 0; top: calc(100% + 4px); z-index: 30; min-width: 250px; padding: 6px; background: var(--bk-surface); color: var(--bk-ink); border: 1px solid var(--bk-line); border-radius: 10px; box-shadow: var(--bk-shadow); }
.bk-group-end .bk-menu { inset-inline-start: auto; inset-inline-end: 0; }
.bk-menu-item { font-size: 14px; font-weight: 400; display: flex; justify-content: space-between; gap: 16px; width: 100%; min-height: 36px; padding: 6px 10px; border: 0; border-radius: 6px; background: transparent; color: var(--bk-ink); text-align: start; cursor: pointer; }
.bk-menu-item:hover:not(:disabled), .bk-menu-item:focus-visible { background: var(--bk-accent-soft); }
.bk-menu-item:disabled { color: var(--bk-muted); cursor: not-allowed; }
.bk-menu-hint { color: var(--bk-muted); font-size: 13px; }
.bk-menu-sep { height: 1px; margin: 5px 4px; background: var(--bk-line); }

/* layout */
.bk-layout { flex: 1; min-height: 0; display: grid; grid-template-columns: minmax(0, 1.65fr) minmax(300px, 1fr); gap: 14px; padding: 14px; }
.bk-panel { min-width: 0; min-height: 0; overflow: auto; background: var(--bk-surface); border: 1px solid var(--bk-line); border-radius: 12px; padding: 16px; box-shadow: var(--bk-shadow); }
.bk-files { display: flex; flex-direction: column; gap: 12px; }
.bk-files > * { flex: none; }
.bk-h { font-size: 19px; line-height: 1.25; }
.bk-head-row { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 10px 16px; }
.bk-head-row .bk-h { padding-bottom: 6px; }
.bk-name-field { flex: 1 1 260px; }
.bk-field { display: grid; gap: 4px; font-size: 14px; }
.bk-field > span { color: var(--bk-muted); font-weight: 600; }
.uwapp-root.uwapp-bundlekeep input[type=text], .uwapp-root.uwapp-bundlekeep input[type=search], .uwapp-root.uwapp-bundlekeep select, .uwapp-root.uwapp-bundlekeep textarea, .bk-dialog input[type=text], .bk-dialog select {
  min-height: 36px; padding: 6px 10px; border: 1px solid var(--bk-control); border-radius: 8px; background: var(--bk-surface); color: var(--bk-ink); max-width: 100%;
}
.uwapp-root.uwapp-bundlekeep textarea { width: 100%; resize: vertical; }
.bk-name-input { width: 100%; font-weight: 600; font-size: 16px; }
.bk-notes-box > summary, .bk-preview-box > summary { cursor: pointer; color: var(--bk-accent-ink); font-weight: 600; min-height: 28px; padding-block: 3px; }
.bk-notes-box[open] > summary { margin-bottom: 6px; }
.bk-summary { display: grid; grid-template-columns: repeat(auto-fit, minmax(96px, 1fr)); gap: 8px; }
.bk-stat { padding: 8px 10px; background: var(--bk-surface-2); border: 1px solid var(--bk-line); border-radius: 10px; }
.bk-stat dt { font-size: 13px; color: var(--bk-muted); }
.bk-stat dd { font-size: 20px; font-weight: 700; font-variant-numeric: tabular-nums; }
.bk-stat.bk-good dd { color: var(--bk-good-ink); }
.bk-stat.bk-bad dd { color: var(--bk-danger); }
.bk-stat.bk-warn dd { color: var(--bk-warn-ink); }
.bk-filters { display: flex; flex-wrap: wrap; gap: 10px; }
.bk-filters .bk-field:first-child { flex: 1 1 220px; }
.bk-search { width: 100%; }
.bk-bulk { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 8px; padding: 6px 8px; background: var(--bk-surface-2); border-radius: 10px; }
.bk-bulk-count { font-weight: 600; margin-inline-end: auto; }
.bk-table-wrap { overflow: auto; border: 1px solid var(--bk-line); border-radius: 10px; }
.bk-table { width: 100%; border-collapse: collapse; font-size: 14px; }
.bk-table th, .bk-table td { padding: 6px 10px; border-bottom: 1px solid var(--bk-line); text-align: start; vertical-align: middle; background: transparent; color: var(--bk-ink); }
.bk-table thead th { position: sticky; top: 0; z-index: 1; background: var(--bk-surface-2); color: var(--bk-muted); font-size: 13px; font-weight: 700; }
.bk-table tbody tr:last-child td { border-bottom: 0; }
.bk-row.bk-current td { background: var(--bk-accent-soft); }
.bk-col-check { width: 40px; }
.bk-col-num { text-align: end !important; white-space: nowrap; font-variant-numeric: tabular-nums; }
.bk-check { width: 20px; height: 20px; margin: 2px; accent-color: var(--bk-accent); cursor: pointer; }
.bk-file-btn { display: grid; gap: 1px; width: 100%; min-height: 36px; padding: 4px 6px; font-size: 14px; font-weight: 400; border: 0; border-radius: 6px; background: transparent; color: var(--bk-ink); text-align: start; cursor: pointer; }
.bk-file-btn:hover { background: var(--bk-accent-soft); }
.bk-file-name { font-weight: 600; overflow-wrap: anywhere; }
.bk-file-sub { color: var(--bk-muted); font-size: 13px; overflow-wrap: anywhere; }
.bk-app { display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; }
.bk-app img { border-radius: 5px; }
.bk-muted { color: var(--bk-muted); }
.bk-badge { display: inline-flex; align-items: center; gap: 4px; padding: 2px 8px; margin: 2px 4px 2px 0; border-radius: 999px; font-size: 13px; font-weight: 600; white-space: nowrap; }
.bk-badge .bk-icon { width: 14px; height: 14px; }
.bk-verified { background: var(--bk-good-soft); color: var(--bk-good-ink); }
.bk-changed { background: var(--bk-danger-soft); color: var(--bk-danger); }
.bk-unchecked { background: var(--bk-surface-2); color: var(--bk-muted); border: 1px solid var(--bk-line); }
.bk-warnbadge { background: var(--bk-warn-soft); color: var(--bk-warn-ink); }
.bk-empty { padding: 18px; border: 2px dashed var(--bk-line); border-radius: 12px; display: grid; gap: 10px; }
.bk-empty h3 { font-size: 17px; }
.bk-empty-actions, .bk-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.bk-templates { padding: 0; list-style: none; display: grid; gap: 8px; }
.bk-templates li { display: grid; gap: 2px; }
.bk-templates a { font-weight: 600; display: inline-block; min-height: 24px; padding-block: 2px; }

/* details */
.bk-details { display: flex; flex-direction: column; gap: 14px; }
.bk-detail-title { overflow-wrap: anywhere; }
.bk-facts { display: grid; grid-template-columns: max-content minmax(0, 1fr); gap: 6px 14px; font-size: 14px; }
.bk-facts dt { color: var(--bk-muted); font-weight: 600; }
.bk-facts dd { min-width: 0; overflow-wrap: anywhere; }
.bk-hash { font-size: 12px; padding: 1px 4px; border-radius: 4px; overflow-wrap: anywhere; word-break: break-all; }
.bk-warnings { list-style: none; padding: 0; display: grid; gap: 8px; }
.bk-warnings li { display: flex; gap: 8px; padding: 10px 12px; background: var(--bk-warn-soft); color: var(--bk-warn-ink); border-radius: 10px; font-size: 14px; }
.bk-ok { display: flex; gap: 8px; align-items: center; color: var(--bk-good-ink); font-size: 14px; }
.bk-actions-quiet .bk-btn { min-height: 32px; font-size: 14px; }
.bk-preview { max-height: 320px; overflow: auto; padding: 10px; border: 1px solid var(--bk-line); border-radius: 8px; font-size: 12px; white-space: pre-wrap; overflow-wrap: anywhere; margin: 6px 0 0; }
.bk-steps { padding-inline-start: 1.3em; display: grid; gap: 6px; }

/* status bar */
.bk-status { flex: none; display: flex; flex-wrap: wrap; gap: 4px 16px; align-items: center; min-height: 34px; padding: 6px 14px; background: var(--bk-surface); border-top: 1px solid var(--bk-line); font-size: 14px; }
.bk-live { flex: 1 1 240px; min-width: 0; }
.bk-live[data-tone=warn], .bk-save-state[data-tone=warn] { color: var(--bk-warn-ink); font-weight: 600; }
.bk-save-state, .bk-totals { color: var(--bk-muted); }
.bk-save-state[data-tone=note] { color: var(--bk-warn-ink); }
.bk-drop { position: absolute; inset: 0; z-index: 40; display: grid; place-items: center; background: #1d2c26cc; color: #fff; font-size: 22px; font-weight: 700; pointer-events: none; }

/* dialogs */
.bk-dialog { width: min(680px, calc(100vw - 24px)); max-height: calc(100dvh - 32px); padding: 0; border: 1px solid var(--bk-line); border-radius: 14px; background: var(--bk-surface); color: var(--bk-ink); box-shadow: var(--bk-shadow); font: 15px/1.45 system-ui, -apple-system, "Segoe UI", sans-serif; }
.bk-dialog::backdrop { background: #0b120f99; }
.bk-dialog[open] { display: flex; flex-direction: column; }
.bk-scan-dialog { width: min(900px, calc(100vw - 24px)); }
.bk-dlg-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 16px; border-bottom: 1px solid var(--bk-line); }
.bk-dlg-head h2 { font-size: 18px; }
.bk-dlg-body { padding: 16px; overflow: auto; display: grid; gap: 12px; }
.bk-dlg-body > div { display: grid; gap: 12px; }
.bk-dlg-foot { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; padding: 12px 16px; border-top: 1px solid var(--bk-line); }
.bk-problems { padding-inline-start: 1.2em; display: grid; gap: 6px; }
.bk-scan-picker { border: 1px solid var(--bk-line); border-radius: 10px; padding: 10px 12px; margin: 0; display: grid; gap: 10px; }
.bk-scan-picker legend { padding: 0 4px; font-weight: 700; }
.bk-scan-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 4px 12px; }
.bk-scan-app { display: flex; align-items: center; gap: 6px; min-height: 30px; cursor: pointer; }
.bk-scan-app .bk-muted { font-size: 12px; margin-inline-start: auto; }
.bk-scan-app img, .bk-scan-group h3 img { border-radius: 5px; }
.bk-dialog progress { width: 100%; height: 10px; accent-color: var(--bk-accent); }
.bk-scan-results { display: grid; gap: 10px; }
.bk-scan-group { border: 1px solid var(--bk-line); border-radius: 10px; padding: 10px 12px; display: grid; gap: 6px; }
.bk-scan-group h3 { display: flex; align-items: center; gap: 8px; font-size: 16px; }
.bk-scan-list { list-style: none; padding: 0; display: grid; gap: 4px; }
.bk-scan-item { display: grid; grid-template-columns: auto minmax(0, 1fr); column-gap: 8px; align-items: center; min-height: 30px; cursor: pointer; }
.bk-scan-item .bk-muted { grid-column: 2; font-size: 13px; }
.bk-scan-name { font-weight: 600; overflow-wrap: anywhere; }
.bk-warn-text { color: var(--bk-warn-ink); }
.bk-recent { list-style: none; padding: 0; display: grid; gap: 8px; }
.bk-recent li { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; justify-content: space-between; padding: 8px 10px; border: 1px solid var(--bk-line); border-radius: 10px; }
.bk-recent-current { background: var(--bk-accent-soft); }
.bk-recent-meta { display: grid; gap: 2px; min-width: 0; overflow-wrap: anywhere; }
.bk-recent-actions { display: flex; gap: 6px; }
.bk-keys { border-collapse: collapse; width: 100%; font-size: 14px; }
.bk-keys th, .bk-keys td { padding: 6px 8px; border-bottom: 1px solid var(--bk-line); text-align: start; background: transparent; color: var(--bk-ink); }
.bk-keys thead th { color: var(--bk-muted); }
.bk-keys kbd { padding: 1px 6px; border: 1px solid var(--bk-control); border-radius: 4px; font-size: 13px; }
.bk-toggle { display: flex; gap: 8px; align-items: center; cursor: pointer; font-weight: 600; }
.bk-prose { display: grid; gap: 8px; }
.bk-prose h3 { font-size: 16px; margin-top: 4px; }
.bk-tool-list { list-style: none; padding: 0; display: grid; gap: 10px; }
.bk-tool-list li { display: grid; gap: 2px; }
.bk-tool-list a { font-weight: 600; display: inline-block; min-height: 24px; padding-block: 2px; }
.bk-share-field { width: 100%; font-size: 13px; }
.bk-print { display: none; }

@media (max-width: 760px) {
  .uwapp-root.uwapp-bundlekeep { overflow: auto; }
  .bk-layout { display: flex; flex-direction: column; flex: none; padding: 10px; gap: 10px; }
  .bk-panel { overflow: visible; padding: 12px; }
  .bk-toolbar { padding: 6px 10px; gap: 6px; }
  .bk-tool .bk-btn-label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
  .bk-tool.bk-menu-btn .bk-btn-label, .bk-tool.bk-primary .bk-btn-label { position: static; width: auto; height: auto; clip: auto; overflow: visible; }
  .bk-group-end { margin-inline-start: 0; }
  .bk-table .bk-col-num, .bk-table th:nth-child(4) { display: none; }
  .bk-table th, .bk-table td { padding: 6px; }
  .bk-col-app .bk-app-name, .bk-col-check-state .bk-badge-label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
  .bk-col-check-state .bk-badge { padding: 4px; }
  .bk-status { position: sticky; bottom: 0; z-index: 5; font-size: 13px; padding: 4px 10px; }
  .bk-facts { grid-template-columns: minmax(0, 1fr); gap: 0 0; }
  .bk-facts dd { margin-bottom: 6px; }
  .bk-summary { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; }
  .bk-stat { padding: 5px 8px; }
  .bk-stat dd { font-size: 17px; }
  .bk-filters { flex-wrap: nowrap; }
  .bk-filters .bk-field:first-child { flex: 1 1 auto; min-width: 0; }
  .bk-totals { display: none; }
  .bk-files { gap: 10px; }
}
@media (prefers-reduced-motion: no-preference) {
  .bk-btn, .bk-menu-item, .bk-file-btn { transition: background-color .12s ease; }
}
@media print {
  body.uwapp-bundlekeep > *:not(.bk-print) { display: none !important; }
  .bk-print { display: block; color: #000; background: #fff; font: 11pt/1.4 system-ui, sans-serif; }
  .bk-print table { width: 100%; border-collapse: collapse; }
  .bk-print th, .bk-print td { border: 1px solid #999; padding: 4px 6px; text-align: start; vertical-align: top; color: #000; background: #fff; }
  .bk-print .bk-hash { font-size: 8pt; word-break: break-all; }
}
