/*
 * Valet Ops AI Vision — public (front-end) styles
 * Used inside the Valet Ops phone-app SPA when on-device ALPR runs.
 */

.vov-scan-overlay {
	position: fixed; inset: 0; z-index: 9999;
	background: rgba(15,22,36,.85); backdrop-filter: blur(8px);
	display: flex; align-items: center; justify-content: center;
	color: #fff; font-family: -apple-system, BlinkMacSystemFont, 'Inter', sans-serif;
	padding: 24px;
}
.vov-scan-card {
	background: #1e2c44; border-radius: 18px; padding: 28px; max-width: 360px; width: 100%;
	text-align: center;
	box-shadow: 0 20px 60px -20px rgba(0,0,0,.6);
}
.vov-scan-title { font-family: 'Playfair Display', Georgia, serif; font-size: 22px; margin: 0 0 6px; }
.vov-scan-sub { font-size: 13.5px; opacity: .75; margin: 0 0 18px; }
.vov-scan-spinner {
	width: 44px; height: 44px; border: 4px solid rgba(255,255,255,.15); border-top-color: #e69b1e;
	border-radius: 50%; margin: 0 auto 16px; animation: vov-spin .9s linear infinite;
}
@keyframes vov-spin { to { transform: rotate(360deg); } }

.vov-progress-track { width: 100%; height: 6px; background: rgba(255,255,255,.1); border-radius: 99px; overflow: hidden; margin-top: 12px; }
.vov-progress-fill { height: 100%; background: linear-gradient(90deg, #e69b1e, #cf8a15); transition: width .25s; }

.vov-scan-result { font-family: 'Playfair Display', Georgia, serif; font-size: 32px; letter-spacing: .04em; margin: 12px 0; }
.vov-scan-meta { font-size: 12.5px; opacity: .7; }

/* ============ Inline banner (coordinator) ============ */
.vov-banner {
	position: fixed; left: 50%; bottom: 24px; transform: translate(-50%, 120%);
	display: flex; align-items: center; gap: 10px;
	max-width: calc(100vw - 48px); padding: 12px 18px; border-radius: 999px;
	background: #1e2c44; color: #fff;
	font-family: -apple-system, BlinkMacSystemFont, 'Inter', sans-serif;
	font-size: 14.5px; font-weight: 600; letter-spacing: .01em;
	box-shadow: 0 14px 38px -14px rgba(0,0,0,.55);
	transition: transform .25s cubic-bezier(.2,.9,.2,1), opacity .2s;
	opacity: 0; z-index: 9998; pointer-events: none;
}
.vov-banner.is-visible { transform: translate(-50%, 0); opacity: 1; }
.vov-banner-icon { width: 10px; height: 10px; border-radius: 50%; flex-shrink: 0; }
.vov-banner-progress { background: linear-gradient(135deg, #294a70, #1a3354); }
.vov-banner-progress .vov-banner-icon {
	background: #e69b1e;
	animation: vov-pulse 1s ease-in-out infinite;
}
.vov-banner-ok   { background: linear-gradient(135deg, #15a692, #0e7a6c); }
.vov-banner-ok   .vov-banner-icon { background: #fff; }
.vov-banner-warn { background: linear-gradient(135deg, #e69b1e, #cf8a15); color: #1f1408; }
.vov-banner-warn .vov-banner-icon { background: #1f1408; }
.vov-banner-err  { background: linear-gradient(135deg, #c62828, #9b1c1c); }
.vov-banner-err  .vov-banner-icon { background: #fff; }
@keyframes vov-pulse { 0%, 100% { opacity: 1; } 50% { opacity: .35; } }
