.fvt-embed{width:100%}
.fvt-viewer{width:100%;height:100%}
.fvt-error{padding:10px;border:1px solid #d63638;background:#fff5f5;border-radius:8px;color:#b32d2e}
.fvt-hotspot .fvt-hotspot-inner{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:999px;background:rgba(255,255,255,.92);border:1px solid rgba(0,0,0,.25);font-size:16px;line-height:1}
.fvt-modal{position:fixed;inset:0;display:none;z-index:99999}
.fvt-modal.is-open{display:block}
.fvt-modal-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.55)}
.fvt-modal-content{position:relative;max-width:720px;margin:6vh auto;background:#fff;border-radius:12px;box-shadow:0 10px 40px rgba(0,0,0,.25);padding:18px}
.fvt-modal-close{position:absolute;right:10px;top:8px;border:none;background:transparent;font-size:24px;cursor:pointer}
.fvt-modal-body{font-size:16px;line-height:1.5}
.fvt-modal-body h3{margin:0 0 8px 0}

/* v1.0.6 - custom emoji hotspots without white circle */
.fvt-hotspot.has-custom-icon .fvt-hotspot-inner{
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
  width: auto !important;
  height: auto !important;
  font-size: 24px;
}


/* v1.0.7 - hotspot size scaling */
.fvt-hotspot .fvt-hotspot-inner{
  transform: scale(var(--fvt-scale, 1));
  transform-origin: center;
}


/* v1.0.8 - hotspot centering + background + color popover */
.fvt-hotspot .fvt-hotspot-inner{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:30px;
  height:30px;
  border-radius:999px;
  background:rgba(255,255,255,.92);
  border:1px solid rgba(0,0,0,.2);
  font-size:16px;
  line-height:1;
  transform: scale(var(--fvt-scale, 1));
  transform-origin: center;
}
.fvt-hotspot.has-custom-icon:not(.has-bg) .fvt-hotspot-inner{
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
}
.fvt-hotspot.has-bg .fvt-hotspot-inner{
  background: var(--fvt-bg, #ffffff) !important;
  border: 1px solid rgba(0,0,0,.18) !important;
}
.fvt-icon-row{display:flex;gap:8px;align-items:center}
.fvt-inline-check{display:flex;gap:6px;align-items:center;margin-top:6px;font-weight:400}
.fvt-palette-btn{min-width:44px}
.fvt-color-popover{position:relative;display:none}
.fvt-color-popover.is-open{display:block}
.fvt-color-popover-inner{
  position:absolute;
  right:0;
  top:8px;
  z-index:9999;
  background:#fff;
  border:1px solid #ccd0d4;
  border-radius:8px;
  padding:10px;
  box-shadow:0 8px 24px rgba(0,0,0,.18);
}


/* v1.0.9 - preserve pannellum hotspot positioning + perfect round background */
.fvt-hotspot .fvt-hotspot-badge{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  font-size:24px;           /* base emoji size */
  line-height:1;
  transform: scale(var(--fvt-scale, 1));
  transform-origin:center;
}
.fvt-hotspot .fvt-hotspot-emoji{
  line-height:1;
  display:block;
}
.fvt-hotspot.has-bg .fvt-hotspot-badge{
  width: calc(1em + 4px);   /* slightly larger than emoji */
  height: calc(1em + 4px);
  min-width: calc(1em + 4px);
  min-height: calc(1em + 4px);
  max-width: calc(1em + 4px);
  max-height: calc(1em + 4px);
  border-radius: 9999px;
  background: var(--fvt-bg, #ffffff);
  border: 1px solid rgba(0,0,0,.18);
  box-sizing: border-box;
  overflow: hidden;
}
.fvt-hotspot.has-custom-icon:not(.has-bg) .fvt-hotspot-badge{
  background: transparent;
  border: none;
  width: auto;
  height: auto;
}


/* v1.1.0 - background toggle + color fix + perfectly round circle */
.fvt-hotspot { cursor: pointer; }
.fvt-hotspot .fvt-hotspot-badge{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  font-size:24px;
  line-height:1;
  transform: scale(var(--fvt-scale, 1));
  transform-origin:center;
}
.fvt-hotspot .fvt-hotspot-emoji{ display:block; line-height:1; }

/* Background ONLY when has-bg */
.fvt-hotspot:not(.has-bg) .fvt-hotspot-badge{
  background: transparent !important;
  border: none !important;
  width: auto !important;
  height: auto !important;
  min-width: 0 !important;
  min-height: 0 !important;
  max-width: none !important;
  max-height: none !important;
}

.fvt-hotspot.has-bg .fvt-hotspot-badge{
  /* ~5% larger than glyph + a couple pixels for safety */
  width: calc(1.05em + 2px);
  height: calc(1.05em + 2px);
  min-width: calc(1.05em + 2px);
  min-height: calc(1.05em + 2px);
  border-radius: 9999px;
  background: var(--fvt-bg, #ffffff) !important;
  border: 1px solid rgba(0,0,0,.18) !important;
  box-sizing: border-box;
}

/* Keep old inner style from forcing a circle if any legacy markup exists */
.fvt-hotspot .fvt-hotspot-inner{
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
}


/* v1.1.1 - badge circle sizing and editor icon row layout */
.fvt-icon-row-full{display:flex;gap:10px;align-items:center}
.fvt-icon-row-full .fvt-input{flex:1;min-width:0}
.fvt-icon-row-full .fvt-inline-check{margin-top:0;white-space:nowrap}
.fvt-icon-row-full .fvt-palette-btn{min-width:44px}

/* Make background circle big enough to fully contain emoji (no clipping) */
.fvt-hotspot.has-bg .fvt-hotspot-badge{
  width: 1.45em;
  height: 1.45em;
  min-width: 1.45em;
  min-height: 1.45em;
  border-radius: 9999px;
  box-sizing: border-box;
}


/* v1.1.1 - ensure no bg without checkbox for custom emoji */
.fvt-hotspot.has-custom-icon:not(.has-bg) .fvt-hotspot-badge{
  background: transparent !important;
  border: none !important;
}

.fvt-block-placeholder{padding:12px;border:1px dashed #ccd0d4;border-radius:8px;background:#fff;}

/* v1.2.1 - do not override pannellum hotspot transforms */
.pnlm-hotspot.fvt-hotspot{cursor:pointer;}


/* v1.2.5 - pulsing hotspots (80% <-> 100% over 2s) */
@keyframes fvtPulse {
  0%   { transform: scale(var(--fvt-scale, 1)) scale(0.8); }
  50%  { transform: scale(var(--fvt-scale, 1)) scale(1); }
  100% { transform: scale(var(--fvt-scale, 1)) scale(0.8); }
}

.fvt-hotspot .fvt-hotspot-badge{
  display:inline-flex;
  align-items:center;
  justify-content:center;
}

/* Pulse wrapper scales the entire hotspot (emoji + background) */
.fvt-hotspot .fvt-hotspot-pulse{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  animation: fvtPulse 2s ease-in-out infinite;
  transform-origin: center;
}


/* v1.2.5 - ensure only pulse wrapper applies scaling */
.fvt-hotspot .fvt-hotspot-badge{ transform: none !important; }


/* v1.3.0 - scale background circle with hotspot size (badge scales; pulse scales relative) */
@keyframes fvtPulse {
  0%   { transform: scale(0.8); }
  50%  { transform: scale(1); }
  100% { transform: scale(0.8); }
}

.fvt-hotspot .fvt-hotspot-badge{
  transform: scale(var(--fvt-scale, 1)) !important; /* scales background circle + emoji together */
  transform-origin: center;
}

.fvt-hotspot .fvt-hotspot-pulse{
  animation: fvtPulse 2s ease-in-out infinite;
  transform-origin: center;
}


/* v1.3.0 - Home control button */
.fvt-embed .pnlm-controls.fvt-has-home { position: relative; }

/* Place to the right of zoom-in (plus) */
.fvt-embed .pnlm-controls .pnlm-home {
  position: absolute;
  top: 0;
  left: 38px; /* roughly button width (30) + spacing (8) */
}

.fvt-embed .pnlm-controls .pnlm-home::before {
  content: '';
  display:block;
  width: 18px;
  height: 18px;
  margin: 6px auto;
  background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2064%2064%22%3E%0A%3Cpath%20fill%3D%22black%22%20d%3D%22M32%208%206%2030h6v26h16V40h8v16h16V30h6L32%208zm18%2044H40V36H24v16H14V28.6L32%2014.2%2050%2028.6V52z%22/%3E%0A%3C/svg%3E");
  background-size: 18px 18px;
  background-repeat: no-repeat;
}


/* v1.3.1 - Home control icon size and alignment */
.fvt-embed .pnlm-controls .pnlm-home {
  position:absolute;
  top:0;
  left:38px;
  width:30px;
  height:30px;
  padding:0;
  background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2064%2064%22%3E%0A%3Cpath%20fill%3D%22black%22%20d%3D%22M32%208%206%2030h6v26h16V40h8v16h16V30h6L32%208zm18%2044H40V36H24v16H14V28.6L32%2014.2%2050%2028.6V52z%22/%3E%0A%3C/svg%3E");
  background-repeat:no-repeat;
  background-position:center;
  background-size:14px 14px;
}
.fvt-embed .pnlm-controls .pnlm-home::before { content:none !important; }

/* v1.3.5 - ensure info modal shows above fullscreen viewer */
.fvt-embed .fvt-modal{
  position:absolute;
  inset:0;
  z-index: 99999;
}
.fvt-embed .fvt-modal.is-open{
  display:block;
}


/* v1.3.15 - Show only loading bar (hide title and file size text) */
.fvt-embed .pnlm-load-box p,
.fvt-embed .pnlm-load-box h1,
.fvt-embed .pnlm-load-box h2,
.fvt-embed .pnlm-lbox p,
.fvt-embed .pnlm-lbox h1,
.fvt-embed .pnlm-lbox h2 {
  display: none !important;
}



/* v1.3.16 - center loading bar and reduce dark overlay box height */
.fvt-embed .pnlm-load-box,
.fvt-embed .pnlm-lbox {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  flex-direction: column !important;
  top: 25% !important;
  left: 10% !important;
  width: 80% !important;
  height: 25% !important;
  min-height: 0 !important;
  box-sizing: border-box !important;
  transform: none !important;
}

.fvt-embed .pnlm-load-box .pnlm-lbar,
.fvt-embed .pnlm-lbox .pnlm-lbar,
.fvt-embed .pnlm-load-box .pnlm-progress,
.fvt-embed .pnlm-lbox .pnlm-progress {
  margin: 0 auto !important;
  align-self: center !important;
}



/* v1.3.17 - fix loader overlay visibility and center compact bar-only box */
.fvt-embed .pnlm-load-box[style*="display: none"],
.fvt-embed .pnlm-lbox[style*="display: none"] {
  display: none !important;
}

/* Only force flex layout while the load box is visible */
.fvt-embed .pnlm-load-box:not([style*="display: none"]),
.fvt-embed .pnlm-lbox:not([style*="display: none"]) {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  flex-direction: column !important;
  top: 50% !important;
  left: 50% !important;
  width: auto !important;
  height: auto !important;
  min-height: 0 !important;
  min-width: 0 !important;
  padding: 20px !important; /* ~20px margin around load bar */
  margin: 0 !important;
  box-sizing: border-box !important;
  transform: translate(-50%, -50%) !important;
}

/* Hide spinner / animated square, keep only progress bar */
.fvt-embed .pnlm-load-box .pnlm-loading,
.fvt-embed .pnlm-lbox .pnlm-loading {
  display: none !important;
}

/* Center progress bar in the dimmed box */
.fvt-embed .pnlm-load-box .pnlm-lbar,
.fvt-embed .pnlm-lbox .pnlm-lbar,
.fvt-embed .pnlm-load-box .pnlm-progress,
.fvt-embed .pnlm-lbox .pnlm-progress {
  margin: 0 auto !important;
  align-self: center !important;
}


/* v1.3.18 - rounded corners for loader overlay */
.fvt-embed .pnlm-load-box,
.fvt-embed .pnlm-lbox {
  border-radius: 12px !important;
  overflow: hidden !important;
}



/* Also hide empty title boxes/remnants (small line) */
.fvt-embed .pnlm-title-box:empty {
  display: none !important;
  border: 0 !important;
  padding: 0 !important;
  margin: 0 !important;
  background: transparent !important;
}


