.grad-text,.q-grad-text{color:var(--accent);}

.eyebrow,.q-eyebrow{font-family:var(--font-body);font-weight:600;font-size:var(--text-eyebrow);text-transform:uppercase;letter-spacing:.16em;color:var(--accent);}
.marker,.q-marker{display:inline-flex;align-items:center;gap:10px;}
.marker::before,.q-marker::before{content:"";width:22px;height:2px;background:var(--accent);border-radius:2px;flex:none;}

/* ---------- BUTTONS ---------- */
.btn,.q-btn{
  --py:13px;--px:24px;
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  font-family:var(--font-body);font-weight:600;font-size:var(--text-sm);line-height:1;
  padding:var(--py) var(--px);border-radius:var(--r-pill);border:1px solid transparent;
  cursor:pointer;white-space:nowrap;text-decoration:none;
  transition:background var(--dur) var(--ease),color var(--dur) var(--ease),
             border-color var(--dur) var(--ease),transform var(--dur-fast) var(--ease),
             box-shadow var(--dur) var(--ease);
}
.btn svg,.q-btn svg{width:18px;height:18px;}
.btn:focus-visible,.q-btn:focus-visible{outline:none;box-shadow:0 0 0 4px var(--ring);}
.btn:active,.q-btn:active{transform:translateY(1px);}
.btn.primary,.q-btn.primary{background:var(--action-bg);color:#fff;box-shadow:var(--shadow-sm);}
.btn.primary:hover,.q-btn.primary:hover{background:var(--action-hover);box-shadow:var(--shadow-accent);}
.btn.primary:active,.q-btn.primary:active{background:var(--action-press);}
.btn.gradient,.q-btn.gradient{
  background:var(--gradient);background-size:200% 100%;background-position:0 0;
  /* origin+clip both border-box → gradient fills to the edge with no 1px rim
     bleeding through the transparent border on the rounded caps */
  background-origin:border-box;background-clip:border-box;
  color:#fff;box-shadow:var(--shadow-accent);
  transition:background-position .4s var(--ease),box-shadow var(--dur) var(--ease),transform var(--dur-fast) var(--ease);
}
.btn.gradient:hover,.q-btn.gradient:hover{background-position:100% 0;box-shadow:var(--shadow-lg);}
.btn.gradient:focus-visible,.q-btn.gradient:focus-visible{outline:none;box-shadow:0 0 0 4px var(--ring);}
.btn.secondary,.q-btn.secondary{background:transparent;color:var(--accent);border-color:var(--border-strong);}
.btn.secondary:hover,.q-btn.secondary:hover{border-color:var(--accent);background:var(--signal-bg);}
.btn.ghost,.q-btn.ghost{background:transparent;color:var(--fg);}
.btn.ghost:hover,.q-btn.ghost:hover{background:var(--surface-2);color:var(--accent);}
.btn.invert,.q-btn.invert{background:#fff;color:var(--navy);}
.btn.invert:hover,.q-btn.invert:hover{background:#eef3fb;}
.btn.sm,.q-btn.sm{--py:9px;--px:16px;font-size:var(--text-xs);}
.btn.lg,.q-btn.lg{--py:16px;--px:30px;font-size:var(--text-body);}

/* ---------- BADGES ---------- */
.badge,.q-badge{display:inline-flex;align-items:center;gap:6px;font-weight:600;font-size:var(--text-xs);
  padding:5px 12px;border-radius:var(--r-pill);background:var(--signal-bg);color:var(--accent);
  border:1px solid var(--border-accent);}
.badge.cyan,.q-badge.cyan{background:var(--cyan-050);color:#0b86b8;border-color:rgba(33,188,238,.4);}
.badge.solid,.q-badge.solid{background:var(--accent);color:#fff;border-color:transparent;}
.badge .dot,.q-badge .dot{width:6px;height:6px;border-radius:50%;background:currentColor;}
.badge.live .dot,.q-badge.live .dot{background:#16c060;box-shadow:0 0 0 0 rgba(22,192,96,.6);animation:pulse 2s var(--ease) infinite;}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(22,192,96,.55);}70%{box-shadow:0 0 0 7px rgba(22,192,96,0);}100%{box-shadow:0 0 0 0 rgba(22,192,96,0);}}

/* ---------- CARDS ---------- */
.card,.q-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:var(--s6);box-shadow:var(--shadow-sm);
  transition:box-shadow var(--dur) var(--ease),transform var(--dur) var(--ease),border-color var(--dur) var(--ease);}
.card.hover:hover,.q-card.hover:hover{box-shadow:var(--shadow-lg);transform:translateY(-3px);border-color:var(--border-accent);}
.card.tech,.q-card.tech{background:var(--surface-tech);border-color:var(--border-accent);}
.card.invert,.q-card.invert{background:var(--surface-invert);border-color:rgba(255,255,255,.1);color:var(--fg-on-invert);box-shadow:var(--shadow-lg);}
.card.invert h1,.card.invert h2,.card.invert h3,.q-card.invert h1,.q-card.invert h2,.q-card.invert h3{color:#fff;}
.glass,.q-glass{border-radius:var(--r-lg);background:var(--glass-bg);border:1px solid var(--glass-border);
  box-shadow:var(--shadow-lg),inset 0 1px 0 rgba(255,255,255,.5);backdrop-filter:blur(14px) saturate(140%);}

/* ---------- STAT ---------- */
.stat,.q-stat{display:flex;flex-direction:column;gap:4px;}
.stat .v,.q-stat .v{font-family:var(--font-display);font-weight:800;font-size:var(--text-h2);line-height:1;color:var(--fg-strong);letter-spacing:0;}
.stat .l,.q-stat .l{font-size:var(--text-sm);color:var(--fg-muted);}
.stat .u,.q-stat .u{font-size:.55em;font-weight:700;}

/* ---------- INPUTS ---------- */
.q-input{font-family:var(--font-body);font-size:var(--text-body);color:var(--fg);background:var(--surface);
  border:1px solid var(--border);border-radius:var(--r-pill);padding:14px 20px;}
.q-input::placeholder{color:var(--fg-muted);}
.q-input:focus{outline:none;border-color:var(--cyan);box-shadow:0 0 0 4px rgba(33,188,238,.25);}

/* ---------- BACKGROUNDS ---------- */
.grid-bg,.q-grid-bg{background-image:linear-gradient(to right,var(--grid-line) 1px,transparent 1px),linear-gradient(to bottom,var(--grid-line) 1px,transparent 1px);background-size:48px 48px;}
.grid-bg.mask,.q-grid-bg.q-mask{-webkit-mask-image:radial-gradient(85% 75% at 60% 20%,#000 35%,transparent 82%);mask-image:radial-gradient(85% 75% at 60% 20%,#000 35%,transparent 82%);}
.glow,.q-glow{position:absolute;pointer-events:none;border-radius:50%;background:var(--glow-cyan);filter:blur(8px);}
.q-dot-bg{background-image:radial-gradient(var(--grid-line) 1px,transparent 1px);background-size:18px 18px;}
