/* =========================================================================
   Blackstone Verify — premium review cockpit
   Fraunces display · Inter Tight body · disciplined whitespace
   Dark and light themes. Print-friendly report.
   ========================================================================= */

:root {
  /* Brand */
  --brass:        #b48a52;
  --brass-2:      #d6a861;
  --brass-dim:    #8f6c3e;

  /* Severity */
  --sev-critical: #cf3a3a;
  --sev-warning:  #d49130;
  --sev-info:     #6b7280;
  --sev-ok:       #2d7a4d;

  /* Radii */
  --r-xs: 4px;
  --r-sm: 8px;
  --r-md: 12px;
  --r-lg: 18px;

  /* Fonts */
  --f-display: "Fraunces", Georgia, serif;
  --f-body:    "Inter Tight", system-ui, sans-serif;
  --f-mono:    "JetBrains Mono", ui-monospace, "SFMono-Regular", monospace;
}

/* ---------------- Dark (default) ---------------- */
[data-theme="dark"] {
  --bg:           #0c0d10;
  --bg-grad:      radial-gradient(1200px 600px at 85% -10%, #1a1712, transparent 60%),
                  radial-gradient(1000px 500px at -10% 20%, #0d1319, transparent 60%);
  --surface:      rgba(255, 255, 255, 0.028);
  --surface-2:    rgba(255, 255, 255, 0.05);
  --surface-hi:   rgba(255, 255, 255, 0.09);
  --border:       rgba(255, 255, 255, 0.07);
  --border-hi:    rgba(180, 138, 82, 0.35);
  --text:         #eae7df;
  --text-dim:     #9b9789;
  --text-muted:   #6f6b5f;
  --card-shadow:  0 30px 60px -30px rgba(0,0,0,0.55),
                  0 0 0 1px rgba(255,255,255,0.03) inset;
  --pill-bg:      rgba(255,255,255,0.04);
}

/* ---------------- Light ---------------- */
[data-theme="light"] {
  --bg:           #f6f4ed;
  --bg-grad:      radial-gradient(1000px 500px at 85% -10%, #efe8d8, transparent 60%),
                  radial-gradient(900px 450px at -10% 20%, #e6ece7, transparent 60%);
  --surface:      rgba(255, 255, 255, 0.82);
  --surface-2:    rgba(255, 255, 255, 0.94);
  --surface-hi:   #ffffff;
  --border:       rgba(20, 20, 20, 0.08);
  --border-hi:    rgba(180, 138, 82, 0.5);
  --text:         #15171b;
  --text-dim:     #5c6270;
  --text-muted:   #8e94a0;
  --card-shadow:  0 1px 2px rgba(20,20,20,0.02),
                  0 14px 34px -20px rgba(20,20,20,0.1);
  --pill-bg:      rgba(20,20,20,0.045);
}

/* ---------------- Base ---------------- */
* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
html { -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; }

body {
  background: var(--bg);
  background-image: var(--bg-grad);
  color: var(--text);
  font-family: var(--f-body);
  font-size: 14.5px;
  line-height: 1.55;
  letter-spacing: 0.005em;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
}

/* Subtle grain overlay (dark theme only) */
[data-theme="dark"] body::before {
  content: "";
  position: fixed; inset: 0; pointer-events: none; z-index: 0;
  opacity: 0.1;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='120' height='120'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' seed='6'/><feColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.6 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");
  mix-blend-mode: overlay;
}

h1, h2, h3 { font-family: var(--f-display); letter-spacing: -0.01em; font-weight: 500; margin: 0; }
p { margin: 0; }
a { color: inherit; text-decoration: none; }
code { font-family: var(--f-mono); font-size: 0.92em; background: var(--pill-bg); padding: 1px 6px; border-radius: 4px; }
pre { font-family: var(--f-mono); font-size: 11.5px; background: var(--pill-bg); padding: 10px 12px; border-radius: 6px; overflow-x: auto; margin: 8px 0 0; color: var(--text-dim); }

main { flex: 1; max-width: 1200px; width: 100%; margin: 0 auto; padding: 28px 28px 48px; z-index: 1; position: relative; }

/* ---------------- Top bar ---------------- */
.topbar {
  position: sticky; top: 0; z-index: 100;
  display: flex; align-items: center; justify-content: space-between;
  padding: 14px 28px;
  background: color-mix(in srgb, var(--bg) 85%, transparent);
  backdrop-filter: blur(18px) saturate(140%);
  -webkit-backdrop-filter: blur(18px) saturate(140%);
  border-bottom: 1px solid var(--border);
}
.brand { display: inline-flex; align-items: center; gap: 10px; }
.brand-mark {
  display: inline-block; width: 22px; height: 22px; border-radius: 6px;
  background: linear-gradient(135deg, var(--brass), var(--brass-dim));
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.25), 0 6px 16px -8px var(--brass);
  position: relative;
}
.brand-mark::after{
  content: ""; position: absolute; inset: 4px; border-radius: 3px;
  background: linear-gradient(180deg, rgba(0,0,0,0.05), rgba(0,0,0,0.2));
}
.brand-name { font-family: var(--f-display); font-size: 18px; font-weight: 500; }
.brand-name b { color: var(--brass); font-weight: 600; }
.topbar nav { display: flex; align-items: center; gap: 18px; }
.topbar nav a { font-size: 13px; color: var(--text-dim); }
.topbar nav a:hover { color: var(--text); }
.theme-toggle {
  background: var(--surface); border: 1px solid var(--border);
  color: var(--text); border-radius: 50%;
  width: 30px; height: 30px; cursor: pointer;
  font-size: 14px; transition: border-color .15s ease;
}
.theme-toggle:hover { border-color: var(--border-hi); }

/* ---------------- Flash ---------------- */
.flash-stack { max-width: 1200px; margin: 12px auto 0; padding: 0 28px; position: relative; z-index: 1; }
.flash { padding: 10px 14px; border-radius: var(--r-sm); font-size: 13px; margin-top: 8px; border: 1px solid var(--border); background: var(--surface); }
.flash-success { border-color: rgba(45, 122, 77, 0.4); color: #4ba573; }
.flash-error   { border-color: rgba(207, 58, 58, 0.4); color: #e66868; }

/* ---------------- Footer ---------------- */
.footer { text-align: center; color: var(--text-muted); font-size: 11.5px; padding: 36px 10px 22px; letter-spacing: 0.02em; }

/* ---------------- Hero ---------------- */
.hero {
  display: grid; grid-template-columns: 1fr auto; gap: 40px;
  padding: 28px 4px 34px;
  align-items: end;
}
.kicker {
  font-family: var(--f-body); font-size: 11px; font-weight: 600;
  letter-spacing: 0.18em; text-transform: uppercase; color: var(--brass);
  margin-bottom: 10px;
}
.display {
  font-family: var(--f-display); font-weight: 500;
  font-size: clamp(38px, 5.6vw, 56px);
  line-height: 1.03; letter-spacing: -0.02em;
  margin: 0;
}
.display-sm {
  font-family: var(--f-display); font-weight: 500;
  font-size: 30px; line-height: 1.1; letter-spacing: -0.01em;
  margin: 4px 0 6px;
}
.lede { color: var(--text-dim); max-width: 560px; margin-top: 14px; font-size: 15px; line-height: 1.55; }
.hero-stat { display: flex; gap: 28px; padding-bottom: 8px; }
.stat { text-align: right; }
.stat-n { font-family: var(--f-display); font-size: 38px; font-weight: 500; line-height: 1; color: var(--brass); }
.stat-l { font-size: 10.5px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--text-muted); margin-top: 4px; }

/* ---------------- Cards ---------------- */
.card {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--r-lg);
  padding: 28px 30px;
  box-shadow: var(--card-shadow);
  backdrop-filter: blur(14px) saturate(130%);
  -webkit-backdrop-filter: blur(14px) saturate(130%);
  margin-bottom: 24px;
}
.card.primary-card { padding: 30px 32px; }

/* Section title — editorial, not shouty */
.section-title {
  font-family: var(--f-display);
  font-size: 20px;
  font-weight: 500;
  letter-spacing: -0.01em;
  color: var(--text);
  margin: 0 0 18px;
  text-transform: none;
}
/* Quieter secondary-label variant for advanced cards and sub-blocks */
.section-title-quiet {
  font-family: var(--f-body);
  font-size: 11.5px;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--text-muted);
  margin: 0 0 14px;
}
.card h2 { font-family: var(--f-display); font-size: 20px; font-weight: 500; letter-spacing: -0.01em; margin-bottom: 16px; }

.card-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 18px; flex-wrap: wrap; }
.card-head .section-title,
.card-head h2 { margin-bottom: 0; }

.grid-2 { display: grid; grid-template-columns: minmax(0, 1.7fr) minmax(300px, .78fr); gap: 24px; margin-top: 20px; align-items: start; }
@media (max-width: 1000px) { .grid-2 { grid-template-columns: 1fr; } .hero { grid-template-columns: 1fr; } .hero-stat { display: none; } }

/* ---------------- Form ---------------- */
.form { display: flex; flex-direction: column; gap: 20px; }
.field { display: flex; flex-direction: column; gap: 6px; }
.field > span { font-size: 11px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--text-muted); font-weight: 600; }
.field > span em { font-style: normal; text-transform: none; letter-spacing: 0; color: var(--text-muted); opacity: 0.75; font-weight: 400; }
input[type="text"], input:not([type]), input[type="email"], textarea, select {
  background: var(--surface-2);
  border: 1px solid var(--border);
  color: var(--text);
  border-radius: var(--r-sm);
  padding: 10px 12px;
  font-family: var(--f-body); font-size: 14.5px;
  transition: border-color .15s ease, background .15s ease;
}
select {
  color-scheme: dark;
}
[data-theme="light"] select {
  color-scheme: light;
}
select option,
select optgroup {
  background-color: #1d1e23;
  color: #eae7df;
}
select option:checked {
  background-color: #255fbf;
  color: #ffffff;
}
[data-theme="light"] select option,
[data-theme="light"] select optgroup {
  background-color: #ffffff;
  color: #15171b;
}
[data-theme="light"] select option:checked {
  background-color: #d8e7ff;
  color: #15171b;
}
input:focus, textarea:focus, select:focus {
  outline: none;
  border-color: var(--border-hi);
  background: var(--surface-hi);
}
.catalog-choice-field small {
  color: var(--text-muted);
  font-size: 11px;
  line-height: 1.35;
}
.catalog-choice-new {
  border-style: dashed !important;
  background:
    linear-gradient(135deg, color-mix(in srgb, var(--brass) 6%, transparent), transparent 70%),
    var(--surface-2) !important;
}
.catalog-choice-new:placeholder-shown {
  opacity: .82;
}
.catalog-choice-new.is-active,
.catalog-choice-new:focus {
  border-style: solid !important;
  opacity: 1;
}
textarea { resize: vertical; }
.row-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.row-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; }
.row-4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; }
@media (max-width: 980px) { .row-4, .document-upload-grid { grid-template-columns: repeat(2, 1fr); } .document-type-form { grid-template-columns: repeat(2, minmax(0, 1fr)); } .document-type-form > * { grid-column: auto !important; } .document-type-form .document-type-notes { grid-column: 1 / -1 !important; } }
@media (max-width: 720px) { .row-2, .row-3, .row-4, .document-upload-grid, .document-type-form { grid-template-columns: 1fr; } .document-group-head, .document-library-head, .custom-document-row { align-items: flex-start; flex-direction: column; } .document-type-form .document-type-notes, .document-type-form .document-type-submit { grid-column: auto !important; } }

/* Chips (project type) */
.chip-group { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 4px; }
.chip { position: relative; }
.chip input { position: absolute; opacity: 0; pointer-events: none; }
.chip span {
  display: inline-block;
  padding: 7px 12px; font-size: 13px;
  border: 1px solid var(--border);
  border-radius: 999px;
  background: var(--surface-2);
  cursor: pointer;
  transition: border-color .15s ease, background .15s ease;
}
.chip:hover span { border-color: var(--border-hi); }
.chip input:checked + span {
  background: var(--brass); border-color: var(--brass); color: #1a1208; font-weight: 600;
  box-shadow: 0 8px 20px -10px var(--brass);
}

/* Upload drop zones */
.upload-fieldset { border: 1px dashed var(--border); border-radius: var(--r-md); padding: 18px; margin: 0; }
.upload-fieldset legend { padding: 0 8px; font-size: 11px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--text-muted); font-weight: 600; }
.uploads { margin-top: 4px; }
.drop {
  position: relative; display: block; cursor: pointer;
  border: 1.5px dashed var(--border);
  border-radius: var(--r-md);
  padding: 20px 14px;
  background: var(--surface-2);
  transition: border-color .15s ease, background .15s ease;
  overflow: hidden;
}
.drop.drop-compact { padding: 14px 12px; }
.drop input[type="file"] { position: absolute; inset: 0; opacity: 0; cursor: pointer; }
.drop:hover, .drop.is-drag { border-color: var(--brass); background: color-mix(in srgb, var(--brass) 7%, var(--surface-2)); }
.drop.is-filled { border-color: var(--sev-ok); border-style: solid; background: color-mix(in srgb, var(--sev-ok) 8%, var(--surface-2)); }
.drop-inner { text-align: center; }
.drop-title { font-weight: 600; font-size: 14px; }
.drop-sub { font-size: 11.5px; color: var(--text-muted); margin-top: 2px; }
.drop-status { margin-top: 8px; font-size: 12px; color: var(--text-dim); }
.drop-progress { height: 3px; background: var(--border); border-radius: 2px; margin-top: 10px; overflow: hidden; display: none; }
.drop-progress.is-active { display: block; }
.drop-progress > span { display: block; height: 100%; background: var(--brass); width: 0; transition: width .2s ease; }
.document-groups { display: grid; gap: 16px; margin-top: 6px; }
.document-group { border: 1px solid var(--border); border-radius: var(--r-sm); padding: 14px; background: color-mix(in srgb, var(--surface-hi) 28%, transparent); }
.document-group-head, .document-library-head, .custom-document-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.document-group-head { margin-bottom: 12px; }
.document-group-head h3, .document-library-head h3 { margin: 0 0 2px; font-family: var(--f-display); font-size: 17px; line-height: 1.2; }
.document-upload-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.document-drop { min-height: 146px; display: flex; align-items: stretch; padding: 14px; }
.document-drop .drop-inner { width: 100%; display: flex; flex-direction: column; justify-content: center; }
.doc-card-topline { display: flex; align-items: center; justify-content: center; gap: 6px; flex-wrap: wrap; margin-bottom: 8px; color: var(--text-muted); font-size: 10px; text-transform: uppercase; letter-spacing: .08em; }
.doc-scope-pill { display: inline-flex; align-items: center; max-width: 100%; padding: 3px 7px; border: 1px solid color-mix(in srgb, var(--brass) 30%, var(--border)); border-radius: 999px; color: var(--brass-2); background: color-mix(in srgb, var(--brass) 7%, transparent); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.is-doc-hidden { display: none !important; }
.manufacturer-doc-empty { display: none; margin: 10px 2px 0; }
.manufacturer-doc-empty.is-active { display: block; }
.document-library-manager { margin-top: 18px; padding-top: 16px; border-top: 1px solid var(--border); }
.document-library-summary { list-style: none; cursor: pointer; }
.document-library-summary::-webkit-details-marker { display: none; }
.document-library-summary::marker { display: none; content: ""; }
.document-library-head { margin-bottom: 0; }
.document-library-summary-meta { display: inline-flex; align-items: center; gap: 10px; }
.document-library-chevron {
  width: 10px;
  height: 10px;
  border-right: 1.5px solid var(--text-muted);
  border-bottom: 1.5px solid var(--text-muted);
  transform: rotate(45deg);
  transition: transform .18s ease, border-color .18s ease;
  margin-top: -3px;
}
.document-library-manager[open] .document-library-chevron {
  transform: rotate(225deg);
  border-color: var(--text);
}
.document-library-body { padding-top: 14px; }
.document-type-form { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 10px; align-items: end; }
.document-type-form > * { min-width: 0; }
.document-type-form .field { min-width: 0; }
.document-type-form input,
.document-type-form select { min-width: 0; width: 100%; }
.document-type-name { grid-column: span 3; }
.document-type-index { grid-column: span 2; }
.document-type-scope { grid-column: span 2; }
.document-type-manufacturer { grid-column: span 2; }
.document-type-role { grid-column: span 3; }
.document-type-form .document-type-notes { grid-column: span 9; }
.document-type-submit { grid-column: span 3; width: 100%; justify-content: center; }
.document-type-form .field.is-muted { opacity: .48; }
.custom-document-list { display: grid; gap: 8px; margin-top: 12px; }
.custom-document-row { border: 1px solid var(--border); border-radius: 8px; padding: 10px 12px; background: color-mix(in srgb, var(--surface-hi) 24%, transparent); }
.custom-document-row b, .custom-document-row span { display: block; }
.custom-document-row span { margin-top: 3px; color: var(--text-muted); font-size: 11.5px; }

.form-actions { display: flex; align-items: center; gap: 16px; justify-content: space-between; }
.micro { font-size: 11.5px; color: var(--text-muted); }

/* ---------------- Buttons ---------------- */
.btn {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 10px 18px;
  font-family: var(--f-body); font-size: 13px; font-weight: 600;
  letter-spacing: 0.01em;
  border: 1px solid var(--border);
  border-radius: var(--r-sm);
  background: var(--surface-2);
  color: var(--text);
  cursor: pointer; user-select: none;
  transition: border-color .15s ease, background .15s ease, color .15s ease;
  white-space: nowrap;
}
.btn:hover { border-color: var(--border-hi); }
.btn:disabled { opacity: 0.4; cursor: not-allowed; }
.btn-primary {
  background: var(--brass); color: #1a1208;
  border-color: var(--brass);
  box-shadow: 0 8px 20px -12px var(--brass);
}
.btn-primary:hover:not(:disabled) { background: var(--brass-2); border-color: var(--brass-2); }
.btn-primary:disabled { box-shadow: none; }
.btn-ghost { background: transparent; }
.btn-danger { color: var(--sev-critical); border-color: color-mix(in srgb, var(--sev-critical) 40%, var(--border)); }
.btn-danger:hover { border-color: var(--sev-critical); background: color-mix(in srgb, var(--sev-critical) 8%, transparent); }
.btn-sm { padding: 6px 10px; font-size: 12px; }
.btn-ai-scan {
  position: relative;
  color: color-mix(in srgb, var(--brass-2) 86%, var(--text));
  border-color: transparent;
  background:
    linear-gradient(var(--surface), var(--surface)) padding-box,
    conic-gradient(from 135deg, color-mix(in srgb, var(--brass-2) 80%, transparent), transparent 34%, color-mix(in srgb, var(--sev-ok) 52%, transparent), transparent 78%, color-mix(in srgb, var(--brass) 76%, transparent)) border-box;
  box-shadow: 0 12px 28px -24px color-mix(in srgb, var(--brass-2) 85%, transparent);
}
.btn-ai-scan::before {
  content: "";
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--brass-2);
  box-shadow: 0 0 12px color-mix(in srgb, var(--brass-2) 72%, transparent);
}
.btn.is-busy { cursor: progress; pointer-events: none; }

/* ---------------- Long task overlay ---------------- */
.is-long-task-active { cursor: progress; overflow: hidden; }
.work-veil {
  --work-accent: var(--brass-2);
  --work-accent-2: var(--sev-ok);
  position: fixed;
  inset: 0;
  z-index: 2147483000;
  display: grid;
  place-items: center;
  padding: 28px;
  pointer-events: none;
  opacity: 0;
  transform: scale(.985);
  transition: opacity .18s ease, transform .18s ease;
  background:
    linear-gradient(180deg, color-mix(in srgb, var(--bg) 70%, transparent), color-mix(in srgb, var(--bg) 88%, transparent)),
    repeating-linear-gradient(90deg, transparent 0 38px, color-mix(in srgb, var(--border) 55%, transparent) 39px 40px);
  backdrop-filter: blur(18px) saturate(132%);
  -webkit-backdrop-filter: blur(18px) saturate(132%);
}
.work-veil.is-active {
  opacity: 1;
  transform: scale(1);
  pointer-events: auto;
}
.work-panel {
  position: relative;
  width: min(680px, 100%);
  display: grid;
  grid-template-columns: 124px minmax(0, 1fr);
  gap: 24px;
  align-items: center;
  overflow: hidden;
  border: 1px solid color-mix(in srgb, var(--work-accent) 32%, var(--border));
  border-radius: var(--r-md);
  padding: 24px;
  color: var(--text);
  background:
    linear-gradient(135deg, color-mix(in srgb, var(--surface-hi) 72%, transparent), color-mix(in srgb, var(--surface-2) 88%, transparent)),
    linear-gradient(90deg, transparent, color-mix(in srgb, var(--work-accent) 9%, transparent), transparent);
  box-shadow:
    0 34px 86px -46px rgba(0,0,0,.72),
    0 0 0 1px rgba(255,255,255,.035) inset;
}
.work-panel::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    linear-gradient(115deg, transparent 0 30%, color-mix(in srgb, var(--work-accent) 18%, transparent) 46%, transparent 62%),
    repeating-linear-gradient(0deg, transparent 0 9px, color-mix(in srgb, var(--border) 42%, transparent) 10px 11px);
  background-size: 220% 100%, 100% 100%;
  mix-blend-mode: screen;
  opacity: .58;
  animation: work-panel-sheen 1.8s ease-in-out infinite;
}
.work-visual {
  position: relative;
  width: 112px;
  height: 112px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  background:
    repeating-linear-gradient(90deg, color-mix(in srgb, var(--border) 65%, transparent) 0 1px, transparent 1px 13px),
    repeating-linear-gradient(0deg, color-mix(in srgb, var(--border) 45%, transparent) 0 1px, transparent 1px 13px);
  box-shadow: 0 0 0 1px var(--border) inset;
  isolation: isolate;
}
.work-ring {
  position: absolute;
  inset: 8px;
  border-radius: 50%;
  background: conic-gradient(from 180deg, transparent 0 12%, var(--work-accent), var(--work-accent-2), transparent 78%);
  -webkit-mask: radial-gradient(farthest-side, transparent calc(100% - 9px), #000 calc(100% - 8px));
  mask: radial-gradient(farthest-side, transparent calc(100% - 9px), #000 calc(100% - 8px));
  animation: work-spin 1.05s linear infinite;
}
.work-ring::after {
  content: "";
  position: absolute;
  inset: 16px;
  border-radius: 50%;
  background: conic-gradient(from 0deg, color-mix(in srgb, var(--work-accent) 82%, transparent), transparent 42%, color-mix(in srgb, var(--work-accent-2) 72%, transparent), transparent 72%);
  -webkit-mask: radial-gradient(farthest-side, transparent calc(100% - 4px), #000 calc(100% - 3px));
  mask: radial-gradient(farthest-side, transparent calc(100% - 4px), #000 calc(100% - 3px));
  animation: work-spin 1.6s linear infinite reverse;
}
.work-core {
  width: 42px;
  height: 42px;
  border-radius: 50%;
  background:
    radial-gradient(circle at 50% 48%, color-mix(in srgb, var(--work-accent) 28%, transparent), transparent 58%),
    var(--surface-2);
  border: 1px solid color-mix(in srgb, var(--work-accent) 24%, var(--border));
  box-shadow: 0 0 28px -14px var(--work-accent);
}
.work-scanline {
  position: absolute;
  left: 12px;
  right: 12px;
  height: 2px;
  border-radius: 2px;
  background: linear-gradient(90deg, transparent, var(--work-accent), transparent);
  box-shadow: 0 0 18px color-mix(in srgb, var(--work-accent) 70%, transparent);
  animation: work-scan 1.3s ease-in-out infinite;
}
.work-copy { position: relative; min-width: 0; }
.work-kicker {
  margin: 0 0 7px;
  color: var(--work-accent);
  font-family: var(--f-mono);
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
}
.work-copy h2 {
  margin: 0;
  font-family: var(--f-display);
  font-size: 25px;
  line-height: 1.1;
  letter-spacing: 0;
}
.work-copy p[data-work-detail] {
  margin: 8px 0 0;
  max-width: 54ch;
  color: var(--text-dim);
  font-size: 14px;
  line-height: 1.45;
}
.work-steps {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
  margin-top: 15px;
}
.work-steps span {
  position: relative;
  padding: 4px 9px;
  overflow: hidden;
  border: 1px solid var(--border);
  border-radius: 999px;
  background: color-mix(in srgb, var(--surface-hi) 34%, transparent);
  color: var(--text-dim);
  font-family: var(--f-mono);
  font-size: 10.5px;
}
.work-steps span::after {
  content: "";
  position: absolute;
  inset: 0;
  transform: translateX(-115%);
  background: linear-gradient(90deg, transparent, color-mix(in srgb, var(--work-accent) 24%, transparent), transparent);
  animation: work-step-sweep 1.75s ease-in-out infinite;
}
.work-steps span:nth-child(2)::after { animation-delay: .14s; }
.work-steps span:nth-child(3)::after { animation-delay: .28s; }
.work-steps span:nth-child(4)::after { animation-delay: .42s; }
.work-meter {
  position: relative;
  height: 5px;
  margin-top: 16px;
  overflow: hidden;
  border-radius: 999px;
  background: color-mix(in srgb, var(--border) 80%, transparent);
}
.work-meter span {
  position: absolute;
  inset: 0 auto 0 0;
  width: 38%;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--work-accent), var(--work-accent-2), var(--work-accent));
  box-shadow: 0 0 20px color-mix(in srgb, var(--work-accent) 42%, transparent);
  animation: work-meter 1.35s ease-in-out infinite;
}
@keyframes work-spin {
  to { transform: rotate(360deg); }
}
@keyframes work-scan {
  0%, 100% { transform: translateY(-38px); opacity: .18; }
  50% { transform: translateY(38px); opacity: 1; }
}
@keyframes work-meter {
  0% { transform: translateX(-115%); width: 30%; }
  48% { width: 62%; }
  100% { transform: translateX(320%); width: 30%; }
}
@keyframes work-step-sweep {
  0%, 18% { transform: translateX(-115%); }
  68%, 100% { transform: translateX(115%); }
}
@keyframes work-panel-sheen {
  0% { background-position: 180% 0, 0 0; }
  100% { background-position: -40% 0, 0 0; }
}
@media (max-width: 620px) {
  .work-panel {
    grid-template-columns: 1fr;
    gap: 16px;
    padding: 20px;
  }
  .work-visual {
    width: 96px;
    height: 96px;
  }
  .work-copy h2 { font-size: 22px; }
}
@media (prefers-reduced-motion: reduce) {
  .work-panel::before,
  .work-ring,
  .work-ring::after,
  .work-scanline,
  .work-steps span::after,
  .work-meter span {
    animation: none !important;
  }
}

/* ---------------- Project list ---------------- */
.project-ul { list-style: none; padding: 0; margin: 0; }
.project-row + .project-row { border-top: 1px solid var(--border); }
.project-link { display: block; padding: 14px 0; transition: background .15s ease, padding .15s ease; border-radius: 6px; }
.project-link:hover { background: var(--surface-2); padding-left: 10px; padding-right: 10px; }
.pl-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.pl-name { font-weight: 500; font-family: var(--f-display); font-size: 16px; }
.pl-sub { font-size: 12px; color: var(--text-muted); margin-top: 3px; }
.sep { margin: 0 6px; opacity: 0.5; }
.empty { color: var(--text-muted); padding: 20px 0; font-size: 13.5px; }

/* ---------------- Pills (quieter) ---------------- */
.pill {
  display: inline-flex; align-items: center;
  padding: 3px 9px; border-radius: 999px;
  font-size: 11.5px; font-weight: 500;
  letter-spacing: 0.01em; text-transform: none;
  background: var(--pill-bg);
  border: 1px solid var(--border);
  color: var(--text-dim);
}
.pill-sm { padding: 2px 8px; font-size: 11px; }
.pill-lg { padding: 5px 12px; font-size: 12.5px; }
.pill-muted { color: var(--text-muted); }
.pill-blue  { color: #6fa8dc; border-color: color-mix(in srgb, #6fa8dc 35%, var(--border)); background: color-mix(in srgb, #6fa8dc 8%, transparent); }
.pill-green { color: #5bbf82; border-color: color-mix(in srgb, #5bbf82 35%, var(--border)); background: color-mix(in srgb, #5bbf82 8%, transparent); }
.pill-amber { color: #dfa15a; border-color: color-mix(in srgb, #dfa15a 35%, var(--border)); background: color-mix(in srgb, #dfa15a 8%, transparent); }
.pill-red   { color: #e06a6a; border-color: color-mix(in srgb, #e06a6a 35%, var(--border)); background: color-mix(in srgb, #e06a6a 8%, transparent); }

/* ---------------- Project header ---------------- */
.project-head {
  display: flex; align-items: flex-start; justify-content: space-between;
  gap: 24px; flex-wrap: wrap;
  padding: 18px 0 26px;
}
.crumb { font-size: 12px; color: var(--text-muted); }
.crumb:hover { color: var(--brass); }
.meta-line { color: var(--text-dim); font-size: 13px; margin-top: 6px; display: flex; align-items: center; flex-wrap: wrap; gap: 2px; }
.project-head-right { display: flex; flex-direction: column; align-items: flex-end; gap: 14px; }
.head-actions { display: flex; gap: 8px; flex-wrap: wrap; justify-content: flex-end; }
.head-action-form { display: inline-flex; margin: 0; }

/* Verdict banner */
.verdict-banner {
  display: flex; align-items: center; justify-content: space-between;
  padding: 20px 24px; margin-bottom: 28px;
  border-radius: var(--r-md);
  border: 1px solid var(--border);
  background: var(--surface);
  position: relative; overflow: hidden;
}
.verdict-banner::before {
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(90deg, currentColor 0%, transparent 55%);
  opacity: 0.08; pointer-events: none;
}
.verdict-VERIFIED_PASS       { color: var(--sev-ok); border-color: color-mix(in srgb, var(--sev-ok) 32%, var(--border)); }
.verdict-PASS_WITH_WARNINGS  { color: var(--sev-warning); border-color: color-mix(in srgb, var(--sev-warning) 32%, var(--border)); }
.verdict-FAILED              { color: var(--sev-critical); border-color: color-mix(in srgb, var(--sev-critical) 32%, var(--border)); }
.verdict-label { font-family: var(--f-display); font-size: 24px; font-weight: 500; letter-spacing: -0.01em; }
.verdict-conf { display: block; font-size: 11px; color: var(--text-muted); letter-spacing: 0.08em; text-transform: uppercase; margin-top: 4px; }
.verdict-counts { display: flex; gap: 22px; color: var(--text); }
.count { font-size: 13px; color: var(--text-dim); }
.count b { color: var(--text); font-size: 16px; margin-right: 3px; font-weight: 600; }
.count-critical b { color: var(--sev-critical); }
.count-warning  b { color: var(--sev-warning); }
.count-info     b { color: var(--text-dim); }

/* ---------------- Review focus band ---------------- */
.review-focus { margin-bottom: 24px; padding: 6px 4px 14px; }
.focus-chips { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
.focus-chip {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 6px 12px;
  border-radius: 999px;
  background: var(--surface);
  border: 1px solid var(--border);
  font-size: 12.5px;
  color: var(--text);
}
.focus-chip-label { color: var(--text); }
.focus-chip-count {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 20px; height: 20px; padding: 0 6px;
  border-radius: 999px;
  background: var(--pill-bg);
  color: var(--text-dim);
  font-size: 11px; font-weight: 600;
}
.chip-red   { border-color: color-mix(in srgb, #e06a6a 35%, var(--border)); background: color-mix(in srgb, #e06a6a 6%, var(--surface)); }
.chip-red   .focus-chip-count { color: #e06a6a; background: color-mix(in srgb, #e06a6a 14%, transparent); }
.chip-amber { border-color: color-mix(in srgb, #dfa15a 35%, var(--border)); background: color-mix(in srgb, #dfa15a 6%, var(--surface)); }
.chip-amber .focus-chip-count { color: #dfa15a; background: color-mix(in srgb, #dfa15a 14%, transparent); }
.chip-blue  { border-color: color-mix(in srgb, #6fa8dc 35%, var(--border)); background: color-mix(in srgb, #6fa8dc 6%, var(--surface)); }
.chip-blue  .focus-chip-count { color: #6fa8dc; background: color-mix(in srgb, #6fa8dc 14%, transparent); }

/* ---------------- Documents / slots ---------------- */
.docs { margin-bottom: 24px; padding: 0 4px; }
.docs-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 14px;
  flex-wrap: wrap;
}
.docs-head .section-title { margin-bottom: 0; }
.slots { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; }
@media (max-width: 900px) { .slots { grid-template-columns: 1fr; } }
.slot {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--r-md);
  padding: 18px 20px;
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
}
.slot-filled { border-color: color-mix(in srgb, var(--sev-ok) 28%, var(--border)); }
.slot-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; }
.slot-label { font-weight: 500; font-size: 13.5px; font-family: var(--f-display); letter-spacing: -0.005em; }
.slot-filename { font-size: 13px; color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.slot-stats { font-size: 11.5px; color: var(--text-muted); margin-top: 3px; display: flex; align-items: center; flex-wrap: wrap; }
.slot-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 14px; }
.replace-btn { position: relative; overflow: hidden; cursor: pointer; }
.replace-btn input { position: absolute; inset: 0; opacity: 0; cursor: pointer; }
.inline-upload { position: absolute; inset: 0; }

/* ---------------- Tables ---------------- */
.table-wrap { overflow-x: auto; border-radius: var(--r-sm); }
.spec-table, .item-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.spec-table th, .spec-table td, .item-table th, .item-table td {
  text-align: left; padding: 12px 14px; border-bottom: 1px solid var(--border);
  vertical-align: middle;
}
.spec-table th, .item-table th {
  background: transparent;
  font-size: 10.5px; font-weight: 600;
  letter-spacing: 0.12em; text-transform: uppercase;
  color: var(--text-muted);
  padding: 10px 14px;
  border-bottom: 1px solid var(--border);
}
.spec-table tbody tr:last-child td,
.item-table tbody tr:last-child td { border-bottom: none; }

.spec-row td { color: var(--text); vertical-align: top; }
.spec-label { font-weight: 500; font-family: var(--f-display); font-size: 14px; letter-spacing: -0.005em; }
.spec-val { vertical-align: top; }
.spec-val code { background: transparent; padding: 0; color: var(--text); font-size: 12.5px; overflow-wrap: anywhere; word-break: break-word; }
.col-status { width: 180px; font-size: 12px; color: var(--text-dim); vertical-align: top; }
.col-status .dim { margin-top: 3px; line-height: 1.45; white-space: normal; overflow-wrap: break-word; }

/* Make mismatches clearly visible, matches quiet */
.spec-match { opacity: 0.78; }
.spec-match:hover { opacity: 1; }
.spec-inferred_match { opacity: 0.82; }
.spec-mismatch { background: color-mix(in srgb, var(--sev-critical) 7%, transparent); }
.spec-mismatch .spec-val code { color: var(--sev-critical); font-weight: 600; }
.spec-warning { background: color-mix(in srgb, var(--sev-warning) 5%, transparent); }
.spec-warning .spec-val code { color: var(--sev-warning); font-weight: 600; }
.spec-info { background: color-mix(in srgb, var(--accent) 5%, transparent); }
.spec-info .spec-val code { color: color-mix(in srgb, var(--accent) 82%, #dbe8ff); font-weight: 600; }
.spec-so_only, .spec-cfm_only { background: color-mix(in srgb, var(--sev-warning) 4%, transparent); }

.dim { color: var(--text-muted); }

.dot { display: inline-block; width: 7px; height: 7px; border-radius: 50%; vertical-align: middle; margin-right: 5px; }
.dot-green { background: var(--sev-ok); }
.dot-red { background: var(--sev-critical); }
.dot-amber { background: var(--sev-warning); }

/* ---------- Compact spec legend (single-line) ---------- */
.spec-legend-compact {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 6px 18px;
  padding: 10px 14px;
  margin: 0 0 16px;
  border: 1px solid var(--border);
  border-radius: var(--r-sm);
  background: var(--surface-2);
  font-size: 12px;
  color: var(--text-dim);
}
.spec-legend-compact .legend-item { display: inline-flex; align-items: center; gap: 4px; color: var(--text); }
.spec-legend-compact .legend-item .dot { margin-right: 2px; }
.spec-legend-compact .legend-abbrev { margin-left: auto; font-size: 11.5px; color: var(--text-muted); }
.spec-legend-compact .legend-abbrev b { color: var(--text-dim); font-weight: 600; }
@media (max-width: 700px) {
  .spec-legend-compact { gap: 6px 14px; }
  .spec-legend-compact .legend-abbrev { margin-left: 0; flex-basis: 100%; }
}

/* ---------- Item table refinements ---------- */
.item-table tr { transition: background .12s ease; }
.item-table tr:hover td { background: color-mix(in srgb, var(--surface-2) 55%, transparent); }
.item-row td { font-family: var(--f-body); }
.item-row code { font-family: var(--f-mono); font-size: 12.5px; background: transparent; padding: 0; color: var(--text); font-weight: 600; }
.source-evidence-line {
  display: grid;
  grid-template-columns: minmax(105px, 0.7fr) minmax(60px, 0.4fr) minmax(48px, 0.3fr);
  gap: 6px 10px;
  align-items: baseline;
  padding: 5px 0;
  border-bottom: 1px solid color-mix(in srgb, var(--border) 74%, transparent);
}
.source-evidence-line:last-child { border-bottom: 0; }
.source-evidence-line b { font-size: 12px; color: var(--text); }
.source-evidence-line .dim { font-size: 11.5px; }
.source-evidence-line .dim:last-child { grid-column: 1 / -1; overflow-wrap: anywhere; }

/* Visual deviation cues without adding columns */
.item-row.item-missing_in_confirmation td:first-child { box-shadow: inset 2px 0 0 var(--sev-critical); }
.item-row.item-extra_on_confirmation td:first-child { box-shadow: inset 2px 0 0 var(--sev-critical); }
.item-row.item-matched_with_issues td:first-child { box-shadow: inset 2px 0 0 var(--sev-warning); }
.item-row.item-vendor_generated td:first-child { box-shadow: inset 2px 0 0 #6fa8dc; }
.item-row.item-vendor_generated_expected td:first-child { box-shadow: inset 2px 0 0 #6fa8dc; }

.cat-badge { display: inline-block; padding: 2px 7px; border-radius: 4px; font-size: 10.5px; letter-spacing: 0.04em; font-weight: 500; background: var(--pill-bg); color: var(--text-dim); text-transform: lowercase; }
.cat-cabinet { color: #d6a861; background: color-mix(in srgb, var(--brass) 10%, transparent); }
.cat-trim    { color: #a7b9c7; background: color-mix(in srgb, #a7b9c7 10%, transparent); }
.cat-filler  { color: #b4a8e3; background: color-mix(in srgb, #b4a8e3 10%, transparent); }
.cat-toekick { color: #c9b37f; background: color-mix(in srgb, #c9b37f 10%, transparent); }
.cat-accessory { color: #8d9aac; background: color-mix(in srgb, #8d9aac 10%, transparent); }
.cat-non_cabinet { color: var(--text-muted); }
.token { display: inline-block; padding: 2px 7px; font-size: 10.5px; font-family: var(--f-mono); background: var(--pill-bg); border-radius: 4px; margin: 0 3px 2px 0; color: var(--text-dim); }

/* Per-row inline detail disclosure (tokens / evidence / match pass / adjacency) */
.row-detail { margin-top: 6px; }
.row-detail summary {
  font-size: 11px; color: var(--text-muted); cursor: pointer;
  padding: 2px 0; list-style: none;
  display: inline-flex; align-items: center; gap: 4px;
  letter-spacing: 0.02em;
}
.row-detail summary::-webkit-details-marker { display: none; }
.row-detail summary::before { content: "›"; display: inline-block; transition: transform .15s ease; color: var(--text-muted); }
.row-detail[open] summary::before { transform: rotate(90deg); }
.row-detail summary:hover { color: var(--text-dim); }
.row-detail-body {
  margin-top: 6px; padding: 8px 10px;
  background: var(--surface-2);
  border: 1px solid var(--border);
  border-radius: var(--r-sm);
  font-size: 11.5px;
  display: grid; gap: 4px;
  max-width: 420px;
}
.rd-line { display: grid; grid-template-columns: 88px 1fr; gap: 8px; align-items: start; }
.rd-key { color: var(--text-muted); font-size: 10.5px; text-transform: uppercase; letter-spacing: 0.08em; padding-top: 2px; }
.rd-val { color: var(--text-dim); word-break: break-word; }
.rd-val b { color: var(--text); font-weight: 600; }

/* ---------------- Alerts ---------------- */
.alert-filters { display: flex; gap: 6px; flex-wrap: wrap; }
.filter {
  background: transparent; border: 1px solid var(--border);
  padding: 5px 11px; border-radius: 999px;
  font-size: 12px; color: var(--text-dim); cursor: pointer;
  transition: border-color .15s ease, color .15s ease, background .15s ease;
  font-family: var(--f-body);
}
.filter:hover { border-color: var(--border-hi); color: var(--text); }
.filter.active { background: var(--brass); color: #1a1208; border-color: var(--brass); font-weight: 600; }
.filter .count { background: var(--pill-bg); padding: 1px 7px; border-radius: 999px; font-size: 11px; margin-left: 5px; color: inherit; opacity: 0.75; }
.filter.active .count { background: rgba(0,0,0,0.15); opacity: 1; }

.alert-list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 12px; }
.alert {
  padding: 16px 20px;
  background: var(--surface-2);
  border: 1px solid var(--border);
  border-radius: var(--r-md);
  border-left-width: 3px;
}
.alert-critical { border-left-color: var(--sev-critical); }
.alert-warning  { border-left-color: var(--sev-warning); }
.alert-info     { border-left-color: var(--sev-info); opacity: 0.88; }
.alert-info:hover { opacity: 1; }
.alert-head { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.sev-chip {
  padding: 2px 8px; border-radius: 4px; font-size: 10px; font-weight: 600;
  letter-spacing: 0.08em; text-transform: uppercase;
}
.sev-critical { background: color-mix(in srgb, var(--sev-critical) 15%, transparent); color: var(--sev-critical); }
.sev-warning  { background: color-mix(in srgb, var(--sev-warning) 15%, transparent); color: var(--sev-warning); }
.sev-info     { background: var(--pill-bg); color: var(--text-muted); }
.alert-title { font-weight: 500; font-size: 14px; flex: 1; font-family: var(--f-display); letter-spacing: -0.005em; }
.alert-status { font-size: 10.5px; color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.1em; }
.status-resolved { color: var(--sev-ok); }
.status-waived { color: var(--sev-warning); }
.status-accepted { color: var(--accent); }
.status-accepted_normalization { color: var(--sev-info); }
.alert-body { margin-top: 8px; color: var(--text-dim); }
.alert-rationale { font-size: 13px; line-height: 1.55; }
.alert-suggested { font-size: 12.5px; color: var(--brass); margin-top: 6px; font-style: italic; }
.alert-details { margin-top: 8px; }
.alert-details summary { font-size: 10.5px; color: var(--text-muted); cursor: pointer; letter-spacing: 0.06em; text-transform: uppercase; }
.alert-details[open] summary { color: var(--text-dim); }
.review-note {
  margin-top: 12px;
  padding: 10px 12px;
  border: 1px solid color-mix(in srgb, var(--accent) 24%, var(--border));
  border-radius: var(--r-sm);
  background: color-mix(in srgb, var(--accent) 8%, var(--surface));
}
.review-note-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  flex-wrap: wrap;
  margin-bottom: 5px;
  font-size: 10.5px;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--text-muted);
}
.review-note-head span:first-child {
  color: var(--text);
  font-weight: 700;
}
.review-note p {
  margin: 0;
  color: var(--text);
  font-size: 12.5px;
  line-height: 1.45;
}
.alert-actions { display: flex; gap: 6px; margin-top: 12px; flex-wrap: wrap; align-items: center; }
.alert-reason { flex: 1; min-width: 200px; font-size: 12px; padding: 6px 10px; }
.alert.is-hidden { display: none; }

/* ---------------- Advanced drawer (tucked-away tooling) ---------------- */
.advanced {
  margin-top: 40px;
  border-top: 1px solid var(--border);
  padding-top: 22px;
}
.advanced-summary {
  list-style: none;
  cursor: pointer;
  display: flex;
  align-items: baseline;
  gap: 12px;
  padding: 10px 4px;
  color: var(--text-dim);
  font-size: 13px;
  user-select: none;
  transition: color .15s ease;
}
.advanced-summary::-webkit-details-marker { display: none; }
.advanced-summary:hover { color: var(--text); }
.advanced-summary .adv-chev {
  display: inline-block;
  color: var(--text-muted);
  font-size: 18px;
  line-height: 1;
  transition: transform .2s ease;
  width: 16px;
}
.advanced[open] .advanced-summary .adv-chev { transform: rotate(90deg); }
.advanced-summary .adv-title { color: var(--text); font-weight: 500; font-size: 13.5px; }
.advanced-summary .adv-hint { color: var(--text-muted); font-size: 11.5px; letter-spacing: 0.02em; }
.advanced-body { padding-top: 18px; }
.advanced-body .adv-card {
  background: transparent;
  border: 1px solid var(--border);
  box-shadow: none;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
  padding: 22px 24px;
  margin-bottom: 14px;
}

/* ---------------- Activity ---------------- */
.activity-list { list-style: none; padding: 0; margin: 0; font-size: 12.5px; }
.activity-list li { padding: 6px 0; border-bottom: 1px dotted var(--border); display: flex; gap: 10px; align-items: baseline; }
.activity-list li:last-child { border-bottom: 0; }
.activity-list .ts { flex: 0 0 140px; font-family: var(--f-mono); font-size: 11.5px; }
.activity-list .kind { color: var(--brass); font-size: 10.5px; text-transform: uppercase; letter-spacing: 0.08em; flex: 0 0 120px; }

/* ---------------- Danger ---------------- */
.danger-zone { margin-top: 48px; padding: 20px; border: 1px dashed color-mix(in srgb, var(--sev-critical) 30%, var(--border)); border-radius: var(--r-md); }

/* ---------------- Report page ---------------- */
.report { max-width: 1000px; margin: 0 auto; }
.report-toolbar { display: flex; gap: 8px; align-items: center; margin: 8px 0 22px; flex-wrap: wrap; }
.report-toolbar .spacer { flex: 1; }
.report-sheet {
  background: var(--surface-hi);
  color: var(--text);
  border: 1px solid var(--border);
  border-radius: var(--r-md);
  padding: 48px 52px;
  box-shadow: var(--card-shadow);
}
.report-head { display: flex; justify-content: space-between; align-items: flex-start; padding-bottom: 24px; margin-bottom: 28px; border-bottom: 1px solid var(--border); gap: 20px; flex-wrap: wrap; }
.report-verdict { text-align: right; }
.report-verdict .v-label { display: block; font-family: var(--f-display); font-size: 22px; font-weight: 500; color: var(--text); letter-spacing: -0.01em; }
.report-verdict .v-conf { font-size: 11px; color: var(--text-muted); letter-spacing: 0.1em; text-transform: uppercase; }
.report section { margin-top: 32px; }
.report h2 { font-family: var(--f-body); font-size: 11px; letter-spacing: 0.18em; text-transform: uppercase; color: var(--text-muted); margin-bottom: 14px; font-weight: 600; }
.counts-row { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin-bottom: 12px; }
.count-card { padding: 16px 14px; border: 1px solid var(--border); border-radius: var(--r-sm); text-align: center; background: var(--surface-2); }
.count-card b { display: block; font-family: var(--f-display); font-size: 30px; font-weight: 500; color: var(--text); letter-spacing: -0.01em; }
.count-card span { font-size: 10.5px; color: var(--text-muted); letter-spacing: 0.1em; text-transform: uppercase; }
.report-meta { font-size: 11.5px; margin-top: 8px; }
.report-table { width: 100%; border-collapse: collapse; font-size: 12.5px; }
.report-table th, .report-table td { padding: 9px 12px; border-bottom: 1px solid var(--border); text-align: left; }
.report-table th { font-size: 10.5px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--text-muted); font-weight: 600; background: transparent; }
.report-alerts { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 10px; }
.report-alerts .alert { margin-bottom: 0; }
.signoff-grid { display: grid; grid-template-columns: 1.4fr 1.6fr 1fr; gap: 24px; margin-top: 22px; }
.sig-label { font-size: 10.5px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--text-muted); font-weight: 600; }
.sig-line { height: 32px; border-bottom: 1px solid var(--text); margin-top: 8px; }

/* ---------------- Focused verification page ---------------- */
.verification-page {
  --verdict-accent: var(--brass);
  --verdict-accent-strong: var(--brass-2);
  max-width: 1180px;
  margin: 0 auto;
}
.verification-toolbar {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  margin: 4px 0 16px;
}
.verification-toolbar .spacer { flex: 1; }
.verification-hero {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 24px;
  align-items: center;
  position: relative;
  isolation: isolate;
  overflow: hidden;
  margin-bottom: 20px;
  padding: 26px 28px;
  border: 1px solid color-mix(in srgb, var(--verdict-accent) 38%, var(--border));
  border-radius: var(--r-md);
  background:
    linear-gradient(135deg, color-mix(in srgb, var(--verdict-accent) 10%, transparent), transparent 38%),
    linear-gradient(180deg, color-mix(in srgb, var(--surface-hi) 45%, transparent), transparent 80%),
    var(--surface);
  box-shadow:
    0 26px 70px -42px color-mix(in srgb, var(--verdict-accent) 55%, transparent),
    var(--card-shadow);
  color: var(--text);
}
.verification-hero::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background:
    linear-gradient(112deg, transparent 0%, color-mix(in srgb, var(--verdict-accent) 16%, transparent) 46%, transparent 64%);
  opacity: .5;
  transform: translateX(-115%);
  animation: verification-sheen 7s ease-in-out infinite;
}
.verification-hero::after {
  content: "";
  position: absolute;
  inset: 0 auto 0 0;
  width: 4px;
  background: linear-gradient(180deg, transparent, var(--verdict-accent), transparent);
  box-shadow: 0 0 26px color-mix(in srgb, var(--verdict-accent) 70%, transparent);
}
.verification-hero.verdict-FAILED {
  --verdict-accent: var(--sev-critical);
  --verdict-accent-strong: #ff7777;
}
.verification-hero.verdict-PASS_WITH_WARNINGS {
  --verdict-accent: var(--sev-warning);
  --verdict-accent-strong: #f0b45f;
}
.verification-hero.verdict-VERIFIED_PASS {
  --verdict-accent: var(--sev-ok);
  --verdict-accent-strong: #62c487;
}
.verification-hero .kicker {
  color: var(--verdict-accent-strong);
  text-shadow: 0 10px 24px color-mix(in srgb, var(--verdict-accent) 35%, transparent);
}
.verification-hero .display-sm {
  color: var(--text);
  letter-spacing: 0;
  text-shadow: 0 1px 0 rgba(255,255,255,0.08), 0 16px 34px rgba(0,0,0,0.28);
}
.verification-hero .meta-line {
  color: var(--text-dim);
}
.verification-verdict {
  min-width: 226px;
  position: relative;
  overflow: hidden;
  border: 1px solid color-mix(in srgb, var(--verdict-accent) 46%, var(--border));
  border-radius: var(--r-sm);
  padding: 17px 18px 16px;
  background:
    linear-gradient(145deg, color-mix(in srgb, var(--verdict-accent) 15%, transparent), transparent 58%),
    color-mix(in srgb, var(--surface-hi) 50%, transparent);
  text-align: right;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,0.09),
    0 18px 46px -28px color-mix(in srgb, var(--verdict-accent) 75%, transparent);
  animation: verification-verdict-breathe 3.8s ease-in-out infinite;
}
.verification-verdict::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: linear-gradient(180deg, rgba(255,255,255,0.08), transparent 36%);
}
.verification-verdict span,
.verification-verdict small {
  display: block;
  font-size: 10.5px;
  letter-spacing: .1em;
  text-transform: uppercase;
  position: relative;
}
.verification-verdict span {
  color: var(--verdict-accent-strong);
  font-weight: 800;
  text-shadow: 0 9px 22px color-mix(in srgb, var(--verdict-accent) 45%, transparent);
}
.verification-verdict small {
  color: var(--text-dim);
  font-weight: 700;
  text-shadow: 0 1px 0 rgba(255,255,255,0.05);
}
.verification-verdict b {
  display: block;
  position: relative;
  margin: 5px 0 6px;
  font-family: var(--f-display);
  color: var(--text);
  font-size: 42px;
  line-height: 1;
  letter-spacing: 0;
  text-shadow:
    0 1px 0 rgba(255,255,255,0.18),
    0 3px 0 rgba(0,0,0,0.34),
    0 18px 34px color-mix(in srgb, var(--verdict-accent) 42%, transparent);
}
.verification-counts {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
  margin-bottom: 20px;
}
.verification-count-card {
  --count-accent: var(--brass);
  position: relative;
  overflow: hidden;
  min-height: 88px;
  border: 1px solid color-mix(in srgb, var(--count-accent) 36%, var(--border));
  border-radius: var(--r-sm);
  padding: 16px 18px;
  background:
    linear-gradient(145deg, color-mix(in srgb, var(--count-accent) 12%, transparent), transparent 56%),
    linear-gradient(180deg, color-mix(in srgb, var(--surface-hi) 38%, transparent), transparent),
    var(--surface-2);
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,0.08),
    0 16px 34px -28px color-mix(in srgb, var(--count-accent) 78%, transparent);
  transform: translateY(0);
  transition: transform .18s ease, border-color .18s ease, box-shadow .18s ease;
}
.verification-count-card::before {
  content: "";
  position: absolute;
  inset: 0 0 auto;
  height: 3px;
  background: linear-gradient(90deg, transparent, var(--count-accent), transparent);
  opacity: .9;
}
.verification-count-card::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: linear-gradient(120deg, transparent 0%, rgba(255,255,255,0.07) 44%, transparent 64%);
  opacity: .55;
}
.verification-count-card:hover {
  transform: translateY(-2px);
  border-color: color-mix(in srgb, var(--count-accent) 58%, var(--border));
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,0.1),
    0 22px 44px -28px color-mix(in srgb, var(--count-accent) 86%, transparent);
}
.verification-count-card.count-critical { --count-accent: var(--sev-critical); }
.verification-count-card.count-warning { --count-accent: var(--sev-warning); }
.verification-count-card.count-info { --count-accent: #8f98a8; }
.verification-count-card.count-total { --count-accent: var(--brass-2); }
.verification-count-card.count-critical b,
.verification-count-card.count-critical span { color: #ff7676; }
.verification-count-card.count-warning b,
.verification-count-card.count-warning span { color: #efb45f; }
.verification-count-card.count-info b,
.verification-count-card.count-info span { color: #aeb6c4; }
.verification-count-card.count-total b,
.verification-count-card.count-total span { color: var(--brass-2); }
.verification-count-card.count-critical {
  animation: verification-critical-pulse 3.2s ease-in-out infinite;
}
.verification-counts b,
.verification-counts span {
  display: block;
  position: relative;
  z-index: 1;
}
.verification-counts b {
  font-family: var(--f-display);
  font-size: 34px;
  line-height: 1;
  letter-spacing: 0;
  text-shadow:
    0 1px 0 rgba(255,255,255,0.16),
    0 3px 0 rgba(0,0,0,0.28),
    0 16px 30px color-mix(in srgb, var(--count-accent) 44%, transparent);
}
.verification-counts span {
  margin-top: 8px;
  font-size: 11px;
  font-weight: 900;
  letter-spacing: .12em;
  text-transform: uppercase;
  text-shadow:
    0 1px 0 rgba(255,255,255,0.1),
    0 2px 0 rgba(0,0,0,0.24),
    0 10px 20px rgba(0,0,0,0.26);
}
@keyframes verification-sheen {
  0%, 42% { transform: translateX(-115%); }
  64%, 100% { transform: translateX(115%); }
}
@keyframes verification-verdict-breathe {
  0%, 100% { box-shadow: inset 0 1px 0 rgba(255,255,255,0.09), 0 18px 46px -28px color-mix(in srgb, var(--verdict-accent) 75%, transparent); }
  50% { box-shadow: inset 0 1px 0 rgba(255,255,255,0.12), 0 22px 54px -24px color-mix(in srgb, var(--verdict-accent) 92%, transparent); }
}
@keyframes verification-critical-pulse {
  0%, 100% { box-shadow: inset 0 1px 0 rgba(255,255,255,0.08), 0 16px 34px -28px color-mix(in srgb, var(--count-accent) 78%, transparent); }
  50% { box-shadow: inset 0 1px 0 rgba(255,255,255,0.1), 0 20px 44px -22px color-mix(in srgb, var(--count-accent) 95%, transparent); }
}
@media (prefers-reduced-motion: reduce) {
  .verification-hero::before,
  .verification-verdict,
  .verification-count-card.count-critical {
    animation: none;
  }
}
@media (max-width: 760px) {
  .verification-hero,
  .verification-counts {
    grid-template-columns: 1fr;
  }
  .verification-verdict {
    text-align: left;
    min-width: 0;
  }
}

/* ---------------- Print ---------------- */
@media print {
  body { background: white !important; color: black !important; }
  body::before { display: none !important; }
  .topbar, .footer, .no-print, .flash-stack { display: none !important; }
  main { padding: 0; max-width: none; }
  .report-sheet { border: 0; box-shadow: none; padding: 0; background: white; }
  .alert { break-inside: avoid; background: white !important; border: 1px solid #ddd !important; }
  h1, h2, h3 { color: black !important; }
  .sev-chip { border: 1px solid currentColor; }
  .row-detail, .alert-details { display: none !important; }
  .advanced { display: none !important; }
}

.clean-list { margin: 0; padding-left: 18px; color: var(--text-dim); }
.clean-list li + li { margin-top: 8px; }

.compact-list li + li { margin-top: 10px; }
.evidence-subtle { color: var(--text-muted); font-size: 12px; }
.finding-metrics {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
  margin: 14px 0 12px;
}
.finding-metric {
  border: 1px solid var(--border);
  background: var(--surface-2);
  border-radius: 10px;
  padding: 10px 12px;
}
.finding-label {
  display: block;
  font-size: 10.5px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--text-muted);
  margin-bottom: 4px;
}
.finding-evidence {
  margin: 12px 0;
  padding: 10px 12px;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: var(--surface-2);
}
.finding-evidence summary {
  cursor: pointer;
  font-weight: 600;
  color: var(--text-dim);
}
@media (max-width: 920px) {
  .finding-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 560px) {
  .finding-metrics { grid-template-columns: 1fr; }
}


.scene-summary-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 18px;
  margin: 18px 0 22px;
}
.scene-card { min-height: 100%; }
.scene-metric-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}
.scene-metric-list > div {
  border: 1px solid var(--border);
  background: var(--surface-2);
  border-radius: 10px;
  padding: 10px 12px;
}
.scene-chip-row {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 12px;
}
.scene-chip {
  display: inline-flex;
  align-items: center;
  border-radius: 999px;
  padding: 7px 10px;
  font-size: 12px;
  border: 1px solid var(--border);
  background: var(--surface-2);
}
.scene-chip-on { color: var(--text); }
.scene-chip-off { color: var(--text-muted); }
@media (max-width: 980px) {
  .scene-summary-grid { grid-template-columns: 1fr; }
}
@media (max-width: 560px) {
  .scene-metric-list { grid-template-columns: 1fr; }
}

.finding-sources { margin-top: 12px; }
.finding-sources-title { font-size: 11px; letter-spacing: .12em; text-transform: uppercase; color: var(--text-dim); margin-bottom: 8px; }
.finding-source-list { display: grid; gap: 10px; }
.finding-source-card { border: 1px solid var(--border); border-radius: 12px; padding: 10px 12px; background: rgba(255,255,255,.02); }
.finding-source-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 8px; }
/* ---------------- Source-aware verification ---------------- */
.source-settings-grid {
  display: grid;
  grid-template-columns: 1fr 1fr 1.25fr auto;
  gap: 14px;
  align-items: end;
}
.source-settings-card > .micro {
  margin: -8px 0 16px;
  max-width: 780px;
}
.source-settings-action { min-width: 180px; }
.source-coverage-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 12px;
  margin-bottom: 12px;
}
.coverage-cell {
  border: 1px solid var(--border);
  border-radius: var(--r-sm);
  padding: 12px 14px;
  background: var(--surface-2);
}
.coverage-on { border-color: rgba(45, 122, 77, 0.36); }
.coverage-off { opacity: .72; }
.coverage-label {
  font-size: 11px;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--text-muted);
  font-weight: 700;
}
.coverage-count { margin-top: 6px; font-size: 15px; color: var(--text); }
.knowledge-summary,
.knowledge-compare {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 12px;
  margin: 6px 0 12px;
}
.knowledge-summary > div,
.knowledge-compare > div {
  border: 1px solid var(--border);
  border-radius: var(--r-sm);
  padding: 12px 14px;
  background: var(--surface-2);
}
.knowledge-summary span,
.knowledge-compare span {
  display: block;
  font-size: 10.5px;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--text-muted);
}
.knowledge-summary b,
.knowledge-compare b {
  display: block;
  margin-top: 4px;
  font-size: 18px;
  color: var(--text);
}
.catalog-command {
  margin: 24px 0;
  padding: 0 4px;
}
.catalog-command-head {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 20px;
  align-items: center;
  margin-bottom: 18px;
}
.catalog-eyebrow,
.catalog-library-head {
  font-size: 10.5px;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--text-muted);
  font-weight: 700;
}
.catalog-command h3 {
  font-family: var(--f-display);
  font-size: 22px;
  line-height: 1.1;
  margin: 2px 0 6px;
}
.catalog-stat-stack {
  display: grid;
  grid-template-columns: repeat(2, minmax(94px, 1fr));
  gap: 10px;
}
.catalog-stat-stack > div {
  border: 1px solid var(--border);
  border-radius: var(--r-sm);
  padding: 10px 12px;
  background:
    linear-gradient(135deg, color-mix(in srgb, var(--brass) 10%, transparent), transparent 62%),
    var(--surface-2);
}
.catalog-stat-stack b {
  display: block;
  font-family: var(--f-display);
  font-size: 24px;
  line-height: 1;
  color: var(--text);
}
.catalog-stat-stack span {
  display: block;
  margin-top: 4px;
  font-size: 10px;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--text-muted);
}
.catalog-console {
  display: grid;
  grid-template-columns: 1fr;
  gap: 22px;
  align-items: start;
}
.catalog-upload-form {
  position: relative;
  overflow: hidden;
  border: 1px solid var(--border);
  border-radius: var(--r-sm);
  padding: 18px;
  background:
    linear-gradient(180deg, color-mix(in srgb, var(--surface-hi) 44%, transparent), transparent 120px),
    var(--surface-2);
}
.catalog-upload-form::before {
  content: "";
  position: absolute;
  inset: 0 0 auto;
  height: 2px;
  background: linear-gradient(90deg, var(--brass-2), color-mix(in srgb, var(--sev-ok) 65%, transparent), transparent 72%);
}
.catalog-upload-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 14px;
  margin-bottom: 16px;
}
.catalog-form-kicker {
  margin: 0 0 4px;
  font-size: 10.5px;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--text-muted);
  font-weight: 700;
}
.catalog-upload-head h4 {
  margin: 0;
  font-family: var(--f-display);
  font-size: 18px;
  line-height: 1.15;
}
.catalog-form-grid {
  display: grid;
  grid-template-columns: minmax(160px, 1.1fr) minmax(160px, 1fr) minmax(130px, .82fr) minmax(150px, .95fr) minmax(98px, .55fr);
  gap: 12px;
}
.catalog-form-grid .field:nth-child(3) {
  grid-column: auto;
}
.catalog-upload-lane {
  display: grid;
  grid-template-columns: minmax(320px, 1fr) minmax(220px, 280px);
  gap: 14px;
  align-items: stretch;
  margin-top: 14px;
}
.catalog-drop {
  margin-top: 0;
  min-height: 126px;
  display: flex;
  align-items: center;
  justify-content: center;
  background:
    repeating-linear-gradient(135deg, color-mix(in srgb, var(--brass) 9%, transparent) 0 1px, transparent 1px 10px),
    var(--surface-2);
}
.catalog-drop .drop-inner {
  width: 100%;
}
.catalog-upload-footer {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  border: 1px solid var(--border);
  border-radius: var(--r-sm);
  padding: 14px;
  background: color-mix(in srgb, var(--surface-hi) 38%, transparent);
}
.catalog-upload-footer .btn {
  width: 100%;
  justify-content: center;
}
.catalog-upload-form.is-indexing {
  border-color: color-mix(in srgb, var(--brass) 56%, var(--border));
  box-shadow:
    var(--card-shadow),
    0 0 0 1px color-mix(in srgb, var(--brass) 22%, transparent) inset,
    0 24px 58px -38px color-mix(in srgb, var(--brass) 82%, transparent);
}
.catalog-upload-form.is-indexing .catalog-upload-head,
.catalog-upload-form.is-indexing .catalog-form-grid,
.catalog-upload-form.is-indexing .catalog-upload-lane {
  opacity: .28;
  filter: blur(.4px) saturate(.8);
  pointer-events: none;
}
.catalog-upload-form.is-indexing::before {
  height: 3px;
  background: linear-gradient(90deg, transparent, var(--brass-2), var(--sev-ok), var(--brass-2), transparent);
  background-size: 220% 100%;
  animation: catalog-index-sheen 1.35s ease-in-out infinite;
}
.catalog-upload-form.is-indexing [data-catalog-index-button] {
  cursor: progress;
}
.catalog-indexing-overlay {
  position: absolute;
  inset: 0;
  z-index: 4;
  display: grid;
  place-items: center;
  padding: 22px;
  opacity: 0;
  pointer-events: none;
  transform: translateY(8px) scale(.985);
  transition: opacity .22s ease, transform .22s ease;
  background:
    radial-gradient(520px 260px at 18% 12%, color-mix(in srgb, var(--brass) 22%, transparent), transparent 62%),
    radial-gradient(420px 240px at 88% 82%, color-mix(in srgb, var(--sev-ok) 16%, transparent), transparent 64%),
    color-mix(in srgb, var(--bg) 44%, transparent);
  backdrop-filter: blur(16px) saturate(145%);
  -webkit-backdrop-filter: blur(16px) saturate(145%);
}
.catalog-upload-form.is-indexing .catalog-indexing-overlay {
  opacity: 1;
  transform: translateY(0) scale(1);
}
.catalog-indexing-card {
  width: min(640px, 100%);
  display: grid;
  grid-template-columns: 112px minmax(0, 1fr);
  gap: 20px;
  align-items: center;
  border: 1px solid color-mix(in srgb, var(--brass) 28%, var(--border));
  border-radius: var(--r-md);
  padding: 22px;
  background:
    linear-gradient(145deg, color-mix(in srgb, var(--surface-hi) 74%, transparent), color-mix(in srgb, var(--surface-2) 92%, transparent)),
    var(--surface-2);
  box-shadow:
    0 1px 0 rgba(255,255,255,.18) inset,
    0 26px 72px -42px rgba(0,0,0,.68);
}
.catalog-indexing-orb {
  position: relative;
  width: 96px;
  height: 96px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background:
    radial-gradient(circle at 50% 50%, color-mix(in srgb, var(--brass-2) 25%, transparent) 0 27%, transparent 28%),
    conic-gradient(from 0deg, transparent 0 18%, var(--brass-2) 28%, color-mix(in srgb, var(--sev-ok) 80%, var(--brass-2)) 55%, transparent 74% 100%);
  box-shadow:
    0 0 0 1px color-mix(in srgb, var(--brass) 18%, transparent) inset,
    0 18px 40px -28px var(--brass-2);
  animation: catalog-index-spin 1.55s linear infinite;
}
.catalog-indexing-orb::after {
  content: "";
  width: 58px;
  height: 58px;
  border-radius: 50%;
  background: var(--surface-2);
  box-shadow: 0 0 0 1px var(--border) inset;
}
.catalog-indexing-orb span {
  position: absolute;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--brass-2);
  box-shadow: 0 0 18px color-mix(in srgb, var(--brass-2) 82%, transparent);
}
.catalog-indexing-orb span:nth-child(1) { top: 11px; left: 44px; }
.catalog-indexing-orb span:nth-child(2) { right: 16px; bottom: 24px; animation: catalog-index-pulse 1.1s ease-in-out infinite; }
.catalog-indexing-orb span:nth-child(3) { left: 18px; bottom: 20px; animation: catalog-index-pulse 1.1s ease-in-out .2s infinite; }
.catalog-indexing-copy h4 {
  margin: 0;
  font-family: var(--f-display);
  font-size: 22px;
  line-height: 1.1;
}
.catalog-indexing-copy p:not(.catalog-form-kicker) {
  margin: 7px 0 0;
  color: var(--text-dim);
  font-size: 13.5px;
  line-height: 1.45;
}
.catalog-indexing-steps {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
  margin-top: 14px;
}
.catalog-indexing-steps span {
  padding: 4px 8px;
  border-radius: 999px;
  border: 1px solid var(--border);
  background: color-mix(in srgb, var(--surface-hi) 42%, transparent);
  color: var(--text-dim);
  font-size: 11px;
}
.catalog-indexing-bar {
  position: relative;
  height: 5px;
  margin-top: 16px;
  border-radius: 999px;
  overflow: hidden;
  background: color-mix(in srgb, var(--border) 78%, transparent);
}
.catalog-indexing-bar span {
  position: absolute;
  inset: 0 auto 0 0;
  width: 38%;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--brass), var(--brass-2), color-mix(in srgb, var(--sev-ok) 82%, var(--brass-2)));
  animation: catalog-index-progress 1.5s ease-in-out infinite;
}
@keyframes catalog-index-spin {
  to { transform: rotate(360deg); }
}
@keyframes catalog-index-pulse {
  0%, 100% { opacity: .55; transform: scale(.85); }
  50% { opacity: 1; transform: scale(1.2); }
}
@keyframes catalog-index-progress {
  0% { transform: translateX(-110%); width: 32%; }
  50% { width: 58%; }
  100% { transform: translateX(280%); width: 32%; }
}
@keyframes catalog-index-sheen {
  0% { background-position: 200% 0; }
  100% { background-position: -40% 0; }
}
@media (prefers-reduced-motion: reduce) {
  .catalog-upload-form.is-indexing::before,
  .catalog-indexing-orb,
  .catalog-indexing-orb span,
  .catalog-indexing-bar span {
    animation: none !important;
  }
}
.catalog-library {
  min-width: 0;
}
.catalog-library-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 10px;
}
.catalog-card-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 14px;
}
.catalog-card {
  position: relative;
  overflow: hidden;
  border: 1px solid var(--border);
  border-radius: var(--r-sm);
  padding: 15px;
  background:
    linear-gradient(145deg, color-mix(in srgb, var(--surface-hi) 34%, transparent), transparent 72%),
    var(--surface-2);
  min-height: 232px;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.catalog-card::before {
  content: "";
  position: absolute;
  inset: 0 0 auto;
  height: 2px;
  background: var(--border);
}
.catalog-card-active::before {
  background: linear-gradient(90deg, var(--sev-ok), var(--brass-2));
}
.catalog-card-bound {
  border-color: var(--border-hi);
  box-shadow: 0 0 0 1px color-mix(in srgb, var(--brass) 18%, transparent) inset;
}
.catalog-card-top,
.catalog-card-foot,
.catalog-actions {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}
.catalog-card-top {
  justify-content: space-between;
}
.catalog-line-chip {
  display: inline-flex;
  align-items: center;
  max-width: 100%;
  min-height: 22px;
  padding: 2px 8px;
  border-radius: 999px;
  background: color-mix(in srgb, var(--brass) 12%, transparent);
  color: var(--brass-2);
  font-size: 11px;
  font-weight: 700;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.catalog-card h4 {
  font-family: var(--f-display);
  font-size: 17px;
  line-height: 1.2;
  margin: 0;
}
.catalog-line-name {
  color: var(--text-dim);
  font-size: 12px;
  margin-top: -6px;
}
.catalog-template {
  color: var(--brass-2);
  font-size: 11px;
  line-height: 1.35;
}
.catalog-version {
  width: fit-content;
  font-family: var(--f-mono);
  font-size: 12px;
  color: var(--text);
  background: var(--pill-bg);
  border: 1px solid var(--border);
  border-radius: 5px;
  padding: 3px 7px;
}
.catalog-filename {
  font-size: 12px;
  color: var(--text-muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.catalog-metrics {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
  margin-top: auto;
}
.catalog-metrics > div {
  border: 1px solid var(--border);
  border-radius: 6px;
  padding: 8px;
  background: color-mix(in srgb, var(--surface-hi) 42%, transparent);
}
.catalog-metrics b,
.catalog-metrics span {
  display: block;
}
.catalog-metrics b {
  font-size: 16px;
  line-height: 1;
  color: var(--text);
}
.catalog-metrics span {
  margin-top: 4px;
  font-size: 9.5px;
  letter-spacing: .09em;
  text-transform: uppercase;
  color: var(--text-muted);
}
.catalog-card-foot {
  min-height: 20px;
  color: var(--text-muted);
  font-size: 11.5px;
}
.catalog-actions {
  padding-top: 4px;
}
.catalog-empty {
  border: 1px dashed var(--border);
  border-radius: var(--r-sm);
}
.check-row {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: var(--text-dim);
  font-size: 13px;
}
.inline-link {
  color: var(--brass-2);
  text-decoration: underline;
  text-underline-offset: 3px;
}
@media (max-width: 900px) {
  .source-settings-grid,
  .source-coverage-grid,
  .knowledge-summary,
  .knowledge-compare {
    grid-template-columns: 1fr;
  }
  .catalog-command-head,
  .catalog-upload-lane {
    grid-template-columns: 1fr;
  }
  .catalog-form-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (max-width: 620px) {
  .catalog-stat-stack,
  .catalog-form-grid,
  .catalog-card-grid,
  .catalog-metrics {
    grid-template-columns: 1fr;
  }
}

/* ---------------- Source Intelligence ---------------- */
.source-intel { margin: 24px 0; padding: 18px; border: 1px solid var(--border); border-radius: var(--r-md); background: linear-gradient(145deg, color-mix(in srgb, var(--surface-hi) 32%, transparent), transparent 54%), var(--surface); box-shadow: var(--card-shadow); }
.source-intel * { box-sizing: border-box; }
.source-intel-head, .source-group-head, .source-library summary { display: flex; align-items: center; justify-content: space-between; gap: 14px; flex-wrap: wrap; }
.source-intel-head { margin-bottom: 14px; }
.source-intel-head-actions { display: flex; align-items: center; justify-content: flex-end; flex-wrap: wrap; gap: 8px; }
.source-intel-head-actions form { margin: 0; }
.source-intel-head .section-title { margin: 0 0 4px; }
.source-intel-summary { display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: 10px; margin: 14px 0; }
.source-intel-summary > div, .source-card, .source-upload-form { border: 1px solid var(--border); border-radius: var(--r-sm); background: linear-gradient(180deg, color-mix(in srgb, var(--surface-hi) 42%, transparent), transparent 120px), var(--surface-2); }
.source-intel-summary > div { min-width: 0; padding: 11px 12px; }
.source-intel-summary b, .source-intel-summary span { display: block; }
.source-intel-summary b { font-family: var(--f-display); font-size: clamp(18px, 2.2vw, 24px); line-height: 1; overflow-wrap: anywhere; }
.source-intel-summary span { margin-top: 5px; color: var(--text-muted); font-size: 10px; text-transform: uppercase; letter-spacing: .1em; }
.coverage-radar, .source-contributes, .source-facts { display: flex; flex-wrap: wrap; gap: 7px; }
.coverage-radar { margin: 0 0 16px; }
.coverage-radar span, .source-contributes span, .source-facts span, .source-type-chip { display: inline-flex; align-items: center; min-height: 22px; padding: 3px 8px; border-radius: 999px; border: 1px solid var(--border); background: color-mix(in srgb, var(--surface-hi) 44%, transparent); color: var(--text-dim); font-size: 11px; }
.coverage-radar .coverage-on { border-color: color-mix(in srgb, var(--sev-ok) 40%, var(--border)); color: color-mix(in srgb, var(--sev-ok) 78%, var(--text)); }
.coverage-radar .coverage-off { opacity: .52; }
.source-upload-form { display: grid; grid-template-columns: minmax(130px,.9fr) minmax(150px,1fr) minmax(150px,1fr) minmax(130px,.9fr) minmax(260px,1.4fr) auto; gap: 10px; align-items: end; padding: 14px; margin-bottom: 18px; }
.source-drop { min-height: 74px; margin: 0; padding: 12px; }
.source-group { margin-top: 18px; }
.source-group-head { margin-bottom: 10px; }
.source-group-head h3, .source-library summary span { margin: 0; font-family: var(--f-display); font-size: 18px; line-height: 1.2; }
.source-group-head span, .source-library summary em { color: var(--text-muted); font-size: 11px; font-style: normal; text-transform: uppercase; letter-spacing: .1em; }
.source-card-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr)); gap: 12px; align-items: start; }
.source-card { position: relative; min-width: 0; overflow: hidden; padding: 14px; display: flex; flex-direction: column; gap: 11px; }
.source-card::before { content: ""; position: absolute; inset: 0 0 auto; height: 2px; background: var(--border); }
.source-compatible::before { background: linear-gradient(90deg, var(--sev-ok), var(--brass-2)); }
.source-conflict::before { background: linear-gradient(90deg, var(--sev-warning), var(--sev-critical)); }
.source-card-top, .source-card-actions { display: flex; gap: 8px; align-items: flex-start; justify-content: space-between; }
.source-card-top > div:first-child { min-width: 0; flex: 1; }
.source-card-top > .pill { flex-shrink: 0; }
.source-card h3 { margin: 7px 0 0; font-family: var(--f-display); font-size: 17px; line-height: 1.2; max-width: 100%; overflow: hidden; overflow-wrap: anywhere; text-overflow: ellipsis; white-space: normal; }
.source-card-file { margin-top: 3px; color: var(--text-muted); font-size: 11.5px; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.source-type-chip { color: var(--brass-2); border-color: color-mix(in srgb, var(--brass) 28%, var(--border)); }
.source-metrics { display: grid; grid-template-columns: repeat(3, 1fr); gap: 7px; }
.source-metrics > div { min-width: 0; border: 1px solid var(--border); border-radius: 6px; padding: 8px; background: color-mix(in srgb, var(--surface-hi) 34%, transparent); }
.source-metrics b, .source-metrics span { display: block; }
.source-metrics b { font-size: 16px; line-height: 1; overflow-wrap: anywhere; }
.source-metrics span { margin-top: 4px; color: var(--text-muted); font-size: 9.5px; text-transform: uppercase; letter-spacing: .09em; }
.source-facts span, .source-contributes span { max-width: 100%; overflow-wrap: anywhere; }
.source-warning { border: 1px solid color-mix(in srgb, var(--sev-warning) 35%, var(--border)); border-radius: 6px; padding: 9px 10px; background: color-mix(in srgb, var(--sev-warning) 8%, transparent); color: var(--text-dim); font-size: 12px; line-height: 1.35; }
.source-card-actions { justify-content: flex-start; flex-wrap: wrap; }
.source-card-actions form { margin: 0; }
.source-edit { border: 1px solid var(--border); border-radius: 6px; padding: 9px 10px; background: color-mix(in srgb, var(--surface-hi) 24%, transparent); }
.source-edit summary { cursor: pointer; color: var(--text-dim); font-size: 12px; font-weight: 700; }
.source-edit-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 9px; margin-top: 10px; }
.source-edit-grid label { display: flex; flex-direction: column; gap: 4px; color: var(--text-muted); font-size: 11px; }
.source-edit-grid button { align-self: end; }
.source-library { margin-top: 18px; border-top: 1px solid var(--border); padding-top: 14px; }
.source-library summary { cursor: pointer; margin-bottom: 12px; }
@media (max-width: 900px) { .source-upload-form, .source-edit-grid { grid-template-columns: 1fr; } }
@media (max-width: 560px) {
  .source-card-top { flex-direction: column; align-items: stretch; }
  .source-card-top > .pill { align-self: flex-start; }
  .source-metrics { grid-template-columns: 1fr; }
}

/* ================================================================
   Triage view, evidence copy, suggestions (Features 1–3)
   ================================================================ */

/* Triage section chrome */
.triage-decisions { border-color: color-mix(in srgb, var(--sev-critical) 34%, var(--border)); }
.triage-decisions .card-head .section-title::before {
  content: "";
  display: inline-block;
  width: 10px; height: 10px; border-radius: 50%;
  background: var(--sev-critical);
  box-shadow: 0 0 12px color-mix(in srgb, var(--sev-critical) 70%, transparent);
  margin-right: 12px; vertical-align: middle;
}
.triage-auto .card-head .section-title::before {
  content: "";
  display: inline-block;
  width: 10px; height: 10px; border-radius: 50%;
  background: var(--sev-warning);
  box-shadow: 0 0 12px color-mix(in srgb, var(--sev-warning) 60%, transparent);
  margin-right: 12px; vertical-align: middle;
}
.triage-context .card-head .section-title::before {
  content: "";
  display: inline-block;
  width: 8px; height: 8px; border-radius: 50%;
  background: var(--text-muted);
  margin-right: 12px; vertical-align: middle;
}

.triage-count-inline {
  font-family: var(--f-display);
  font-size: 0.72em;
  color: var(--text-muted);
  font-weight: 400;
  margin-left: 6px;
}
.triage-count-inline.dim { color: var(--text-faint); }

.triage-shortcuts .kbd {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 18px;
  padding: 1px 5px;
  font-family: var(--f-mono);
  font-size: 10px;
  font-weight: 500;
  color: var(--text-dim);
  background: var(--pill-bg);
  border: 1px solid var(--border);
  border-bottom-width: 2px;
  border-radius: 3px;
  vertical-align: middle;
}

.triage-auto details > summary,
.triage-context details > summary {
  list-style: none;
  cursor: pointer;
  user-select: none;
}
.triage-auto details > summary::-webkit-details-marker,
.triage-context details > summary::-webkit-details-marker { display: none; }
.triage-auto details > summary::before,
.triage-context details > summary::before {
  content: "›"; display: inline-block; width: 14px;
  font-family: var(--f-mono); font-size: 18px;
  transition: transform 0.2s;
  color: var(--text-muted);
}
.triage-auto details[open] > summary::before,
.triage-context details[open] > summary::before { transform: rotate(90deg); }

/* Empty state — the payoff */
.triage-empty {
  padding: 56px 24px;
  text-align: center;
}
.triage-empty-check {
  width: 64px; height: 64px;
  margin: 0 auto 20px;
  border-radius: 50%;
  background: radial-gradient(circle at 35% 35%,
              color-mix(in srgb, var(--sev-ok) 80%, white) 0%,
              var(--sev-ok) 55%,
              color-mix(in srgb, var(--sev-ok) 60%, black) 100%);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--ink-0, #0f0d0a);
  font-size: 36px;
  font-weight: 700;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,0.4),
    0 18px 44px -14px color-mix(in srgb, var(--sev-ok) 55%, transparent);
}
.triage-empty h3 {
  font-family: var(--f-display);
  font-size: 28px;
  line-height: 1.15;
  margin: 0 0 10px;
  font-weight: 400;
  letter-spacing: -0.01em;
}
.triage-empty h3 em {
  font-style: italic;
  color: var(--brass-2);
  font-weight: 300;
}
.triage-empty p {
  max-width: 44ch;
  margin: 0 auto;
  color: var(--text-dim);
  line-height: 1.55;
}

/* Alert card new stripe + focus */
.alert-card {
  position: relative;
  display: grid;
  grid-template-columns: 3px 1fr;
  gap: 0;
  padding: 0;
  border: 1px solid var(--border);
  border-radius: var(--r-sm);
  margin-bottom: 12px;
  background: var(--surface);
  transition: border-color 0.18s, box-shadow 0.22s, transform 0.18s cubic-bezier(0.2, 0.8, 0.3, 1);
  overflow: hidden;
}
.alert-card.sev-critical .alert-stripe { background: var(--sev-critical); box-shadow: 0 0 12px color-mix(in srgb, var(--sev-critical) 50%, transparent); }
.alert-card.sev-warning .alert-stripe { background: var(--sev-warning); box-shadow: 0 0 12px color-mix(in srgb, var(--sev-warning) 45%, transparent); }
.alert-card.sev-info .alert-stripe { background: var(--info, #8f98a8); }
.alert-card .alert-body {
  padding: 16px 20px;
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.alert-card.is-compact {
  grid-template-columns: 3px 1fr;
}
.alert-card.is-compact .alert-body {
  padding: 10px 16px;
  flex-direction: row;
  align-items: center;
  gap: 14px;
}
.alert-card.is-compact .alert-head { flex: 1; min-width: 0; }
.alert-card.is-compact .alert-title {
  font-family: var(--f-body);
  font-size: 13.5px;
  font-weight: 500;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  margin-top: 0;
}
.alert-card.is-focus {
  border-color: color-mix(in srgb, var(--brass) 55%, var(--border));
  box-shadow:
    0 0 0 1px color-mix(in srgb, var(--brass) 28%, transparent),
    0 24px 50px -26px color-mix(in srgb, var(--brass) 55%, transparent);
  transform: translateY(-1px);
}
.alert-toprow {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
}
.code-chip {
  font-family: var(--f-mono);
  font-size: 12px;
  font-weight: 600;
  color: var(--brass-2);
  background: color-mix(in srgb, var(--brass) 9%, transparent);
  padding: 3px 7px;
  border: 1px solid color-mix(in srgb, var(--brass) 24%, transparent);
  border-radius: 4px;
}
.cat-chip {
  font-family: var(--f-mono);
  font-size: 10.5px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--text-muted);
}
.sev-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 2px 9px;
  font-family: var(--f-mono);
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  border-radius: 100px;
  border: 1px solid transparent;
}
.sev-chip::before {
  content: "";
  width: 5px; height: 5px;
  border-radius: 50%;
  background: currentColor;
}
.sev-chip.sev-critical { color: var(--sev-critical); background: color-mix(in srgb, var(--sev-critical) 13%, transparent); border-color: color-mix(in srgb, var(--sev-critical) 36%, transparent); }
.sev-chip.sev-warning { color: var(--sev-warning); background: color-mix(in srgb, var(--sev-warning) 13%, transparent); border-color: color-mix(in srgb, var(--sev-warning) 36%, transparent); }
.sev-chip.sev-info { color: var(--info, #8f98a8); background: rgba(143, 152, 168, 0.1); border-color: rgba(143, 152, 168, 0.3); }

.alert-title {
  font-family: var(--f-display);
  font-size: 17px;
  line-height: 1.35;
  letter-spacing: -0.003em;
  font-weight: 500;
  color: var(--text);
  margin: 4px 0 0;
}
.alert-rationale {
  font-size: 13.5px;
  line-height: 1.55;
  color: var(--text-dim);
  max-width: 72ch;
  margin: 0;
}

/* Conversational evidence readout */
.alert-evidence-copy {
  max-width: 76ch;
  border: 1px solid color-mix(in srgb, var(--brass) 24%, var(--border));
  border-left: 2px solid var(--brass);
  border-radius: var(--r-sm);
  padding: 11px 13px;
  background: color-mix(in srgb, var(--brass) 6%, var(--surface-2));
  color: var(--text-dim);
}
.alert-evidence-label {
  display: block;
  margin-bottom: 5px;
  font-family: var(--f-mono);
  font-size: 10px;
  font-weight: 600;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--brass-2);
}
.alert-evidence-copy p {
  margin: 0;
  font-size: 12.5px;
  line-height: 1.5;
}
.alert-evidence-copy p + p { margin-top: 4px; }

.unknown-candidates {
  display: grid;
  gap: 6px;
  margin-bottom: 8px;
}
.unknown-candidate {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}
.unknown-candidate .btn span {
  color: var(--text-muted);
  font-family: var(--f-mono);
  font-size: 10px;
  margin-left: 4px;
}
.unknown-candidate small {
  color: var(--text-muted);
  font-size: 11px;
}

/* Suggestion panel */
.suggestion {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 16px;
  align-items: center;
  padding: 14px 16px;
  border: 1px solid color-mix(in srgb, var(--sev-ok) 38%, var(--border));
  background:
    linear-gradient(135deg, color-mix(in srgb, var(--sev-ok) 8%, transparent), transparent 65%),
    var(--surface-2);
  border-radius: var(--r-sm);
  position: relative;
}
.suggestion::before {
  content: "";
  position: absolute;
  inset: 0 auto 0 0;
  width: 2px;
  background: linear-gradient(180deg, transparent, var(--sev-ok), transparent);
}
.suggestion-content { display: flex; flex-direction: column; gap: 5px; }
.suggestion-head {
  display: flex; align-items: center; gap: 10px;
}
.suggestion-spark {
  color: var(--sev-ok);
  font-size: 12px;
}
.suggestion-label {
  font-family: var(--f-mono);
  font-size: 10.5px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  font-weight: 600;
  color: color-mix(in srgb, var(--sev-ok) 80%, white);
}
.confidence-ring {
  font-family: var(--f-mono);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.04em;
  color: color-mix(in srgb, var(--sev-ok) 80%, white);
  padding: 2px 7px;
  border: 1px solid color-mix(in srgb, var(--sev-ok) 30%, transparent);
  border-radius: 100px;
  background: color-mix(in srgb, var(--sev-ok) 6%, transparent);
}
.suggestion-action {
  font-family: var(--f-display);
  font-size: 15px;
  font-weight: 500;
  color: var(--text);
  line-height: 1.35;
}
.suggestion-rationale {
  font-size: 12.5px;
  color: var(--text-dim);
  line-height: 1.5;
}
.suggestion-apply-form { margin: 0; }

/* Memory scope pill (on suppressed alerts) */
.mem-pill {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-family: var(--f-mono);
  font-size: 10.5px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  padding: 3px 9px;
  border-radius: 100px;
  border: 1px solid var(--border);
  color: var(--text-muted);
  background: var(--pill-bg);
  align-self: flex-start;
}
.mem-pill.scope-organization {
  color: var(--brass-2);
  border-color: color-mix(in srgb, var(--brass) 35%, transparent);
  background: color-mix(in srgb, var(--brass) 6%, transparent);
}
.mem-pill.scope-catalog {
  color: var(--sev-warning);
  border-color: color-mix(in srgb, var(--sev-warning) 32%, transparent);
}
.mem-pill a { color: inherit; text-decoration: underline; text-decoration-color: rgba(255,255,255,0.2); }

/* Bulk bar */
.collapsible-bulk {
  padding: 12px 16px;
  margin: 4px 0 0;
  border-top: 1px solid var(--border);
  background: var(--surface);
  display: flex;
  align-items: center;
  gap: 14px;
  flex-wrap: wrap;
}
.collapsible-bulk-note {
  flex: 1;
  font-size: 12.5px;
  color: var(--text-dim);
}

/* Inline-button kbd hint */
.btn .kbd {
  font-family: var(--f-mono);
  font-size: 9.5px;
  font-weight: 500;
  padding: 1px 5px;
  margin-left: 6px;
  border-radius: 3px;
  background: rgba(0,0,0,0.22);
  border: 1px solid rgba(255,255,255,0.12);
  color: inherit;
  opacity: 0.75;
}
.btn-primary .kbd {
  background: rgba(0,0,0,0.2);
  color: rgba(15,13,10,0.72);
  border-color: rgba(0,0,0,0.2);
  opacity: 1;
}

/* Organization memory admin page */
.org-rule-list {
  list-style: none; padding: 0; margin: 0;
  display: flex; flex-direction: column; gap: 14px;
}
.org-rule {
  padding: 18px 20px;
  border: 1px solid var(--border);
  border-radius: var(--r-sm);
  background: var(--surface);
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.org-rule-ready {
  border-color: color-mix(in srgb, var(--sev-ok) 40%, var(--border));
  box-shadow: 0 16px 34px -26px color-mix(in srgb, var(--sev-ok) 50%, transparent);
}
.org-rule-head {
  display: flex; flex-wrap: wrap; align-items: center; gap: 10px;
}
.org-rule-head b {
  font-family: var(--f-display); font-size: 16px;
  font-weight: 500; color: var(--text);
}
.rule-key {
  font-family: var(--f-mono);
  font-size: 11px;
  color: var(--text-muted);
  background: var(--pill-bg);
  padding: 2px 8px;
  border-radius: 4px;
  border: 1px solid var(--border);
  align-self: flex-start;
}
.rule-key-small { font-family: var(--f-mono); font-size: 10.5px; color: var(--text-muted); }
.org-rule-meta { font-size: 12.5px; color: var(--text-dim); }
.org-rule-reviewers summary {
  font-size: 12.5px; color: var(--text-muted); cursor: pointer;
}
.occurrence-list { list-style: none; padding: 6px 0 0; font-size: 12px; }
.occurrence-list li { padding: 3px 0; }
.org-rule.is-compact {
  flex-direction: row; align-items: center; padding: 10px 16px;
}
.org-rule.is-demoted { opacity: 0.65; }
.org-rule-actions {
  display: flex; gap: 8px; align-items: center; flex-wrap: wrap;
}
.danger-zone summary { list-style: none; }
.danger-zone summary::-webkit-details-marker { display: none; }
.danger-form {
  margin-top: 8px;
  padding: 12px;
  background: color-mix(in srgb, var(--sev-critical) 6%, var(--surface-2));
  border: 1px solid color-mix(in srgb, var(--sev-critical) 28%, var(--border));
  border-radius: var(--r-sm);
}
.org-promote-form {
  margin-top: 12px;
  padding: 14px;
  background: var(--surface-2);
  border-radius: var(--r-sm);
  display: grid;
  grid-template-columns: 1fr 1fr auto;
  gap: 10px;
  align-items: end;
}
.pill-brass {
  background: color-mix(in srgb, var(--brass) 14%, transparent);
  color: var(--brass-2);
  border: 1px solid color-mix(in srgb, var(--brass) 32%, transparent);
}

/* ---------------- AI scan result visibility ---------------- */
.flash-warning { border-color: color-mix(in srgb, var(--sev-warning) 46%, var(--border)); color: var(--sev-warning); }
.flash-info { border-color: color-mix(in srgb, var(--sev-info) 42%, var(--border)); color: var(--sev-info); }
.ai-scan-status { white-space: nowrap; }
.ai-scan-status-success { border-color: color-mix(in srgb, var(--sev-ok) 42%, var(--border)); color: var(--sev-ok); }
.ai-scan-status-warning { border-color: color-mix(in srgb, var(--sev-warning) 46%, var(--border)); color: var(--sev-warning); }
.scan-result-banner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  margin: 14px 0;
  padding: 14px 16px;
  border: 1px solid var(--border);
  border-radius: var(--r-md);
  background:
    linear-gradient(135deg, color-mix(in srgb, var(--surface-hi) 84%, transparent), color-mix(in srgb, var(--surface-2) 94%, transparent)),
    radial-gradient(circle at 8% 0%, color-mix(in srgb, var(--brass) 10%, transparent), transparent 35%);
  box-shadow: 0 22px 58px -48px rgba(0,0,0,.72);
}
.scan-result-banner span {
  display: block;
  margin-bottom: 4px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--brass-2);
}
.scan-result-banner strong {
  display: block;
  font-size: 13.5px;
  line-height: 1.45;
  color: var(--text);
}
.scan-result-success { border-color: color-mix(in srgb, var(--sev-ok) 36%, var(--border)); }
.scan-result-warning { border-color: color-mix(in srgb, var(--sev-warning) 42%, var(--border)); }
.scan-result-error { border-color: color-mix(in srgb, var(--sev-critical) 42%, var(--border)); }
@media (max-width: 720px) {
  .scan-result-banner { align-items: flex-start; flex-direction: column; }
}

/* ---------------- Project review notes ---------------- */
.review-thread-card {
  position: relative;
  overflow: hidden;
}
.review-thread-card::before {
  content: "";
  position: absolute;
  inset: 0 0 auto 0;
  height: 1px;
  background: linear-gradient(90deg, transparent, color-mix(in srgb, var(--brass) 58%, transparent), transparent);
  pointer-events: none;
}
.review-thread-head {
  align-items: flex-start;
  gap: 18px;
}
.review-thread-stats {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  justify-content: flex-end;
}
.pill-gold {
  background: color-mix(in srgb, var(--brass) 18%, transparent);
  color: var(--brass-2);
  border: 1px solid color-mix(in srgb, var(--brass) 42%, transparent);
}
.review-composer {
  margin-top: 18px;
  padding: 16px;
  border: 1px solid color-mix(in srgb, var(--border) 84%, transparent);
  border-radius: var(--r-lg);
  background:
    radial-gradient(circle at 8% 0%, color-mix(in srgb, var(--brass) 9%, transparent), transparent 34%),
    linear-gradient(135deg, color-mix(in srgb, var(--surface-hi) 72%, transparent), color-mix(in srgb, var(--surface-2) 88%, transparent));
  box-shadow: 0 26px 72px -58px rgba(0,0,0,.78);
}
.review-composer-grid {
  display: grid;
  grid-template-columns: minmax(150px, .75fr) minmax(150px, .8fr) minmax(220px, 1.5fr) auto;
  gap: 12px;
  align-items: end;
}
.compact-field span,
.review-body-field > span:not(.sr-only) {
  display: block;
  margin-bottom: 6px;
  font-size: 11px;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--muted);
  font-weight: 700;
}
.review-pin-toggle {
  min-height: 42px;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 0 10px;
  border: 1px solid var(--border);
  border-radius: var(--r-sm);
  color: var(--muted);
  background: color-mix(in srgb, var(--surface-2) 74%, transparent);
  font-size: 13px;
  white-space: nowrap;
}
.review-pin-toggle input { accent-color: var(--brass); }
.review-body-field textarea {
  width: 100%;
  margin-top: 12px;
  min-height: 104px;
  resize: vertical;
  border-radius: var(--r-md);
  border: 1px solid var(--border);
  background: color-mix(in srgb, var(--surface) 88%, transparent);
  color: var(--text);
  padding: 14px 15px;
  font: inherit;
  line-height: 1.5;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.04);
}
.review-body-field textarea:focus,
.review-composer select:focus,
.review-composer input:focus {
  outline: 2px solid color-mix(in srgb, var(--brass) 42%, transparent);
  outline-offset: 2px;
}
.review-composer-foot {
  margin-top: 12px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
}
.mention-hint {
  color: var(--muted);
  font-size: 12.5px;
  line-height: 1.4;
}
.mention-hint code {
  color: var(--brass-2);
  font-family: var(--mono);
  font-size: 12px;
}
.pinned-review-block {
  margin-top: 18px;
  padding: 14px;
  border: 1px solid color-mix(in srgb, var(--brass) 34%, var(--border));
  border-radius: var(--r-lg);
  background:
    linear-gradient(135deg, color-mix(in srgb, var(--brass) 10%, transparent), transparent 42%),
    color-mix(in srgb, var(--surface-2) 84%, transparent);
}
.pinned-review-label,
.review-timeline-head h3 {
  margin: 0;
  font-size: 12px;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--brass-2);
  font-weight: 800;
}
.pinned-review-label { margin-bottom: 10px; }
.review-timeline-head {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 12px;
  margin: 20px 0 10px;
}
.review-timeline {
  display: grid;
  gap: 10px;
}
.review-comment {
  padding: 14px;
  border: 1px solid var(--border);
  border-radius: var(--r-md);
  background:
    linear-gradient(135deg, color-mix(in srgb, var(--surface-hi) 52%, transparent), color-mix(in srgb, var(--surface-2) 88%, transparent));
}
.review-comment.is-pinned {
  border-color: color-mix(in srgb, var(--brass) 32%, var(--border));
}
.review-comment.is-resolved {
  opacity: .78;
}
.review-comment-top {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  margin-bottom: 9px;
}
.review-comment-top strong {
  font-size: 14px;
  color: var(--text);
}
.review-date {
  color: var(--muted);
  font-size: 12px;
}
.review-kind {
  display: inline-flex;
  align-items: center;
  min-height: 24px;
  padding: 0 9px;
  border-radius: 999px;
  font-size: 11px;
  letter-spacing: .08em;
  text-transform: uppercase;
  font-weight: 800;
  border: 1px solid var(--border);
  color: var(--muted);
  background: color-mix(in srgb, var(--surface) 78%, transparent);
}
.review-kind-decision,
.review-kind-no_change_needed,
.review-kind-order_change_needed {
  color: var(--brass-2);
  border-color: color-mix(in srgb, var(--brass) 38%, transparent);
  background: color-mix(in srgb, var(--brass) 12%, transparent);
}
.review-kind-question,
.review-kind-needs_follow_up {
  color: var(--sev-warning);
  border-color: color-mix(in srgb, var(--sev-warning) 36%, transparent);
  background: color-mix(in srgb, var(--sev-warning) 10%, transparent);
}
.review-comment-body {
  color: var(--text);
  font-size: 14px;
  line-height: 1.55;
  white-space: normal;
}
.review-mentions,
.attached-alerts {
  margin-top: 10px;
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.review-mentions span,
.attached-alert-chip {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  min-height: 24px;
  padding: 0 9px;
  border-radius: 999px;
  border: 1px solid var(--border);
  color: var(--muted);
  background: color-mix(in srgb, var(--surface) 74%, transparent);
  font-size: 12px;
  text-decoration: none;
}
.attached-alert-chip.sev-critical { color: var(--sev-critical); border-color: color-mix(in srgb, var(--sev-critical) 35%, transparent); }
.attached-alert-chip.sev-warning { color: var(--sev-warning); border-color: color-mix(in srgb, var(--sev-warning) 35%, transparent); }
.attached-alert-chip.sev-info { color: var(--sev-info); border-color: color-mix(in srgb, var(--sev-info) 35%, transparent); }
.review-comment-actions {
  margin-top: 12px;
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.review-empty {
  margin-top: 12px;
}
.sr-only {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}
@media (max-width: 900px) {
  .review-composer-grid { grid-template-columns: 1fr; }
  .review-pin-toggle { justify-content: flex-start; }
  .review-composer-foot { flex-direction: column; align-items: stretch; }
  .review-thread-stats { justify-content: flex-start; }
}

/* Alert notes now feed the central project Review Notes thread. */
.alert-note-trigger {
  border-color: color-mix(in srgb, var(--brass) 26%, var(--border));
  color: var(--brass-2);
}
.alert-note-trigger:hover {
  border-color: color-mix(in srgb, var(--brass) 52%, var(--border));
  background: color-mix(in srgb, var(--brass) 10%, transparent);
}
.alert-action-record {
  opacity: .82;
}
.alert-action-record .review-note-head span:first-child::after {
  content: " · moved to Review Notes for new discussion";
  color: var(--muted);
  font-weight: 500;
  letter-spacing: 0;
  text-transform: none;
}
.review-composer.is-targeted {
  animation: reviewTargetPulse 1.55s ease both;
}
@keyframes reviewTargetPulse {
  0% { border-color: color-mix(in srgb, var(--brass) 72%, var(--border)); box-shadow: 0 0 0 0 color-mix(in srgb, var(--brass) 28%, transparent), 0 26px 72px -58px rgba(0,0,0,.78); }
  70% { border-color: color-mix(in srgb, var(--brass) 44%, var(--border)); box-shadow: 0 0 0 8px transparent, 0 26px 72px -58px rgba(0,0,0,.78); }
  100% { border-color: color-mix(in srgb, var(--border) 84%, transparent); box-shadow: 0 26px 72px -58px rgba(0,0,0,.78); }
}
.review-attach-preview {
  margin-top: 12px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  padding: 10px 12px;
  border-radius: var(--r-md);
  border: 1px solid color-mix(in srgb, var(--brass) 30%, var(--border));
  background: color-mix(in srgb, var(--brass) 8%, var(--surface-2));
}
.review-attach-preview[hidden] { display: none !important; }
.review-attach-preview span {
  display: block;
  margin-bottom: 2px;
  color: var(--muted);
  font-size: 10.5px;
  letter-spacing: .12em;
  text-transform: uppercase;
  font-weight: 800;
}
.review-attach-preview strong {
  color: var(--text);
  font-size: 13.5px;
  line-height: 1.35;
}
.review-attach-preview[data-severity="critical"] { border-color: color-mix(in srgb, var(--sev-critical) 34%, var(--border)); }
.review-attach-preview[data-severity="warning"] { border-color: color-mix(in srgb, var(--sev-warning) 34%, var(--border)); }
.review-attach-preview[data-severity="info"] { border-color: color-mix(in srgb, var(--sev-info) 34%, var(--border)); }

/* Setup page verification shortcut */
.verdict-banner-link {
  color: inherit;
  text-decoration: none;
  cursor: pointer;
  transition: transform 160ms ease, box-shadow 160ms ease, border-color 160ms ease;
}
.verdict-banner-link:hover,
.verdict-banner-link:focus-visible {
  transform: translateY(-1px);
  box-shadow: 0 18px 48px rgba(0, 0, 0, 0.22);
  border-color: color-mix(in srgb, var(--gold, #c7a45b) 48%, rgba(255,255,255,.14));
  outline: none;
}
.verdict-open {
  display: inline-flex;
  align-items: center;
  width: fit-content;
  margin-top: .35rem;
  font-size: .74rem;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--gold, #c7a45b);
}

/* Setup page verification shortcut: mirror verification.php verdict coloring */
.verdict-banner-link.verdict-FAILED {
  --verdict-accent: var(--sev-critical);
  --verdict-accent-strong: #ff7777;
  color: var(--verdict-accent-strong);
  border-color: color-mix(in srgb, var(--verdict-accent) 38%, var(--border));
  box-shadow: 0 22px 64px -46px color-mix(in srgb, var(--verdict-accent) 65%, transparent), var(--card-shadow);
}
.verdict-banner-link.verdict-PASS_WITH_WARNINGS {
  --verdict-accent: var(--sev-warning);
  --verdict-accent-strong: #f0b45f;
  color: var(--verdict-accent-strong);
  border-color: color-mix(in srgb, var(--verdict-accent) 38%, var(--border));
  box-shadow: 0 22px 64px -46px color-mix(in srgb, var(--verdict-accent) 65%, transparent), var(--card-shadow);
}
.verdict-banner-link.verdict-VERIFIED_PASS {
  --verdict-accent: var(--sev-ok);
  --verdict-accent-strong: #62c487;
  color: var(--verdict-accent-strong);
  border-color: color-mix(in srgb, var(--verdict-accent) 38%, var(--border));
  box-shadow: 0 22px 64px -46px color-mix(in srgb, var(--verdict-accent) 65%, transparent), var(--card-shadow);
}
.verdict-banner-link.verdict-FAILED::before,
.verdict-banner-link.verdict-PASS_WITH_WARNINGS::before,
.verdict-banner-link.verdict-VERIFIED_PASS::before {
  background:
    linear-gradient(135deg, color-mix(in srgb, var(--verdict-accent) 12%, transparent), transparent 44%),
    linear-gradient(90deg, color-mix(in srgb, var(--verdict-accent) 16%, transparent) 0%, transparent 56%);
  opacity: .72;
}
.verdict-banner-link .verdict-label {
  color: var(--verdict-accent-strong, currentColor);
  text-shadow: 0 10px 24px color-mix(in srgb, var(--verdict-accent, currentColor) 35%, transparent);
}
.verdict-banner-link .verdict-conf {
  color: color-mix(in srgb, var(--verdict-accent-strong, var(--text-muted)) 76%, var(--text-dim));
}
.verdict-banner-link .verdict-open {
  color: var(--verdict-accent-strong, var(--gold, #c7a45b));
}
.verdict-banner-link:hover,
.verdict-banner-link:focus-visible {
  border-color: color-mix(in srgb, var(--verdict-accent, var(--gold, #c7a45b)) 58%, rgba(255,255,255,.14));
  box-shadow: 0 18px 48px rgba(0, 0, 0, 0.22), 0 22px 68px -42px color-mix(in srgb, var(--verdict-accent, var(--gold, #c7a45b)) 72%, transparent);
}

/* ---------------- Alert-decision status dock ---------------- */
.decision-dock {
  --dock-accent: var(--brass);
  position: fixed;
  right: clamp(18px, 3vw, 42px);
  bottom: clamp(18px, 3vw, 34px);
  z-index: 1200;
  width: min(420px, calc(100vw - 36px));
  border: 1px solid color-mix(in srgb, var(--dock-accent) 42%, var(--border));
  border-radius: 18px;
  background:
    radial-gradient(520px 260px at 100% 0%, color-mix(in srgb, var(--dock-accent) 14%, transparent), transparent 66%),
    linear-gradient(180deg, color-mix(in srgb, var(--surface-hi) 74%, transparent), color-mix(in srgb, var(--surface) 96%, transparent));
  box-shadow:
    0 26px 80px -34px color-mix(in srgb, var(--dock-accent) 66%, transparent),
    0 18px 54px -30px rgba(0,0,0,0.7),
    inset 0 1px 0 rgba(255,255,255,0.08);
  color: var(--text);
  backdrop-filter: blur(18px) saturate(145%);
  -webkit-backdrop-filter: blur(18px) saturate(145%);
  overflow: hidden;
  animation: decisionDockIn 0.32s cubic-bezier(.2,.8,.2,1) both;
}
.decision-dock.verdict-FAILED { --dock-accent: var(--sev-critical); }
.decision-dock.verdict-PASS_WITH_WARNINGS { --dock-accent: var(--sev-warning); }
.decision-dock.verdict-VERIFIED_PASS { --dock-accent: var(--sev-ok); }
.decision-dock > summary {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 3px 14px;
  align-items: center;
  padding: 15px 17px 14px;
  cursor: pointer;
  list-style: none;
  user-select: none;
}
.decision-dock > summary::-webkit-details-marker { display: none; }
.decision-dock > summary::after {
  content: "Collapse";
  grid-column: 2;
  grid-row: 1 / span 2;
  align-self: center;
  border: 1px solid color-mix(in srgb, var(--dock-accent) 34%, var(--border));
  border-radius: 999px;
  padding: 5px 8px;
  color: color-mix(in srgb, var(--dock-accent) 86%, var(--text));
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
}
.decision-dock:not([open]) > summary::after { content: "Expand"; }
.decision-dock-kicker {
  color: var(--dock-accent);
  font-size: 10.5px;
  letter-spacing: .13em;
  text-transform: uppercase;
  font-weight: 800;
}
.decision-dock summary strong {
  font-family: var(--f-display);
  font-size: 20px;
  line-height: 1.08;
  font-weight: 600;
  color: var(--text);
}
.decision-dock-confidence {
  grid-column: 1 / -1;
  color: color-mix(in srgb, var(--dock-accent) 82%, var(--text-dim));
  font-family: var(--f-mono);
  font-size: 12px;
  font-weight: 600;
}
.decision-dock-body {
  padding: 0 17px 17px;
  display: grid;
  gap: 10px;
  border-top: 1px solid color-mix(in srgb, var(--dock-accent) 18%, transparent);
}
.decision-dock-row {
  display: flex;
  justify-content: space-between;
  gap: 14px;
  padding-top: 11px;
  color: var(--text-muted);
  font-size: 12px;
}
.decision-dock-row b {
  color: var(--text);
  text-align: right;
  font-weight: 700;
}
.decision-dock-counts {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
}
.decision-dock-counts span {
  border: 1px solid color-mix(in srgb, var(--dock-accent) 20%, var(--border));
  border-radius: 12px;
  padding: 8px 9px;
  background: color-mix(in srgb, var(--surface-2) 72%, transparent);
  color: var(--text-muted);
  font-size: 11px;
  text-align: center;
}
.decision-dock-counts b {
  display: block;
  color: var(--dock-accent);
  font-size: 18px;
  line-height: 1;
  margin-bottom: 3px;
}
.decision-dock-alert,
.decision-dock-pass {
  margin: 0;
  color: var(--text-dim);
  font-size: 12px;
  line-height: 1.45;
}
.decision-dock-pass {
  color: color-mix(in srgb, var(--sev-ok) 84%, var(--text));
  font-weight: 700;
}
@keyframes decisionDockIn {
  from { opacity: 0; transform: translate3d(0, 18px, 0) scale(.98); }
  to { opacity: 1; transform: translate3d(0, 0, 0) scale(1); }
}
@media (max-width: 760px) {
  .decision-dock {
    left: 14px;
    right: 14px;
    bottom: 14px;
    width: auto;
  }
}

/* Phase 0A: Standard Form Coverage Gate */
.coverage-gate-banner{
  margin: 18px 0 16px;
  padding: 18px 20px;
  border-radius: 22px;
  display: flex;
  justify-content: space-between;
  gap: 18px;
  align-items: flex-start;
  border: 1px solid rgba(255,255,255,.12);
  background: linear-gradient(135deg, rgba(255,255,255,.08), rgba(255,255,255,.035));
  box-shadow: 0 18px 42px rgba(0,0,0,.22);
  backdrop-filter: blur(18px);
}
.coverage-gate-banner h2{margin:2px 0 8px;font-size:1.05rem;letter-spacing:-.01em;}
.coverage-gate-banner p{margin:0;color:var(--muted);line-height:1.45;max-width:860px;}
.coverage-gate-banner .micro{margin-top:8px;font-size:.82rem;}
.coverage-degraded{border-color:rgba(245,179,72,.46);box-shadow:0 18px 42px rgba(245,179,72,.10);}
.coverage-degraded h2{color:#f5b348;}
.coverage-critical{border-color:rgba(255,92,92,.52);box-shadow:0 18px 42px rgba(255,92,92,.12);}
.coverage-critical h2{color:#ff6b6b;}
.coverage-recovered{border-color:rgba(75,211,126,.48);box-shadow:0 18px 42px rgba(75,211,126,.12);}
.coverage-recovered h2{color:#4bd37e;}
.coverage-weak-list{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end;max-width:390px;}
.coverage-weak-list span{border:1px solid rgba(255,255,255,.12);border-radius:999px;padding:7px 10px;font-size:.78rem;color:var(--muted);background:rgba(0,0,0,.14);white-space:nowrap;}
@media (max-width: 780px){.coverage-gate-banner{display:block}.coverage-weak-list{justify-content:flex-start;margin-top:14px}}
.verdict-coverage{display:inline-flex;align-items:center;border-radius:999px;padding:5px 9px;margin-left:8px;font-size:.78rem;border:1px solid rgba(255,255,255,.14);background:rgba(0,0,0,.12);color:var(--muted)}
.coverage-status-healthy{color:#4bd37e;border-color:rgba(75,211,126,.35)}
.coverage-status-watch{color:#f5b348;border-color:rgba(245,179,72,.28)}
.coverage-status-degraded{color:#f5b348;border-color:rgba(245,179,72,.42)}
.coverage-status-critical{color:#ff6b6b;border-color:rgba(255,92,92,.48)}

/* Feature A/B/C evidence UI */
.markup-chip-row{display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.35rem}.markup-chip,.citation-chip{display:inline-flex;align-items:center;border:1px solid rgba(180,138,82,.35);border-radius:999px;padding:.18rem .48rem;font-size:.72rem;text-decoration:none;background:rgba(180,138,82,.10);color:var(--text)}.citation-unresolved{border-color:rgba(255,140,90,.45);background:rgba(255,140,90,.11)}.nl-query-card{border-color:rgba(180,138,82,.22)}.nl-query-bar{display:flex;gap:.7rem;align-items:center}.nl-query-bar input[type=search]{flex:1;min-width:0;border:1px solid rgba(255,255,255,.13);border-radius:999px;background:rgba(255,255,255,.05);color:var(--text);padding:.75rem 1rem}.nl-query-result{margin-top:1rem;padding:1rem;border-radius:18px;background:rgba(255,255,255,.045);border:1px solid rgba(255,255,255,.10)}.nl-answer p{margin:.45rem 0}.nl-answer ul{margin:.55rem 0 .55rem 1.25rem}.nl-meta{margin-top:.75rem;font-size:.78rem;color:var(--muted)}.nl-error{color:#ffb4a8}.nl-loading{color:var(--muted)}
.source-ai-pills{display:flex;flex-wrap:wrap;gap:.4rem;margin:.65rem 0 0}


.ai-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 2px 9px;
  border-radius: 999px;
  border: 1px solid color-mix(in srgb, #4de0a8 28%, transparent);
  background: color-mix(in srgb, #4de0a8 12%, transparent);
  color: #8cf3cf;
  font-family: var(--f-mono);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
  white-space: nowrap;
}
.ai-chip::before {
  content: "AI";
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 18px;
  height: 18px;
  padding: 0 4px;
  border-radius: 999px;
  background: color-mix(in srgb, #4de0a8 18%, rgba(255,255,255,.02));
  color: #dffff1;
  font-size: 9px;
  letter-spacing: .08em;
}
.ai-chip-elevation {
  border-color: color-mix(in srgb, #53c7ff 34%, transparent);
  background: color-mix(in srgb, #53c7ff 10%, transparent);
  color: #9fdfff;
}
.ai-chip-elevation::before {
  background: color-mix(in srgb, #53c7ff 18%, rgba(255,255,255,.03));
  color: #eef9ff;
}

/* Multi-turn Ask panel — transcript */
.nl-head-meta { display: inline-flex; align-items: center; gap: .75rem; flex-wrap: wrap; }
.nl-newconv-btn { white-space: nowrap; }
.nl-thread-notice {
  margin: .65rem 0 .25rem;
  padding: .55rem .8rem;
  border-radius: 12px;
  border: 1px solid rgba(255,200,120,.30);
  background: rgba(255,200,120,.09);
  color: var(--text);
  font-size: .82rem;
}
.nl-transcript {
  display: flex;
  flex-direction: column;
  gap: .9rem;
  margin: .85rem 0 .85rem;
}
.nl-turn {
  display: flex;
  flex-direction: column;
  gap: .5rem;
  padding: .85rem 1rem;
  border-radius: 16px;
  background: rgba(255,255,255,.035);
  border: 1px solid rgba(255,255,255,.08);
}
.nl-turn-pending { opacity: .92; }
.nl-turn-label {
  display: inline-block;
  font-family: var(--f-mono, ui-monospace, SFMono-Regular, Menlo, monospace);
  font-size: .68rem;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--muted);
  margin-bottom: .25rem;
}
.nl-turn-q-body {
  font-weight: 600;
  color: var(--text);
  line-height: 1.45;
}
.nl-turn-a {
  border-top: 1px dashed rgba(255,255,255,.08);
  padding-top: .6rem;
}
.nl-turn-a .nl-answer p { margin: .35rem 0; }
.nl-turn-a .nl-answer ul { margin: .45rem 0 .45rem 1.2rem; }
.nl-turn-meta {
  margin-top: .55rem;
  font-size: .76rem;
  color: var(--muted);
  display: flex;
  flex-wrap: wrap;
  gap: .55rem;
  align-items: center;
}
.nl-turn-mode {
  display: inline-block;
  padding: 0 .45rem;
  border-radius: 999px;
  border: 1px solid rgba(255,255,255,.10);
  background: rgba(255,255,255,.04);
  font-family: var(--f-mono, ui-monospace, SFMono-Regular, Menlo, monospace);
  font-size: .70rem;
  letter-spacing: .06em;
  text-transform: uppercase;
}

/* =========================================================================
   Luxury Simplification Pass — cleaner hierarchy, workflow rails, hidden diagnostics
   ========================================================================= */
.app-nav a {
  position: relative;
  display: inline-flex;
  align-items: center;
  min-height: 30px;
  padding: 0 2px;
}
.app-nav a.is-active {
  color: var(--text);
}
.app-nav a.is-active::after {
  content: "";
  position: absolute;
  left: 2px;
  right: 2px;
  bottom: -14px;
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--brass-2), transparent);
  opacity: .9;
}
.review-rail {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
  margin: 18px 0 24px;
}
.review-rail a {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: center;
  gap: 10px;
  min-height: 54px;
  padding: 11px 14px;
  border-radius: 16px;
  border: 1px solid var(--border);
  background:
    linear-gradient(135deg, color-mix(in srgb, var(--surface-hi) 56%, transparent), color-mix(in srgb, var(--surface) 92%, transparent));
  box-shadow: 0 18px 44px -36px rgba(0,0,0,.8), inset 0 1px 0 rgba(255,255,255,.035);
  transition: transform .15s ease, border-color .15s ease, background .15s ease;
}
.review-rail a:hover {
  transform: translateY(-1px);
  border-color: color-mix(in srgb, var(--brass) 38%, var(--border));
  background:
    linear-gradient(135deg, color-mix(in srgb, var(--brass) 8%, var(--surface-hi)), color-mix(in srgb, var(--surface) 94%, transparent));
}
.review-rail b {
  width: 26px;
  height: 26px;
  display: inline-grid;
  place-items: center;
  border-radius: 999px;
  color: #1a1208;
  background: linear-gradient(135deg, var(--brass-2), var(--brass));
  font-family: var(--f-mono);
  font-size: 11px;
  box-shadow: 0 8px 20px -14px var(--brass-2);
}
.review-rail span {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: var(--text-dim);
  font-size: 12px;
  font-weight: 650;
  letter-spacing: .045em;
  text-transform: uppercase;
}
.project-rail { margin-top: 22px; }
.evidence-drawer,
.setup-drawer {
  margin: 0 0 24px;
  border: 1px solid color-mix(in srgb, var(--border) 78%, transparent);
  border-radius: 20px;
  background:
    linear-gradient(145deg, color-mix(in srgb, var(--surface-hi) 42%, transparent), color-mix(in srgb, var(--surface) 92%, transparent));
  box-shadow: var(--card-shadow);
  overflow: hidden;
}
.evidence-drawer > summary,
.setup-drawer > summary {
  list-style: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  padding: 18px 22px;
  user-select: none;
}
.evidence-drawer > summary::-webkit-details-marker,
.setup-drawer > summary::-webkit-details-marker { display: none; }
.evidence-drawer > summary b,
.setup-drawer > summary b {
  display: block;
  font-family: var(--f-display);
  font-size: 18px;
  font-weight: 550;
  letter-spacing: -.01em;
  color: var(--text);
}
.evidence-drawer > summary em,
.setup-drawer > summary em {
  display: block;
  margin-top: 2px;
  font-style: normal;
  color: var(--text-muted);
  font-size: 12px;
}
.evidence-drawer > summary strong,
.setup-drawer > summary strong {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: var(--brass-2);
  font-size: 11px;
  letter-spacing: .14em;
  text-transform: uppercase;
  white-space: nowrap;
}
.evidence-drawer > summary strong::after,
.setup-drawer > summary strong::after {
  content: "";
  width: 8px;
  height: 8px;
  border-right: 1.5px solid currentColor;
  border-bottom: 1.5px solid currentColor;
  transform: rotate(45deg) translateY(-2px);
  transition: transform .18s ease;
}
.evidence-drawer[open] > summary strong::after,
.setup-drawer[open] > summary strong::after {
  transform: rotate(225deg) translateY(-1px);
}
.evidence-drawer-body,
.setup-drawer-body {
  padding: 0 18px 18px;
}
.evidence-card,
.setup-card {
  margin-bottom: 14px;
  border-radius: 16px;
  background: color-mix(in srgb, var(--surface-hi) 38%, transparent);
}
.evidence-drawer .review-focus {
  margin: 0 0 14px;
  padding: 18px 20px;
  border: 1px solid var(--border);
  border-radius: 16px;
  background: color-mix(in srgb, var(--surface-hi) 30%, transparent);
}
.nl-query-card {
  border-color: color-mix(in srgb, var(--brass) 30%, var(--border));
  background:
    radial-gradient(720px 200px at 12% 0%, color-mix(in srgb, var(--brass) 9%, transparent), transparent 72%),
    linear-gradient(145deg, color-mix(in srgb, var(--surface-hi) 52%, transparent), color-mix(in srgb, var(--surface) 96%, transparent));
}
.nl-query-card .card-head h2::after {
  content: "";
  display: block;
  width: 52px;
  height: 1px;
  margin-top: 9px;
  background: linear-gradient(90deg, var(--brass), transparent);
}
.verification-counts {
  position: sticky;
  top: 62px;
  z-index: 20;
  padding: 8px 0;
  backdrop-filter: blur(14px) saturate(128%);
  -webkit-backdrop-filter: blur(14px) saturate(128%);
}
.verification-count-card {
  min-height: 78px;
  border-radius: 17px;
}
.triage-decisions,
.triage-auto,
.triage-context,
#alerts.card {
  scroll-margin-top: 110px;
}
.triage-decisions {
  border-color: color-mix(in srgb, var(--brass) 28%, var(--border));
}
.triage-auto,
.triage-context {
  opacity: .94;
}
.source-intel {
  border-radius: 20px;
}
.source-upload-form {
  border-radius: 16px;
  background: color-mix(in srgb, var(--surface-hi) 30%, transparent);
}
.source-library:not([open]) {
  padding-bottom: 0;
}
.catalog-command {
  margin-top: 0;
}
.catalog-console,
.catalog-card-grid,
.source-card-grid {
  gap: 14px;
}
@media (max-width: 820px) {
  .review-rail { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .verification-counts { position: relative; top: auto; }
  .evidence-drawer > summary,
  .setup-drawer > summary { align-items: flex-start; flex-direction: column; }
}
@media (max-width: 520px) {
  .review-rail { grid-template-columns: 1fr; }
}
.source-upload-drawer {
  margin: 14px 0 18px;
  border: 1px solid var(--border);
  border-radius: 16px;
  background: color-mix(in srgb, var(--surface-hi) 28%, transparent);
  overflow: hidden;
}
.source-upload-drawer > summary {
  list-style: none;
  cursor: pointer;
  padding: 14px 16px;
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: center;
}
.source-upload-drawer > summary::-webkit-details-marker { display: none; }
.source-upload-drawer > summary span {
  font-family: var(--f-display);
  font-size: 16px;
  color: var(--text);
}
.source-upload-drawer > summary em {
  display: block;
  margin-top: 1px;
  font-style: normal;
  color: var(--text-muted);
  font-size: 11.5px;
}
.source-upload-drawer > summary::after {
  content: "Open";
  color: var(--brass-2);
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: .14em;
  text-transform: uppercase;
}
.source-upload-drawer[open] > summary::after { content: "Close"; }
.source-upload-drawer .source-upload-form {
  margin: 0;
  border: 0;
  border-top: 1px solid var(--border);
  border-radius: 0;
}

/* =========================================================================
   Editorial Refinement Pass — April 26, 2026
   Goals: collapse 6 card variants → 2, quiet pills/uppercase, dramatize
   verdict, compress source-intel, refine project list grid, soft-banner.
   This block is ADDITIVE: it overrides earlier rules where they conflict
   and introduces new components (.vh-ring, .project-grid, .vc-tab).
   No existing class name is renamed; all data-* JS hooks stay intact.
   ========================================================================= */

/* --- Tone of voice: less SHOUTING --------------------------------------- */
/* Letter-spaced uppercase was meant to be a luxury accent. It has spread
   to too many surfaces. Restrict it to brand/eyebrow/verdict-band moments;
   demote everything else to calm sentence case. */
.section-title-quiet,
.evidence-drawer > summary em,
.setup-drawer > summary em,
.source-intel-head .micro,
.docs-head .section-title,
.source-group-head h3,
.catalog-library-head,
.review-rail span {
  text-transform: none;
  letter-spacing: 0;
}
.review-rail span {
  font-size: 13px;
  font-weight: 500;
  color: var(--text);
  letter-spacing: -0.005em;
}
.section-title-quiet {
  font-family: var(--f-display);
  font-size: 17px;
  font-weight: 500;
  color: var(--text);
}
.docs-head .section-title {
  font-family: var(--f-display);
  font-size: 17px;
  font-weight: 500;
}

/* --- Drawer summaries: refined, less "OPEN / CLOSE" ringing -------------- */
.evidence-drawer > summary strong,
.setup-drawer > summary strong,
.source-upload-drawer > summary::after {
  text-transform: none;
  letter-spacing: 0;
  font-size: 12.5px;
  font-weight: 500;
  color: var(--text-dim);
}
.source-upload-drawer > summary::after { content: "Add source"; }
.source-upload-drawer[open] > summary::after { content: "Hide"; }

/* --- Card surface system: two tiers, not six --------------------------- */
/* Keep .card / .primary-card / .evidence-card / .adv-card / .setup-card
   as opt-in modifiers, but normalize them to two visual tiers. */
.card.primary-card,
.evidence-card,
.adv-card,
.setup-card,
.source-card,
.catalog-card {
  border-radius: 16px;
}
.evidence-card,
.adv-card {
  background: color-mix(in srgb, var(--surface-hi) 22%, transparent);
  border: 1px solid color-mix(in srgb, var(--border) 60%, transparent);
  box-shadow: none;
  padding: 22px 24px;
  margin-bottom: 14px;
}
.adv-card { padding: 18px 20px; }

/* --- Pill discipline --------------------------------------------------- */
/* Pills are for STATUS. Things that are merely metadata (scope, role,
   archetype, "global", "scoped") get a quieter treatment. */
.pill.pill-quiet,
.doc-scope-pill,
.source-type-chip,
.catalog-line-chip {
  background: transparent;
  border: 1px solid color-mix(in srgb, var(--border) 70%, transparent);
  color: var(--text-dim);
  font-weight: 500;
  letter-spacing: 0;
  text-transform: none;
}
/* Reserve pill-sm uppercase for true status pills (verdict, severity, role). */
.source-facts span,
.source-metrics span {
  text-transform: none;
  letter-spacing: 0;
}

/* =========================================================================
   Verification hero showpiece — confidence ring + verdict
   ========================================================================= */
.verification-hero {
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: clamp(20px, 3vw, 40px);
  padding: clamp(26px, 4vw, 40px) clamp(28px, 4vw, 44px);
  border-radius: 22px;
  margin-bottom: 22px;
}
@media (max-width: 760px) {
  .verification-hero {
    grid-template-columns: 1fr;
    text-align: left;
  }
}

.vh-ring {
  position: relative;
  width: 168px;
  height: 168px;
  flex-shrink: 0;
  --p: 0;
  --off: calc(100 - var(--p));
  /* Allow the arc's drop-shadow filter to render past the SVG edge without
     being clipped to a 168x168 square — that's what produced the faint
     square halo around the circular glow. */
  overflow: visible;
}
.vh-ring svg {
  width: 100%;
  height: 100%;
  transform: rotate(-90deg);
  display: block;
  /* SVG defaults to overflow:hidden; explicitly allow the filter blur to
     extend beyond the SVG element bounds so the glow stays circular. */
  overflow: visible;
}
.vh-ring-track {
  fill: none;
  stroke: color-mix(in srgb, var(--text) 9%, transparent);
  stroke-width: 6;
}
.vh-ring-arc {
  fill: none;
  stroke: var(--brass-2);
  stroke-width: 6;
  stroke-linecap: round;
  stroke-dasharray: 100;
  stroke-dashoffset: 100;
  animation: vh-ring-fill 1100ms cubic-bezier(0.22, 1, 0.36, 1) 120ms forwards;
  filter: drop-shadow(0 0 14px color-mix(in srgb, var(--brass-2) 35%, transparent));
}
@keyframes vh-ring-fill {
  to { stroke-dashoffset: var(--off); }
}
.verification-hero.verdict-FAILED .vh-ring-arc {
  stroke: var(--sev-critical);
  filter: drop-shadow(0 0 14px color-mix(in srgb, var(--sev-critical) 35%, transparent));
}
.verification-hero.verdict-PASS_WITH_WARNINGS .vh-ring-arc {
  stroke: var(--sev-warning);
  filter: drop-shadow(0 0 14px color-mix(in srgb, var(--sev-warning) 32%, transparent));
}
.verification-hero.verdict-VERIFIED_PASS .vh-ring-arc {
  stroke: var(--brass-2);
}
.vh-ring-inner {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  pointer-events: none;
}
.vh-percent {
  font-family: var(--f-display);
  font-size: 40px;
  font-weight: 500;
  letter-spacing: -0.025em;
  line-height: 1;
  color: var(--text);
  display: inline-flex;
  align-items: baseline;
}
.vh-percent i {
  font-style: normal;
  font-size: 18px;
  color: var(--text-dim);
  font-weight: 400;
  margin-left: 3px;
  letter-spacing: 0;
}
.vh-percent-l {
  margin-top: 6px;
  font-size: 10.5px;
  color: var(--text-muted);
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.vh-headline {
  min-width: 0;
}
.vh-headline .kicker {
  color: var(--brass-2);
  font-size: 10.5px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  font-weight: 600;
  margin-bottom: 10px;
}
.vh-verdict {
  font-family: var(--f-display);
  font-size: clamp(28px, 4vw, 38px);
  font-weight: 500;
  letter-spacing: -0.02em;
  line-height: 1.05;
  color: var(--text);
  margin-bottom: 8px;
}
.verification-hero.verdict-FAILED .vh-verdict { color: #f5a3a3; }
.verification-hero.verdict-PASS_WITH_WARNINGS .vh-verdict { color: #f1c47a; }
.verification-hero.verdict-VERIFIED_PASS .vh-verdict { color: var(--brass-2); }
.vh-project {
  font-family: var(--f-body);
  font-size: 15px;
  color: var(--text-dim);
  margin-bottom: 4px;
}
.vh-project b { color: var(--text); font-weight: 600; }
.vh-meta {
  font-size: 12.5px;
  color: var(--text-muted);
  display: flex;
  flex-wrap: wrap;
  gap: 6px 10px;
  align-items: baseline;
}
.vh-meta .sep { color: var(--text-muted); opacity: 0.55; }
.vh-empty {
  font-family: var(--f-display);
  font-size: 26px;
  font-weight: 500;
  letter-spacing: -0.015em;
  color: var(--text);
  margin-bottom: 8px;
}
.vh-empty + .vh-meta { color: var(--text-dim); }

/* --- Refined verification counts: tablets, not chunky cards ------------ */
.verification-counts {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 8px;
  padding: 10px 0;
  margin-bottom: 24px;
}
.verification-count-card {
  display: flex;
  align-items: baseline;
  justify-content: flex-start;
  gap: 10px;
  min-height: 52px;
  padding: 12px 16px;
  border-radius: 12px;
  border: 1px solid var(--border);
  background: color-mix(in srgb, var(--surface-hi) 18%, transparent);
}
.verification-count-card b {
  font-family: var(--f-display);
  font-size: 24px;
  font-weight: 500;
  letter-spacing: -0.015em;
  line-height: 1;
  color: var(--text);
  display: inline-block;
}
.verification-count-card span {
  text-transform: none;
  letter-spacing: 0;
  font-size: 12px;
  color: var(--text-dim);
  font-weight: 500;
}
.verification-count-card.count-critical {
  border-left: 2px solid var(--sev-critical);
}
.verification-count-card.count-critical b { color: #f08383; }
.verification-count-card.count-warning {
  border-left: 2px solid var(--sev-warning);
}
.verification-count-card.count-warning b { color: #e8b370; }
.verification-count-card.count-info {
  border-left: 2px solid color-mix(in srgb, var(--text-dim) 50%, transparent);
}
.verification-count-card.count-total {
  border-left: 2px solid color-mix(in srgb, var(--brass) 70%, transparent);
}
@media (max-width: 720px) {
  .verification-counts { grid-template-columns: repeat(2, 1fr); }
}

/* =========================================================================
   Project page head — primary CTA + link-style secondaries
   ========================================================================= */
.project-head {
  align-items: flex-start;
}
.project-head .head-actions {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
}
.project-head .head-actions .btn-ghost {
  background: transparent;
  border-color: transparent;
  color: var(--text-dim);
  padding-left: 10px;
  padding-right: 10px;
}
.project-head .head-actions .btn-ghost:hover {
  color: var(--text);
  background: color-mix(in srgb, var(--surface-hi) 50%, transparent);
}
.project-head .head-actions .btn-ai-scan {
  /* Keep AI scan visually distinct without being a wall of buttons. */
  background: transparent;
  border: 1px dashed color-mix(in srgb, var(--brass) 40%, var(--border));
  color: var(--brass-2);
}
.project-head .head-actions .btn-primary {
  /* Primary stays bold and dominant. */
  margin-left: 4px;
}
.project-head .pill.pill-lg {
  font-size: 11px;
  padding: 6px 12px;
}

/* =========================================================================
   Verdict banner link — refined to a single-line affordance
   The rail handles navigation; this is now a soft second prompt.
   ========================================================================= */
.verdict-banner-link {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  padding: 14px 22px;
  border-radius: 14px;
  margin: 18px 0 24px;
  background: color-mix(in srgb, var(--surface-hi) 24%, transparent);
  border: 1px solid var(--border);
  box-shadow: none;
  transition: border-color 160ms ease, background 160ms ease, transform 160ms ease;
}
.verdict-banner-link::before { display: none; }
.verdict-banner-link:hover,
.verdict-banner-link:focus-visible {
  border-color: color-mix(in srgb, var(--brass) 40%, var(--border));
  background: color-mix(in srgb, var(--surface-hi) 36%, transparent);
  transform: none;
}
.verdict-banner-link .verdict-left {
  display: flex;
  align-items: baseline;
  gap: 14px;
  flex-wrap: wrap;
  min-width: 0;
}
.verdict-banner-link .verdict-label {
  font-family: var(--f-display);
  font-size: 17px;
  font-weight: 500;
  letter-spacing: -0.01em;
  text-transform: none;
}
.verdict-banner-link.verdict-FAILED .verdict-label { color: #f0a3a3; }
.verdict-banner-link.verdict-PASS_WITH_WARNINGS .verdict-label { color: #e8b370; }
.verdict-banner-link.verdict-VERIFIED_PASS .verdict-label { color: var(--brass-2); }
.verdict-banner-link .verdict-conf {
  font-size: 12.5px;
  color: var(--text-dim);
  letter-spacing: 0;
  text-transform: none;
}
.verdict-banner-link .verdict-coverage {
  font-size: 12px;
  color: var(--text-muted);
  letter-spacing: 0;
  text-transform: none;
}
.verdict-banner-link .verdict-open {
  font-size: 12.5px;
  color: var(--brass-2);
  letter-spacing: 0;
  text-transform: none;
  font-weight: 500;
  margin-left: auto;
  white-space: nowrap;
}
.verdict-banner-link .verdict-counts {
  display: flex;
  gap: 14px;
  flex-shrink: 0;
}
.verdict-banner-link .verdict-counts .count {
  font-size: 12px;
  color: var(--text-dim);
  letter-spacing: 0;
  text-transform: none;
}
.verdict-banner-link .verdict-counts b {
  font-family: var(--f-display);
  font-size: 16px;
  margin-right: 4px;
}
.verdict-banner-link .verdict-counts .count-critical b { color: #f08383; }
.verdict-banner-link .verdict-counts .count-warning b { color: #e8b370; }

/* =========================================================================
   Source Intelligence — compressed summary
   ========================================================================= */
.source-intel-head .section-title {
  font-family: var(--f-display);
  font-size: 20px;
  font-weight: 500;
  letter-spacing: -0.01em;
}
.source-intel-head .catalog-eyebrow {
  font-size: 10.5px;
  letter-spacing: 0.16em;
  color: var(--brass-2);
  text-transform: uppercase;
  font-weight: 600;
  margin-bottom: 4px;
}
.source-intel-summary {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 16px;
  margin: 14px 0 16px;
  padding: 10px 14px;
  border-radius: 10px;
  background: color-mix(in srgb, var(--surface-hi) 14%, transparent);
  border: 1px solid color-mix(in srgb, var(--border) 70%, transparent);
}
.source-intel-summary > div {
  display: inline-flex;
  align-items: baseline;
  gap: 6px;
  background: transparent;
  border: 0;
  padding: 0;
  min-width: 0;
}
.source-intel-summary b {
  font-family: var(--f-display);
  font-size: 15px;
  font-weight: 500;
  letter-spacing: -0.01em;
  color: var(--text);
}
.source-intel-summary span {
  text-transform: none;
  letter-spacing: 0;
  font-size: 12.5px;
  color: var(--text-dim);
  margin-top: 0;
}
.coverage-radar {
  margin: 6px 0 14px;
  font-size: 11.5px;
  opacity: 0.85;
}
.coverage-radar span {
  letter-spacing: 0;
  text-transform: none;
  font-size: 11.5px;
}

/* Source group heads — quieter, less competing. */
.source-group-head h3 {
  font-family: var(--f-display);
  font-size: 15.5px;
  font-weight: 500;
}
.source-group-head span {
  font-size: 12px;
  color: var(--text-muted);
  letter-spacing: 0;
  text-transform: none;
}

/* Source card actions — primary view shows only the core actions; the rest
   live behind the existing "Assign / scope" details. We dim secondaries. */
.source-card-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  margin-top: 10px;
}
.source-card-actions .btn-ghost {
  background: transparent;
  border-color: transparent;
  color: var(--text-dim);
  padding: 5px 10px;
}
.source-card-actions .btn-ghost:hover {
  color: var(--text);
  background: color-mix(in srgb, var(--surface-hi) 50%, transparent);
}
.source-card-actions .btn-ai-scan {
  border: 1px dashed color-mix(in srgb, var(--brass) 35%, var(--border));
  color: var(--brass-2);
}

/* =========================================================================
   Project listing as an editorial card grid (index.php)
   ========================================================================= */
.project-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
  list-style: none;
  margin: 0;
  padding: 0;
}
@media (max-width: 720px) {
  .project-grid { grid-template-columns: 1fr; }
}
.project-grid .project-row {
  list-style: none;
  margin: 0;
  padding: 0;
}
.project-card {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 16px 18px 14px;
  border-radius: 14px;
  border: 1px solid var(--border);
  background:
    linear-gradient(160deg, color-mix(in srgb, var(--surface-hi) 36%, transparent), color-mix(in srgb, var(--surface) 90%, transparent));
  box-shadow: 0 14px 32px -28px rgba(0,0,0,0.55);
  transition: border-color 180ms ease, transform 180ms ease, background 180ms ease;
  text-decoration: none;
  color: inherit;
  min-height: 128px;
  position: relative;
}
.project-card:hover {
  border-color: color-mix(in srgb, var(--brass) 36%, var(--border));
  transform: translateY(-1px);
  background:
    linear-gradient(160deg, color-mix(in srgb, var(--brass) 4%, var(--surface-hi)), color-mix(in srgb, var(--surface) 92%, transparent));
}
.project-card .pc-status {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 11.5px;
  color: var(--text-dim);
  letter-spacing: 0;
  text-transform: none;
}
.project-card .pc-dot {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--text-muted);
  display: inline-block;
}
.project-card .pc-dot.dot-green { background: var(--sev-ok); box-shadow: 0 0 0 3px color-mix(in srgb, var(--sev-ok) 18%, transparent); }
.project-card .pc-dot.dot-amber { background: var(--sev-warning); box-shadow: 0 0 0 3px color-mix(in srgb, var(--sev-warning) 18%, transparent); }
.project-card .pc-dot.dot-red { background: var(--sev-critical); box-shadow: 0 0 0 3px color-mix(in srgb, var(--sev-critical) 18%, transparent); }
.project-card .pc-dot.dot-muted { background: var(--text-muted); }
.project-card .pc-name {
  font-family: var(--f-display);
  font-size: 19px;
  font-weight: 500;
  letter-spacing: -0.012em;
  color: var(--text);
  margin: 0;
  line-height: 1.25;
}
.project-card .pc-meta {
  font-size: 12.5px;
  color: var(--text-dim);
  display: flex;
  flex-wrap: wrap;
  gap: 4px 8px;
  letter-spacing: 0;
}
.project-card .pc-meta .sep { color: var(--text-muted); opacity: 0.55; }
.project-card .pc-foot {
  margin-top: auto;
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  font-size: 11.5px;
  color: var(--text-muted);
  letter-spacing: 0;
}
.project-card .pc-arrow {
  font-family: var(--f-display);
  font-size: 16px;
  color: var(--brass-2);
  opacity: 0;
  transform: translateX(-4px);
  transition: opacity 180ms ease, transform 180ms ease;
}
.project-card:hover .pc-arrow {
  opacity: 1;
  transform: translateX(0);
}

/* Project list section gets a quieter heading so the cards lead. */
.card.project-list {
  background:
    linear-gradient(160deg, color-mix(in srgb, var(--surface-hi) 28%, transparent), color-mix(in srgb, var(--surface) 90%, transparent));
}
.card.project-list h2 {
  font-size: 16px;
  font-weight: 500;
  margin-bottom: 14px;
}

/* Hero on home page — slightly tighter, more editorial. */
.hero .display { letter-spacing: -0.025em; }
.hero .lede { font-size: 15px; max-width: 620px; }
.hero-stat .stat-n { font-family: var(--f-display); }
.hero-stat .stat-l {
  text-transform: none;
  letter-spacing: 0;
  font-size: 12px;
}

/* Document library default-collapsed look — quiet bookend, not a card. */
.document-library-manager {
  margin-top: 22px;
  border-top: 1px solid var(--border);
  border-radius: 0;
  background: transparent;
  padding-top: 14px;
}
.document-library-manager > .document-library-summary {
  padding: 10px 0;
}
.document-library-manager h3 {
  font-family: var(--f-display);
  font-size: 14.5px;
  font-weight: 500;
}

/* =========================================================================
   Topbar — sharper scroll-shadow, refined brand mark
   ========================================================================= */
.topbar {
  transition: box-shadow 220ms ease, border-color 220ms ease;
}
body.is-scrolled .topbar {
  box-shadow: 0 12px 28px -24px rgba(0,0,0,0.65);
  border-bottom-color: color-mix(in srgb, var(--border) 85%, transparent);
}
.brand-mark {
  background: linear-gradient(140deg, var(--brass-2), var(--brass) 60%, var(--brass-dim));
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.20),
              0 4px 12px -6px var(--brass);
}
.brand-mark::after {
  inset: 5px;
  background: none;
  border: 1px solid rgba(255,255,255,0.22);
  border-radius: 2px;
}

/* =========================================================================
   Misc tightening — print path stays untouched
   ========================================================================= */
.review-rail {
  gap: 8px;
}
.review-rail a {
  border-radius: 14px;
  padding: 10px 14px;
  min-height: 50px;
  background:
    linear-gradient(150deg, color-mix(in srgb, var(--surface-hi) 38%, transparent), color-mix(in srgb, var(--surface) 92%, transparent));
}
.review-rail b {
  width: 22px;
  height: 22px;
  font-size: 10.5px;
  background: linear-gradient(140deg, var(--brass-2), var(--brass));
  box-shadow: 0 4px 12px -8px var(--brass-2);
}
.review-rail a:hover {
  border-color: color-mix(in srgb, var(--brass) 42%, var(--border));
  background:
    linear-gradient(150deg, color-mix(in srgb, var(--brass) 6%, var(--surface-hi)), color-mix(in srgb, var(--surface) 94%, transparent));
}

/* Reduced-motion respect */
@media (prefers-reduced-motion: reduce) {
  .vh-ring-arc { animation: none; stroke-dashoffset: var(--off); }
  .project-card,
  .review-rail a,
  .verdict-banner-link { transition: none; }
}

/* End Editorial Refinement Pass */

/* --- Coverage radar drawer (default-collapsed) -------------------------- */
.coverage-radar-drawer {
  margin: 0 0 14px;
  border: 0;
  background: transparent;
  padding: 0;
  border-radius: 0;
  box-shadow: none;
}
.coverage-radar-drawer > .coverage-radar-summary {
  list-style: none;
  cursor: pointer;
  padding: 6px 0;
  font-size: 12.5px;
  color: var(--text-dim);
  letter-spacing: 0;
  text-transform: none;
  font-weight: 500;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  border: 0;
  background: transparent;
  user-select: none;
  transition: color 140ms ease;
}
.coverage-radar-drawer > .coverage-radar-summary::-webkit-details-marker { display: none; }
.coverage-radar-drawer > .coverage-radar-summary::before {
  content: "▸";
  font-size: 9px;
  color: var(--text-muted);
  transition: transform 160ms ease;
  display: inline-block;
}
.coverage-radar-drawer[open] > .coverage-radar-summary::before {
  transform: rotate(90deg);
}
.coverage-radar-drawer > .coverage-radar-summary:hover { color: var(--text); }
.coverage-radar-count {
  color: var(--brass-2);
  font-weight: 500;
}
.coverage-radar-drawer .coverage-radar {
  margin: 8px 0 0;
  padding: 10px 14px;
  border-radius: 10px;
  background: color-mix(in srgb, var(--surface-hi) 14%, transparent);
  border: 1px solid color-mix(in srgb, var(--border) 70%, transparent);
}

/* End coverage-radar drawer */

/* --- Source library summary — quieter caption ---------------------------- */
.source-library summary span {
  font-size: 15.5px;
  font-weight: 500;
}
.source-library summary em {
  text-transform: none;
  letter-spacing: 0;
  font-size: 12px;
  color: var(--text-muted);
}

/* End source library summary */

/* =========================================================================
   Navigation Refinement Pass — April 26, 2026
   1. Kill sticky verification counts (they should sit in natural position)
   2. Breathe the index project list / cards
   3. Active rail item state (driven by scroll-spy in app.js)
   4. Floating circular quick-nav (positioned top-right, idle/hover states)
   ========================================================================= */

/* --- 1. Verification counts: not sticky -------------------------------- */
section.verification-counts,
.verification-page > .verification-counts {
  position: static !important;
  top: auto !important;
  z-index: auto !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
  padding: 10px 0 !important;
}
.triage-decisions,
.triage-auto,
.triage-context,
#alerts.card {
  scroll-margin-top: 84px; /* topbar clearance only — no sticky counts */
}

/* --- 2. Index project list — wider rail + breathing cards --------------- */
@media (min-width: 1001px) {
  .grid-2 {
    grid-template-columns: minmax(0, 2.3fr) minmax(310px, 0.7fr);
    gap: 28px;
  }
}
.card.project-list { padding: 22px 24px 24px; }
.card.project-list h2 { margin-bottom: 16px; font-size: 17px; }
.project-grid {
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
  gap: 14px;
}
.project-card {
  padding: 20px 22px 18px;
  min-height: 156px;
  gap: 12px;
  border-radius: 16px;
}
.project-card .pc-status {
  font-size: 12px;
  letter-spacing: 0;
}
.project-card .pc-name {
  font-size: 20px;
  line-height: 1.22;
  letter-spacing: -0.018em;
  word-break: normal;
  overflow-wrap: break-word;
}
.project-card .pc-meta {
  font-size: 12.5px;
  margin-top: 2px;
}
.project-card .pc-foot {
  margin-top: 14px;
  padding-top: 12px;
  border-top: 1px solid color-mix(in srgb, var(--border) 60%, transparent);
}
@media (max-width: 1100px) {
  /* When the right rail is at its narrowest before stacking, give
     the single card the full rail width — looks intentional, not squeezed. */
  .project-grid { grid-template-columns: 1fr; }
}

/* --- 3. Active state for rail items (scroll-spy driven) ----------------- */
.review-rail a.is-active {
  border-color: color-mix(in srgb, var(--brass) 55%, var(--border));
  background:
    linear-gradient(150deg, color-mix(in srgb, var(--brass) 9%, var(--surface-hi)),
                           color-mix(in srgb, var(--surface) 92%, transparent));
  color: var(--text);
}
.review-rail a.is-active b {
  background: linear-gradient(140deg, var(--brass-2), var(--brass));
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--brass) 18%, transparent),
              0 6px 16px -8px var(--brass-2);
  color: #1a1410;
}
.review-rail a.is-active span {
  color: var(--brass-2);
  font-weight: 600;
}
.review-rail a.is-active::after {
  content: "";
  position: absolute;
  left: 14px;
  right: 14px;
  bottom: 4px;
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--brass), transparent);
  opacity: 0.55;
}
.review-rail a {
  position: relative; /* anchor the ::after underline */
}

/* --- 4. Floating circular quick-nav ------------------------------------- */
.floating-nav {
  position: fixed;
  top: 96px;
  right: 22px;
  z-index: 60;
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 10px 8px;
  border-radius: 999px;
  /* Solid surface with a touch of translucency. NO backdrop-filter:
     a fixed element with backdrop-filter on a scrolling page produces
     horizontal scanline banding artifacts in Chromium because the
     backdrop region has to be resampled and re-blurred on every scroll
     frame, and the resampling renders incrementally. The luxurious feel
     is preserved via the brass-tinted gradient + inner-highlight shadow
     instead. */
  background:
    linear-gradient(150deg,
      color-mix(in srgb, var(--surface-hi) 92%, transparent),
      color-mix(in srgb, var(--surface) 96%, transparent));
  border: 1px solid color-mix(in srgb, var(--border) 80%, transparent);
  box-shadow: 0 12px 28px -20px rgba(0,0,0,0.55),
              inset 0 1px 0 rgba(255,255,255,0.05);
  /* Force this fixed element onto its own GPU compositor layer so any
     repaint (hover, scroll-spy active toggling) stays self-contained. */
  isolation: isolate;
  will-change: transform;
  transform: translate3d(8px, 0, 0) scale(0.96);
  visibility: hidden;
  pointer-events: none;
  transition: transform 220ms ease, visibility 0ms linear 220ms;
}
.floating-nav.is-visible {
  visibility: visible;
  transform: translate3d(0, 0, 0) scale(1);
  pointer-events: auto;
  transition: transform 220ms ease, visibility 0ms linear 0ms;
}
/* Per-item dimming replaces the old container-opacity trick. */
.floating-nav .floating-nav-item {
  opacity: 0;
  transition: opacity 220ms ease, background 180ms ease, color 180ms ease,
              border-color 180ms ease, transform 180ms ease;
}
.floating-nav.is-visible .floating-nav-item { opacity: 0.62; }
.floating-nav:hover .floating-nav-item,
.floating-nav:focus-within .floating-nav-item { opacity: 1; }
.floating-nav-item {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 38px;
  height: 38px;
  border-radius: 50%;
  border: 1px solid color-mix(in srgb, var(--border) 70%, transparent);
  background: color-mix(in srgb, var(--surface-hi) 30%, transparent);
  color: var(--text-dim);
  font-family: var(--f-display);
  font-size: 13px;
  font-weight: 500;
  text-decoration: none;
  cursor: pointer;
  /* Localize repaints on hover so the parent backdrop-filter region
     doesn't flash as a horizontal band when the scale transform fires. */
  contain: layout paint;
  will-change: transform;
}
.floating-nav-item:hover,
.floating-nav-item:focus-visible {
  color: var(--brass-2);
  border-color: color-mix(in srgb, var(--brass) 50%, var(--border));
  background:
    linear-gradient(140deg, color-mix(in srgb, var(--brass) 14%, var(--surface-hi)),
                           color-mix(in srgb, var(--surface) 90%, transparent));
  /* Subtler scale to further reduce repaint footprint. */
  transform: scale(1.04);
  outline: none;
}
.floating-nav-item:focus-visible {
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--brass) 28%, transparent);
}
.floating-nav-item.is-active {
  color: var(--brass-2);
  border-color: color-mix(in srgb, var(--brass) 65%, var(--border));
  background: linear-gradient(140deg, var(--brass-2), var(--brass));
  color: #1a1410;
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--brass) 14%, transparent);
}
.floating-nav-item .fn-label {
  position: absolute;
  right: calc(100% + 12px);
  top: 50%;
  transform: translateY(-50%) translateX(6px);
  white-space: nowrap;
  padding: 6px 11px;
  border-radius: 8px;
  background: color-mix(in srgb, var(--surface) 96%, transparent);
  border: 1px solid var(--border);
  color: var(--text);
  font-family: var(--f-body);
  font-size: 12px;
  font-weight: 500;
  letter-spacing: 0;
  opacity: 0;
  pointer-events: none;
  transition: opacity 160ms ease, transform 160ms ease;
  box-shadow: 0 12px 28px -16px rgba(0,0,0,0.7);
}
.floating-nav-item:hover .fn-label,
.floating-nav-item:focus-visible .fn-label {
  opacity: 1;
  transform: translateY(-50%) translateX(0);
}
.floating-nav-top {
  /* "back to top" button at the bottom of the stack */
  background: transparent;
  color: var(--text-muted);
  font-size: 14px;
  margin-top: 2px;
  border-top: 1px solid color-mix(in srgb, var(--border) 50%, transparent);
  border-radius: 50%;
}
.floating-nav-top:hover {
  color: var(--brass-2);
}

/* Hide on small screens (below 880px) to avoid covering content */
@media (max-width: 880px) {
  .floating-nav { display: none; }
}

/* Hide entirely on print */
@media print {
  .floating-nav { display: none !important; }
}

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
  .floating-nav,
  .floating-nav-item,
  .floating-nav-item .fn-label {
    transition: none;
  }
}

/* End Navigation Refinement Pass */

/* Knowledge page ownership — reusable libraries now live here, not on project/index pages. */
.knowledge-spec-books .catalog-library,
.knowledge-document-library .document-library-manager {
  margin-top: 0;
}
.knowledge-document-library .document-library-manager {
  border-top: 0;
  padding-top: 0;
}
.knowledge-document-library .document-library-summary {
  padding-top: 0;
}
.knowledge-document-library .document-library-body {
  padding-top: 12px;
}

/* Knowledge Resolution Workbench */
.knowledge-section-head{align-items:flex-start;gap:1rem}.knowledge-section-head .micro{max-width:820px;margin:.25rem 0 0;color:var(--muted,rgba(255,255,255,.64))}.knowledge-stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.75rem;margin:1rem 0}.knowledge-stat-grid>div{border:1px solid rgba(212,175,55,.18);border-radius:18px;padding:1rem;background:linear-gradient(145deg,rgba(255,255,255,.07),rgba(255,255,255,.025));box-shadow:inset 0 1px 0 rgba(255,255,255,.08)}.knowledge-stat-grid b{display:block;font-size:1.45rem}.knowledge-stat-grid span{display:block;color:var(--muted,rgba(255,255,255,.62));font-size:.76rem;text-transform:uppercase;letter-spacing:.08em}.curated-extension-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:.8rem}.curated-extension-card{border:1px solid rgba(212,175,55,.16);border-radius:22px;padding:1rem;background:radial-gradient(circle at 20% 0,rgba(212,175,55,.13),transparent 36%),linear-gradient(150deg,rgba(255,255,255,.075),rgba(255,255,255,.025));box-shadow:0 18px 44px rgba(0,0,0,.18)}.curated-extension-top{display:flex;justify-content:space-between;gap:.75rem;align-items:center}.curated-extension-top code,.code-workbench-card-head code{font-size:1.05rem;font-weight:800;letter-spacing:.04em}.curated-extension-card h4{margin:.75rem 0 .35rem}.curated-extension-meta{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:.8rem}.curated-extension-meta span{font-size:.74rem;color:var(--muted,rgba(255,255,255,.62));border:1px solid rgba(255,255,255,.1);border-radius:999px;padding:.3rem .55rem;background:rgba(255,255,255,.04)}.knowledge-admin-shell{display:flex;justify-content:space-between;align-items:center;gap:1rem;border:1px solid rgba(212,175,55,.18);border-radius:22px;padding:1rem;margin:1rem 0;background:linear-gradient(135deg,rgba(212,175,55,.12),rgba(255,255,255,.035));box-shadow:inset 0 1px 0 rgba(255,255,255,.08)}.knowledge-admin-shell strong{display:block}.knowledge-admin-shell span{color:var(--muted,rgba(255,255,255,.65));font-size:.88rem}.knowledge-admin-form{display:flex;gap:.5rem;align-items:center}.knowledge-admin-form input{min-height:36px}.inline-form{display:inline-flex;margin:0}.notice{border-radius:18px;padding:.85rem 1rem;margin:.85rem 0;border:1px solid rgba(255,255,255,.12)}.notice-warning{background:rgba(245,158,11,.1);border-color:rgba(245,158,11,.24)}.code-workbench-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(330px,1fr));gap:1rem}.code-workbench-card{border:1px solid rgba(255,255,255,.11);border-radius:24px;padding:1rem;background:linear-gradient(145deg,rgba(255,255,255,.07),rgba(255,255,255,.025));box-shadow:0 20px 52px rgba(0,0,0,.2);position:relative;overflow:hidden}.code-workbench-card:before{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle at 14% 0,rgba(212,175,55,.16),transparent 36%);opacity:.8}.code-workbench-card>*{position:relative}.code-workbench-card.needs-review{border-color:rgba(245,158,11,.24)}.code-workbench-card.is-resolved{border-color:rgba(34,197,94,.18);opacity:.9}.code-workbench-card-head{display:flex;justify-content:space-between;gap:1rem;align-items:flex-start}.code-workbench-card-head p{margin:.3rem 0 0;color:var(--muted,rgba(255,255,255,.62));font-size:.82rem}.source-agreement-meter{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.55rem;margin:1rem 0}.source-agreement-meter>div{border:1px solid rgba(255,255,255,.1);border-radius:16px;padding:.75rem;background:rgba(0,0,0,.16)}.source-agreement-meter b{display:block;font-size:1.05rem}.source-agreement-meter span{display:block;color:var(--muted,rgba(255,255,255,.58));font-size:.68rem;text-transform:uppercase;letter-spacing:.07em}.source-badge-row{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:.8rem}.source-badge-row span{border:1px solid rgba(212,175,55,.18);background:rgba(212,175,55,.08);border-radius:999px;padding:.28rem .55rem;font-size:.74rem}.code-evidence-details{border:1px solid rgba(255,255,255,.1);border-radius:18px;padding:.7rem .85rem;background:rgba(0,0,0,.12);margin:.8rem 0}.code-evidence-details summary{cursor:pointer;font-weight:700}.code-evidence-body{padding-top:.7rem}.candidate-stack{display:grid;gap:.4rem}.candidate-stack span{font-size:.78rem;color:var(--muted,rgba(255,255,255,.65));padding:.45rem .55rem;border-radius:12px;background:rgba(255,255,255,.045)}.code-resolution-form{display:grid;gap:.7rem;margin-top:.9rem}.compact-row{gap:.6rem}.resolution-action-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.5rem}.locked-resolution-note{border:1px dashed rgba(212,175,55,.28);border-radius:16px;padding:.75rem;color:var(--muted,rgba(255,255,255,.65));background:rgba(212,175,55,.055);font-size:.86rem}@media (max-width:760px){.knowledge-stat-grid,.source-agreement-meter,.resolution-action-grid{grid-template-columns:1fr}.knowledge-admin-shell,.knowledge-admin-form{align-items:stretch;flex-direction:column}.code-workbench-grid{grid-template-columns:1fr}}

/* Code Resolution Workbench completion pass */
.knowledge-toolbar{display:flex;align-items:end;justify-content:space-between;gap:1rem;margin:1rem 0;flex-wrap:wrap}.knowledge-search-field{min-width:min(100%,420px);flex:1}.compact-segmented{display:inline-flex;gap:.35rem;border:1px solid rgba(255,255,255,.11);border-radius:999px;padding:.28rem;background:rgba(255,255,255,.045)}.compact-segmented button{border:0;border-radius:999px;background:transparent;color:var(--text-muted);padding:.42rem .75rem;cursor:pointer;font:inherit;font-size:.82rem}.compact-segmented button.is-active{background:linear-gradient(140deg,var(--brass-2),var(--brass));color:#1d1711}.curated-extension-actions{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:.9rem}.resolution-history{margin-top:1rem;border:1px solid rgba(255,255,255,.12);border-radius:18px;padding:.8rem 1rem;background:rgba(255,255,255,.04)}.resolution-history summary{font-weight:800;cursor:pointer}.resolution-history-list{display:grid;gap:.45rem;margin-top:.8rem}.resolution-history-row{display:grid;grid-template-columns:1.2fr .8fr .8fr .7fr;gap:.6rem;align-items:center;border:1px solid rgba(255,255,255,.08);border-radius:14px;padding:.55rem .7rem;background:rgba(0,0,0,.12);font-size:.8rem}.resolver-step{border:1px solid rgba(255,255,255,.1);border-radius:18px;padding:.85rem;background:rgba(0,0,0,.12);display:grid;gap:.7rem}.resolver-step>b{font-family:var(--f-display);letter-spacing:.01em}.impact-preview{border:1px solid rgba(212,175,55,.22);border-radius:16px;padding:.8rem;background:linear-gradient(135deg,rgba(212,175,55,.11),rgba(255,255,255,.04))}.impact-preview strong{display:block;margin-bottom:.3rem}.impact-preview p{margin:0;color:var(--text-muted);font-size:.88rem;line-height:1.45}.resolve-code-submit{justify-self:start}.filterable-list [hidden]{display:none!important}@media (max-width:780px){.resolution-history-row{grid-template-columns:1fr}.knowledge-toolbar{align-items:stretch}.compact-segmented{width:100%;justify-content:space-between}.compact-segmented button{flex:1}.resolve-code-submit{width:100%}}

/* Code Resolution Workbench visual hardening pass */
.code-workbench,
.code-workbench * {
  box-sizing: border-box;
}

.code-workbench .knowledge-toolbar {
  margin: 1.25rem 0 1.35rem;
}

.code-workbench .knowledge-search-field {
  width: 100%;
  max-width: none;
  min-width: 0;
}

.code-workbench .knowledge-search-field > span {
  margin-bottom: .55rem;
  color: rgba(232, 222, 194, .72);
  letter-spacing: .16em;
}

.code-workbench .knowledge-search-field input[type="search"] {
  appearance: none;
  width: 100%;
  min-height: 58px;
  border-radius: 20px;
  padding: 0 1.15rem 0 3rem;
  border: 1px solid rgba(212, 175, 55, .28);
  color: var(--text, #f3efe5);
  background:
    radial-gradient(circle at 18px 50%, rgba(212, 175, 55, .32) 0 3px, transparent 4px),
    linear-gradient(135deg, rgba(212, 175, 55, .12), rgba(255, 255, 255, .055) 42%, rgba(255, 255, 255, .025)),
    rgba(20, 20, 22, .92);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, .08),
    0 18px 46px rgba(0, 0, 0, .22),
    0 0 0 1px rgba(255, 255, 255, .035);
  font-size: 1rem;
  letter-spacing: -.01em;
}

.code-workbench .knowledge-search-field input[type="search"]::placeholder {
  color: rgba(232, 226, 214, .48);
}

.code-workbench .knowledge-search-field input[type="search"]:focus {
  outline: none;
  border-color: rgba(230, 194, 92, .62);
  background:
    radial-gradient(circle at 18px 50%, rgba(230, 194, 92, .52) 0 3px, transparent 4px),
    linear-gradient(135deg, rgba(212, 175, 55, .18), rgba(255, 255, 255, .075) 42%, rgba(255, 255, 255, .035)),
    rgba(22, 22, 24, .98);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, .12),
    0 20px 54px rgba(0, 0, 0, .32),
    0 0 0 4px rgba(212, 175, 55, .11);
}

.code-workbench input,
.code-workbench select,
.code-workbench textarea,
.knowledge-admin-shell input,
.curated-extension-card input,
.curated-extension-card select,
.curated-extension-card textarea {
  width: 100%;
  max-width: 100%;
  min-width: 0;
  color: var(--text, #f3efe5);
  caret-color: var(--brass, #d4af37);
  background:
    linear-gradient(145deg, rgba(255, 255, 255, .075), rgba(255, 255, 255, .035)),
    rgba(20, 20, 22, .92);
  border: 1px solid rgba(255, 255, 255, .13);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .075);
}

.code-workbench input::placeholder,
.knowledge-admin-shell input::placeholder,
.curated-extension-card input::placeholder,
.code-workbench textarea::placeholder {
  color: rgba(232, 226, 214, .42);
}

.code-workbench input:focus,
.code-workbench select:focus,
.code-workbench textarea:focus,
.knowledge-admin-shell input:focus,
.curated-extension-card input:focus,
.curated-extension-card select:focus,
.curated-extension-card textarea:focus {
  border-color: rgba(230, 194, 92, .52);
  background:
    linear-gradient(145deg, rgba(212, 175, 55, .10), rgba(255, 255, 255, .055)),
    rgba(22, 22, 24, .98);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, .11),
    0 0 0 3px rgba(212, 175, 55, .105);
}

.code-workbench .field,
.code-workbench .row-2,
.code-workbench .row-3,
.code-workbench .compact-row,
.code-workbench .resolver-step,
.code-workbench .code-resolution-form {
  min-width: 0;
  max-width: 100%;
}

.code-workbench .row-2,
.code-workbench .row-3 {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.code-workbench .row-3 {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.code-workbench-card {
  min-width: 0;
}

.code-workbench-card-head code,
.curated-extension-top code {
  display: inline-block;
  max-width: 100%;
  overflow-wrap: anywhere;
  word-break: break-word;
  border-radius: 10px;
  padding: .1rem .3rem;
  background: rgba(255, 255, 255, .045);
}

.code-resolution-form select,
.code-resolution-form input {
  min-height: 46px;
}

.code-resolution-form .resolver-step {
  overflow: hidden;
}

.code-resolution-form .resolve-code-submit {
  max-width: 100%;
}

@media (max-width: 980px) {
  .code-workbench .row-3 {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 760px) {
  .code-workbench .knowledge-search-field input[type="search"] {
    min-height: 52px;
    padding-left: 2.55rem;
    border-radius: 18px;
  }
}

/* Keep guided resolver fields inside card shells at desktop widths too. */
.code-workbench .guided-resolver .row-3,
.code-workbench .guided-resolver .row-2 {
  grid-template-columns: 1fr;
}

/* Knowledge page global input hardening pass.
   Keeps every searchable/editable field on knowledge.php dark, substantial, and contained. */
body.page-knowledge,
body.page-knowledge * {
  box-sizing: border-box;
}

body.page-knowledge .knowledge-toolbar {
  gap: 1.15rem;
  align-items: end;
}

body.page-knowledge .knowledge-toolbar .knowledge-search-field {
  width: 100%;
  max-width: none;
  min-width: min(100%, 540px);
  flex: 1 1 540px;
}

body.page-knowledge .knowledge-toolbar .knowledge-search-field > span {
  display: block;
  margin-bottom: .55rem;
  color: rgba(232, 222, 194, .72);
  letter-spacing: .16em;
}

body.page-knowledge .knowledge-toolbar .knowledge-search-field input[type="search"] {
  appearance: none;
  width: 100%;
  min-height: 58px;
  border-radius: 20px;
  padding: 0 1.15rem 0 3rem;
  border: 1px solid rgba(212, 175, 55, .30);
  color: var(--text, #f3efe5);
  caret-color: var(--brass, #d4af37);
  background:
    radial-gradient(circle at 18px 50%, rgba(212, 175, 55, .34) 0 3px, transparent 4px),
    linear-gradient(135deg, rgba(212, 175, 55, .13), rgba(255, 255, 255, .06) 42%, rgba(255, 255, 255, .028)),
    rgba(20, 20, 22, .94);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, .08),
    0 18px 46px rgba(0, 0, 0, .24),
    0 0 0 1px rgba(255, 255, 255, .035);
  font-size: 1rem;
  letter-spacing: -.01em;
}

body.page-knowledge .knowledge-toolbar .knowledge-search-field input[type="search"]::placeholder {
  color: rgba(232, 226, 214, .48);
}

body.page-knowledge .knowledge-toolbar .knowledge-search-field input[type="search"]:focus {
  outline: none;
  border-color: rgba(230, 194, 92, .64);
  background:
    radial-gradient(circle at 18px 50%, rgba(230, 194, 92, .54) 0 3px, transparent 4px),
    linear-gradient(135deg, rgba(212, 175, 55, .18), rgba(255, 255, 255, .078) 42%, rgba(255, 255, 255, .038)),
    rgba(22, 22, 24, .98);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, .12),
    0 20px 54px rgba(0, 0, 0, .34),
    0 0 0 4px rgba(212, 175, 55, .12);
}

body.page-knowledge input:not([type]),
body.page-knowledge input[type="text"],
body.page-knowledge input[type="search"],
body.page-knowledge input[type="password"],
body.page-knowledge input[type="number"],
body.page-knowledge input[type="email"],
body.page-knowledge input[type="url"],
body.page-knowledge select,
body.page-knowledge textarea {
  max-width: 100%;
  min-width: 0;
  color: var(--text, #f3efe5);
  caret-color: var(--brass, #d4af37);
  background:
    linear-gradient(145deg, rgba(255, 255, 255, .078), rgba(255, 255, 255, .036)),
    rgba(20, 20, 22, .94);
  border: 1px solid rgba(255, 255, 255, .14);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .075);
}

body.page-knowledge input:not([type])::placeholder,
body.page-knowledge input[type="text"]::placeholder,
body.page-knowledge input[type="search"]::placeholder,
body.page-knowledge input[type="password"]::placeholder,
body.page-knowledge input[type="number"]::placeholder,
body.page-knowledge input[type="email"]::placeholder,
body.page-knowledge input[type="url"]::placeholder,
body.page-knowledge textarea::placeholder {
  color: rgba(232, 226, 214, .43);
}

body.page-knowledge input:not([type]):focus,
body.page-knowledge input[type="text"]:focus,
body.page-knowledge input[type="search"]:focus,
body.page-knowledge input[type="password"]:focus,
body.page-knowledge input[type="number"]:focus,
body.page-knowledge input[type="email"]:focus,
body.page-knowledge input[type="url"]:focus,
body.page-knowledge select:focus,
body.page-knowledge textarea:focus {
  outline: none;
  border-color: rgba(230, 194, 92, .54);
  background:
    linear-gradient(145deg, rgba(212, 175, 55, .105), rgba(255, 255, 255, .058)),
    rgba(22, 22, 24, .98);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, .11),
    0 0 0 3px rgba(212, 175, 55, .11);
}

body.page-knowledge select option {
  color: #f3efe5;
  background: #171719;
}

body.page-knowledge .field,
body.page-knowledge .row-2,
body.page-knowledge .row-3,
body.page-knowledge .compact-row,
body.page-knowledge .knowledge-toolbar,
body.page-knowledge .catalog-upload-form,
body.page-knowledge .document-type-form,
body.page-knowledge .curated-extension-card,
body.page-knowledge .code-workbench-card {
  min-width: 0;
  max-width: 100%;
}

body.page-knowledge .curated-extensions-section .knowledge-toolbar {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: end;
}

body.page-knowledge .curated-extensions-section .compact-segmented {
  align-self: end;
  margin-bottom: 0;
}

@media (max-width: 760px) {
  body.page-knowledge .curated-extensions-section .knowledge-toolbar {
    grid-template-columns: 1fr;
  }

  body.page-knowledge .knowledge-toolbar .knowledge-search-field {
    min-width: 0;
    flex-basis: auto;
  }

  body.page-knowledge .knowledge-toolbar .knowledge-search-field input[type="search"] {
    min-height: 52px;
    padding-left: 2.55rem;
    border-radius: 18px;
  }
}

/* Code reset action — lets admins remove learned knowledge so a code can be rediscovered. */
.reset-code-form {
  display: flex;
  align-items: center;
  gap: .6rem;
  flex-wrap: wrap;
  margin: .75rem 0 .95rem;
  padding: .7rem .78rem;
  border: 1px solid rgba(248, 113, 113, .22);
  border-radius: 16px;
  background:
    linear-gradient(135deg, rgba(248, 113, 113, .09), rgba(255, 255, 255, .035)),
    rgba(14, 14, 16, .38);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .06);
}
.reset-code-form span {
  flex: 1 1 220px;
  min-width: 0;
  color: rgba(232, 226, 214, .62);
  font-size: .78rem;
  line-height: 1.35;
}
.reset-code-button {
  white-space: nowrap;
}
@media (max-width: 760px) {
  .reset-code-form,
  .reset-code-button {
    width: 100%;
  }
  .reset-code-button {
    justify-content: center;
  }
}
