:root { --av-bg: #0b1014; --av-bg-2: #0f161c; --av-panel: #131c24; --av-line: #1f2c37; --av-line-strong: #283744; --av-ink: #e6edf3; --av-ink-2: #aab8c5; --av-ink-3: #6e8090; --av-mint: #5ad6c0; --av-mint-soft: rgba(90, 214, 192, 0.12); --av-warn: #e8a866; --av-bad: #d97171; --av-blue: #5a9dd6; --av-violet: #b48ad6; --av-ease: cubic-bezier(0.4, 0, 0.2, 1); --av-ease-lock: cubic-bezier(0.34, 1.56, 0.64, 1); --av-dur-fast: 120ms; --av-dur-base: 220ms; --av-dur-slow: 400ms; --av-cycle: 4.4s; --av-scan: 1.1s; } .av-surface { background: var(--av-bg); color: var(--av-ink); font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; } .av-panel { background: var(--av-panel); border: 1px solid var(--av-line); border-radius: 8px; } .av-micro-label { color: var(--av-ink-3); font-family: "JetBrains Mono", "SFMono-Regular", Consolas, monospace; font-size: 0.72rem; font-weight: 700; letter-spacing: 0; text-transform: uppercase; } .av-brand-mark { color: var(--av-mint); display: inline-block; height: 24px; inline-size: 24px; } .av-brand-mark svg { display: block; height: 100%; inline-size: 100%; } .av-state-scan { overflow: hidden; position: relative; } .av-state-scan::after { animation: av-scan-sweep var(--av-scan) var(--av-ease) infinite; background: linear-gradient(90deg, transparent, rgba(90, 214, 192, 0.72), transparent); content: ""; height: 1px; inset: auto 10% 18%; opacity: 0.8; position: absolute; transform: translateX(-120%); } .av-state-admit { border-color: rgba(90, 214, 192, 0.46); box-shadow: 0 0 0 1px rgba(90, 214, 192, 0.12), 0 18px 60px rgba(90, 214, 192, 0.08); } .av-state-held { border-color: rgba(232, 168, 102, 0.56); color: var(--av-warn); } .av-state-rejected { border-color: rgba(217, 113, 113, 0.58); color: var(--av-bad); } .av-dial-lock { transition: opacity var(--av-dur-base) var(--av-ease), transform var(--av-dur-base) var(--av-ease-lock); transform-origin: center; } .av-state-open .av-dial-lock { opacity: 0; transform: scale(0); } .av-state-locked .av-dial-lock, .av-state-admit .av-dial-lock { opacity: 1; transform: scale(1); } @keyframes av-scan-sweep { from { transform: translateX(-120%); } to { transform: translateX(120%); } } @media (prefers-reduced-motion: reduce) { .av-state-scan::after { animation: none; opacity: 1; transform: translateX(0); } .av-dial-lock { transition-duration: 1ms; } }