/* Interface additions after 0.7: shortcuts dialog, selection, bulk bar. Colours come from the theme tokens. */
.shortcuts{border:1px solid var(--line);border-radius:16px;background:var(--surface);color:var(--ink);padding:24px 28px;max-width:min(520px,calc(100vw - 32px))}
.shortcuts::backdrop{background:#0008}
.shortcuts h2{margin:0 0 14px;font-size:18px}
.shortcut-list{margin:0 0 14px}
.shortcut-list>div{display:flex;gap:16px;align-items:center;padding:7px 0;border-bottom:1px solid var(--line)}
.shortcut-list dt{flex:0 0 150px;margin:0}
.shortcut-list dd{margin:0;color:var(--muted)}
kbd{display:inline-block;min-width:24px;padding:2px 7px;border:1px solid var(--line);border-bottom-width:2px;border-radius:6px;background:var(--surface-2);font-size:12px;font-weight:600;line-height:1.5;text-align:center;color:var(--ink)}
tr.is-selected,.file-tile.is-selected,.folder-card.is-selected{background:var(--tint)}
.bulk-tags{display:inline-flex;gap:6px;align-items:center}
.bulk-tags input{min-width:110px;width:130px;min-height:42px;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--ink);font:inherit;font-size:12px}
.bulk-bar button:disabled{opacity:.5;cursor:not-allowed}
.drop-over{outline:2px dashed var(--accent);outline-offset:2px}
.dragging{opacity:.55}
footer .quiet{font-size:11px;min-height:24px;padding:2px 6px}
.doc-view{max-width:860px;line-height:1.7}
.doc-view h2{margin:1.4em 0 .4em;font-size:19px}
.doc-view p{margin:.5em 0;overflow-wrap:anywhere}
.doc-slide p{margin:.3em 0;overflow-wrap:anywhere}
.tag-chip.warn{background:var(--danger-bg,#fde8e4);color:var(--danger-text)}
.compare-form{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:14px 0}
.diff{width:100%;border-collapse:collapse;font:13px/1.55 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
.diff th,.diff td{padding:3px 10px;vertical-align:top;border-bottom:1px solid var(--line);overflow-wrap:anywhere;white-space:pre-wrap;text-align:left}
.diff .num{width:48px;text-align:right;color:var(--muted);user-select:none}
.diff-add td:nth-child(3),.diff-add td:nth-child(4){background:color-mix(in srgb,#2e9d62 18%,var(--surface))}
.diff-del td:nth-child(1),.diff-del td:nth-child(2){background:color-mix(in srgb,#d64545 18%,var(--surface))}
.diff-change td:nth-child(1),.diff-change td:nth-child(2){background:color-mix(in srgb,#d64545 14%,var(--surface))}
.diff-change td:nth-child(3),.diff-change td:nth-child(4){background:color-mix(in srgb,#2e9d62 14%,var(--surface))}
.diff-gap td{text-align:center;color:var(--muted);background:var(--surface-2);font-style:italic}
.onboarding-card{margin:0 0 22px}
.ob-steps{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:12px}
.ob-steps li{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:var(--surface-2)}
.ob-steps li.is-done{opacity:.75}
.ob-steps li>span{font-size:18px;color:var(--accent);line-height:1.3}
.ob-steps small{display:block;margin-top:4px;color:var(--muted)}
.wizard-progress{width:100%;max-width:520px;margin:12px 0 22px}
.wizard-steps{list-style:none;margin:0;padding:0;display:grid;gap:12px;max-width:760px}
.wizard-step{display:flex;gap:16px;padding:18px 20px;border:1px solid var(--line);border-radius:14px;background:var(--surface)}
.wizard-step.is-current{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent)}
.wizard-step.is-done .wizard-mark{background:var(--accent);color:var(--surface)}
.wizard-mark{flex:0 0 34px;height:34px;border-radius:50%;display:grid;place-items:center;border:2px solid var(--accent);color:var(--accent);font-weight:700}
.wizard-body h2{margin:0 0 4px;font-size:17px}
.wizard-body p{margin:0 0 10px}
.wizard-done{margin:0 0 18px}
.help-video video{width:100%;max-width:820px;border-radius:12px;background:#000;display:block;margin:10px 0}
.help-video details{margin-top:8px}
.plain-list{margin:0 0 12px;padding-left:18px}
.retention-row{display:flex;gap:20px;justify-content:space-between;align-items:flex-start;margin:0 0 14px;flex-wrap:wrap}
.retention-row h2{margin:0 0 6px;font-size:17px}
.retention-row p{margin:4px 0}
.retention-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.kpi-grid{list-style:none;margin:16px 0 22px;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px}
.kpi-grid li{padding:16px 18px;border:1px solid var(--line);border-radius:14px;background:var(--surface)}
.kpi-grid strong{display:block;font-size:30px;line-height:1.1;color:var(--accent)}
.kpi-grid span{display:block;margin-top:6px;color:var(--muted);font-size:13px}
.kpi-grid small{display:block;margin-top:2px}
.chart-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(360px,1fr));gap:16px;margin-bottom:16px}
@media (max-width:480px){.chart-grid{grid-template-columns:1fr}}
.chart{width:100%;height:auto;display:block;margin:8px 0}
.chart .grid{stroke:var(--line);stroke-width:1}
.chart .tick{fill:var(--muted);font-size:11px}
.chart .bar{fill:var(--accent)}
.chart .bar.warn{fill:var(--danger-text)}
.chart .line{stroke:var(--accent);stroke-width:2.5}
.chart .dot{fill:var(--surface);stroke:var(--accent);stroke-width:2.5}
.chart .seg.ok{fill:var(--accent)}
.chart .seg.mid{fill:color-mix(in srgb,var(--accent) 55%,var(--surface))}
.chart .seg.mid2{fill:color-mix(in srgb,var(--accent) 30%,var(--surface))}
.chart .seg.none{fill:var(--line)}
.legend{list-style:none;display:flex;flex-wrap:wrap;gap:6px 18px;margin:6px 0;padding:0;font-size:13px}
.swatch{display:inline-block;width:14px;height:14px;border-radius:3px;margin-right:6px;vertical-align:-2px;border:1px solid var(--line)}
.swatch.ok{background:var(--accent)}.swatch.mid{background:color-mix(in srgb,var(--accent) 55%,var(--surface))}.swatch.mid2{background:color-mix(in srgb,var(--accent) 30%,var(--surface))}.swatch.none{background:var(--line)}
.cert-row{display:flex;gap:16px;justify-content:space-between;align-items:center;margin:0 0 12px;flex-wrap:wrap}
.cert-row h2{margin:0 0 4px;font-size:18px}
/* Disclosure widgets need a comfortable target (WCAG 2.5.8) */
.panel details>summary{cursor:pointer;min-height:32px;padding:6px 0;display:list-item}
/* Notices follow the theme: the old fixed pastel background broke the text contrast in the dark theme */
.notice{background:var(--tint);color:var(--ink);border:1px solid var(--line)}
.notice.error{background:color-mix(in srgb,var(--danger-text) 12%,var(--surface));color:var(--ink);border-color:var(--danger-text)}
.request-row{display:flex;gap:16px;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;padding:14px 0;border-bottom:1px solid var(--line)}
.request-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.request-actions input{min-height:42px;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--ink);font:inherit;font-size:12px}
.version-label{font-weight:600}
.version-note{margin:2px 0;color:var(--ink)}
.version-edit{margin-top:6px}
.version-edit .work-form{margin-top:8px;display:grid;gap:6px;max-width:420px}
