/* IVSEC camera strobe + siren drawn over the LEDs of a camera photo: red/blue flashing for 3s, short pause, white lights
   on for 2s, 5.5s cycle (Stuart, 11 Nov 2026). Brand home (361): placed by ift-ivsec-home.js. Series landings: placed by
   ift-ivsec-series-landing.js from the film frame's "strobe" coordinates (IvsecSeriesLanding.php). */
.ivh-strobe { position: absolute; inset: 0; overflow: hidden; pointer-events: none; }
.ivh-strobe:not(.is-on) { display: none; }
.ivh-strobe i {
  position: absolute;
  border-radius: 30%;
  opacity: 0;
  animation: ivh-strobe-r 5.5s linear infinite;
}
.ivh-strobe .is-r { background: #ffd6d6; box-shadow: 0 0 .4em .15em #ff2a2a, 0 0 1.8em .7em rgba(255, 30, 30, .85), 0 0 6em 2.6em rgba(255, 0, 0, .45), 0 0 14em 6em rgba(255, 0, 0, .18); }
.ivh-strobe .is-b { background: #dce6ff; box-shadow: 0 0 .4em .15em #3b6bff, 0 0 1.8em .7em rgba(40, 90, 255, .85), 0 0 6em 2.6em rgba(30, 70, 255, .45), 0 0 14em 6em rgba(30, 70, 255, .18); animation-name: ivh-strobe-b; }
.ivh-strobe .is-w,
.ivh-strobe .is-w2 { border-radius: 50%; background: #fff; transform: scale(1.2); box-shadow: 0 0 .5em .3em #fff, 0 0 2.4em 1.1em rgba(255, 255, 255, .9); animation-name: ivh-strobe-w; }
/* Wide halo as a gradient, not a big box-shadow: Chrome caps large shadow blurs and leaves a hard-edged box */
.ivh-strobe .is-w::after,
.ivh-strobe .is-w2::after {
  content: '';
  position: absolute;
  top: 50%;
  left: 50%;
  width: 36em;
  height: 36em;
  border-radius: 50%;
  background: radial-gradient(closest-side, rgba(255, 255, 255, .5), rgba(245, 248, 255, .3) 18%, rgba(235, 242, 255, .14) 42%, rgba(225, 235, 255, .05) 70%, rgba(225, 235, 255, 0));
  transform: translate(-50%, -50%);
}
@media (max-width: 767px) {
  .ivh-strobe .is-w,
  .ivh-strobe .is-w2 { box-shadow: 0 0 .5em .3em #fff, 0 0 2em .9em rgba(255, 255, 255, .85); }
  .ivh-strobe .is-w::after,
  .ivh-strobe .is-w2::after { width: 20em; height: 20em; }
}
@keyframes ivh-strobe-r {
  0.0%, 2.182% { opacity: 1; } 2.192%, 3.273% { opacity: 0; } 3.283%, 5.455% { opacity: 1; } 5.465%, 13.636% { opacity: 0; } 13.646%, 15.818% { opacity: 1; } 15.828%, 16.909% { opacity: 0; } 16.919%, 19.091% { opacity: 1; } 19.101%, 27.273% { opacity: 0; } 27.283%, 29.455% { opacity: 1; } 29.465%, 30.545% { opacity: 0; } 30.555%, 32.727% { opacity: 1; } 32.737%, 40.909% { opacity: 0; } 40.919%, 43.091% { opacity: 1; } 43.101%, 44.182% { opacity: 0; } 44.192%, 46.364% { opacity: 1; } 46.374%, 100.0% { opacity: 0; }
}
@keyframes ivh-strobe-b {
  0.0%, 6.818% { opacity: 0; } 6.828%, 9.0% { opacity: 1; } 9.01%, 10.091% { opacity: 0; } 10.101%, 12.273% { opacity: 1; } 12.283%, 20.455% { opacity: 0; } 20.465%, 22.636% { opacity: 1; } 22.646%, 23.727% { opacity: 0; } 23.737%, 25.909% { opacity: 1; } 25.919%, 34.091% { opacity: 0; } 34.101%, 36.273% { opacity: 1; } 36.283%, 37.364% { opacity: 0; } 37.374%, 39.545% { opacity: 1; } 39.555%, 47.727% { opacity: 0; } 47.737%, 49.909% { opacity: 1; } 49.919%, 51.0% { opacity: 0; } 51.01%, 53.182% { opacity: 1; } 53.192%, 100.0% { opacity: 0; }
}
@keyframes ivh-strobe-w {
  0.0%, 60.0% { opacity: 0; } 60.01%, 96.364% { opacity: 1; } 96.374%, 100.0% { opacity: 0; }
}

/* Siren: sound waves out of the camera face while the red/blue strobe runs (same 5.5s cycle) */
.ivh-siren { position: absolute; }
.ivh-siren b {
  position: absolute;
  inset: 0;
  border: .22em solid transparent;
  border-left-color: rgba(255, 255, 255, .85);
  border-radius: 50%;
  opacity: 0;
  filter: drop-shadow(0 0 .35em rgba(255, 255, 255, .7));
  animation: ivh-siren-0 5.5s linear infinite;
}
.ivh-siren b + b { animation-name: ivh-siren-1; }
.ivh-siren b + b + b { animation-name: ivh-siren-2; }
@media (max-width: 767px) {
  .ivh-siren b { border-width: .16em; border-left-color: transparent; border-right-color: rgba(255, 255, 255, .4); filter: none; }
}
.ivh-siren-label {
  position: absolute;
  display: flex;
  align-items: center;
  gap: 8px;
  color: #fff;
  font-size: 22px;
  font-weight: 800;
  letter-spacing: .06em;
  text-transform: uppercase;
  white-space: nowrap;
  text-shadow: 0 0 12px rgba(255, 40, 40, .6);
  opacity: 0;
  transform: translate(-50%, -50%);
  animation: ivh-siren-label 5.5s linear infinite;
}
.ivh-siren-label svg { width: 1.2em; height: 1.2em; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.ivh-siren-label svg path:first-child { fill: currentColor; }
@media (max-width: 991px) {
  .ivh-siren-label { font-size: 17px; }
}
.ivh-siren-label.is-corner { top: 24px; right: 24px; transform: none; }
.ivh-siren-label.is-side { right: 16px; transform: translateY(-50%); }
/* Phones: strobe only, no sound waves or "Loud Siren" label (Stuart, 11 Nov 2026) */
@media (max-width: 767px) {
  .ivh-siren,
  .ivh-siren-label { display: none !important; }
}
@keyframes ivh-siren-label {
  0% { opacity: 0; } 2% { opacity: 1; } 56% { opacity: 1; } 60%, 100% { opacity: 0; }
}
@keyframes ivh-siren-0 {
  0% { opacity: 0; transform: scale(1); }
  1.818% { opacity: .9; transform: scale(1.06); }
  15.455% { opacity: 0; transform: scale(1.6); }
  15.636% { opacity: 0; transform: scale(1); }
  16.364% { opacity: 0; transform: scale(1); }
  18.182% { opacity: .9; transform: scale(1.06); }
  31.818% { opacity: 0; transform: scale(1.6); }
  32.0% { opacity: 0; transform: scale(1); }
  32.727% { opacity: 0; transform: scale(1); }
  34.545% { opacity: .9; transform: scale(1.06); }
  48.182% { opacity: 0; transform: scale(1.6); }
  48.364% { opacity: 0; transform: scale(1); }
  100% { opacity: 0; transform: scale(1); }
}
@keyframes ivh-siren-1 {
  0% { opacity: 0; transform: scale(1); }
  5.455% { opacity: 0; transform: scale(1); }
  7.273% { opacity: .9; transform: scale(1.06); }
  20.909% { opacity: 0; transform: scale(1.6); }
  21.091% { opacity: 0; transform: scale(1); }
  21.818% { opacity: 0; transform: scale(1); }
  23.636% { opacity: .9; transform: scale(1.06); }
  37.273% { opacity: 0; transform: scale(1.6); }
  37.455% { opacity: 0; transform: scale(1); }
  38.182% { opacity: 0; transform: scale(1); }
  40.0% { opacity: .9; transform: scale(1.06); }
  53.636% { opacity: 0; transform: scale(1.6); }
  53.818% { opacity: 0; transform: scale(1); }
  100% { opacity: 0; transform: scale(1); }
}
@keyframes ivh-siren-2 {
  0% { opacity: 0; transform: scale(1); }
  10.909% { opacity: 0; transform: scale(1); }
  12.727% { opacity: .9; transform: scale(1.06); }
  26.364% { opacity: 0; transform: scale(1.6); }
  26.545% { opacity: 0; transform: scale(1); }
  27.273% { opacity: 0; transform: scale(1); }
  29.091% { opacity: .9; transform: scale(1.06); }
  42.727% { opacity: 0; transform: scale(1.6); }
  42.909% { opacity: 0; transform: scale(1); }
  43.636% { opacity: 0; transform: scale(1); }
  45.455% { opacity: .9; transform: scale(1.06); }
  59.091% { opacity: 0; transform: scale(1.6); }
  59.273% { opacity: 0; transform: scale(1); }
  100% { opacity: 0; transform: scale(1); }
}
