.fv-camera { overflow:hidden; border:1px solid #dfe7e2; border-radius:10px; color:#243d33; background:#fff; font:inherit; }
.fv-stage { position:relative; min-height:100px; aspect-ratio:16/9; overflow:hidden; background:#14211b; }
.fv-video { position:absolute; inset:0; width:100%; height:100%; object-fit:contain; background:#14211b; }
.fv-active { z-index:1; }
.fv-pending { opacity:0; pointer-events:none; }
.fv-placeholder { position:absolute; inset:0; display:grid; place-items:center; color:#6a8174; }
.fv-placeholder svg { width:32px; height:32px; fill:none; stroke:currentColor; stroke-width:1.5; stroke-linejoin:round; }
.fv-caption { display:flex; justify-content:space-between; align-items:center; gap:8px; padding:9px 11px; font-size:13px; }
.fv-name { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-weight:650; }
.fv-state { flex-shrink:0; max-width:55%; font-size:11px; color:#71847a; text-align:right; }
.fv-message { position:absolute; z-index:3; inset:0; display:flex; align-items:center; justify-content:center; flex-direction:column; gap:9px; padding:15px; color:#e4ede7; font-size:12px; text-align:center; background:#14211b99; }
.fv-message[hidden],.fv-start[hidden] { display:none; }
.fv-spinner { display:none; width:21px; height:21px; border:2px solid #ffffff40; border-top-color:#b2ddc8; border-radius:50%; animation:fv-spin .8s linear infinite; }
.fv-busy .fv-spinner { display:block; }
.fv-controls { position:absolute; z-index:4; bottom:8px; left:8px; right:8px; display:flex; align-items:center; justify-content:space-between; gap:8px; pointer-events:none; }
.fv-controls button,.fv-start { pointer-events:auto; display:grid; place-items:center; height:30px; min-width:30px; border:1px solid #ffffff38; border-radius:7px; padding:0 6px; background:#12271dbf; color:#fff; cursor:pointer; font:inherit; font-size:12px; font-weight:700; }
.fv-controls button:hover { background:#265942e8; }
.fv-controls button:disabled { opacity:.4; cursor:default; }
.fv-controls button:focus-visible,.fv-start:focus-visible { outline:2px solid #c3e7d6; outline-offset:2px; }
.fv-hd[aria-pressed="true"] { background:#0878c3; border-color:#5bb9f5; }
.fv-controls svg { width:17px; height:17px; fill:none; stroke:currentColor; stroke-width:1.7; stroke-linejoin:round; stroke-linecap:round; }
.fv-start { position:absolute; z-index:5; top:50%; left:50%; transform:translate(-50%,-50%); padding:0 14px; min-height:36px; white-space:nowrap; }
.fv-camera:fullscreen { display:flex; flex-direction:column; height:100%; width:100%; border:0; border-radius:0; background:#14211b; }
.fv-camera:fullscreen .fv-stage { flex:1; min-height:0; aspect-ratio:auto; }
.fv-camera:fullscreen .fv-caption { background:#14211b; color:#fff; }
@keyframes fv-spin { to { transform:rotate(360deg); } }
@media(prefers-reduced-motion:reduce) { .fv-spinner { animation-duration:2s; } }
