/*
Theme Name: ViperAI
Theme URI: https://viperai.app
Author: ViperAI
Author URI: https://viperai.app
Description: Viper AI — cloud file processor for scan, OCR, combine, print, and share. WordPress theme with workspace, assignments, and crypto Pro billing.
Version: 2.6.95
Requires at least: 6.0
Tested up to: 6.7
Requires PHP: 8.0
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: viperai
Tags: custom-logo, custom-menu, featured-images, full-width-template, one-column, two-columns, accessibility-ready
*/

:root {
  --viper-bg: #0a0b0c;
  --viper-surface: #121416;
  --viper-surface-2: #1a1d21;
  --viper-fg: #f2f4f5;
  --viper-muted: #9aa3ad;
  --viper-subtle: #6b737c;
  --viper-border: #2a3036;
  --viper-primary: #12c96b;
  --viper-primary-fg: #ffffff;
  --viper-radius: 12px;
  --viper-font: "Segoe UI", system-ui, -apple-system, sans-serif;

  /* Neon ball pulse speeds — lower = faster, higher = slower
     Examples: 0.6s (fast), 1.4s (default), 2.5s (slow), 4s (very slow) */
  --viper-pulse-fast: 1.6s;
  --viper-pulse: 2s;
  --viper-pulse-slow: 2.4s;
  --viper-pulse-status: 2s;
  --viper-pulse-live: 1.8s;
  --viper-pulse-task: 1.5s;
  --viper-pulse-ok: 2.2s;
  --viper-pulse-err: 1.7s;
  --viper-pulse-badge: 2.4s;
}

*,
*::before,
*::after {
  box-sizing: border-box;
}

html {
  scroll-behavior: smooth;
}

body.viperai-body {
  margin: 0;
  min-height: 100vh;
  background: var(--viper-bg);
  color: var(--viper-fg);
  font-family: var(--viper-font);
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
}

a {
  color: var(--viper-primary);
  text-decoration: none;
}

a:hover {
  text-decoration: underline;
}

img {
  max-width: 100%;
  height: auto;
}

.viper-wrap {
  width: min(1120px, calc(100% - 2rem));
  margin-inline: auto;
}

.viper-site-header {
  position: sticky;
  top: 0;
  z-index: 40;
  border-bottom: 1px solid color-mix(in oklab, var(--viper-border) 80%, transparent);
  background:
    linear-gradient(
      180deg,
      color-mix(in oklab, var(--viper-bg) 88%, #0b1220) 0%,
      color-mix(in oklab, var(--viper-bg) 78%, transparent) 100%
    );
  backdrop-filter: blur(16px) saturate(1.2);
  -webkit-backdrop-filter: blur(16px) saturate(1.2);
  box-shadow: 0 8px 28px rgba(0, 0, 0, 0.22);
}

.viper-site-header__inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem 1.25rem;
  min-height: 88px;
  padding-top: 0.55rem;
  padding-bottom: 0.55rem;
  flex-wrap: wrap;
  align-items: center;
}


.viper-brand {
  display: inline-flex;
  align-items: center;
  gap: 0.85rem;
  color: var(--viper-fg);
  font-weight: 700;
  font-size: 1.35rem;
  letter-spacing: -0.03em;
  text-decoration: none;
  flex: 0 0 auto;
  line-height: 1.1;
}

.viper-brand__mark {
  display: grid;
  place-items: center;
  width: 3.25rem;
  height: 3.25rem;
  border-radius: 12px;
  background: transparent;
  border: none;
  overflow: visible;
  padding: 0;
  box-shadow: none;
}

.viper-brand__snake {
  width: 3.25rem;
  height: 3.25rem;
  display: block;
  object-fit: contain;
  border-radius: 0;
}

.viper-brand__text {
  font-size: 1.4rem;
  font-weight: 750;
  letter-spacing: -0.03em;
}

.viper-brand__text span {
  color: #12c96b;
  -webkit-text-fill-color: #12c96b;
}


/* Key selling points between brand and Home */
.viper-header-features {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 0.35rem 0.5rem;
  margin: 0 auto;
  padding: 0 1rem;
  flex: 1 1 auto;
  min-width: 0;
  max-width: none;
  text-align: center;
  /* Plus Jakarta Sans only on this strip (between brand and Home) */
  font-family: "Plus Jakarta Sans", system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.02em;
  line-height: 1.25;
  color: #ffffff;
  text-transform: none;
  white-space: nowrap;
  font-feature-settings: "cv02", "cv03", "cv04", "cv11";
  -webkit-font-smoothing: antialiased;
}
.viper-header-features span {
  color: #ffffff;
  font-family: inherit;
}
.viper-header-features__sep {
  color: rgba(255, 255, 255, 0.45);
  font-weight: 500;
  user-select: none;
}
@media (max-width: 1100px) {
  .viper-header-features {
    font-size: 0.72rem;
    padding: 0 0.75rem;
  }
}
@media (max-width: 820px) {
  .viper-header-features {
    order: 3;
    flex: 1 1 100%;
    max-width: none;
    justify-content: center;
    padding: 0.2rem 0 0;
    font-size: 0.7rem;
    letter-spacing: 0.03em;
    white-space: normal;
  }
}
@media (max-width: 480px) {
  .viper-header-features {
    gap: 0.25rem 0.35rem;
    font-size: 0.65rem;
  }
}
.viper-header-tools {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 0.65rem 0.9rem;
  flex: 0 0 auto;
  min-width: 0;
  margin-left: auto;
}

.viper-header-actions {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  flex: 0 0 auto;
}

.viper-nav {
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  justify-content: flex-end;
  gap: 0.15rem;
  padding: 0.28rem;
  border-radius: 999px;
  border: 1px solid color-mix(in oklab, var(--viper-border) 90%, transparent);
  background: color-mix(in oklab, var(--viper-surface) 72%, transparent);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.04);
  max-width: 100%;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
}

.viper-nav::-webkit-scrollbar {
  display: none;
}

.viper-nav a:not(.viper-btn),
.viper-nav .menu-item > a {
  color: var(--viper-muted);
  text-decoration: none;
  font-size: 0.875rem;
  font-weight: 550;
  letter-spacing: 0.01em;
  white-space: nowrap;
  padding: 0.45rem 0.9rem;
  border-radius: 999px;
  transition: color 0.15s ease, background 0.15s ease;
}

.viper-nav a:not(.viper-btn):hover,
.viper-nav .menu-item > a:hover,
.viper-nav .current-menu-item > a:not(.viper-btn),
.viper-nav .current_page_item > a {
  color: #f7faf9;
  background: color-mix(in oklab, var(--viper-primary) 14%, transparent);
}

/* Keep Open workspace on the right of the link pill; styles come from .viper-btn */
.viper-header-tools > .viper-open-workspace {
  flex: 0 0 auto;
}

@media (max-width: 860px) {
  .viper-site-header__inner {
    min-height: 76px;
    gap: 0.65rem;
  }
  .viper-header-tools {
    gap: 0.5rem;
  }
  .viper-brand {
    font-size: 1.15rem;
    gap: 0.55rem;
  }
  .viper-brand__mark,
  .viper-brand__snake {
    width: 2.65rem;
    height: 2.65rem;
  }
  .viper-brand__text {
    font-size: 1.15rem;
  }
  .viper-nav a:not(.viper-btn),
  .viper-nav .menu-item > a {
    padding: 0.4rem 0.7rem;
    font-size: 0.82rem;
  }
  .viper-header-actions .viper-btn {
    min-height: 40px;
    padding: 0.5rem 0.85rem;
    font-size: 0.85rem;
  }
}

@media (max-width: 560px) {
  .viper-brand__text {
    /* keep wordmark readable; allow wrap tools */
  }
  .viper-header-tools {
    flex-wrap: wrap;
    justify-content: flex-end;
  }
}

/* Primary CTA — pure white label, no grey overrides */
.viper-btn,
button.viper-btn,
a.viper-btn,
a.viper-btn:link,
a.viper-btn:visited,
a.viper-btn:hover,
a.viper-btn:focus,
a.viper-btn:active,
.viper-nav a.viper-btn,
.viper-nav a.viper-btn:link,
.viper-nav a.viper-btn:visited,
.viper-nav a.viper-btn:hover,
.viper-nav a.viper-btn:focus,
.viper-nav a.viper-btn:active,
.viper-hero a.viper-btn,
.viper-hero a.viper-btn:hover,
.viper-toolbar .viper-btn,
.viper-toolbar .viper-btn:hover {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.4rem;
  min-height: 44px;
  padding: 0.65rem 1.1rem;
  border-radius: 10px;
  border: 1px solid transparent;
  background: #12c96b !important;
  color: #ffffff !important;
  -webkit-text-fill-color: #ffffff !important;
  fill: #ffffff !important;
  opacity: 1 !important;
  font: inherit;
  font-weight: 700;
  font-size: 0.925rem;
  cursor: pointer;
  text-decoration: none !important;
  filter: none !important;
  text-shadow: none !important;
}

a.viper-btn:hover,
button.viper-btn:hover,
.viper-nav a.viper-btn:hover,
.viper-hero a.viper-btn:hover {
  background: #0fa85e !important;
  color: #ffffff !important;
  -webkit-text-fill-color: #ffffff !important;
  opacity: 1 !important;
  filter: none !important;
}

/* Non-primary variants keep readable light text, not grey-muted */
.viper-btn--ghost,
a.viper-btn.viper-btn--ghost,
a.viper-btn.viper-btn--ghost:hover,
a.viper-btn.viper-btn--ghost:focus,
button.viper-btn.viper-btn--ghost {
  background: transparent !important;
  border-color: var(--viper-border) !important;
  color: #f2f4f5 !important;
  -webkit-text-fill-color: #f2f4f5 !important;
}

.viper-btn--secondary,
a.viper-btn.viper-btn--secondary,
a.viper-btn.viper-btn--secondary:hover,
a.viper-btn.viper-btn--secondary:focus,
button.viper-btn.viper-btn--secondary {
  background: var(--viper-surface-2) !important;
  border-color: var(--viper-border) !important;
  color: #f2f4f5 !important;
  -webkit-text-fill-color: #f2f4f5 !important;
}

.viper-hero {
  padding: 4.5rem 0 3rem;
  text-align: center;
}

.viper-hero h1 {
  margin: 0 auto;
  max-width: 16ch;
  font-size: clamp(2.25rem, 5vw, 3.75rem);
  line-height: 1.08;
  letter-spacing: -0.03em;
  font-weight: 600;
}

.viper-hero h1 span {
  color: var(--viper-primary);
}

.viper-hero p {
  margin: 1.1rem auto 0;
  max-width: 52ch;
  color: var(--viper-muted);
  font-size: 1.05rem;
}

.viper-hero__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
  justify-content: center;
  margin-top: 1.75rem;
}

.viper-badge {
  display: inline-flex;
  align-items: center;
  min-height: 1.75rem;
  padding: 0.2rem 0.7rem;
  border-radius: 999px;
  border: 1px solid color-mix(in oklab, var(--viper-primary) 35%, var(--viper-border));
  color: var(--viper-primary);
  font-size: 0.75rem;
  font-weight: 600;
  margin-bottom: 1rem;
}

.viper-grid {
  display: grid;
  gap: 1rem;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  padding: 1rem 0 3rem;
}

.viper-card {
  border: 1px solid var(--viper-border);
  background: var(--viper-surface);
  border-radius: calc(var(--viper-radius) + 4px);
  padding: 1.25rem;
}

.viper-card h3 {
  margin: 0.75rem 0 0.4rem;
  font-size: 1.05rem;
}

.viper-card p {
  margin: 0;
  color: var(--viper-muted);
  font-size: 0.925rem;
}

.viper-card__icon {
  width: 2.5rem;
  height: 2.5rem;
  display: grid;
  place-items: center;
  border-radius: 10px;
  border: 1px solid var(--viper-border);
  background: var(--viper-surface-2);
  color: var(--viper-primary);
  font-weight: 700;
}

.viper-section {
  padding: 2.5rem 0 4rem;
}

.viper-section h2 {
  margin: 0 0 0.5rem;
  font-size: clamp(1.5rem, 3vw, 2rem);
  letter-spacing: -0.02em;
}

.viper-section > .viper-wrap > p.lead {
  margin: 0 0 1.5rem;
  color: var(--viper-muted);
  max-width: 60ch;
}

.viper-workspace {
  border: 1px solid var(--viper-border);
  background: var(--viper-surface);
  border-radius: 16px;
  padding: 1.25rem;
}

.viper-drop {
  border: 1px dashed #3a424c;
  border-radius: 14px;
  min-height: 180px;
  display: grid;
  place-items: center;
  text-align: center;
  padding: 1.5rem;
  background: var(--viper-surface-2);
  cursor: pointer;
}

.viper-drop.is-drag {
  border-color: var(--viper-primary);
  background: color-mix(in oklab, var(--viper-primary) 10%, var(--viper-surface-2));
}

.viper-drop strong {
  display: block;
  margin-bottom: 0.35rem;
}

.viper-drop span {
  color: var(--viper-subtle);
  font-size: 0.85rem;
}

.viper-toolbar {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin: 1rem 0;
}

.viper-file-list {
  display: grid;
  gap: 0.75rem;
}

.viper-file {
  display: grid;
  grid-template-columns: 64px 1fr auto;
  gap: 0.75rem;
  align-items: center;
  border: 1px solid var(--viper-border);
  border-radius: 12px;
  padding: 0.65rem;
  background: var(--viper-bg);
}

.viper-file img {
  width: 64px;
  height: 80px;
  object-fit: cover;
  border-radius: 8px;
  background: #fff;
}

.viper-file h4 {
  margin: 0;
  font-size: 0.9rem;
}

.viper-file p {
  margin: 0.2rem 0 0;
  color: var(--viper-subtle);
  font-size: 0.75rem;
}

.viper-preview-stage {
  margin-top: 1rem;
  display: grid;
  gap: 1rem;
}

.viper-preview-stage img {
  width: 100%;
  max-height: 70vh;
  object-fit: contain;
  background: #fff;
  border-radius: 10px;
}

.viper-site-footer {
  border-top: 1px solid var(--viper-border);
  padding: 2rem 0;
  color: var(--viper-subtle);
  font-size: 0.85rem;
}

.viper-site-footer__inner {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
  justify-content: space-between;
  align-items: center;
}

.viper-content {
  padding: 2.5rem 0 4rem;
}

.viper-content .entry-title {
  margin-top: 0;
  letter-spacing: -0.02em;
}

.viper-content .entry-content {
  color: var(--viper-muted);
  max-width: 70ch;
}

@media (max-width: 640px) {
  .viper-file {
    grid-template-columns: 48px 1fr;
  }
  .viper-file button {
    grid-column: 1 / -1;
  }
}

/* On-screen: print sheet hidden */
.viper-print-root {
  display: none;
}
body.viper-printing .viper-print-root[data-active="1"] {
  display: block !important;
  position: fixed;
  left: 0;
  top: 0;
  width: 8.5in;
  max-width: 100%;
  background: #fff;
  color: #000;
  z-index: 2147483000;
  /* Visible only briefly for print capture — hidden from normal UI via opacity on screen */
  opacity: 0.01;
  pointer-events: none;
}

@media print {
  body.viper-printing * {
    visibility: hidden !important;
  }
  body.viper-printing .viper-print-root,
  body.viper-printing .viper-print-root * {
    visibility: visible !important;
  }
  body.viper-printing .viper-print-root {
    display: block !important;
    position: static !important;
    left: auto !important;
    width: 100% !important;
    margin: 0 !important;
    padding: 0 !important;
    background: #fff !important;
    color: #000 !important;
  }
  .viper-site-header,
  .viper-site-footer,
  .viper-toolbar,
  .viper-drop,
  .viper-coach,
  .viper-toast-stack,
  .viper-process-board,
  .viper-file-list,
  .viper-preview-stage,
  .viper-scan-panel,
  .viper-ocr-panel {
    display: none !important;
  }
  body.viperai-body,
  body.viper-printing {
    background: #fff !important;
    color: #000 !important;
  }
  .viper-print-header {
    margin-bottom: 0.75rem;
    padding-bottom: 0.5rem;
    border-bottom: 1px solid #ccc;
  }
  .viper-print-header h1 {
    margin: 0;
    font-size: 16pt;
    color: #000;
  }
  .viper-print-header p {
    margin: 0.25rem 0 0;
    font-size: 10pt;
    color: #333;
  }
  .viper-print-page {
    page-break-after: always;
    break-after: page;
    padding: 0.25in 0;
  }
  .viper-print-page:last-child {
    page-break-after: auto;
    break-after: auto;
  }
  .viper-print-caption {
    font-size: 9pt;
    color: #444;
    margin-bottom: 0.35rem;
  }
  .viper-print-img {
    display: block;
    max-width: 100%;
    max-height: 10in;
    width: auto;
    height: auto;
    margin: 0 auto;
  }
  .viper-print-note {
    font-size: 10pt;
    color: #555;
    padding: 0.5rem;
    border: 1px dashed #999;
  }
}


.viper-status {
  min-height: 1.25rem;
  margin: 0.5rem 0 0.75rem;
  color: #ffffff;
  font-size: 0.875rem;
  font-weight: 600;
}

.viper-file-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  justify-content: flex-end;
}

.viper-file-actions .viper-btn {
  min-height: 36px;
  padding: 0.35rem 0.65rem;
  font-size: 0.75rem;
}

.viper-file-actions .viper-btn:disabled {
  opacity: 0.4 !important;
  cursor: not-allowed;
}


/* ——— Package file grid (clickable links, row/column) ——— */
.viper-file-list {
  display: block;
  margin-top: 0.75rem;
}

.viper-file-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0.65rem;
}

@media (min-width: 720px) {
  .viper-file-grid {
    grid-template-columns: 1fr 1fr;
  }
}

@media (min-width: 1024px) {
  .viper-file-grid {
    grid-template-columns: 1fr 1fr;
  }
}

.viper-file-card {
  display: flex;
  flex-direction: column;
  gap: 0.45rem;
  padding: 0.55rem;
  border-radius: 14px;
  border: 1px solid var(--viper-border);
  background:
    linear-gradient(180deg, color-mix(in oklab, var(--viper-surface-2) 88%, transparent), var(--viper-surface));
  box-shadow: 0 12px 28px -22px rgb(0 0 0 / 0.85);
  transition: border-color 160ms ease, box-shadow 160ms ease, transform 160ms ease;
}

.viper-file-card:hover {
  border-color: color-mix(in oklab, var(--viper-primary) 45%, var(--viper-border));
  transform: translateY(-1px);
}

.viper-file-card.is-active {
  border-color: color-mix(in oklab, var(--viper-primary) 70%, var(--viper-border));
  box-shadow:
    0 0 0 1px color-mix(in oklab, var(--viper-primary) 35%, transparent),
    0 16px 36px -20px color-mix(in oklab, var(--viper-primary) 55%, transparent);
}

.viper-file-link {
  display: grid;
  grid-template-columns: 52px minmax(0, 1fr) auto auto;
  align-items: center;
  gap: 0.75rem;
  padding: 0.45rem 0.55rem;
  border-radius: 10px;
  color: #ffffff !important;
  -webkit-text-fill-color: #ffffff !important;
  text-decoration: none !important;
  background: color-mix(in oklab, var(--viper-bg) 55%, transparent);
  border: 1px solid transparent;
  transition: background 140ms ease, border-color 140ms ease;
}

.viper-file-link:hover,
.viper-file-link:focus {
  background: color-mix(in oklab, var(--viper-primary) 12%, var(--viper-bg));
  border-color: color-mix(in oklab, var(--viper-primary) 35%, transparent);
  text-decoration: none !important;
  outline: none;
}

.viper-file-thumb {
  display: grid;
  place-items: center;
  width: 52px;
  height: 64px;
  overflow: hidden;
  border-radius: 8px;
  border: 1px solid var(--viper-border);
  background: #0e1114;
}

.viper-file-thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.viper-file-body {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
  min-width: 0;
}

.viper-file-name {
  font-weight: 650;
  font-size: 0.92rem;
  color: #ffffff;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.viper-file-meta {
  font-size: 0.72rem;
  color: var(--viper-muted);
  letter-spacing: 0.01em;
}

.viper-file-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 2rem;
  height: 1.6rem;
  padding: 0 0.45rem;
  border-radius: 999px;
  border: 1px solid color-mix(in oklab, var(--viper-primary) 40%, var(--viper-border));
  background: color-mix(in oklab, var(--viper-primary) 14%, var(--viper-surface-2));
  color: var(--viper-primary);
  font-size: 0.7rem;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}

.viper-file-chevron {
  color: var(--viper-primary);
  font-size: 1rem;
  font-weight: 700;
  opacity: 0.85;
}

.viper-file-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  justify-content: flex-end;
  padding: 0 0.2rem 0.15rem;
}

.viper-file-actions .viper-btn {
  min-height: 34px;
  padding: 0.3rem 0.65rem;
  font-size: 0.72rem;
}

.viper-file-actions .viper-btn:disabled {
  opacity: 0.35 !important;
  cursor: not-allowed;
}

/* Single focused preview instead of dumping all raw files */
.viper-preview-stage {
  margin-top: 1rem;
}

.viper-preview-stage:empty {
  display: none;
}

.viper-focus-preview {
  border: 1px solid color-mix(in oklab, var(--viper-primary) 30%, var(--viper-border));
  border-radius: 16px;
  overflow: hidden;
  background: var(--viper-surface);
  box-shadow: 0 18px 40px -24px color-mix(in oklab, var(--viper-primary) 40%, transparent);
}

.viper-focus-preview__bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  padding: 0.65rem 0.85rem;
  border-bottom: 1px solid var(--viper-border);
  background: color-mix(in oklab, var(--viper-primary) 8%, var(--viper-surface-2));
  color: #ffffff;
  font-size: 0.85rem;
  font-weight: 600;
}

.viper-focus-preview__bar span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.viper-focus-preview img {
  display: block;
  width: 100%;
  max-height: 62vh;
  object-fit: contain;
  background: #0b0d0f;
}

.viper-status {
  min-height: 1.25rem;
  margin: 0.55rem 0 0.35rem;
  color: var(--viper-primary);
  font-size: 0.875rem;
  font-weight: 600;
}

/* ——— Commercial pricing ——— */
.viper-pricing__hero {
  text-align: center;
  max-width: 44rem;
  margin: 0 auto 2rem;
}

.viper-pricing-grid {
  display: grid;
  gap: 1rem;
  grid-template-columns: 1fr;
}

@media (min-width: 800px) {
  .viper-pricing-grid {
    grid-template-columns: 1fr 1fr;
    align-items: stretch;
  }
}

.viper-price-card {
  border: 1px solid var(--viper-border);
  background: var(--viper-surface);
  border-radius: 18px;
  padding: 1.5rem;
  display: flex;
  flex-direction: column;
  gap: 0.85rem;
}

.viper-price-card--pro {
  border-color: color-mix(in oklab, var(--viper-primary) 45%, var(--viper-border));
  box-shadow:
    0 0 0 1px color-mix(in oklab, var(--viper-primary) 20%, transparent),
    0 22px 50px -28px color-mix(in oklab, var(--viper-primary) 50%, transparent);
  background:
    radial-gradient(600px 200px at 100% 0%, color-mix(in oklab, var(--viper-primary) 14%, transparent), transparent 60%),
    var(--viper-surface);
}

.viper-price-card__eyebrow {
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--viper-primary);
}

.viper-price-card h2 {
  margin: 0;
  font-size: 1.6rem;
}

.viper-price-card__price {
  display: flex;
  align-items: baseline;
  gap: 0.4rem;
}

.viper-price-card__price span {
  font-size: 2.4rem;
  font-weight: 750;
  letter-spacing: -0.03em;
  color: #fff;
}

.viper-price-card__price small {
  color: var(--viper-muted);
}

.viper-price-card ul {
  margin: 0;
  padding-left: 1.1rem;
  color: var(--viper-muted);
  flex: 1;
}

.viper-price-card li {
  margin: 0.35rem 0;
}

.viper-price-card__fine {
  margin: 0;
  font-size: 0.78rem;
  color: var(--viper-subtle);
}

.viper-notice {
  border: 1px solid var(--viper-border);
  background: var(--viper-surface-2);
  color: var(--viper-fg);
  border-radius: 12px;
  padding: 0.85rem 1rem;
  margin-bottom: 1.25rem;
}

.viper-notice--ok {
  border-color: color-mix(in oklab, var(--viper-primary) 40%, var(--viper-border));
  color: #fff;
}

.viper-workspace-head {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
  align-items: flex-start;
  justify-content: space-between;
  margin-bottom: 1rem;
}

.viper-plan-chip {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.4rem 0.75rem;
  border-radius: 999px;
  border: 1px solid var(--viper-border);
  background: var(--viper-surface-2);
  font-size: 0.8rem;
  font-weight: 600;
  color: #fff;
}

.viper-plan-chip.is-pro {
  border-color: color-mix(in oklab, var(--viper-primary) 45%, var(--viper-border));
  color: var(--viper-primary);
}

.viper-plan-chip a {
  color: var(--viper-primary);
  font-weight: 700;
}

.viper-plan-banner {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem 0.85rem;
  margin-bottom: 1rem;
  padding: 0.75rem 1rem;
  border-radius: 12px;
  border: 1px solid var(--viper-border);
  background: var(--viper-surface-2);
  font-size: 0.875rem;
}

.viper-plan-banner.is-demo {
  border-color: color-mix(in oklab, var(--viper-primary) 25%, var(--viper-border));
}

.viper-plan-banner.is-pro {
  border-color: color-mix(in oklab, var(--viper-primary) 50%, var(--viper-border));
  background: color-mix(in oklab, var(--viper-primary) 10%, var(--viper-surface-2));
}

.viper-plan-banner strong {
  color: var(--viper-primary);
}

.viper-plan-banner span {
  color: var(--viper-muted);
}

.viper-plan-banner a {
  margin-left: auto;
  color: #fff;
  font-weight: 700;
  text-decoration: none;
  border-bottom: 1px solid var(--viper-primary);
}

.viper-plan-banner a:hover {
  color: var(--viper-primary);
}

/* ——— Wallet + assignment history ——— */
.viper-wallet-bar {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem 1rem;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 1rem;
  padding: 0.85rem 1rem;
  border-radius: 14px;
  border: 1px solid color-mix(in oklab, var(--viper-primary) 28%, var(--viper-border));
  background:
    linear-gradient(120deg, color-mix(in oklab, var(--viper-primary) 10%, var(--viper-surface-2)), var(--viper-surface));
}

.viper-wallet-bar__left {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
  min-width: 0;
}

.viper-wallet-bar__left strong {
  color: var(--viper-primary);
  font-size: 0.78rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.viper-wallet-status {
  color: #fff;
  font-size: 0.88rem;
  font-weight: 600;
}

.viper-wallet-bar__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
}

.viper-history {
  margin-top: 2rem;
  padding-top: 1.25rem;
  border-top: 1px solid var(--viper-border);
}

.viper-history__head h3 {
  margin: 0 0 0.25rem;
  font-size: 1.15rem;
  color: #fff;
}

.viper-history__head p {
  margin: 0 0 0.85rem;
  color: var(--viper-muted);
  font-size: 0.88rem;
}

.viper-history-list {
  display: grid;
  gap: 0.55rem;
}

.viper-history-row {
  border: 1px solid var(--viper-border);
  border-radius: 12px;
  background: var(--viper-surface);
  overflow: hidden;
  transition: border-color 140ms ease, box-shadow 140ms ease;
}

.viper-history-row:hover {
  border-color: color-mix(in oklab, var(--viper-primary) 40%, var(--viper-border));
  box-shadow: 0 12px 28px -22px color-mix(in oklab, var(--viper-primary) 45%, transparent);
}

.viper-history-link {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
  padding: 0.85rem 1rem;
  color: #fff !important;
  -webkit-text-fill-color: #fff !important;
  text-decoration: none !important;
}

.viper-history-title {
  font-weight: 700;
  font-size: 0.95rem;
}

.viper-history-meta {
  font-size: 0.75rem;
  color: var(--viper-muted);
}

.viper-history-empty {
  margin: 0;
  color: var(--viper-subtle);
  font-size: 0.88rem;
}


/* ——— Document scan (mirror of print path) ——— */
.viper-scan-panel {
  margin: 0.85rem 0 1rem;
  padding: 1rem;
  border-radius: 16px;
  border: 1px solid color-mix(in oklab, var(--viper-primary) 35%, var(--viper-border));
  background:
    radial-gradient(700px 240px at 0% 0%, color-mix(in oklab, var(--viper-primary) 12%, transparent), transparent 55%),
    var(--viper-surface);
  box-shadow: 0 18px 40px -28px color-mix(in oklab, var(--viper-primary) 40%, transparent);
}

.viper-scan-panel[hidden] {
  display: none !important;
}

.viper-scan-panel__head {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
  align-items: flex-start;
  justify-content: space-between;
  margin-bottom: 0.85rem;
}

.viper-scan-panel__head strong {
  display: block;
  color: #fff;
  font-size: 1rem;
}

.viper-scan-panel__head p {
  margin: 0.25rem 0 0;
  color: var(--viper-muted);
  font-size: 0.85rem;
  max-width: 52ch;
}

.viper-scan-stage {
  position: relative;
  overflow: hidden;
  border-radius: 14px;
  background: #000;
  border: 1px solid var(--viper-border);
  aspect-ratio: 4 / 3;
}

.viper-scan-stage video {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.viper-scan-guide {
  pointer-events: none;
  position: absolute;
  inset: 8%;
  border: 2px solid color-mix(in oklab, var(--viper-primary) 80%, white);
  border-radius: 12px;
  box-shadow: 0 0 0 999px rgb(0 0 0 / 0.28);
}

.viper-scan-hint {
  pointer-events: none;
  position: absolute;
  left: 0.75rem;
  bottom: 0.75rem;
  padding: 0.35rem 0.65rem;
  border-radius: 999px;
  background: rgb(0 0 0 / 0.65);
  color: #fff;
  font-size: 0.75rem;
  font-weight: 600;
  backdrop-filter: blur(6px);
}

.viper-scan-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem;
  margin-top: 0.85rem;
}

.viper-scan-note {
  margin: 0.75rem 0 0;
  color: var(--viper-subtle);
  font-size: 0.78rem;
  line-height: 1.45;
}


/* Scan | Print as equal paired options */
.viper-toolbar {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  align-items: center;
}

.viper-toolbar-pair {
  display: inline-flex;
  border-radius: 12px;
  overflow: hidden;
  border: 1px solid color-mix(in oklab, var(--viper-primary) 45%, var(--viper-border));
  box-shadow: 0 10px 28px -18px color-mix(in oklab, var(--viper-primary) 50%, transparent);
}

.viper-toolbar-pair .viper-btn {
  border-radius: 0;
  min-width: 6.5rem;
  border: none;
  background: #12c96b !important;
  color: #ffffff !important;
  -webkit-text-fill-color: #ffffff !important;
}

.viper-toolbar-pair .viper-btn + .viper-btn {
  border-left: 1px solid color-mix(in oklab, #ffffff 28%, transparent);
}

.viper-toolbar-pair .viper-btn:hover,
.viper-toolbar-pair .viper-btn:focus {
  background: #0fa85e !important;
  color: #ffffff !important;
}

.viper-toolbar-pair .viper-action-scan.is-active {
  background: #0c8f50 !important;
  box-shadow: inset 0 0 0 1px rgb(255 255 255 / 0.25);
}


.viper-scan-chooser {
  margin-bottom: 0.85rem;
}

.viper-scan-chooser__label {
  margin: 0 0 0.5rem;
  font-size: 0.8rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--viper-primary);
}

.viper-scan-sources {
  display: grid;
  gap: 0.5rem;
}

@media (min-width: 720px) {
  .viper-scan-sources {
    grid-template-columns: 1fr 1fr;
  }
}

.viper-scan-source {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.25rem;
  width: 100%;
  text-align: left;
  padding: 0.85rem 1rem;
  border-radius: 12px;
  border: 1px solid var(--viper-border);
  background: var(--viper-surface-2);
  color: #fff;
  cursor: pointer;
  font: inherit;
  transition: border-color 140ms ease, box-shadow 140ms ease, background 140ms ease;
}

.viper-scan-source:hover {
  border-color: color-mix(in oklab, var(--viper-primary) 40%, var(--viper-border));
}

.viper-scan-source.is-active {
  border-color: color-mix(in oklab, var(--viper-primary) 65%, var(--viper-border));
  background: color-mix(in oklab, var(--viper-primary) 12%, var(--viper-surface-2));
  box-shadow: 0 0 0 1px color-mix(in oklab, var(--viper-primary) 30%, transparent);
}

.viper-scan-source__title {
  font-weight: 700;
  font-size: 0.92rem;
}

.viper-scan-source__meta {
  font-size: 0.75rem;
  color: var(--viper-muted);
  line-height: 1.35;
}

/* Bridge connection box */
.viper-bridge-box {
  margin-bottom: 1rem;
  padding: 0.85rem 1rem;
  border-radius: 14px;
  border: 1px solid color-mix(in oklab, var(--viper-primary) 30%, var(--viper-border));
  background: var(--viper-surface-2);
}

.viper-bridge-fields {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem;
  margin-bottom: 0.35rem;
}

.viper-bridge-fields input {
  flex: 1 1 140px;
  min-height: 42px;
  border-radius: 10px;
  border: 1px solid var(--viper-border);
  background: var(--viper-bg);
  color: #fff;
  padding: 0.45rem 0.75rem;
  font: inherit;
}

.viper-bridge-fields input:focus {
  outline: 2px solid color-mix(in oklab, var(--viper-primary) 50%, transparent);
  border-color: var(--viper-primary);
}

/* OCR panel */
.viper-ocr-panel {
  margin: 0.85rem 0 1rem;
  padding: 1rem;
  border-radius: 16px;
  border: 1px solid color-mix(in oklab, var(--viper-primary) 35%, var(--viper-border));
  background:
    radial-gradient(700px 240px at 100% 0%, color-mix(in oklab, var(--viper-primary) 10%, transparent), transparent 55%),
    var(--viper-surface);
}

.viper-ocr-panel[hidden] { display: none !important; }

.viper-ocr-upload {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem;
  margin-bottom: 0.75rem;
}

.viper-ocr-preview {
  margin-bottom: 0.75rem;
  border-radius: 12px;
  overflow: hidden;
  border: 1px solid var(--viper-border);
  background: #0b0d0f;
  max-height: 280px;
}

.viper-ocr-preview img {
  display: block;
  width: 100%;
  max-height: 280px;
  object-fit: contain;
}

.viper-ocr-options {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem 1.25rem;
  margin-bottom: 0.75rem;
}

.viper-ocr-options label {
  display: flex;
  flex-direction: column;
  gap: 0.3rem;
  font-size: 0.78rem;
  font-weight: 600;
  color: var(--viper-muted);
}

.viper-ocr-options select {
  min-height: 40px;
  min-width: 180px;
  border-radius: 10px;
  border: 1px solid var(--viper-border);
  background: var(--viper-bg);
  color: #fff;
  padding: 0.35rem 0.6rem;
  font: inherit;
}

.viper-ocr-text-label {
  display: block;
  font-size: 0.78rem;
  font-weight: 600;
  color: var(--viper-muted);
  margin-bottom: 0.35rem;
}

.viper-ocr-text {
  width: 100%;
  box-sizing: border-box;
  border-radius: 12px;
  border: 1px solid var(--viper-border);
  background: var(--viper-bg);
  color: #f2f4f5;
  padding: 0.75rem 0.85rem;
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: 0.85rem;
  line-height: 1.45;
  resize: vertical;
  margin-bottom: 0.75rem;
}

.viper-history-row {
  display: flex;
  align-items: stretch;
  gap: 0;
}

.viper-history-row .viper-history-link {
  flex: 1;
  min-width: 0;
}

.viper-history-delete {
  flex: 0 0 auto;
  align-self: center;
  margin-right: 0.5rem;
  min-height: 36px;
  padding: 0.3rem 0.7rem;
  font-size: 0.75rem;
}

.viper-history-actions {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 0.35rem;
  padding: 0.45rem 0.55rem;
}

.viper-history-share,
.viper-history-delete {
  min-height: 34px;
  padding: 0.25rem 0.65rem;
  font-size: 0.72rem;
}

.viper-open-assignments {
  color: #fff !important;
}

.viper-assignments-page .viper-history {
  margin-top: 0.5rem;
}

.viper-history.is-standalone {
  padding: 1rem;
  border-radius: 16px;
  border: 1px solid var(--viper-border);
  background: var(--viper-surface);
}

/* ——— Viper AI Coach + Toasts ——— */
.viper-workspace--coach {
  display: grid;
  gap: 1rem;
}

@media (min-width: 1100px) {
  .viper-workspace--coach {
    grid-template-columns: minmax(0, 1fr) minmax(280px, 340px);
    align-items: start;
  }
  .viper-workspace--coach > .viper-plan-banner,
  .viper-workspace--coach > .viper-wallet-bar,
  .viper-workspace--coach > .viper-drop,
  .viper-workspace--coach > .viper-toolbar,
  .viper-workspace--coach > .viper-process-panel,
  .viper-workspace--coach > .viper-scan-panel,
  .viper-workspace--coach > .viper-ocr-panel,
  .viper-workspace--coach > .viper-status,
  .viper-workspace--coach > .viper-file-list,
  .viper-workspace--coach > .viper-preview-stage,
  .viper-workspace--coach > .viper-history {
    grid-column: 1;
  }
  .viper-workspace--coach > .viper-coach {
    grid-column: 2;
    grid-row: 1 / span 12;
    position: sticky;
    top: 1rem;
  }
  .viper-workspace--coach > .viper-toast-stack {
    grid-column: 1 / -1;
  }
}

.viper-coach {
  border-radius: 18px;
  border: 1px solid color-mix(in oklab, var(--viper-primary) 35%, var(--viper-border));
  background:
    radial-gradient(500px 200px at 0% 0%, color-mix(in oklab, var(--viper-primary) 16%, transparent), transparent 60%),
    linear-gradient(160deg, color-mix(in oklab, var(--viper-surface) 92%, #0b1220), var(--viper-surface));
  box-shadow: 0 18px 50px rgba(0, 0, 0, 0.35);
  padding: 1rem 1.05rem 1.1rem;
  color: #f4f7f8;
}

.viper-coach__head {
  display: flex;
  gap: 0.75rem;
  align-items: flex-start;
  margin-bottom: 0.85rem;
}

.viper-coach__avatar {
  width: 40px;
  height: 40px;
  border-radius: 12px;
  display: grid;
  place-items: center;
  font-size: 0.72rem;
  font-weight: 800;
  letter-spacing: 0.04em;
  color: #04140c;
  background: linear-gradient(135deg, #34d399, #10b981 55%, #059669);
  box-shadow: 0 0 0 1px rgba(16, 185, 129, 0.4), 0 8px 24px rgba(16, 185, 129, 0.25);
  flex: 0 0 auto;
}

.viper-coach__head strong {
  display: block;
  font-size: 0.95rem;
}

.viper-coach__head p {
  margin: 0.15rem 0 0;
  font-size: 0.78rem;
  color: var(--viper-muted);
  line-height: 1.35;
}

.viper-coach__insight {
  font-size: 0.88rem;
  line-height: 1.5;
  padding: 0.75rem 0.85rem;
  border-radius: 12px;
  background: color-mix(in oklab, var(--viper-bg) 80%, transparent);
  border: 1px solid var(--viper-border);
  margin-bottom: 0.75rem;
}

.viper-coach__task {
  margin-bottom: 0.75rem;
  padding: 0.55rem 0.75rem;
  border-radius: 10px;
  border: 1px solid color-mix(in oklab, var(--viper-primary) 40%, var(--viper-border));
  background: color-mix(in oklab, var(--viper-primary) 10%, transparent);
}

.viper-coach__task[hidden] { display: none !important; }

.viper-coach__task-label {
  display: block;
  font-size: 0.68rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--viper-primary);
  margin-bottom: 0.2rem;
}

.viper-coach__task strong {
  font-size: 0.9rem;
}

.viper-coach__steps {
  margin: 0 0 0.85rem;
  padding: 0 0 0 1.15rem;
  display: grid;
  gap: 0.45rem;
}

.viper-coach__steps li {
  font-size: 0.82rem;
  color: #d7dee3;
  line-height: 1.4;
}

.viper-coach__steps li.is-done {
  color: var(--viper-muted);
  text-decoration: line-through;
}

.viper-coach__steps li.is-current {
  color: #fff;
  font-weight: 600;
}

.viper-coach__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
  margin-bottom: 0.55rem;
}

.viper-coach__actions .viper-btn {
  min-height: 36px;
  padding: 0.35rem 0.75rem;
  font-size: 0.78rem;
}

.viper-coach__hint {
  margin: 0;
  font-size: 0.75rem;
  color: var(--viper-muted);
  line-height: 1.4;
  min-height: 1.1em;
}

/* Toasts */
.viper-toast-stack {
  position: fixed;
  right: 1rem;
  bottom: 1rem;
  z-index: 100000;
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
  width: min(360px, calc(100vw - 2rem));
  pointer-events: none;
}

.viper-toast {
  pointer-events: auto;
  display: flex;
  gap: 0.65rem;
  align-items: flex-start;
  padding: 0.85rem 0.95rem;
  border-radius: 14px;
  border: 1px solid color-mix(in oklab, var(--viper-primary) 35%, #2a3036);
  background: color-mix(in oklab, #0f1418 88%, #10b981);
  backdrop-filter: blur(12px);
  box-shadow: 0 16px 40px rgba(0, 0, 0, 0.45);
  color: #f4f7f8;
  animation: viper-toast-in 0.28s ease;
}

.viper-toast.is-out {
  animation: viper-toast-out 0.25s ease forwards;
}

.viper-toast--success {
  border-color: color-mix(in oklab, #10b981 50%, #2a3036);
}

.viper-toast--info {
  border-color: color-mix(in oklab, #38bdf8 45%, #2a3036);
  background: color-mix(in oklab, #0f1418 88%, #0ea5e9);
}

.viper-toast--warn {
  border-color: color-mix(in oklab, #f59e0b 50%, #2a3036);
  background: color-mix(in oklab, #0f1418 88%, #f59e0b);
}

.viper-toast__icon {
  width: 28px;
  height: 28px;
  border-radius: 8px;
  display: grid;
  place-items: center;
  font-size: 0.75rem;
  font-weight: 800;
  background: rgba(255, 255, 255, 0.08);
  flex: 0 0 auto;
}

.viper-toast__body {
  flex: 1;
  min-width: 0;
}

.viper-toast__title {
  font-size: 0.82rem;
  font-weight: 700;
  margin: 0 0 0.15rem;
}

.viper-toast__msg {
  margin: 0;
  font-size: 0.78rem;
  color: #d1d9de;
  line-height: 1.35;
}

.viper-toast__close {
  appearance: none;
  border: 0;
  background: transparent;
  color: #9aa3ad;
  cursor: pointer;
  font-size: 1rem;
  line-height: 1;
  padding: 0;
}

@keyframes viper-toast-in {
  from { opacity: 0; transform: translateY(12px) scale(0.98); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}
@keyframes viper-toast-out {
  to { opacity: 0; transform: translateY(8px); }
}

/* ——— Live processor taskboard ——— */
.viper-taskboard {
  margin-top: 0.25rem;
  border-radius: 16px;
  border: 1px solid var(--viper-border);
  background:
    linear-gradient(180deg, color-mix(in oklab, var(--viper-surface) 90%, #0b1220), var(--viper-surface));
  padding: 0.85rem 1rem 1rem;
  box-shadow: 0 12px 32px rgba(0, 0, 0, 0.28);
}

.viper-taskboard__head {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  justify-content: space-between;
  gap: 0.75rem;
  margin-bottom: 0.75rem;
}

.viper-taskboard__head strong {
  display: block;
  font-size: 0.95rem;
}

.viper-taskboard__head p {
  margin: 0.2rem 0 0;
  font-size: 0.78rem;
  color: var(--viper-muted);
  line-height: 1.35;
}

.viper-taskboard__legend {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.45rem 0.65rem;
  font-size: 0.72rem;
  color: var(--viper-muted);
}

.viper-led {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  display: inline-block;
  box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.08);
  transform-origin: center;
  will-change: transform, opacity, box-shadow, filter;
}


.viper-led--green {
  background: #12c96b;
  color: #12c96b;
  box-shadow: 0 0 10px rgba(18, 201, 107, 0.65);
  animation: viper-neon-ball-pulse var(--viper-pulse) ease-in-out infinite;
}
.viper-led--yellow {
  background: #eab308;
  color: #eab308;
  box-shadow: 0 0 10px rgba(234, 179, 8, 0.5);
  animation: viper-neon-ball-pulse var(--viper-pulse-fast) ease-in-out infinite;
}
.viper-led--red {
  background: #ef4444;
  color: #ef4444;
  box-shadow: 0 0 10px rgba(239, 68, 68, 0.5);
  animation: viper-neon-ball-pulse var(--viper-pulse-err) ease-in-out infinite;
}

@keyframes viper-led-pulse {
  0%, 100% {
    opacity: 0.8;
    transform: scale(1);
    box-shadow: 0 0 4px currentColor, 0 0 8px currentColor;
  }
  50% {
    opacity: 1;
    transform: scale(1.06);
    box-shadow: 0 0 8px currentColor, 0 0 14px currentColor;
  }
}



@keyframes viper-neon-ball-pulse {
  0%, 100% {
    opacity: 0.75;
    transform: scale(1);
    box-shadow: 0 0 4px currentColor, 0 0 10px rgba(18, 201, 107, 0.35);
  }
  50% {
    opacity: 1;
    transform: scale(1.08);
    box-shadow: 0 0 8px currentColor, 0 0 16px rgba(18, 201, 107, 0.55);
  }
}

@keyframes viper-neon-ring-pulse {
  0%, 100% {
    box-shadow: 0 0 0 0 rgba(18, 201, 107, 0);
  }
  50% {
    box-shadow: 0 0 0 0 rgba(18, 201, 107, 0);
  }
}



.viper-taskboard__list {
  display: grid;
  gap: 0.5rem;
  max-height: 320px;
  overflow: auto;
}

.viper-taskboard__empty {
  margin: 0;
  padding: 0.85rem;
  text-align: center;
  font-size: 0.82rem;
  color: var(--viper-muted);
  border: 1px dashed var(--viper-border);
  border-radius: 12px;
}

.viper-task {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  gap: 0.65rem;
  align-items: center;
  padding: 0.65rem 0.75rem;
  border-radius: 12px;
  border: 1px solid var(--viper-border);
  background: var(--viper-surface-2, #161a1e);
  transition: border-color 0.15s ease, background 0.15s ease;
}

.viper-task.is-running {
  border-color: color-mix(in oklab, #eab308 45%, var(--viper-border));
}
.viper-task.is-ok {
  border-color: color-mix(in oklab, #22c55e 40%, var(--viper-border));
}
.viper-task.is-err {
  border-color: color-mix(in oklab, #ef4444 45%, var(--viper-border));
}

.viper-task__led {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  flex-shrink: 0;
  transform-origin: center;
  will-change: transform, opacity, box-shadow, filter;
}

.viper-task__led.is-pending,
.viper-task__led.is-running {
  background: #eab308;
  color: #eab308;
  box-shadow: 0 0 10px rgba(234, 179, 8, 0.55);
  animation: viper-neon-ball-pulse var(--viper-pulse-task) ease-in-out infinite;
}
.viper-task__led.is-ok {
  background: #12c96b;
  color: #12c96b;
  box-shadow: 0 0 10px rgba(18, 201, 107, 0.55);
  animation: viper-neon-ball-pulse var(--viper-pulse-ok) ease-in-out infinite;
}
.viper-task__led.is-err {
  background: #ef4444;
  color: #ef4444;
  box-shadow: 0 0 10px rgba(239, 68, 68, 0.5);
  animation: viper-neon-ball-pulse var(--viper-pulse-err) ease-in-out infinite;
}

.viper-task__body { min-width: 0; }
.viper-task__title {
  margin: 0;
  font-size: 0.86rem;
  font-weight: 700;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.viper-task__meta {
  margin: 0.15rem 0 0;
  font-size: 0.72rem;
  color: var(--viper-muted);
  line-height: 1.35;
}

.viper-task__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.3rem;
  justify-content: flex-end;
}

.viper-task__actions .viper-btn {
  min-height: 32px;
  padding: 0.25rem 0.55rem;
  font-size: 0.7rem;
}

.viper-task__play {
  width: 32px;
  height: 32px;
  min-height: 32px;
  padding: 0;
  border-radius: 999px;
  display: grid;
  place-items: center;
  font-size: 0.75rem;
  background: color-mix(in oklab, var(--viper-primary) 18%, var(--viper-surface));
  border: 1px solid color-mix(in oklab, var(--viper-primary) 45%, var(--viper-border));
  color: #fff;
}

@media (min-width: 1100px) {
  .viper-workspace--coach > .viper-taskboard {
    grid-column: 1;
  }
}

.viper-crypto-section .viper-crypto-card {
  max-width: 520px;
  margin-top: 1.25rem;
  padding: 1.25rem 1.35rem;
  border-radius: 16px;
  border: 1px solid color-mix(in oklab, var(--viper-primary) 35%, var(--viper-border));
  background: var(--viper-surface);
  box-shadow: 0 16px 40px rgba(0,0,0,.28);
}

.viper-crypto-label {
  display: block;
  font-size: 0.78rem;
  font-weight: 700;
  margin-bottom: 0.35rem;
  color: var(--viper-muted);
}

.viper-crypto-input {
  width: 100%;
  box-sizing: border-box;
  min-height: 44px;
  border-radius: 10px;
  border: 1px solid var(--viper-border);
  background: var(--viper-bg);
  color: #fff;
  padding: 0.5rem 0.75rem;
  font: inherit;
  margin-bottom: 0.5rem;
}

.viper-crypto-note {
  font-size: 0.78rem;
  color: var(--viper-muted);
  line-height: 1.4;
  margin: 0 0 0.85rem;
}

.viper-crypto-wallets {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem;
  margin-bottom: 0.65rem;
}

.viper-crypto-card [data-pay-crypto] {
  margin-top: 0.5rem;
  width: 100%;
}

.viper-coach__best {
  box-shadow: 0 0 0 1px color-mix(in oklab, var(--viper-primary) 55%, transparent), 0 8px 22px rgba(18, 201, 107, 0.28);
}

.viper-coach__task strong::before {
  content: none;
}

/* ——— Files in process + live record alerts ——— */
.viper-process-panel {
  margin-top: 0.25rem;
  border-radius: 16px;
  border: 1px solid var(--viper-border);
  background: linear-gradient(180deg, color-mix(in oklab, var(--viper-surface) 90%, #0b1220), var(--viper-surface));
  padding: 0.95rem 1.05rem 1.1rem;
  box-shadow: 0 12px 32px rgba(0, 0, 0, 0.28);
}

.viper-process-panel__head,
.viper-process-panel__subhead {
  margin-bottom: 0.75rem;
}

.viper-process-panel__subhead {
  margin-top: 1.1rem;
  padding-top: 0.85rem;
  border-top: 1px solid var(--viper-border);
}

.viper-process-panel__head strong,
.viper-process-panel__subhead strong {
  display: block;
  font-size: 0.95rem;
}

.viper-process-panel__head p,
.viper-process-panel__subhead p {
  margin: 0.2rem 0 0;
  font-size: 0.78rem;
  color: var(--viper-muted);
  line-height: 1.35;
}

.viper-process-empty {
  margin: 0;
  padding: 0.85rem;
  text-align: center;
  font-size: 0.82rem;
  color: var(--viper-muted);
  border: 1px dashed var(--viper-border);
  border-radius: 12px;
}

.viper-process-files__grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
  gap: 0.5rem;
}

.viper-process-file-chip {
  display: grid;
  grid-template-columns: auto 1fr;
  grid-template-rows: auto auto;
  gap: 0.15rem 0.5rem;
  padding: 0.55rem 0.65rem;
  border-radius: 12px;
  border: 1px solid var(--viper-border);
  background: var(--viper-surface-2, #161a1e);
  cursor: pointer;
  transition: border-color 0.15s ease;
}

.viper-process-file-chip:hover {
  border-color: color-mix(in oklab, var(--viper-primary) 45%, var(--viper-border));
}

.viper-process-file-chip.is-running {
  border-color: color-mix(in oklab, #eab308 50%, var(--viper-border));
}
.viper-process-file-chip.is-ok {
  border-color: color-mix(in oklab, #22c55e 45%, var(--viper-border));
}
.viper-process-file-chip.is-err {
  border-color: color-mix(in oklab, #ef4444 50%, var(--viper-border));
}

.viper-process-file-chip__n {
  grid-row: 1 / span 2;
  align-self: center;
  font-size: 0.72rem;
  font-weight: 800;
  color: var(--viper-primary);
}

.viper-process-file-chip__name {
  font-size: 0.8rem;
  font-weight: 650;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.viper-process-file-chip__kind {
  font-size: 0.68rem;
  color: var(--viper-muted);
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

.viper-process-record {
  grid-template-columns: minmax(0, 1fr) auto !important;
}

.viper-process-alert {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 0.65rem;
  margin: 0.4rem 0 0.25rem;
  padding: 0.5rem 0.65rem;
  border-radius: 10px;
  font-size: 0.78rem;
  line-height: 1.35;
  border: 1px solid var(--viper-border);
  background: color-mix(in oklab, var(--viper-bg) 70%, transparent);
}

.viper-process-alert time {
  flex: 0 0 auto;
  font-size: 0.68rem;
  color: var(--viper-muted);
  white-space: nowrap;
}

.viper-process-alert--running {
  border-color: color-mix(in oklab, #eab308 55%, var(--viper-border));
  background: color-mix(in oklab, #eab308 12%, transparent);
  animation: viper-alert-pulse 1.2s ease-in-out infinite;
}
.viper-process-alert--ok {
  border-color: color-mix(in oklab, #22c55e 50%, var(--viper-border));
  background: color-mix(in oklab, #22c55e 12%, transparent);
}
.viper-process-alert--err {
  border-color: color-mix(in oklab, #ef4444 55%, var(--viper-border));
  background: color-mix(in oklab, #ef4444 12%, transparent);
}
.viper-process-alert--pending {
  border-color: var(--viper-border);
}

@keyframes viper-alert-pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.82; }
}

@media (min-width: 1100px) {
  .viper-workspace--coach > .viper-process-panel {
    grid-column: 1;
  }
}

.viper-list-window {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem;
  grid-column: 1 / -1;
  padding: 0.5rem 0.65rem;
  margin-bottom: 0.35rem;
  border-radius: 10px;
  border: 1px solid var(--viper-border);
  background: color-mix(in oklab, var(--viper-surface-2) 80%, transparent);
  font-size: 0.78rem;
  color: var(--viper-muted);
}

.viper-list-window .viper-btn {
  min-height: 32px;
  padding: 0.25rem 0.65rem;
  font-size: 0.75rem;
}


.viper-drop {
  cursor: pointer;
}
.viper-drop.is-dragover {
  border-color: var(--viper-primary) !important;
  box-shadow: 0 0 0 2px color-mix(in oklab, var(--viper-primary) 45%, transparent);
  background: color-mix(in oklab, var(--viper-primary) 10%, transparent);
}
.viper-file-input {
  /* keep hidden but ensure not pointer-events blocking */
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  opacity: 0 !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
}


/* ——— Transparent hover tooltips on processor toolbar ——— */
.viper-toolbar {
  position: relative;
}
.viper-toolbar .viper-btn,
.viper-toolbar-pair .viper-btn {
  position: relative;
}
.viper-toolbar .viper-btn[data-tooltip]::after,
.viper-toolbar .viper-btn[data-tooltip]::before {
  pointer-events: none;
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.18s ease, transform 0.18s ease, visibility 0.18s ease;
  z-index: 40;
}
.viper-toolbar .viper-btn[data-tooltip]::after {
  content: attr(data-tooltip);
  position: absolute;
  left: 50%;
  bottom: calc(100% + 10px);
  transform: translateX(-50%) translateY(4px);
  min-width: 12rem;
  max-width: min(22rem, 70vw);
  padding: 0.55rem 0.75rem;
  border-radius: 0.65rem;
  font-size: 0.78rem;
  font-weight: 500;
  line-height: 1.35;
  text-align: left;
  white-space: normal;
  color: #ecfdf5;
  background: rgba(6, 20, 16, 0.72);
  border: 1px solid rgba(18, 201, 107, 0.35);
  box-shadow: 0 8px 28px rgba(0, 0, 0, 0.35);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}
.viper-toolbar .viper-btn[data-tooltip]::before {
  content: "";
  position: absolute;
  left: 50%;
  bottom: calc(100% + 4px);
  transform: translateX(-50%) translateY(4px);
  border: 6px solid transparent;
  border-top-color: rgba(18, 201, 107, 0.45);
}
.viper-toolbar .viper-btn[data-tooltip]:hover::after,
.viper-toolbar .viper-btn[data-tooltip]:hover::before,
.viper-toolbar .viper-btn[data-tooltip]:focus-visible::after,
.viper-toolbar .viper-btn[data-tooltip]:focus-visible::before {
  opacity: 1;
  visibility: visible;
  transform: translateX(-50%) translateY(0);
}
/* Keep tooltips readable on first/last toolbar buttons */
.viper-toolbar .viper-toolbar-pair .viper-btn:first-child[data-tooltip]::after {
  left: 0;
  transform: translateX(0) translateY(4px);
}
.viper-toolbar .viper-toolbar-pair .viper-btn:first-child[data-tooltip]:hover::after,
.viper-toolbar .viper-toolbar-pair .viper-btn:first-child[data-tooltip]:focus-visible::after {
  transform: translateX(0) translateY(0);
}
.viper-toolbar .viper-btn.viper-action-clear-memory[data-tooltip]::after {
  left: auto;
  right: 0;
  transform: translateX(0) translateY(4px);
}
.viper-toolbar .viper-btn.viper-action-clear-memory[data-tooltip]:hover::after,
.viper-toolbar .viper-btn.viper-action-clear-memory[data-tooltip]:focus-visible::after {
  transform: translateX(0) translateY(0);
}
@media (max-width: 640px) {
  .viper-toolbar .viper-btn[data-tooltip]::after {
    max-width: min(18rem, 85vw);
    font-size: 0.72rem;
  }
}

@media print {
  .viper-print-html {
    font-size: 11pt;
    line-height: 1.4;
    color: #000;
  }
  .viper-print-html img {
    max-width: 100%;
  }
  .viper-print-text {
    font-size: 10pt;
    white-space: pre-wrap;
    word-break: break-word;
    color: #000;
    font-family: ui-monospace, monospace;
  }
}
.viper-print-pdf-frame {
  position: fixed;
  width: 0;
  height: 0;
  border: 0;
  opacity: 0;
}

@media print {
  .viper-print-break {
    page-break-after: always;
    break-after: page;
  }
  .viper-print-html table {
    border-collapse: collapse;
    width: 100%;
    font-size: 9pt;
  }
  .viper-print-html table td,
  .viper-print-html table th {
    border: 1px solid #999;
    padding: 2px 4px;
  }
}


/* ——— Next-gen print options dialog ——— */
.viper-print-dialog[hidden] { display: none !important; }
.viper-print-dialog {
  position: fixed;
  inset: 0;
  z-index: 10050;
  display: grid;
  place-items: center;
  padding: 1rem;
}
.viper-print-dialog__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(2, 12, 10, 0.55);
  backdrop-filter: blur(6px);
}
.viper-print-dialog__panel {
  position: relative;
  width: min(560px, 100%);
  max-height: min(90vh, 720px);
  overflow: auto;
  border-radius: 1rem;
  border: 1px solid rgba(18, 201, 107, 0.35);
  background: rgba(8, 22, 18, 0.92);
  box-shadow: 0 24px 64px rgba(0, 0, 0, 0.45);
  color: #ecfdf5;
  padding: 1.1rem 1.15rem 1rem;
}
.viper-print-dialog__head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 0.75rem;
  margin-bottom: 0.85rem;
}
.viper-print-dialog__eyebrow {
  margin: 0;
  font-size: 0.7rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: #12c96b;
  font-weight: 700;
}
.viper-print-dialog__head h3 {
  margin: 0.15rem 0 0;
  font-size: 1.15rem;
  color: #fff;
}
.viper-print-dialog__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.65rem 0.75rem;
}
@media (max-width: 560px) {
  .viper-print-dialog__grid { grid-template-columns: 1fr; }
}
.viper-print-field {
  display: flex;
  flex-direction: column;
  gap: 0.3rem;
  font-size: 0.78rem;
  color: #a7f3d0;
}
.viper-print-field select,
.viper-print-field input {
  border-radius: 0.55rem;
  border: 1px solid rgba(18, 201, 107, 0.28);
  background: rgba(0, 0, 0, 0.35);
  color: #ecfdf5;
  padding: 0.45rem 0.55rem;
  font-size: 0.85rem;
}
.viper-print-dialog__toggles {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.45rem 0.75rem;
  margin: 0.9rem 0 1rem;
}
@media (max-width: 560px) {
  .viper-print-dialog__toggles { grid-template-columns: 1fr; }
}
.viper-print-toggle {
  display: flex;
  align-items: center;
  gap: 0.45rem;
  font-size: 0.8rem;
  color: #d1fae5;
  cursor: pointer;
}
.viper-print-dialog__foot {
  display: flex;
  justify-content: flex-end;
  gap: 0.5rem;
  padding-top: 0.35rem;
  border-top: 1px solid rgba(18, 201, 107, 0.2);
}

/* Dynamic print option attributes on body */
body.viper-print-grayscale .viper-print-root,
body.viper-print-grayscale .viper-print-root * {
  filter: grayscale(1) !important;
}
body.viper-print-mono .viper-print-root,
body.viper-print-mono .viper-print-root * {
  filter: grayscale(1) contrast(1.35) !important;
}
body.viper-print-no-headers .viper-print-header { display: none !important; }
body.viper-print-no-captions .viper-print-caption { display: none !important; }
body.viper-print-cropmarks .viper-print-page {
  outline: 1px dashed #999;
}
body.viper-print-nup-2 .viper-print-pages {
  display: grid !important;
  grid-template-columns: 1fr 1fr;
  gap: 0.25in;
}
body.viper-print-nup-4 .viper-print-pages {
  display: grid !important;
  grid-template-columns: 1fr 1fr;
  gap: 0.2in;
}
body.viper-print-nup-2 .viper-print-page,
body.viper-print-nup-4 .viper-print-page {
  page-break-after: auto !important;
  break-after: auto !important;
}
body.viper-print-nup-4 .viper-print-page:nth-child(4n) {
  page-break-after: always !important;
}
body.viper-print-scale-85 .viper-print-root { zoom: 0.85; }
body.viper-print-scale-115 .viper-print-root { zoom: 1.15; }
body.viper-print-scale-fit .viper-print-img {
  max-width: 100% !important;
  max-height: 9.5in !important;
  object-fit: contain;
}
body.viper-print-draft .viper-print-img {
  image-rendering: auto;
}
body.viper-print-hq .viper-print-img {
  image-rendering: high-quality;
}

@page viper-letter-portrait { size: letter portrait; margin: 0.5in; }
@page viper-letter-landscape { size: letter landscape; margin: 0.5in; }
@page viper-a4-portrait { size: A4 portrait; margin: 12mm; }
@page viper-a4-landscape { size: A4 landscape; margin: 12mm; }
@page viper-legal-portrait { size: legal portrait; margin: 0.5in; }
@page viper-legal-landscape { size: legal landscape; margin: 0.5in; }
@page viper-tabloid-portrait { size: 11in 17in portrait; margin: 0.5in; }
@page viper-tabloid-landscape { size: 17in 11in landscape; margin: 0.5in; }
@page viper-a3-portrait { size: A3 portrait; margin: 12mm; }
@page viper-a3-landscape { size: A3 landscape; margin: 12mm; }
@page viper-margin-none { margin: 0; }
@page viper-margin-narrow { margin: 0.35in; }
@page viper-margin-wide { margin: 1in; }

.viper-print-hint {
  grid-column: 1 / -1;
  margin: 0;
  font-size: 0.75rem;
  line-height: 1.35;
  color: #86efac;
  opacity: 0.9;
}

.viper-print-dialog__sub {
  margin: 0.35rem 0 0;
  font-size: 0.78rem;
  color: #a7f3d0;
  line-height: 1.35;
  max-width: 36rem;
}
.viper-print-field,
.viper-print-toggle,
.viper-print-dialog__foot .viper-btn {
  position: relative;
}
.viper-print-field[data-tip]::after,
.viper-print-toggle[data-tip]::after,
.viper-print-dialog__foot .viper-btn[data-tip]::after {
  content: attr(data-tip);
  position: absolute;
  left: 0;
  bottom: calc(100% + 8px);
  z-index: 5;
  min-width: 14rem;
  max-width: min(22rem, 70vw);
  padding: 0.5rem 0.65rem;
  border-radius: 0.55rem;
  font-size: 0.72rem;
  font-weight: 500;
  line-height: 1.35;
  color: #ecfdf5;
  background: rgba(6, 20, 16, 0.88);
  border: 1px solid rgba(18, 201, 107, 0.4);
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.35);
  backdrop-filter: blur(8px);
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity 0.15s ease, visibility 0.15s ease;
}
.viper-print-field[data-tip]:hover::after,
.viper-print-field[data-tip]:focus-within::after,
.viper-print-toggle[data-tip]:hover::after,
.viper-print-dialog__foot .viper-btn[data-tip]:hover::after,
.viper-print-dialog__foot .viper-btn[data-tip]:focus-visible::after {
  opacity: 1;
  visibility: visible;
}

.viper-print-dialog__panel--xl {
  width: min(720px, 100%);
  max-height: min(92vh, 900px);
}
.viper-print-dialog__sections {
  display: flex;
  flex-direction: column;
  gap: 0.85rem;
}
.viper-print-section h4 {
  margin: 0 0 0.45rem;
  font-size: 0.72rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: #12c96b;
}
body.viper-print-rotate180 .viper-print-root {
  transform: rotate(180deg);
}
body.viper-print-mirror .viper-print-root {
  transform: scaleX(-1);
}
body.viper-print-center .viper-print-img,
body.viper-print-center .viper-print-html {
  margin-left: auto !important;
  margin-right: auto !important;
}
body.viper-print-scale-custom .viper-print-root {
  zoom: var(--viper-print-zoom, 1);
}
body.viper-print-nup-6 .viper-print-pages,
body.viper-print-nup-9 .viper-print-pages,
body.viper-print-nup-16 .viper-print-pages {
  display: grid !important;
  gap: 0.15in;
}
body.viper-print-nup-6 .viper-print-pages { grid-template-columns: repeat(3, 1fr); }
body.viper-print-nup-9 .viper-print-pages { grid-template-columns: repeat(3, 1fr); }
body.viper-print-nup-16 .viper-print-pages { grid-template-columns: repeat(4, 1fr); }
body.viper-print-nup-6 .viper-print-page,
body.viper-print-nup-9 .viper-print-page,
body.viper-print-nup-16 .viper-print-page {
  page-break-after: auto !important;
  break-after: auto !important;
}

/* Primary Start task */
.viper-btn--primary,
button.viper-btn.viper-btn--primary {
  background: linear-gradient(135deg, #12c96b, #0d9f56) !important;
  color: #04140e !important;
  border: 1px solid rgba(18, 201, 107, 0.85) !important;
  font-weight: 700 !important;
  box-shadow: 0 0 0 1px rgba(18, 201, 107, 0.25), 0 8px 24px rgba(18, 201, 107, 0.25);
}
.viper-btn--primary:hover,
button.viper-btn.viper-btn--primary:hover {
  filter: brightness(1.06);
  color: #04140e !important;
}
.viper-toolbar .viper-action-start {
  order: -1;
  min-width: 8.5rem;
}
.viper-process-panel__head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 0.75rem;
  flex-wrap: wrap;
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1rem;
  flex-wrap: wrap;
}
.viper-batch-count {
  margin: 0.35rem 0 0 !important;
  font-size: 0.85rem !important;
  font-weight: 700 !important;
  color: #12c96b !important;
}
.viper-batch-files,
.viper-process-files.viper-batch-files {
  max-height: min(320px, 40vh);
  overflow: auto;
  padding: 0.35rem;
  border-radius: 0.75rem;
  border: 1px solid rgba(18, 201, 107, 0.22);
  background: rgba(0, 0, 0, 0.2);
}
.viper-process-files__grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(11rem, 1fr));
  gap: 0.45rem;
}
.viper-process-file-chip {
  display: grid;
  grid-template-columns: auto 1fr;
  grid-template-rows: auto auto;
  gap: 0.1rem 0.45rem;
  padding: 0.45rem 0.55rem;
  border-radius: 0.55rem;
  border: 1px solid rgba(18, 201, 107, 0.2);
  background: rgba(6, 24, 18, 0.65);
  cursor: pointer;
  font-size: 0.78rem;
  color: #ecfdf5;
}
.viper-process-file-chip__n {
  grid-row: 1 / 3;
  align-self: center;
  font-weight: 700;
  color: #12c96b;
  font-variant-numeric: tabular-nums;
}
.viper-process-file-chip__name {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-weight: 600;
}
.viper-process-file-chip__kind {
  opacity: 0.75;
  font-size: 0.7rem;
  text-transform: lowercase;
}
.viper-process-file-chip.is-running {
  border-color: rgba(250, 204, 21, 0.55);
  box-shadow: 0 0 0 1px rgba(250, 204, 21, 0.25);
}
.viper-process-file-chip.is-ok {
  border-color: rgba(18, 201, 107, 0.55);
}
.viper-process-file-chip.is-err {
  border-color: rgba(248, 113, 113, 0.55);
}

/* Batch files — always visible when populated */
.viper-process-panel {
  display: block !important;
  visibility: visible !important;
  opacity: 1 !important;
}
.viper-batch-files,
.viper-process-files {
  display: block !important;
  min-height: 3rem;
  max-height: min(420px, 50vh);
  overflow: auto;
}
.viper-process-files__grid {
  display: grid !important;
  grid-template-columns: repeat(auto-fill, minmax(11rem, 1fr));
  gap: 0.5rem;
}
.viper-process-file-chip {
  color: #ecfdf5 !important;
  background: rgba(6, 24, 18, 0.85) !important;
  border: 1px solid rgba(18, 201, 107, 0.35) !important;
}
.viper-process-file-chip__name {
  color: #ffffff !important;
}
.viper-process-file-chip__kind {
  color: #a7f3d0 !important;
}

/* Batch files — record table (name, size, type) */
.viper-batch-table-wrap {
  width: 100%;
  overflow: auto;
  max-height: min(420px, 50vh);
  border-radius: 0.75rem;
  border: 1px solid rgba(18, 201, 107, 0.28);
  background: rgba(0, 0, 0, 0.22);
}
.viper-batch-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.82rem;
  color: #ecfdf5;
}
.viper-batch-table thead th {
  position: sticky;
  top: 0;
  z-index: 1;
  text-align: left;
  padding: 0.55rem 0.75rem;
  font-size: 0.7rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: #12c96b;
  background: rgba(6, 24, 18, 0.95);
  border-bottom: 1px solid rgba(18, 201, 107, 0.3);
}
.viper-batch-table tbody td {
  padding: 0.55rem 0.75rem;
  border-bottom: 1px solid rgba(18, 201, 107, 0.12);
  vertical-align: middle;
}
.viper-batch-row {
  cursor: pointer;
  transition: background 0.12s ease;
}
.viper-batch-row:hover,
.viper-batch-row:focus {
  background: rgba(18, 201, 107, 0.1);
  outline: none;
}
.viper-batch-row__n {
  width: 2.5rem;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  color: #12c96b;
}
.viper-batch-row__name {
  font-weight: 600;
  color: #fff;
  max-width: 18rem;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.viper-batch-row__size {
  white-space: nowrap;
  color: #a7f3d0;
  font-variant-numeric: tabular-nums;
}
.viper-batch-row__type {
  white-space: nowrap;
  color: #86efac;
  text-transform: uppercase;
  font-size: 0.75rem;
  letter-spacing: 0.03em;
}

/* Force batch list visibility */
#viper-batch-list,
.viper-batch-files {
  display: block !important;
  visibility: visible !important;
  min-height: 4rem;
}
.viper-process-panel {
  display: block !important;
  visibility: visible !important;
}

.viper-history-download {
  min-height: 34px;
  padding: 0.25rem 0.65rem;
  font-size: 0.72rem;
}

/* Live crypto prices + pay assets */
.viper-live-prices {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(9.5rem, 1fr));
  gap: 0.65rem;
  margin: 1rem 0 0.35rem;
}
.viper-live-price {
  border-radius: 12px;
  border: 1px solid rgba(18, 201, 107, 0.28);
  background: rgba(6, 24, 18, 0.65);
  padding: 0.75rem 0.85rem;
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
}
.viper-live-price__sym {
  font-size: 0.72rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: #12c96b;
  font-weight: 700;
}
.viper-live-price__val {
  font-size: 1.15rem;
  color: #fff;
  font-variant-numeric: tabular-nums;
}
.viper-live-price small {
  font-size: 0.72rem;
  color: #a7f3d0;
}
.viper-live-prices__note {
  font-size: 0.78rem;
  color: var(--viper-muted, #94a3b8);
  margin: 0 0 1rem;
}
.viper-pay-assets {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr));
  gap: 0.55rem;
  margin: 1rem 0 0.5rem;
}
.viper-pay-asset {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.2rem;
  min-height: 3.4rem;
}
.viper-pay-asset small {
  font-weight: 600;
  opacity: 0.9;
  font-variant-numeric: tabular-nums;
}
.viper-crypto-email-label {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  margin: 1rem 0 0.5rem;
  font-size: 0.85rem;
  color: #ecfdf5;
  max-width: 28rem;
}
.viper-crypto-email-label input {
  border-radius: 10px;
  border: 1px solid rgba(18, 201, 107, 0.35);
  background: rgba(0, 0, 0, 0.35);
  color: #fff;
  padding: 0.55rem 0.75rem;
}

.viper-print-dest-hint {
  grid-column: 1 / -1;
  margin-top: 0.35rem;
  padding: 0.75rem 0.9rem;
  border-radius: 10px;
  border: 1px solid rgba(18, 201, 107, 0.35);
  background: rgba(18, 201, 107, 0.08);
  color: #ecfdf5;
  font-size: 0.82rem;
  line-height: 1.45;
}
.viper-print-dest-hint strong {
  display: block;
  color: #12c96b;
  margin-bottom: 0.25rem;
}
.viper-print-dest-hint p {
  margin: 0;
  color: #cbd5e1;
}

[data-jspm-status] {
  display: block;
  margin-bottom: 0.25rem;
}
[data-jspm-help] a {
  color: #12c96b;
  text-decoration: underline;
}
#viper-print-jspm-printer {
  min-width: 14rem;
}

/* Coach live learning */
.viper-coach__learn {
  margin: 0 0 0.75rem;
  padding: 0.65rem 0.7rem;
  border-radius: 10px;
  border: 1px solid rgba(18, 201, 107, 0.28);
  background: rgba(0, 0, 0, 0.25);
}
.viper-coach__learn-label {
  display: block;
  font-size: 0.68rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: #12c96b;
  font-weight: 700;
  margin-bottom: 0.4rem;
}
.viper-coach__learn-list {
  list-style: none;
  margin: 0;
  padding: 0;
  max-height: 9.5rem;
  overflow: auto;
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
}
.viper-coach__learn-item {
  display: flex;
  flex-direction: column;
  gap: 0.1rem;
  padding: 0.35rem 0.4rem;
  border-radius: 6px;
  background: rgba(18, 201, 107, 0.06);
}
.viper-coach__learn-name {
  font-size: 0.78rem;
  font-weight: 600;
  color: #fff;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.viper-coach__learn-meta {
  font-size: 0.68rem;
  color: #a7f3d0;
}
.viper-coach__learn-list .is-empty,
.viper-coach__learn-more {
  font-size: 0.75rem;
  color: #94a3b8;
  padding: 0.25rem 0.35rem;
}

.viper-live-price__brand {
  display: flex;
  align-items: center;
  gap: 0.45rem;
  margin-bottom: 0.2rem;
}
.viper-live-price__logo {
  width: 28px;
  height: 28px;
  border-radius: 50%;
  flex-shrink: 0;
  box-shadow: 0 0 0 1px rgba(255,255,255,0.12);
}
.viper-live-price__sym {
  font-size: 0.85rem;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: #12c96b;
  font-weight: 800;
}

/* ——— Viper Crypto Terminal (professional checkout) ——— */
.viper-terminal {
  max-width: 960px;
  margin: 0 auto;
  border-radius: 1.15rem;
  border: 1px solid rgba(18, 201, 107, 0.35);
  background:
    linear-gradient(165deg, rgba(8, 32, 24, 0.98) 0%, rgba(4, 14, 12, 0.98) 55%, rgba(6, 20, 16, 0.98) 100%);
  box-shadow:
    0 0 0 1px rgba(18, 201, 107, 0.08),
    0 24px 48px rgba(0, 0, 0, 0.45),
    inset 0 1px 0 rgba(255, 255, 255, 0.04);
  overflow: hidden;
}
.viper-terminal__header {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  padding: 1rem 1.25rem;
  border-bottom: 1px solid rgba(18, 201, 107, 0.22);
  background: rgba(18, 201, 107, 0.06);
}
.viper-terminal__brand {
  display: flex;
  align-items: center;
  gap: 0.75rem;
}
.viper-terminal__mark {
  display: grid;
  place-items: center;
  width: 2.4rem;
  height: 2.4rem;
  border-radius: 0.65rem;
  background: linear-gradient(145deg, #12c96b, #0a7a42);
  color: #04140f;
  font-size: 1.1rem;
  font-weight: 800;
  box-shadow: 0 0 18px rgba(18, 201, 107, 0.35);
}
.viper-terminal__brand strong {
  display: block;
  color: #fff;
  font-size: 1rem;
  letter-spacing: 0.02em;
}
.viper-terminal__brand span {
  display: block;
  font-size: 0.75rem;
  color: #86efac;
}
.viper-terminal__badges {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
}
.viper-terminal__badge {
  font-size: 0.65rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  padding: 0.3rem 0.55rem;
  border-radius: 999px;
  border: 1px solid rgba(148, 163, 184, 0.35);
  color: #cbd5e1;
  background: rgba(0, 0, 0, 0.25);
}
.viper-terminal__badge.is-live {
  border-color: rgba(18, 201, 107, 0.5);
  color: #12c96b;
  background: rgba(18, 201, 107, 0.1);
}
.viper-terminal__badge.is-live::before {
  content: "";
  display: inline-block;
  width: 0.4rem;
  height: 0.4rem;
  margin-right: 0.35rem;
  border-radius: 50%;
  background: #12c96b;
  color: #12c96b;
  box-shadow: 0 0 6px #12c96b;
  vertical-align: middle;
  animation: viper-neon-ball-pulse var(--viper-pulse-live) ease-in-out infinite;
}


.viper-terminal__body {
  display: grid;
  grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.25fr);
  gap: 0;
}
.viper-terminal__body--stack {
  grid-template-columns: 1fr;
}
@media (max-width: 820px) {
  .viper-terminal__body {
    grid-template-columns: 1fr;
  }
}
.viper-terminal__order {
  padding: 1.25rem;
  border-right: 1px solid rgba(18, 201, 107, 0.15);
  background: rgba(0, 0, 0, 0.2);
}
@media (max-width: 820px) {
  .viper-terminal__order {
    border-right: none;
    border-bottom: 1px solid rgba(18, 201, 107, 0.15);
  }
}
.viper-terminal__order h3 {
  margin: 0 0 1rem;
  font-size: 0.72rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: #12c96b;
}
.viper-terminal__line {
  display: flex;
  justify-content: space-between;
  gap: 0.75rem;
  padding: 0.45rem 0;
  font-size: 0.88rem;
  color: #e2e8f0;
  border-bottom: 1px solid rgba(255, 255, 255, 0.05);
}
.viper-terminal__line.is-muted {
  color: #94a3b8;
  font-size: 0.8rem;
}
.viper-terminal__total {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  margin-top: 1rem;
  padding: 0.85rem 0.9rem;
  border-radius: 0.75rem;
  background: rgba(18, 201, 107, 0.1);
  border: 1px solid rgba(18, 201, 107, 0.28);
}
.viper-terminal__total span {
  font-size: 0.8rem;
  color: #a7f3d0;
}
.viper-terminal__total strong {
  font-size: 1.25rem;
  color: #fff;
  font-variant-numeric: tabular-nums;
}
.viper-terminal__fine {
  margin: 0.85rem 0 0;
  font-size: 0.75rem;
  line-height: 1.45;
  color: #94a3b8;
}
.viper-terminal__pay {
  padding: 1.1rem 1.25rem 1.25rem;
  display: flex;
  flex-direction: column;
  gap: 1.15rem;
}
.viper-terminal__step {
  display: grid;
  grid-template-columns: 1.75rem minmax(0, 1fr);
  gap: 0.75rem;
  align-items: start;
}
.viper-terminal__step-num {
  display: grid;
  place-items: center;
  width: 1.75rem;
  height: 1.75rem;
  border-radius: 50%;
  font-size: 0.75rem;
  font-weight: 800;
  color: #04140f;
  background: #12c96b;
  box-shadow: 0 0 12px rgba(18, 201, 107, 0.35);
}
.viper-terminal__step-body h4 {
  margin: 0.15rem 0 0.65rem;
  font-size: 0.9rem;
  color: #f8fafc;
}
.viper-terminal .viper-live-prices {
  margin: 0;
}
.viper-terminal .viper-live-price {
  background: rgba(0, 0, 0, 0.35);
}
.viper-terminal .viper-wallet-bar {
  flex-direction: column;
  align-items: stretch;
  gap: 0.65rem;
  padding: 0.75rem;
  border-radius: 0.75rem;
  border: 1px solid rgba(18, 201, 107, 0.2);
  background: rgba(0, 0, 0, 0.25);
}
.viper-terminal .viper-wallet-bar__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
}
.viper-terminal .viper-pay-assets {
  margin: 0;
}
.viper-terminal .viper-pay-asset {
  flex-direction: row;
  align-items: center;
  gap: 0.5rem;
  min-height: 3.1rem;
  padding: 0.55rem 0.75rem;
  border: 1px solid rgba(18, 201, 107, 0.28);
  background: rgba(0, 0, 0, 0.35);
  transition: border-color 0.15s ease, box-shadow 0.15s ease, transform 0.12s ease;
}
.viper-terminal .viper-pay-asset:hover,
.viper-terminal .viper-pay-asset:focus {
  border-color: #12c96b;
  box-shadow: 0 0 0 1px rgba(18, 201, 107, 0.35), 0 8px 20px rgba(0, 0, 0, 0.25);
  transform: translateY(-1px);
}
.viper-terminal .viper-pay-asset img {
  width: 22px;
  height: 22px;
  border-radius: 50%;
  flex-shrink: 0;
}
.viper-pay-asset__label {
  font-weight: 700;
  color: #fff;
  flex: 1;
  text-align: left;
}
.viper-terminal .viper-pay-asset small {
  margin-left: auto;
  color: #86efac;
  font-variant-numeric: tabular-nums;
}
.viper-terminal__status {
  min-height: 1.25rem;
  margin: 0.65rem 0 0;
  font-size: 0.82rem;
  color: #a7f3d0;
}
.viper-terminal__footer {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 0.5rem;
  padding: 0.75rem 1.25rem;
  border-top: 1px solid rgba(18, 201, 107, 0.18);
  background: rgba(0, 0, 0, 0.3);
  font-size: 0.72rem;
  color: #94a3b8;
}
.viper-crypto-checkout {
  padding-top: 2.5rem;
  padding-bottom: 2rem;
}
.viper-crypto-section .viper-terminal {
  margin-top: 0.5rem;
}


/* ========== Mobile parity — same design language as desktop ========== */
/* viper-mobile-parity */
html {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}
body {
  overflow-x: hidden;
}
.viper-wrap {
  width: 100%;
  max-width: 1120px;
  margin-left: auto;
  margin-right: auto;
  padding-left: max(1rem, env(safe-area-inset-left));
  padding-right: max(1rem, env(safe-area-inset-right));
  box-sizing: border-box;
}

/* Touch targets without changing desktop look */
@media (hover: none) and (pointer: coarse) {
  .viper-btn,
  .viper-nav a,
  .viper-pay-asset,
  .viper-file-actions .viper-btn {
    min-height: 44px;
  }
  .viper-drop {
    min-height: 9rem;
  }
}

@media (max-width: 1099px) {
  /* Coach stays in flow with identical card chrome */
  .viper-workspace--coach {
    display: flex;
    flex-direction: column;
    gap: 1rem;
  }
  .viper-workspace--coach > .viper-coach {
    order: -1;
    position: relative;
    top: auto;
    width: 100%;
    max-width: none;
  }
  .viper-coach__learn-list {
    max-height: 7.5rem;
  }
}

@media (max-width: 860px) {
  .viper-section {
    padding-top: 1.5rem;
    padding-bottom: 1.5rem;
  }
  .viper-workspace {
    padding: 1rem;
    border-radius: 14px;
  }
  .viper-site-header {
    padding-top: env(safe-area-inset-top);
  }
  .viper-site-header__inner {
    flex-wrap: wrap;
    align-items: center;
  }
  .viper-header-tools {
    width: 100%;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
  }
  .viper-nav {
    display: flex;
    flex-wrap: wrap;
    gap: 0.25rem;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    max-width: 100%;
  }
  .viper-header-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
  }

  /* Toolbar: same buttons, wrap cleanly */
  .viper-toolbar {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
  }
  .viper-toolbar .viper-btn,
  .viper-toolbar-pair {
    flex: 1 1 auto;
  }
  .viper-toolbar-pair {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
  }

  /* Drop zone full width — same visual */
  .viper-drop {
    padding: 1.25rem 1rem;
    text-align: center;
  }

  /* Process / batch panels */
  .viper-process-panel__head {
    flex-wrap: wrap;
    gap: 0.65rem;
  }
  .viper-process-panel__head .viper-btn {
    width: 100%;
  }
  .viper-batch-files,
  .viper-process-files {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
  .viper-batch-row,
  .viper-process-files table {
    min-width: 100%;
  }

  /* File cards */
  .viper-file-grid {
    grid-template-columns: 1fr !important;
  }
  .viper-file-actions {
    flex-wrap: wrap;
  }

  /* History rows */
  .viper-history-row {
    flex-wrap: wrap;
    gap: 0.5rem;
  }
  .viper-history-actions {
    width: 100%;
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem;
  }
  .viper-history-actions .viper-btn {
    flex: 1 1 auto;
  }

  /* Pricing grid stacks but cards keep desktop chrome */
  .viper-pricing-grid {
    grid-template-columns: 1fr !important;
  }
  .viper-price-card {
    width: 100%;
  }

  /* Print dialog — full-screen sheet, same dark glass */
  .viper-print-dialog,
  [data-print-dialog] {
    width: min(100vw - 1rem, 40rem) !important;
    max-height: min(92vh, 900px);
    overflow: auto;
    -webkit-overflow-scrolling: touch;
    margin: 0.5rem;
  }
  .viper-print-dialog__grid {
    grid-template-columns: 1fr !important;
  }
  .viper-print-dialog__actions {
    flex-wrap: wrap;
    position: sticky;
    bottom: 0;
    background: rgba(4, 20, 15, 0.95);
    padding-top: 0.5rem;
  }
  .viper-print-dialog__actions .viper-btn {
    flex: 1 1 40%;
  }

  /* Terminal already stacks; tighten padding */
  .viper-terminal__header,
  .viper-terminal__pay,
  .viper-terminal__order,
  .viper-terminal__footer {
    padding-left: 1rem;
    padding-right: 1rem;
  }
  .viper-pay-assets {
    grid-template-columns: 1fr 1fr !important;
  }
  .viper-live-prices {
    grid-template-columns: 1fr 1fr !important;
  }
}

@media (max-width: 560px) {
  .viper-wrap {
    padding-left: max(0.75rem, env(safe-area-inset-left));
    padding-right: max(0.75rem, env(safe-area-inset-right));
  }
  .viper-brand__text {
    font-size: 1.05rem;
  }
  .viper-workspace {
    padding: 0.85rem;
    border-radius: 12px;
  }
  .viper-pay-assets {
    grid-template-columns: 1fr !important;
  }
  .viper-live-prices {
    grid-template-columns: 1fr 1fr !important;
  }
  .viper-terminal .viper-pay-asset {
    width: 100%;
  }
  .viper-coach {
    padding: 0.85rem;
  }
  .viper-toolbar .viper-btn {
    font-size: 0.82rem;
    padding-left: 0.7rem;
    padding-right: 0.7rem;
  }
  /* OCR / scan panels */
  .viper-ocr-panel,
  .viper-scan-panel {
    padding: 0.85rem;
  }
  .viper-ocr-options {
    flex-direction: column;
  }
  .viper-ocr-options label {
    width: 100%;
  }
}

/* Prevent iOS zoom on form focus while keeping 16px fields */
@media (max-width: 860px) {
  input.viper-crypto-input,
  .viper-crypto-email-label input,
  .viper-print-field input,
  .viper-print-field select,
  select[data-print-opt],
  input[data-print-opt],
  #viper-ocr-lang,
  #viper-ocr-format {
    font-size: 16px !important;
  }
}

/* Landscape phones — keep toolbar usable */
@media (max-width: 900px) and (orientation: landscape) {
  .viper-workspace--coach > .viper-coach {
    max-height: 40vh;
    overflow: auto;
  }
}

/* Account portal */
.viper-account-portal .viper-account-hero {
  margin-bottom: 1.5rem;
}
.viper-account-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 1.25rem;
}
.viper-account-card {
  border-radius: 1rem;
  border: 1px solid rgba(18, 201, 107, 0.28);
  background: rgba(6, 24, 18, 0.85);
  padding: 1.25rem;
  box-shadow: 0 16px 40px rgba(0,0,0,0.35);
}
.viper-account-card h2 {
  margin: 0 0 0.35rem;
  font-size: 1.15rem;
  color: #fff;
}
.viper-account-card > p {
  margin: 0 0 1rem;
  color: #94a3b8;
  font-size: 0.88rem;
}
.viper-account-form {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}
.viper-account-form label {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  font-size: 0.82rem;
  color: #a7f3d0;
}
.viper-account-form input,
.viper-account-form select {
  border-radius: 10px;
  border: 1px solid rgba(18, 201, 107, 0.35);
  background: rgba(0,0,0,0.35);
  color: #fff;
  padding: 0.6rem 0.75rem;
  font-size: 16px;
}
.viper-account-check {
  flex-direction: row !important;
  align-items: center;
  gap: 0.5rem !important;
  color: #cbd5e1 !important;
}
.viper-account-meta {
  display: flex;
  flex-direction: column;
  gap: 0.65rem;
  margin-bottom: 1rem;
}
.viper-account-meta div {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  padding-bottom: 0.45rem;
  border-bottom: 1px solid rgba(255,255,255,0.06);
  font-size: 0.9rem;
}
.viper-account-meta span { color: #94a3b8; }
.viper-account-meta strong { color: #fff; }
.viper-account-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
}
.viper-wallet-list {
  list-style: none;
  margin: 0 0 1rem;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}
.viper-wallet-list li {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
  padding: 0.5rem 0.65rem;
  border-radius: 8px;
  background: rgba(0,0,0,0.3);
  border: 1px solid rgba(18, 201, 107, 0.2);
}
.viper-wallet-list code {
  font-size: 0.75rem;
  color: #86efac;
  word-break: break-all;
}
.viper-account-hint {
  margin-top: 0.85rem;
  font-size: 0.78rem;
  color: #94a3b8;
}
.viper-notice--warn {
  border: 1px solid rgba(250, 204, 21, 0.4);
  background: rgba(250, 204, 21, 0.08);
  color: #fef9c3;
  padding: 0.85rem 1rem;
  border-radius: 12px;
  margin-bottom: 1.25rem;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.75rem;
}
.viper-notice--err {
  border: 1px solid rgba(248, 113, 113, 0.45);
  background: rgba(248, 113, 113, 0.1);
  color: #fecaca;
  padding: 0.85rem 1rem;
  border-radius: 12px;
  margin-bottom: 1.25rem;
}

/* Account status color policy */
.viper-status-bar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.65rem 1rem;
  padding: 0.85rem 1rem;
  border-radius: 12px;
  margin-bottom: 1rem;
  border: 1px solid rgba(255,255,255,0.08);
  background: rgba(0,0,0,0.28);
}
.viper-status-dot {
  width: 0.7rem;
  height: 0.7rem;
  border-radius: 50%;
  flex-shrink: 0;
  background: #12c96b;
  color: #12c96b;
  box-shadow: 0 0 8px currentColor;
  animation: viper-neon-ball-pulse var(--viper-pulse-status) ease-in-out infinite;
}


.viper-status-bar.is-green {
  border-color: rgba(18, 201, 107, 0.45);
  background: rgba(18, 201, 107, 0.1);
}
.viper-status-bar.is-green .viper-status-dot { background: #12c96b; color: #12c96b; }
.viper-status-bar.is-yellow {
  border-color: rgba(250, 204, 21, 0.5);
  background: rgba(250, 204, 21, 0.1);
  color: #fef9c3;
}
.viper-status-bar.is-yellow .viper-status-dot { background: #facc15; color: #facc15; }
.viper-status-bar.is-red {
  border-color: rgba(248, 113, 113, 0.5);
  background: rgba(248, 113, 113, 0.1);
  color: #fecaca;
}
.viper-status-bar.is-red .viper-status-dot { background: #f87171; color: #f87171; }
.viper-status-bar.is-gray {
  border-color: rgba(148, 163, 184, 0.35);
  color: #cbd5e1;
}
.viper-status-bar.is-gray .viper-status-dot { background: #94a3b8; color: #94a3b8; }
.viper-status-balance, .viper-status-balance-block strong {
  font-weight: 700;
  color: #fff;
}
.viper-status-balance-block {
  margin-left: auto;
  text-align: right;
  font-size: 0.8rem;
  color: #94a3b8;
}
.viper-status-balance-block strong {
  display: block;
  font-size: 1.15rem;
}
.viper-status-policy {
  font-size: 0.78rem;
  color: #94a3b8;
  margin: -0.35rem 0 1rem;
}
.viper-workspace-gate {
  max-width: 32rem;
  margin: 2rem auto;
  text-align: center;
}
.viper-account-card--wide {
  grid-column: 1 / -1;
}
.viper-pay-history {
  overflow-x: auto;
}
.viper-pay-history table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.82rem;
}
.viper-pay-history th,
.viper-pay-history td {
  text-align: left;
  padding: 0.55rem 0.4rem;
  border-bottom: 1px solid rgba(255,255,255,0.06);
  color: #e2e8f0;
}
.viper-pay-history th {
  color: #12c96b;
  font-size: 0.72rem;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}
.viper-pay-history code {
  font-size: 0.72rem;
  color: #86efac;
}

.viper-btn--danger,
button.viper-btn.viper-btn--danger {
  background: linear-gradient(135deg, #dc2626, #b91c1c) !important;
  border-color: #f87171 !important;
  color: #fff !important;
}
.viper-btn--danger:hover {
  filter: brightness(1.08);
}
.viper-account-card--danger {
  border-color: rgba(248, 113, 113, 0.4);
  background: rgba(60, 10, 10, 0.35);
}
.viper-account-card--danger h2 {
  color: #fecaca;
}

.viper-terminal__tabs {
  display: flex;
  gap: 0.35rem;
  margin-bottom: 1rem;
  padding: 0.25rem;
  border-radius: 12px;
  background: rgba(0,0,0,0.35);
  border: 1px solid rgba(18, 201, 107, 0.2);
}
.viper-terminal__tab {
  flex: 1;
  border: none;
  cursor: pointer;
  padding: 0.65rem 0.75rem;
  border-radius: 10px;
  font-weight: 700;
  font-size: 0.88rem;
  color: #94a3b8;
  background: transparent;
  transition: background 0.15s ease, color 0.15s ease;
}
.viper-terminal__tab:hover {
  color: #e2e8f0;
}
.viper-terminal__tab.is-active {
  color: #04140f;
  background: linear-gradient(135deg, #34d399, #12c96b);
  box-shadow: 0 0 16px rgba(18, 201, 107, 0.35);
}
.viper-terminal__panel[hidden] {
  display: none !important;
}
.viper-terminal__panel-lead {
  margin: 0 0 0.75rem;
  font-size: 0.85rem;
  color: #94a3b8;
  line-height: 1.45;
}
.viper-terminal__card-points {
  margin: 0 0 1rem;
  padding-left: 1.1rem;
  color: #cbd5e1;
  font-size: 0.84rem;
  line-height: 1.5;
}
.viper-terminal__card-points li {
  margin-bottom: 0.25rem;
}

.viper-task__batch-count {
  margin: 0.25rem 0 0.15rem;
  font-size: 0.8rem;
  color: #a7f3d0;
  display: flex;
  align-items: center;
  gap: 0.4rem;
}
.viper-task__batch-badge {
  display: inline-grid;
  place-items: center;
  min-width: 1.5rem;
  height: 1.5rem;
  padding: 0 0.35rem;
  border-radius: 999px;
  font-weight: 800;
  font-size: 0.75rem;
  color: #04140f;
  background: #12c96b;
  box-shadow: 0 0 10px rgba(18, 201, 107, 0.35);
  animation: viper-neon-ball-pulse var(--viper-pulse-badge) ease-in-out infinite;
}

/* Assignment name dialog */
.viper-name-modal {
  position: fixed;
  inset: 0;
  z-index: 2147483600;
  display: grid;
  place-items: center;
  padding: 1rem;
  background: rgba(0, 0, 0, 0.65);
  backdrop-filter: blur(6px);
}
.viper-name-modal__panel {
  width: min(100%, 26rem);
  border-radius: 1rem;
  border: 1px solid rgba(18, 201, 107, 0.4);
  background: linear-gradient(165deg, rgba(8, 32, 24, 0.98), rgba(4, 14, 12, 0.98));
  box-shadow: 0 24px 48px rgba(0, 0, 0, 0.5);
  padding: 1.25rem 1.35rem 1.35rem;
}
.viper-name-modal__panel h3 {
  margin: 0 0 0.35rem;
  color: #fff;
  font-size: 1.15rem;
}
.viper-name-modal__lead {
  margin: 0 0 1rem;
  font-size: 0.88rem;
  color: #94a3b8;
  line-height: 1.45;
}
.viper-name-modal__label {
  display: block;
  font-size: 0.78rem;
  color: #12c96b;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  margin-bottom: 0.35rem;
}
.viper-name-modal__input {
  width: 100%;
  box-sizing: border-box;
  border-radius: 10px;
  border: 1px solid rgba(18, 201, 107, 0.4);
  background: rgba(0, 0, 0, 0.35);
  color: #fff;
  padding: 0.7rem 0.85rem;
  font-size: 16px;
  margin-bottom: 0.35rem;
}
.viper-name-modal__input:focus {
  outline: none;
  border-color: #12c96b;
  box-shadow: 0 0 0 2px rgba(18, 201, 107, 0.25);
}
.viper-name-modal__input.is-invalid {
  border-color: #f87171;
}
.viper-name-modal__hint {
  margin: 0 0 1rem;
  font-size: 0.75rem;
  color: #64748b;
}
.viper-name-modal__actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 0.5rem;
}

.viper-assignments-page .viper-history-list {
  display: flex;
  flex-direction: column;
  gap: 0.65rem;
}
.viper-assignments-page .viper-history-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  padding: 0.85rem 1rem;
  border-radius: 12px;
  border: 1px solid rgba(18, 201, 107, 0.25);
  background: rgba(0, 0, 0, 0.28);
}
.viper-assignments-page .viper-history-row__main {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
  min-width: 0;
  flex: 1;
}
.viper-assignments-page .viper-history-row__main strong {
  color: #fff;
  font-size: 0.95rem;
}
.viper-assignments-page .viper-history-row__meta {
  color: #94a3b8;
  font-size: 0.78rem;
}
.viper-assignments-page .viper-history-empty {
  color: #94a3b8;
  padding: 1rem 0;
}

.viper-batch-name-label {
  display: block;
  margin-top: 0.75rem;
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.03em;
  text-transform: uppercase;
  color: #12c96b;
}
.viper-batch-name-input {
  display: block;
  width: 100%;
  max-width: 28rem;
  margin-top: 0.4rem;
  box-sizing: border-box;
  border-radius: 10px;
  border: 1px solid rgba(18, 201, 107, 0.45);
  background: rgba(0, 0, 0, 0.35);
  color: #fff;
  padding: 0.65rem 0.85rem;
  font-size: 16px;
  font-weight: 600;
}
.viper-batch-name-input:focus {
  outline: none;
  border-color: #12c96b;
  box-shadow: 0 0 0 2px rgba(18, 201, 107, 0.25);
}
.viper-batch-name-input.is-invalid {
  border-color: #f87171;
  box-shadow: 0 0 0 2px rgba(248, 113, 113, 0.2);
}
.viper-batch-name-hint {
  margin: 0.35rem 0 0;
  font-size: 0.78rem;
  color: #94a3b8;
  font-weight: 500;
  text-transform: none;
  letter-spacing: 0;
}

.viper-price-card__plan-label {
  display: inline-block;
  font-size: 1.65rem;
  font-weight: 750;
  letter-spacing: -0.02em;
  color: #fff;
  line-height: 1.2;
}
.viper-price-card--pro .viper-price-card__plan-label {
  color: #12c96b;
}

.viper-batch-row__service {
  white-space: nowrap;
}
.viper-service-pill {
  display: inline-flex;
  align-items: center;
  padding: 0.2rem 0.55rem;
  border-radius: 999px;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.03em;
  border: 1px solid rgba(255, 255, 255, 0.12);
  background: rgba(255, 255, 255, 0.06);
  color: #e2e8f0;
}
.viper-service-pill--combine {
  color: #04140f;
  background: #12c96b;
  border-color: rgba(18, 201, 107, 0.8);
}
.viper-service-pill--scan {
  color: #e0f2fe;
  background: rgba(14, 165, 233, 0.25);
  border-color: rgba(14, 165, 233, 0.5);
}
.viper-service-pill--print {
  color: #fce7f3;
  background: rgba(236, 72, 153, 0.22);
  border-color: rgba(236, 72, 153, 0.45);
}
.viper-service-pill--ocr {
  color: #fef9c3;
  background: rgba(234, 179, 8, 0.22);
  border-color: rgba(234, 179, 8, 0.5);
}
