:root {
  --scan-bg-start: #0f0c29;
  --scan-bg-mid: #302b63;
  --scan-bg-end: #24243e;
  --scan-accent: #7c5cff;
  --scan-accent-2: #00d4ff;
  --scan-accent-3: #ff6bcb;
  --scan-success: #2ee6a6;
  --scan-warning: #ffb84d;
  --scan-danger: #ff5c7a;
  --scan-card-bg: rgba(255, 255, 255, 0.06);
  --scan-card-border: rgba(255, 255, 255, 0.12);
  --scan-text: #f4f2ff;
  --scan-text-dim: #b7b2d9;
  --scan-radius: 18px;
  --scan-font: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
}

* { box-sizing: border-box; }

body.scan-body {
  margin: 0;
  min-height: 100vh;
  font-family: var(--scan-font);
  color: var(--scan-text);
  background: radial-gradient(circle at 20% 20%, rgba(124,92,255,0.35), transparent 40%),
              radial-gradient(circle at 80% 0%, rgba(0,212,255,0.25), transparent 45%),
              radial-gradient(circle at 50% 100%, rgba(255,107,203,0.2), transparent 45%),
              linear-gradient(160deg, var(--scan-bg-start), var(--scan-bg-mid) 55%, var(--scan-bg-end));
  background-attachment: fixed;
}

/* Light, functional admin/incubator dashboard body -- fast, not fancy, per the plan. */
body.scan-body-light {
  margin: 0;
  min-height: 100vh;
  font-family: var(--scan-font);
  color: #1c1b2e;
  background: #f4f5fb;
}

.scan-container { max-width: 760px; margin: 0 auto; padding: 32px 20px 80px; }
/* Widened from 1100px: the admin and dashboard pages were crowded. Scales with the screen up to 1680px. */
.scan-container-wide { max-width: 1680px; width: 100%; box-sizing: border-box; margin: 0 auto; padding: 28px clamp(16px, 2.5vw, 44px) 80px; }

.scan-card {
  background: var(--scan-card-bg);
  border: 1px solid var(--scan-card-border);
  border-radius: var(--scan-radius);
  backdrop-filter: blur(16px);
  padding: 40px 36px;
  box-shadow: 0 20px 60px rgba(0,0,0,0.35);
}

.scan-card-light {
  background: #fff;
  border: 1px solid #e6e6f0;
  border-radius: 14px;
  padding: 20px 22px;
  box-shadow: 0 2px 10px rgba(20,20,50,0.04);
}

/* Long unbroken strings (URLs, emails) have no default break opportunity at "/" or "@" and will
   silently overflow a narrow grid/table cell into whatever sits next to it instead of wrapping --
   this is what caused "Website: https://...venture-vault" to visually bleed into the "Focus
   sectors" column next to it. Applied broadly since the same info-grid pattern (label: value,
   often a URL or email) repeats across every admin/incubator detail page. */
.scan-card-light, .scan-widget, .scan-table td, .scan-table th, .scan-qr-box {
  overflow-wrap: break-word;
  word-break: break-word;
}

.scan-brand { display: flex; align-items: center; gap: 10px; font-weight: 700; letter-spacing: 0.3px; margin-bottom: 24px; }
.scan-brand .dot { width: 10px; height: 10px; border-radius: 50%; background: linear-gradient(135deg, var(--scan-accent), var(--scan-accent-2)); box-shadow: 0 0 14px var(--scan-accent-2); }

/* ── Progress ring ── */
.scan-progress-wrap { display: flex; align-items: center; justify-content: space-between; margin-bottom: 22px; }
.scan-progress-bar-track { flex: 1; height: 8px; background: rgba(255,255,255,0.1); border-radius: 99px; overflow: hidden; margin: 0 14px; }
.scan-progress-bar-fill { height: 100%; border-radius: 99px; background: linear-gradient(90deg, var(--scan-accent), var(--scan-accent-2)); transition: width 0.5s cubic-bezier(.4,0,.2,1); box-shadow: 0 0 12px var(--scan-accent-2); }
.scan-progress-label { font-size: 13px; color: var(--scan-text-dim); white-space: nowrap; }

/* ── Step transitions ── */
.scan-step { animation: scanFadeSlideIn 0.45s cubic-bezier(.2,.8,.2,1); }
@keyframes scanFadeSlideIn { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: translateY(0); } }
.scan-step-exit { animation: scanFadeSlideOut 0.25s ease forwards; }
@keyframes scanFadeSlideOut { to { opacity: 0; transform: translateY(-10px); } }

.scan-question-title { font-size: 27px; font-weight: 800; line-height: 1.3; margin: 4px 0 16px; color: #ffffff; }
.scan-help-toggle { background: none; border: none; color: var(--scan-accent-2); font-size: 13px; cursor: pointer; padding: 0; margin-bottom: 20px; text-decoration: underline dotted; }
.scan-help-text { font-size: 13.5px; color: var(--scan-text-dim); background: rgba(255,255,255,0.05); border-left: 3px solid var(--scan-accent-2); padding: 10px 14px; border-radius: 8px; margin-bottom: 20px; display: none; }
.scan-help-text.open { display: block; animation: scanFadeSlideIn 0.3s ease; }

.scan-options { display: grid; gap: 16px; margin-top: 26px; }
/* Short tag-style checkboxes (target customer, 90-day objective, problem categories) read
   better as wrapped chips than as full-width stacked rows meant for long question sentences. */
.scan-options.scan-options-tags { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 10px; margin-bottom: 22px; }
.scan-options.scan-options-tags .scan-option { flex: 0 0 auto; padding: 10px 14px; font-size: 13.5px; }
.scan-option {
  display: flex; align-items: center; gap: 14px;
  padding: 19px 20px; border-radius: 14px;
  border: 1.5px solid var(--scan-card-border);
  background: rgba(255,255,255,0.03);
  cursor: pointer; transition: all 0.18s ease; font-size: 15.5px;
  -webkit-tap-highlight-color: transparent;
}
.scan-option:hover { border-color: var(--scan-accent); background: rgba(124,92,255,0.14); transform: translateX(3px); }
.scan-option.selected { border-color: var(--scan-accent-2); background: linear-gradient(90deg, rgba(124,92,255,0.25), rgba(0,212,255,0.15)); box-shadow: 0 0 0 1px var(--scan-accent-2); }
.scan-option .badge { width: 24px; height: 24px; border-radius: 50%; border: 1.5px solid var(--scan-card-border); flex-shrink: 0; display: flex; align-items: center; justify-content: center; font-size: 12px; }
.scan-option.selected .badge { background: var(--scan-accent-2); border-color: var(--scan-accent-2); color: #0f0c29; }

.scan-input {
  width: 100%; padding: 15px 16px; border-radius: 12px;
  border: 1.5px solid var(--scan-card-border); background: rgba(255,255,255,0.04);
  color: var(--scan-text); font-size: 15.5px; font-family: inherit;
}
.scan-input:focus { outline: none; border-color: var(--scan-accent-2); }
.scan-input::placeholder { color: var(--scan-text-dim); }
/* Native <select> dropdown lists render on a system white background regardless of the
   dark theme -- without this, option text inherits --scan-text (near-white) and is
   invisible until an item happens to be hovered/highlighted. */
select.scan-input option { color: #1c1b2e; background: #fff; }
label.scan-label { display: block; font-size: 13.5px; font-weight: 600; color: var(--scan-text-dim); margin: 26px 0 9px; }
label.scan-label:first-of-type { margin-top: 4px; }
/* .scan-input/.scan-label were built for the dark wizard/login forms (light text on a
   translucent-dark box). Reusing them for the light-themed admin/incubator edit forms would
   repeat the exact white-on-white pattern already fixed elsewhere on this page -- scoped
   override so any current or future light-theme form using these classes is legible by default. */
body.scan-body-light .scan-input { color: #1c1b2e; background: #fff; border-color: #d9d9e8; }
body.scan-body-light .scan-input::placeholder { color: #a6a4c2; }
body.scan-body-light label.scan-label { color: #55536e; }

.scan-nav { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; margin-top: 36px; gap: 12px 16px; }
.scan-btn {
  display: inline-block; text-decoration: none; text-align: center;
  padding: 13px 26px; border-radius: 12px; border: none; font-weight: 600; font-size: 15px;
  cursor: pointer; transition: transform 0.15s ease, box-shadow 0.15s ease; font-family: inherit;
  white-space: nowrap; flex-shrink: 0;
}
.scan-btn-primary { background: linear-gradient(135deg, var(--scan-accent), var(--scan-accent-2)); color: #0f0c29; box-shadow: 0 8px 24px rgba(124,92,255,0.4); }
.scan-btn-primary:hover { transform: translateY(-2px); box-shadow: 0 12px 30px rgba(124,92,255,0.55); }
.scan-btn-primary:disabled { opacity: 0.4; cursor: not-allowed; transform: none; }
.scan-btn-ghost { background: transparent; color: var(--scan-text-dim); border: 1.5px solid var(--scan-card-border); }
.scan-btn-ghost:hover { color: var(--scan-text); border-color: var(--scan-text-dim); }

/* ── Results reveal ── */
.scan-score-ring-wrap { display: flex; justify-content: center; margin: 20px 0 6px; }
.scan-score-num { font-size: 52px; font-weight: 800; background: linear-gradient(135deg, var(--scan-accent-2), var(--scan-accent-3)); -webkit-background-clip: text; background-clip: text; color: transparent; }
.scan-band-pill { display: inline-block; padding: 6px 16px; border-radius: 99px; font-size: 13px; font-weight: 700; letter-spacing: 0.3px; }

.scan-roster { display: grid; grid-template-columns: repeat(auto-fill, minmax(100px, 1fr)); gap: 14px; margin-top: 16px; }
.scan-roster-avatar { text-align: center; opacity: 0; animation: scanPopIn 0.4s ease forwards; }
.scan-roster-avatar .circle {
  width: 56px; height: 56px; border-radius: 50%; margin: 0 auto 8px;
  background: linear-gradient(135deg, var(--scan-accent), var(--scan-accent-3));
  display: flex; align-items: center; justify-content: center; font-weight: 700; font-size: 18px;
  box-shadow: 0 6px 18px rgba(124,92,255,0.4);
}
@keyframes scanPopIn { from { opacity: 0; transform: scale(0.5) translateY(10px); } to { opacity: 1; transform: scale(1) translateY(0); } }

.scan-benefits-list { list-style: none; margin: 14px 0 0; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.scan-benefits-list li { display: flex; align-items: flex-start; gap: 10px; font-size: 13.5px; color: var(--scan-text); line-height: 1.5; }
.scan-benefits-list li::before {
  content: '\2713'; flex-shrink: 0; width: 20px; height: 20px; border-radius: 50%; margin-top: 1px;
  background: rgba(46,230,166,0.18); color: var(--scan-success); font-size: 12px; font-weight: 800;
  display: flex; align-items: center; justify-content: center;
}

.scan-gap-card { background: rgba(255,255,255,0.05); border: 1px solid var(--scan-card-border); border-radius: 14px; padding: 16px 18px; margin-bottom: 12px; }
.scan-gap-card.red-flag { border-color: var(--scan-danger); background: rgba(255,92,122,0.1); }
.scan-tag { display: inline-block; font-size: 11px; padding: 3px 9px; border-radius: 99px; background: rgba(255,255,255,0.1); margin-right: 6px; }
.scan-tag.high { background: rgba(255,92,122,0.25); color: #ffb3c1; }
.scan-tag.medium { background: rgba(255,184,77,0.25); color: #ffd699; }
.scan-tag.low { background: rgba(46,230,166,0.2); color: #8ff3d1; }

/* ── Confetti canvas ── */
#scan-confetti-canvas { position: fixed; inset: 0; pointer-events: none; z-index: 999; }

/* ── Admin/incubator tables (light, functional) ── */
.scan-table { width: 100%; border-collapse: collapse; font-size: 14px; table-layout: auto; }
/* th inherited the earlier overflow-wrap/word-break fix meant for long URLs in td cells --
   on a short header word in a narrow auto-sized column, word-break: break-word snaps the
   word apart mid-letter ("ORGANIZATIO" / "N") instead of just widening the column. Headers
   should never wrap onto a second line; the column just takes the width the label needs. */
.scan-table th { text-align: left; font-size: 12px; text-transform: uppercase; letter-spacing: 0.4px; color: #75748f; padding: 10px 16px 10px 12px; border-bottom: 2px solid #e6e6f0; white-space: nowrap; overflow-wrap: normal; word-break: normal; }
.scan-table td { padding: 12px; border-bottom: 1px solid #eeeef5; }
.scan-table tr.clickable { cursor: pointer; transition: background 0.12s ease; }
.scan-table tr.clickable:hover { background: #f7f7fd; }
.scan-widget-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 14px; margin-bottom: 24px; }
.scan-widget { background: #fff; border: 1px solid #e6e6f0; border-radius: 14px; padding: 16px 18px; }
.scan-widget .num { font-size: 28px; font-weight: 800; color: #4c3fd6; }
.scan-widget .lbl { font-size: 12px; color: #75748f; margin-top: 4px; }

.scan-status-pill { display: inline-block; padding: 3px 10px; border-radius: 99px; font-size: 11px; font-weight: 700; white-space: nowrap; }
.scan-status-invited { background: #eee; color: #666; }
.scan-status-in_progress { background: #fff3d6; color: #a06a00; }
.scan-status-completed { background: #d9f7e8; color: #0a7a4c; }
.scan-status-accepted_to_uerf { background: #dce7ff; color: #2646c7; }
.scan-status-declined { background: #ffe2e2; color: #b02a2a; }
/* scan_incubator.status values -- missing before, so "active"/"suspended" pills rendered with
   no background/color at all (base .scan-status-pill sets shape but no color). */
.scan-status-active { background: #d9f7e8; color: #0a7a4c; }
.scan-status-suspended { background: #ffe2e2; color: #b02a2a; }
/* scan_evidence_checklist.status values -- same gap. */
.scan-status-needed { background: #ffe2e2; color: #b02a2a; }
.scan-status-uploaded { background: #fff3d6; color: #a06a00; }
.scan-status-verified { background: #d9f7e8; color: #0a7a4c; }
/* scan_appointment/scan_event/scan_event_rsvp/scan_payment status values -- own dedicated
   classes rather than remapping onto unrelated ones (e.g. an appointment's "scheduled" reusing
   the startup pipeline's "accepted_to_uerf" class name), so the class name always matches what
   it actually renders and any future page using these statuses gets correct color for free. */
.scan-status-scheduled { background: #dce7ff; color: #2646c7; }
.scan-status-requested { background: #fff3d6; color: #a06a00; }
.scan-status-cancelled { background: #ffe2e2; color: #b02a2a; }
.scan-status-accepted { background: #d9f7e8; color: #0a7a4c; }
.scan-status-pending { background: #fff3d6; color: #a06a00; }
.scan-status-rejected { background: #ffe2e2; color: #b02a2a; }

/* Advisory reference console (admin/reference.php) -- rich-text body styling for
   scan_ref_item.body, reusing the same status-pill color triad as everything else
   (green/amber/red) rather than inventing a new palette. */
.ref-body .fig { font-family: "SFMono-Regular", Consolas, monospace; font-weight: 700; color: #2646c7; background: #eef1ff; padding: 1px 6px; border-radius: 5px; font-size: 12.5px; }
.ref-body .kv { display: grid; grid-template-columns: 92px 1fr; gap: 6px 12px; margin: 10px 0; font-size: 13px; }
.ref-body .kv dt { font-weight: 700; color: #8886a8; font-size: 10.5px; text-transform: uppercase; letter-spacing: 0.04em; padding-top: 1px; }
.ref-body .kv dd { margin: 0; color: #55536e; }
.ref-body .gap-note { margin-top: 10px; padding: 9px 12px; border-radius: 8px; background: #ffe2e2; color: #b02a2a; font-size: 12.5px; border-left: 3px solid #b02a2a; }
.ref-body .verify-note { margin-top: 10px; padding: 9px 12px; border-radius: 8px; background: #fff3d6; color: #a06a00; font-size: 12.5px; border-left: 3px solid #a06a00; }
.ref-body table.mini { width: 100%; border-collapse: collapse; margin: 10px 0; font-size: 12.5px; }
.ref-body table.mini th { text-align: left; font-size: 10.5px; text-transform: uppercase; letter-spacing: 0.04em; color: #8886a8; padding: 6px 9px; border-bottom: 2px solid #e6e6f0; }
.ref-body table.mini td { padding: 7px 9px; border-bottom: 1px solid #eeeef5; color: #55536e; vertical-align: top; }
.ref-body table.mini tr:last-child td { border-bottom: none; }
.ref-body p { margin: 0 0 9px; }
.ref-body p:last-child { margin-bottom: 0; }
.ref-body ul { margin: 0 0 9px; padding-left: 18px; }
.ref-body li { margin-bottom: 4px; }

.scan-qr-box { text-align: center; background: #fff; border: 1px solid #e6e6f0; border-radius: 16px; padding: 24px; }
.scan-qr-box canvas, .scan-qr-box img { margin: 0 auto; }

a.scan-link { color: #4c3fd6; text-decoration: none; font-weight: 600; }
a.scan-link:hover { text-decoration: underline; }
/* .scan-link's default #4c3fd6 is a medium purple-blue -- legible on the light admin/incubator
   pages' white cards, but nearly the same hue as the dark wizard/login pages' navy-purple
   background gradient, so it visually merged into it ("Need an account? Sign up"). Scoped to
   the dark theme only -- the light-theme usage elsewhere (admin/incubator pages) is unaffected. */
body.scan-body a.scan-link { color: #ffffff; }

/* .scan-tag / .scan-tag.high/medium/low were designed for the dark wizard+results theme (light
   pastel text on a translucent-white tint). scan_startup_detail_partial.php reuses the same
   classes inside white cards on the light-themed admin/incubator pages, where that same pastel
   text becomes low-contrast on a near-white tinted background. Scoped override, dark-theme usage
   (scan.js's wizard/results screens) is untouched. */
body.scan-body-light .scan-tag { background: #eef0f7; color: #33314f; }
body.scan-body-light .scan-tag.high { background: #ffe1e6; color: #b0223f; }
body.scan-body-light .scan-tag.medium { background: #fff1d6; color: #8a5a00; }
body.scan-body-light .scan-tag.low { background: #dcf7ec; color: #0a7a4c; }

@media (max-width: 640px) {
  .scan-container { padding: 20px 14px 60px; }
  .scan-card { padding: 20px; }
  .scan-question-title { font-size: 22px; }
}

/* ── Startup detail: profile header, founder cards, restructured findings ── */
.scan-detail-header { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; flex-wrap: wrap; margin-bottom: 4px; }
/* The title+subtitle block is a plain flex item, which by default only shrinks to fit its own
   content -- without this, the subtitle paragraph never actually reaches the card's full width
   no matter what width/text-align rules it carries itself. */
.scan-detail-header > div:first-child { flex: 1 1 320px; min-width: 0; }
.scan-detail-title { margin: 0; font-size: 23px; color: #1c1b2e; }
.scan-detail-subtitle { color: #4a4966; font-size: 15.5px; margin: 8px 0 20px; line-height: 1.8; text-align: justify; }

.scan-chip-row { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 20px; }
.scan-chip { display: inline-flex; align-items: center; gap: 7px; background: #f4f5fb; border: 1px solid #e9e9f4; border-radius: 999px; padding: 7px 14px; font-size: 12.5px; color: #33314f; line-height: 1.3; }
.scan-chip .ico { font-size: 13px; }
.scan-chip b { font-weight: 700; }
.scan-chip.scan-chip-link { background: #eef0ff; }
.scan-chip.scan-chip-link a { color: #4c3fd6; text-decoration: none; font-weight: 600; }
.scan-chip.scan-chip-link a:hover { text-decoration: underline; }

.scan-section-label { font-size: 11px; text-transform: uppercase; letter-spacing: 0.5px; font-weight: 800; color: #8886a8; margin: 28px 0 14px; }
.scan-section-label:first-child { margin-top: 4px; }

.scan-about-box { background: #f9f9fd; border-radius: 12px; padding: 18px 20px; display: grid; gap: 18px; margin-bottom: 8px; }
.scan-about-box .item .lbl { font-size: 11px; text-transform: uppercase; letter-spacing: 0.4px; color: #8886a8; font-weight: 700; margin-bottom: 6px; }
.scan-about-box .item .val { font-size: 13.5px; color: #2b2a45; line-height: 1.6; }

.scan-founder-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 16px; }
.scan-founder-card { background: #f9f9fd; border: 1px solid #eeeef5; border-radius: 12px; padding: 18px; }
.scan-founder-top { display: flex; align-items: center; gap: 12px; margin-bottom: 14px; }
.scan-founder-avatar { flex-shrink: 0; width: 38px; height: 38px; border-radius: 50%; background: linear-gradient(135deg, #7c5cff, #00d4ff); color: #fff; display: flex; align-items: center; justify-content: center; font-weight: 700; font-size: 13.5px; }
.scan-founder-name { font-weight: 700; font-size: 14px; color: #1c1b2e; }
.scan-founder-role { color: #75748f; font-size: 12px; margin-top: 2px; }
.scan-founder-contacts { display: flex; flex-direction: column; gap: 9px; }
.scan-founder-contacts .row { font-size: 12px; color: #55536e; display: flex; align-items: center; gap: 7px; }
.scan-founder-contacts .row a { color: #4c3fd6; text-decoration: none; font-weight: 600; }
.scan-founder-contacts .row a:hover { text-decoration: underline; }

.scan-finding-card-v2 { background: #fff; border: 1px solid #e6e6f0; border-radius: 14px; padding: 24px 26px; margin-bottom: 22px; box-shadow: 0 1px 4px rgba(20,20,50,0.03); }
.scan-finding-card-v2.red-flag { border-color: #ffc3cd; background: linear-gradient(180deg, #fff7f8 0%, #ffffff 60%); }
.scan-finding-title { font-weight: 700; font-size: 16px; margin: 14px 0 20px; color: #1c1b2e; line-height: 1.45; }
.scan-finding-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px 28px; margin-bottom: 18px; }
.scan-finding-block .lbl { font-size: 11px; text-transform: uppercase; letter-spacing: 0.4px; font-weight: 800; margin-bottom: 7px; display: flex; align-items: center; gap: 5px; }
.scan-finding-block .val { font-size: 13px; line-height: 1.6; color: #3a3956; }
.scan-finding-block.told .lbl { color: #6a6890; }
.scan-finding-block.missing .lbl { color: #b0223f; }
.scan-finding-callout { background: #fff8e6; border-left: 3px solid #e0a300; border-radius: 8px; padding: 14px 18px; font-size: 13px; color: #6b5000; margin-bottom: 18px; line-height: 1.6; }
.scan-finding-callout .lbl { font-size: 11px; text-transform: uppercase; letter-spacing: 0.4px; font-weight: 800; color: #a3780a; margin-bottom: 6px; display: block; }
.scan-finding-action { background: #e9fbf3; border-left: 3px solid #0a7a4c; border-radius: 8px; padding: 14px 18px; }
.scan-finding-action .lbl { font-size: 11px; text-transform: uppercase; letter-spacing: 0.4px; font-weight: 800; color: #0a7a4c; margin-bottom: 6px; display: block; }
.scan-finding-action .val { font-size: 13.5px; color: #06522f; font-weight: 600; line-height: 1.55; }

@media (max-width: 640px) {
  .scan-finding-grid { grid-template-columns: 1fr; }
  .scan-detail-header { flex-direction: column; }
}

@media (max-width: 860px) {
  /* Incubator dashboard's 2fr/1fr (portfolio table + QR box) layout had no breakpoint at all --
     on a phone this squeezed a data table and a 200px QR code side by side into ~half a screen
     width each. */
  .scan-dashboard-grid { grid-template-columns: 1fr !important; }
}

/* ── Kanban board (tasks/checklists page + acceptance pipeline page) ──
   Shared once here rather than duplicated per page -- both boards use the same card shape. */
.scan-kanban-col { background: #f4f5fb; border-radius: 14px; padding: 14px; min-height: 200px; overflow-wrap: break-word; word-break: break-word; }
.scan-kanban-col h4 { margin: 0 0 12px; font-size: 12.5px; text-transform: uppercase; letter-spacing: .4px; color: #55536e; }
.scan-kanban-card { background: #fff; border: 1px solid #e6e6f0; border-radius: 10px; padding: 12px 14px; margin-bottom: 10px; box-shadow: 0 1px 3px rgba(20,20,50,.04); }
.scan-kanban-card .title { font-weight: 700; font-size: 13.5px; color: #1c1b2e; }
.scan-kanban-card .meta { font-size: 11.5px; color: #75748f; margin-top: 4px; }
.scan-kanban-card .actions { display: flex; gap: 6px; margin-top: 8px; flex-wrap: wrap; }
.scan-kanban-cols-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
.scan-kanban-cols-5 { display: grid; grid-template-columns: repeat(5, 1fr); gap: 14px; }

@media (max-width: 1100px) {
  .scan-kanban-cols-5 { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 700px) {
  .scan-kanban-cols-3 { grid-template-columns: 1fr; }
}

/* IPMahir onboarding screens: secondary button visible on light backgrounds, compact size */
.dui-ghost{background:#fff;color:#33314f;border:1.5px solid #c9cde0}
.dui-ghost:hover{border-color:#4c3fd6;color:#4c3fd6}
.dui-sm{padding:7px 14px !important;font-size:13px !important;line-height:1.3 !important;min-height:0 !important;align-self:flex-start;display:inline-flex !important;align-items:center;justify-content:center}
