'
'
Drop or browse your video
'
'
'
f"Up to {seconds:.0f} seconds · {upload_max_mb()} MB max · {UPLOAD_FORMAT_LABEL}"
"
"
'
'
"Private · narrated just for you, never added to the public library"
"
"
)
def render_clapperboard_svg() -> str:
"""A director's clapperboard (claqueta) loader.
The top *clapper bar* (``.sc-clap-arm``) is hinged at its LEFT end: CSS rotates it open ~30°
and snaps it shut on a ~1.1s loop (animation lives in VIEWER_CSS). Only ``transform:rotate``
is animated (``transform-origin`` pinned at the hinge), so it stays cheap and jank-free; a
``prefers-reduced-motion`` fallback in the CSS swaps the swing for an opacity pulse. The
diagonal black/white stripes are baked into the static markup. viewBox 0 0 120 96; the arm is
drawn flush along the slate's top edge and pivots about (8, 30)."""
stripes = "".join(
# alternating slate teeth along the clapper edges (parallelograms => the classic stripes)
f'The narrator is quiet. For now.
'
else:
rows = "".join(
'