/* ========================================================================== 
   Public single-video embed — /embed/video/:token
   --------------------------------------------------------------------------
   A deliberately tiny, self-contained screening surface. The iframe always has
   the export's true aspect ratio; the media uses contain, never crop, and the
   unavailable state reveals no job or customer identity.
   ========================================================================== */

* {
  box-sizing: border-box;
}

html,
body.ve-page {
  width: 100%;
  height: 100%;
  margin: 0;
  overflow: hidden;
  background: #070812;
  color: #e8eaed;
  color-scheme: dark;
  font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

.ve-stage,
.ve-video {
  width: 100%;
  height: 100%;
}

.ve-stage {
  position: relative;
  display: grid;
  place-items: center;
  overflow: hidden;
  background: radial-gradient(120% 120% at 50% 50%, #171a2e 0%, #070812 68%);
}

.ve-video {
  position: absolute;
  inset: 0;
  display: block;
  min-width: 0;
  min-height: 0;
  object-fit: contain;
  background: #05060c;
}

.ve-unavailable {
  display: none;
  width: min(420px, calc(100% - 40px));
  text-align: center;
}

.ve-unavailable svg {
  width: 38px;
  height: 38px;
  margin-bottom: 12px;
  fill: none;
  stroke: #626880;
  stroke-width: 1.5;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.ve-unavailable strong,
.ve-unavailable span {
  display: block;
}

.ve-unavailable strong {
  font-size: clamp(14px, 3vw, 18px);
  font-weight: 600;
  letter-spacing: -0.01em;
}

.ve-unavailable span {
  margin-top: 6px;
  color: #9aa1b4;
  font-size: clamp(11px, 2.2vw, 13px);
  line-height: 1.45;
}

body.ve-page.is-unavailable .ve-video {
  display: none;
}

body.ve-page.is-unavailable .ve-unavailable {
  display: block;
}
