/* Flipbook Viewer — μόνο το απαραίτητο, χωρίς εξωτερικές γραμματοσειρές */
html.fbv-html, html.fbv-html body {
  margin: 0; padding: 0; height: 100%; max-width: 100%;
  overflow: hidden; overflow-x: clip; overscroll-behavior: none;
  background: #c4d1bf;
}
.fbv, .fbv * { box-sizing: border-box; min-width: 0; }
.fbv img, .fbv svg { max-width: 100%; }
.fbv {
  --fbv-accent: #a62b4d;
  --fbv-bg: #c4d1bf;
  --fbv-bar: rgba(30, 34, 31, .86); --fbv-fg: #fff; --fbv-mut: #c9d0ca; --fbv-line: rgba(255,255,255,.16);
  --fbv-ui: #e0527a;
  --fbv-ui: color-mix(in srgb, var(--fbv-accent) 45%, #fff);
  position: fixed; inset: 0; display: flex; flex-direction: column;
  height: 100dvh; max-width: 100%; overflow: clip;
  background-color: var(--fbv-bg);
  background-image:
    radial-gradient(60% 45% at 6% 4%, rgba(255,255,255,.55), transparent 70%),
    radial-gradient(50% 40% at 100% 100%, rgba(0,0,0,.10), transparent 70%);
  color: var(--fbv-fg);
  font: 15px/1.4 system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  -webkit-tap-highlight-color: transparent; overscroll-behavior: none;
}
@supports not (height: 100dvh) { .fbv { height: 100svh; } }
.fbv-sr { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }

.fbv-stage { flex: 1; position: relative; overflow: hidden; margin: max(12px, env(safe-area-inset-top)) max(12px, env(safe-area-inset-right)) 8px max(12px, env(safe-area-inset-left)); }
.fbv-book { position: absolute; }
.fbv-page { background: #f1efec; overflow: hidden; box-shadow: 0 8px 28px rgba(20, 30, 22, .28); }
.fbv-img { display: block; width: 100%; height: 100%; object-fit: fill; user-select: none; -webkit-user-drag: none; pointer-events: none; opacity: 0; transition: opacity .25s; }
.fbv-loaded .fbv-img { opacity: 1; }
.fbv-failed::after { content: "Η σελίδα δεν φορτώθηκε"; position: absolute; inset: 0; display: grid; place-items: center; color: #555; font-size: 14px; }

/* Hotspots */
.fbv-hs-layer { position: absolute; inset: 0; z-index: 2; pointer-events: none; }
.fbv-hs { position: absolute; display: block; margin: 0; padding: 0; border: 0; border-radius: 4px; background: transparent; cursor: pointer; pointer-events: auto; min-width: 0; container-type: size; -webkit-tap-highlight-color: transparent; }
.fbv-hs::after { content: ""; position: absolute; inset: -2px; border-radius: 6px; background: color-mix(in srgb, var(--fbv-accent) 14%, transparent); box-shadow: inset 0 -2px 0 var(--fbv-accent); opacity: 0; transition: opacity .15s; pointer-events: none; }
.fbv-hs-popup::after { display: none; }
.fbv-hs:hover::after, .fbv-hs:focus-visible::after { opacity: 1; }
.fbv-hs:focus-visible { outline: 2px solid var(--fbv-accent); outline-offset: 2px; }
.fbv-hs[data-tip]::before { content: attr(data-tip); position: absolute; left: 50%; bottom: calc(100% + 8px); z-index: 4; transform: translate(-50%, 4px); max-width: 240px; width: max-content; padding: 6px 10px; border-radius: 8px; background: #1e221f; color: #fff; font: 500 13px/1.3 system-ui, sans-serif; text-align: center; white-space: normal; overflow-wrap: anywhere; box-shadow: 0 6px 18px rgba(0,0,0,.25); opacity: 0; pointer-events: none; transition: opacity .15s, transform .15s; }
.fbv-hs[data-tip]:hover::before, .fbv-hs[data-tip]:focus-visible::before { opacity: 1; transform: translate(-50%, 0); }
@media (hover: none) { .fbv-hs[data-tip]::before { display: none; } }
.fbv-hs-i { position: absolute; left: 50%; top: 50%; width: var(--sz, clamp(28px, 38cqmin, 38px)); height: var(--sz, clamp(28px, 38cqmin, 38px)); margin: calc(var(--sz, clamp(28px, 38cqmin, 38px)) / -2) 0 0 calc(var(--sz, clamp(28px, 38cqmin, 38px)) / -2); color: var(--fbv-accent); pointer-events: none; filter: drop-shadow(0 1px 2px rgba(0,0,0,.26)); transition: transform .2s cubic-bezier(.16,1,.3,1); }
.fbv-hs:hover .fbv-hs-i { transform: scale(1.1); }
.fbv-hs-i svg { display: block; }
.fbv-hs-hit { position: absolute; left: 50%; top: 50%; width: 44px; height: 44px; margin: -22px 0 0 -22px; border-radius: 50%; }
/* Εφέ περιοχής: ολόκληρο το ορθογώνιο του hotspot ζωντανεύει (π.χ. πάνω από barcode/φωτογραφία), με ή χωρίς εικονίδιο. Μόνο transform/opacity. */
.fbv-hs-fx { position: absolute; inset: -3px; border-radius: 10px; color: var(--fbv-accent); pointer-events: none; overflow: hidden; }
.fbv-fx-glow { overflow: visible; border: 2px solid currentColor; box-shadow: 0 0 0 1px rgba(255,255,255,.4), 0 0 18px currentColor; animation: fbv-glow calc(2s / var(--spd, 1)) ease-in-out infinite; }
.fbv-fx-breathe { background: color-mix(in srgb, currentColor 24%, transparent); box-shadow: inset 0 0 0 2px color-mix(in srgb, currentColor 70%, transparent); animation: fbv-breathe calc(2.4s / var(--spd, 1)) ease-in-out infinite; }
.fbv-fx-shimmer { box-shadow: inset 0 0 0 2px color-mix(in srgb, currentColor 55%, transparent); }
.fbv-fx-shimmer::before { content: ""; position: absolute; top: -10%; bottom: -10%; left: 0; width: 42%; background: linear-gradient(100deg, transparent, rgba(255,255,255,.7), transparent); transform: translateX(-130%) skewX(-18deg); animation: fbv-shine calc(2.4s / var(--spd, 1)) ease-in-out infinite; }
@keyframes fbv-glow { 0%, 100% { opacity: .2; transform: scale(1); } 50% { opacity: 1; transform: scale(1.025); } }
@keyframes fbv-breathe { 0%, 100% { opacity: .15; } 50% { opacity: 1; } }
@keyframes fbv-shine { 0% { transform: translateX(-130%) skewX(-18deg); } 70%, 100% { transform: translateX(330%) skewX(-18deg); } }
@media (prefers-reduced-motion: reduce) { .fbv-hs-fx, .fbv-hs-fx::before { animation: none !important; } .fbv-fx-glow, .fbv-fx-breathe { opacity: .8; } }
.fbv-a-pulse::before { content: ""; position: absolute; inset: 0; border-radius: 50%; background: rgba(255,255,255,.55); box-shadow: 0 0 0 1px rgba(255,255,255,.7); opacity: 0; animation: fbv-pulse calc(2.4s / var(--spd, 1)) cubic-bezier(.2,.6,.3,1) infinite; }
.fbv-a-blink { animation: fbv-blink calc(1.4s / var(--spd, 1)) ease-in-out infinite; }
.fbv-a-scale { animation: fbv-scale calc(1.6s / var(--spd, 1)) ease-in-out infinite; }
@keyframes fbv-pulse { 0% { opacity: .85; transform: scale(.9); } 75%, 100% { opacity: 0; transform: scale(2.1); } }
@keyframes fbv-blink { 0%, 100% { opacity: 1; } 50% { opacity: .35; } }
@keyframes fbv-scale { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.14); } }


.fbv-a-ripple::before, .fbv-a-ripple::after { content: ""; position: absolute; inset: 0; border-radius: 50%; background: rgba(255,255,255,.5); box-shadow: 0 0 0 1px rgba(255,255,255,.65); opacity: 0; animation: fbv-pulse calc(2.6s / var(--spd, 1)) cubic-bezier(.2,.6,.3,1) infinite; }
.fbv-a-ripple::after { animation-delay: calc(1.3s / var(--spd, 1)); }
.fbv-a-rotate .fbv-spin { transform-origin: 12px 12px; animation: fbv-rot calc(5s / var(--spd, 1)) linear infinite; }
.fbv-a-bounce { animation: fbv-bounce calc(1.1s / var(--spd, 1)) ease-in-out infinite; }
.fbv-a-tap { animation: fbv-tap calc(1.6s / var(--spd, 1)) ease-in-out infinite; }
@keyframes fbv-rot { to { transform: rotate(360deg); } }
@keyframes fbv-bounce { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-8px); } }
@keyframes fbv-tap { 0%, 60%, 100% { transform: translate(0, 0) scale(1); } 20% { transform: translate(-3px, -4px) scale(1.06); } 40% { transform: translate(2px, 3px) scale(.88); } }

/* Popup: ανοίγει από το hotspot· στο κινητό γίνεται κάτω φύλλο (bottom sheet) */
.fbv-dlg { position: absolute; inset: 0; z-index: 9; display: grid; place-items: center; padding: 16px; background: rgba(18, 22, 19, .5); animation: fbv-fade .2s ease-out; }
.fbv-dlg.fbv-out { animation: fbv-fadeout .16s ease-in forwards; }
.fbv-dlg-card { display: flex; flex-direction: column; width: min(560px, 100%); max-height: min(90dvh, 100%); overflow: hidden; border-radius: 20px; background: #fff; color: #262a28; box-shadow: 0 1px 2px rgba(0,0,0,.08), 0 12px 24px rgba(20,28,22,.18), 0 32px 72px rgba(20,28,22,.28); transform-origin: var(--ox, 50%) var(--oy, 50%); }
.fbv-dlg-card.fbv-in { animation: fbv-pop .32s cubic-bezier(.16, 1, .3, 1) both; }
.fbv-dlg.fbv-out .fbv-dlg-card { animation: fbv-popout .16s ease-in forwards; }
.fbv-dlg-head { flex: none; display: flex; align-items: flex-start; justify-content: flex-end; gap: 12px; padding: 20px 14px 8px 24px; }
.fbv-dlg-head .fbv-btn { min-width: 40px; width: 40px; height: 40px; padding: 0; border-radius: 50%; background: #f0f2ef; color: #262a28; }
.fbv-dlg-head .fbv-btn:hover { background: #e3e6e2; }
.fbv-dlg-card :focus-visible { outline: 2px solid var(--fbv-accent); outline-offset: 2px; box-shadow: none; }
.fbv-dlg-title { margin: 6px 0 0; font-size: 21px; font-weight: 700; line-height: 1.25; letter-spacing: -.01em; overflow-wrap: anywhere; }
.fbv-dlg-body { flex: 1; overflow-y: auto; overscroll-behavior: contain; padding: 4px 24px 24px; display: flex; flex-direction: column; gap: 16px; }
.fbv-dlg-body p { margin: 0; font-size: 16px; line-height: 1.6; color: #3a3f3c; overflow-wrap: anywhere; }
.fbv-dlg-img { display: block; width: 100%; height: auto; border-radius: 12px; }
.fbv-dlg-video { position: relative; width: 100%; aspect-ratio: 16 / 9; border-radius: 12px; overflow: hidden; background: #eef0ed; }
.fbv-dlg-audio { border-radius: 12px; overflow: hidden; }
.fbv-dlg-video iframe, .fbv-dlg-audio iframe { display: block; width: 100%; height: 100%; border: 0; }
.fbv-fac { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px; padding: 16px; background: #eef0ed; color: #3a3f3c; text-align: center; overflow: auto; }
.fbv-fac p { margin: 0 0 4px; max-width: 34em; font-size: 14px; line-height: 1.5; color: #4a504c; }
.fbv-fac-go { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; padding: 0 20px; border: 0; border-radius: 999px; background: var(--fbv-accent); color: #fff; font: 600 15px/1 system-ui, sans-serif; cursor: pointer; transition: filter .15s; }
.fbv-fac-go:hover { filter: brightness(1.1); }
.fbv-fac-go::before { content: ""; width: 0; height: 0; border-left: 10px solid #fff; border-top: 6px solid transparent; border-bottom: 6px solid transparent; }
.fbv-fac-pv { color: #565c58; font-size: 13px; text-decoration: underline; padding: 6px; }
.fbv-dlg-audio .fbv-fac { position: static; padding: 20px 16px; }
@keyframes fbv-fade { from { opacity: 0; } to { opacity: 1; } }
@keyframes fbv-pop { from { opacity: 0; transform: scale(.72); } to { opacity: 1; transform: none; } }
@keyframes fbv-popout { to { opacity: 0; transform: scale(.94); } }
@keyframes fbv-fadeout { to { opacity: 0; } }
@keyframes fbv-sheet { from { opacity: .6; transform: translateY(40px); } to { opacity: 1; transform: none; } }
@keyframes fbv-sheetout { to { opacity: 0; transform: translateY(32px); } }
@media (max-width: 600px) {
  .fbv-dlg { place-items: end center; padding: 0; }
  .fbv-dlg-card { width: 100%; max-height: 88dvh; border-radius: 22px 22px 0 0; padding-bottom: env(safe-area-inset-bottom); transform-origin: 50% 100%; }
  .fbv-dlg-card.fbv-in { animation-name: fbv-sheet; animation-duration: .34s; }
  .fbv-dlg.fbv-out .fbv-dlg-card { animation-name: fbv-sheetout; }
  .fbv-dlg-card::before { content: ""; flex: none; width: 40px; height: 4px; margin: 8px auto 0; border-radius: 2px; background: #d3d8d2; }
  .fbv-dlg-head { padding-top: 10px; padding-left: 20px; }
  .fbv-lead .fbv-dlg-head { top: 18px; right: 10px; padding: 0; }
  .fbv-flush .fbv-dlg-body { padding: 0; }
  .fbv-dlg-body { padding: 4px 20px 22px; }
}

.fbv-logo { flex: none; align-self: flex-start; display: block; max-width: 60%; line-height: 0; margin: max(10px, env(safe-area-inset-top)) 12px 0 max(14px, env(safe-area-inset-left)); }
.fbv-logo img { display: block; height: auto; max-height: 44px; max-width: 100%; width: auto; }
.fbv-has-logo .fbv-stage { margin-top: 10px; }   /* λογότυπο σε δική του γραμμή· αέρας ανάμεσα σε λογότυπο και περιοδικό */

.fbv-btn {
  display: inline-flex; align-items: center; justify-content: center; flex: none;
  min-width: 44px; height: 44px; padding: 0 10px; border: 0; border-radius: 10px;
  background: transparent; color: var(--fbv-fg); font: inherit; cursor: pointer; text-decoration: none; transition: background-color .15s;
}
.fbv-btn:hover { background: rgba(255,255,255,.14); }
.fbv-btn:active { background: rgba(255,255,255,.24); }
.fbv-btn[aria-pressed="true"], .fbv-btn[aria-expanded="true"] { background: rgba(255,255,255,.2); }
.fbv :focus-visible { outline: 2px solid #fff; outline-offset: 2px; box-shadow: 0 0 0 4px #111; }

.fbv-arrow { position: absolute; top: 50%; z-index: 3; margin-top: -22px; width: 44px; border-radius: 50%; background: var(--fbv-bar); }
.fbv-arrow:hover { background: rgba(30, 34, 31, .96); }
.fbv-arrow-l { left: 0; } .fbv-arrow-r { right: 0; }
.fbv-arrow.fbv-off { visibility: hidden; }

.fbv-zoom { position: absolute; inset: 0; z-index: 2; overflow: auto; overscroll-behavior: contain; display: flex; background: rgba(0,0,0,.0); cursor: zoom-out; touch-action: pan-x pan-y pinch-zoom; scrollbar-color: rgba(30,34,31,.6) transparent; }
.fbv-zoom[hidden] { display: none; }
.fbv-zoom.fbv-grab { cursor: grabbing; user-select: none; }
.fbv-zoom-in { display: flex; margin: auto; }
.fbv-zp { position: relative; flex: none; }
.fbv-zoom-in img { display: block; flex: none; max-width: none; background: #f1efec; box-shadow: 0 8px 28px rgba(20, 30, 22, .28); user-select: none; -webkit-user-drag: none; }

.fbv-thumbs {
  flex: none; display: flex; gap: 8px; overflow-x: auto; overflow-y: hidden; overscroll-behavior-x: contain; scrollbar-width: thin;
  width: min(calc(100% - 24px), 980px); margin: 0 auto 8px; padding: 8px; border-radius: 14px; background: var(--fbv-bar);
}
.fbv-thumbs[hidden] { display: none; }
.fbv-th { flex: none; display: flex; flex-direction: column; align-items: center; gap: 2px; padding: 3px; border: 2px solid transparent; border-radius: 6px; background: transparent; color: var(--fbv-mut); font: 12px/1.2 system-ui, sans-serif; cursor: pointer; }
.fbv-th img { display: block; width: 56px; height: auto; aspect-ratio: 3 / 4; background: #f1efec; border-radius: 2px; }
.fbv-th:hover { background: rgba(255,255,255,.12); }
.fbv-th-on { border-color: #fff; color: #fff; }

.fbv-bar {
  flex: none; display: flex; align-items: center; gap: 4px;
  width: min(calc(100% - 24px), 980px); margin: 0 auto max(12px, env(safe-area-inset-bottom)); padding: 6px;
  border-radius: 14px; background: var(--fbv-bar); box-shadow: 0 6px 24px rgba(20, 30, 22, .3);
}
.fbv-label { flex: none; min-width: 64px; padding: 0 6px; text-align: center; font-size: 13px; color: var(--fbv-fg); font-variant-numeric: tabular-nums; white-space: nowrap; }
.fbv-range { flex: 1; width: 100%; height: 24px; margin: 0 6px; accent-color: var(--fbv-ui); cursor: pointer; }

.fbv-menu { position: absolute; right: max(12px, calc((100% - 980px) / 2 + 6px)); bottom: calc(max(12px, env(safe-area-inset-bottom)) + 68px); z-index: 5; display: flex; flex-direction: column; min-width: 220px; padding: 6px; border-radius: 12px; background: var(--fbv-bar); box-shadow: 0 8px 28px rgba(0,0,0,.35); }
.fbv-menu[hidden] { display: none; }
.fbv-mi { display: flex; align-items: center; gap: 12px; min-height: 44px; padding: 0 12px; border: 0; border-radius: 8px; background: transparent; color: var(--fbv-fg); font: inherit; text-align: left; text-decoration: none; cursor: pointer; }
.fbv-mi:hover { background: rgba(255,255,255,.14); }

.fbv-scrim { position: absolute; inset: 0; z-index: 6; background: rgba(0,0,0,.5); opacity: 0; visibility: hidden; transition: opacity .2s, visibility 0s .2s; }
.fbv-toc-open .fbv-scrim { opacity: 1; visibility: visible; transition: opacity .2s; }
.fbv-toc {
  position: absolute; top: 0; bottom: 0; left: 0; z-index: 7; width: min(400px, 100%);
  display: flex; flex-direction: column; background: #24282a; color: var(--fbv-fg); border-right: 1px solid var(--fbv-line);
  transform: translateX(-100%); visibility: hidden; transition: transform .22s ease-out, visibility 0s .22s;
}
.fbv-toc-open .fbv-toc { transform: none; visibility: visible; transition: transform .22s ease-out; }
.fbv-toc-head { flex: none; display: flex; align-items: center; justify-content: space-between; padding: 6px 8px 6px 16px; padding-top: max(6px, env(safe-area-inset-top)); border-bottom: 1px solid var(--fbv-line); min-height: 56px; }
.fbv-toc-head h2 { margin: 0; font-size: 17px; }
.fbv-toc-body { flex: 1; overflow-y: auto; overscroll-behavior: contain; padding-bottom: max(12px, env(safe-area-inset-bottom)); }
.fbv-toc-list { list-style: none; margin: 0; padding: 0; }
.fbv-toc-sec { padding: 14px 16px 6px; font-size: 12px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--fbv-mut); }
.fbv-toc-item { display: flex; align-items: center; gap: 12px; min-height: 64px; padding: 8px 16px; color: var(--fbv-fg); text-decoration: none; }
.fbv-toc-item:hover { background: rgba(255,255,255,.08); }
.fbv-toc-item[aria-current] { background: var(--fbv-accent); color: #fff; }
.fbv-toc-thumb { flex: none; width: 48px; height: auto; aspect-ratio: 3 / 4; background: #f1efec; border-radius: 3px; object-fit: cover; }
.fbv-toc-text { flex: 1; display: flex; flex-direction: column; overflow-wrap: anywhere; }
.fbv-toc-k { font-size: 11px; letter-spacing: .06em; text-transform: uppercase; opacity: .75; }
.fbv-toc-t { font-weight: 600; }
.fbv-toc-n { flex: none; font-variant-numeric: tabular-nums; opacity: .8; }
.fbv-toc-empty { padding: 16px; color: var(--fbv-mut); }

.fbv-search { flex: none; padding: 10px 16px 6px; border-bottom: 1px solid var(--fbv-line); }
.fbv-q { width: 100%; min-height: 44px; padding: 0 12px; border: 1px solid var(--fbv-line); border-radius: 10px; background: #14181a; color: #fff; font: inherit; }
.fbv-q::placeholder { color: var(--fbv-mut); }
.fbv-search-note { margin: 6px 0 0; min-height: 1.4em; font-size: 13px; color: var(--fbv-mut); }
.fbv-res[hidden], .fbv-toc-body[hidden] { display: none; }
.fbv-res-sn { font-size: 13px; line-height: 1.4; opacity: .95; }
.fbv-res-sn mark { background: #ffd54a; color: #1b1d1c; border-radius: 2px; padding: 0 1px; }
.fbv-toc-item[aria-current] .fbv-res-sn mark { background: #fff; }

.fbv-status { position: absolute; left: 50%; bottom: 96px; z-index: 8; transform: translateX(-50%); max-width: calc(100% - 32px); padding: 8px 14px; border-radius: 8px; background: #fff; color: #17151a; font-size: 14px; opacity: 0; pointer-events: none; }
.fbv-status:not(:empty) { animation: fbv-toast 2.4s ease both; }
@keyframes fbv-toast { 0%, 100% { opacity: 0; transform: translate(-50%, 6px); } 10%, 85% { opacity: 1; transform: translate(-50%, 0); } }

.fbv-noscript { max-width: 640px; margin: 0 auto; padding: 24px 16px; color: #1e221f; font: 16px/1.5 system-ui, sans-serif; overflow-wrap: anywhere; }
.fbv-noscript a { color: #1e221f; }

@media (max-width: 520px) {
  .fbv-bar { gap: 0; padding: 4px; }
  .fbv-btn { min-width: 40px; padding: 0 6px; }
  .fbv-label { min-width: 52px; padding: 0 2px; font-size: 12px; }
  .fbv-range { margin: 0 4px; }
  .fbv-arrow { width: 40px; }
  .fbv-logo img { max-height: 32px; }
  .fbv-logo { margin-top: max(8px, env(safe-area-inset-top)); }
}
@media (max-height: 500px) {
  .fbv-stage { margin-top: 6px; margin-bottom: 4px; }
  .fbv-logo { margin-top: 6px; }
  .fbv-logo img { max-height: 24px; }
  .fbv-has-logo .fbv-stage { margin-top: 4px; }
  .fbv-bar { margin-bottom: 6px; }
}
@media (prefers-reduced-motion: reduce) {
  .fbv *, .fbv *::after, .fbv-status { transition: none !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; }
}

/* Το βίντεο πριν φορτωθεί: ύψος όσο χρειάζεται το κείμενο (σε στενές οθόνες δεν κόβεται) */
.fbv-dlg-card.fbv-flush { width: min(760px, 100%); }
.fbv-flush .fbv-dlg-body { padding: 0; gap: 0; }
.fbv-flush .fbv-dlg-img, .fbv-flush .fbv-dlg-video, .fbv-flush .fbv-dlg-audio { border-radius: 0; }
.fbv-flush .fbv-dlg-video { background: #000; }
.fbv-flush .fbv-dlg-body p { padding: 16px 24px 0; }
.fbv-flush .fbv-dlg-body p:last-child { padding-bottom: 22px; }
.fbv-lead .fbv-dlg-head { position: absolute; top: 12px; right: 12px; z-index: 3; padding: 0; }
.fbv-lead .fbv-dlg-head .fbv-btn { background: rgba(14, 18, 15, .62); color: #fff; }
.fbv-lead .fbv-dlg-head .fbv-btn:hover { background: rgba(14, 18, 15, .85); }
.fbv-lead .fbv-dlg-title { display: none; }
.fbv-dlg-video:has(.fbv-fac) { aspect-ratio: auto; min-height: 200px; }
.fbv-dlg-video .fbv-fac { position: static; min-height: 200px; padding: 20px 16px; }
@media (min-width: 521px) { .fbv-dlg-video:has(.fbv-fac) { aspect-ratio: 16 / 9; min-height: 0; } .fbv-dlg-video .fbv-fac { position: absolute; } }

/* ---- Επιπλέον κινήσεις hotspot (μόνο transform/opacity)· η ταχύτητα ρυθμίζεται με --spd ---- */
.fbv-a-ring::before, .fbv-a-ring2::before, .fbv-a-ring2::after, .fbv-a-ring3::before, .fbv-a-ring3::after, .fbv-a-halo::before, .fbv-a-orbit::before { content: ""; position: absolute; inset: 0; border-radius: 50%; pointer-events: none; }
.fbv-a-ring::before, .fbv-a-ring2::before, .fbv-a-ring2::after, .fbv-a-ring3::before, .fbv-a-ring3::after { border: 2px solid currentColor; box-shadow: 0 0 0 1px rgba(255,255,255,.75), inset 0 0 0 1px rgba(255,255,255,.55); opacity: 0; animation: fbv-ring calc(2.2s / var(--spd, 1)) cubic-bezier(.22,.7,.3,1) infinite; }
.fbv-a-ring2::after { animation-delay: calc(1.1s / var(--spd, 1)); }
.fbv-a-ring3::before { animation-delay: calc(.73s / var(--spd, 1)); } .fbv-a-ring3::after { animation-delay: calc(1.46s / var(--spd, 1)); }
.fbv-a-ring3 { --ringdur: 2.2s; }
.fbv-a-halo::before { background: radial-gradient(circle, color-mix(in srgb, currentColor 70%, transparent) 0%, color-mix(in srgb, currentColor 30%, transparent) 45%, transparent 70%); opacity: 0; animation: fbv-halo calc(2.4s / var(--spd, 1)) ease-in-out infinite; }
.fbv-a-orbit::before { inset: -6px; border: 2px dashed currentColor; box-shadow: 0 0 0 1px rgba(255,255,255,.35); opacity: .9; animation: fbv-rot calc(7s / var(--spd, 1)) linear infinite; }
.fbv-a-beat { animation: fbv-beat calc(1.5s / var(--spd, 1)) ease-in-out infinite; }
.fbv-a-float { animation: fbv-float calc(2.6s / var(--spd, 1)) ease-in-out infinite; }
.fbv-a-wiggle { animation: fbv-wiggle calc(2.2s / var(--spd, 1)) ease-in-out infinite; transform-origin: 50% 70%; }
.fbv-a-jelly { animation: fbv-jelly calc(1.8s / var(--spd, 1)) ease-in-out infinite; }
@keyframes fbv-ring { 0% { opacity: .95; transform: scale(.8); } 70%, 100% { opacity: 0; transform: scale(2.5); } }
@keyframes fbv-halo { 0%, 100% { opacity: 0; transform: scale(.7); } 50% { opacity: .95; transform: scale(2); } }
@keyframes fbv-beat { 0%, 40%, 100% { transform: scale(1); } 12% { transform: scale(1.2); } 24% { transform: scale(1.02); } 32% { transform: scale(1.14); } }
@keyframes fbv-float { 0%, 100% { transform: translateY(2px); } 50% { transform: translateY(-5px); } }
@keyframes fbv-wiggle { 0%, 55%, 100% { transform: rotate(0); } 62% { transform: rotate(-14deg); } 70% { transform: rotate(12deg); } 78% { transform: rotate(-9deg); } 86% { transform: rotate(6deg); } 93% { transform: rotate(-2deg); } }
@keyframes fbv-jelly { 0%, 100% { transform: scale(1, 1); } 25% { transform: scale(1.14, .88); } 50% { transform: scale(.92, 1.1); } 75% { transform: scale(1.05, .97); } }
/* Κουμπί-κείμενο (pill) */
.fbv-hs-chip { position: absolute; left: 50%; top: 50%; display: inline-flex; align-items: center; gap: 6px; max-width: min(260px, 80vw); transform: translate(-50%, -50%); padding: 7px 14px 7px 15px; border-radius: 999px; background: #fff; color: var(--fbv-accent); font: 700 13px/1.1 system-ui, -apple-system, "Segoe UI", sans-serif; white-space: nowrap; box-shadow: 0 1px 2px rgba(0,0,0,.2), 0 6px 18px rgba(0,0,0,.28); pointer-events: none; }
.fbv-hs-chip span { overflow: hidden; text-overflow: ellipsis; }
.fbv-hs-chip svg { width: 14px; height: 14px; flex: none; }
.fbv-hs-chip.fbv-a-ring::before, .fbv-hs-chip.fbv-a-ring2::before, .fbv-hs-chip.fbv-a-ring2::after, .fbv-hs-chip.fbv-a-ring3::before, .fbv-hs-chip.fbv-a-ring3::after, .fbv-hs-chip.fbv-a-halo::before, .fbv-hs-chip.fbv-a-orbit::before { border-radius: 999px; }
@media (prefers-reduced-motion: reduce) { .fbv-a-ring::before, .fbv-a-ring2::before, .fbv-a-ring2::after, .fbv-a-ring3::before, .fbv-a-ring3::after, .fbv-a-halo::before, .fbv-a-orbit::before, .fbv-a-beat, .fbv-a-float, .fbv-a-wiggle, .fbv-a-jelly { animation: none !important; } }

/* Χρώμα hotspot: βάφει ΟΛΑ τα εικονίδια (και τα μόνο-λευκά), `--bg` = χρώμα δίσκου/κουμπιού */
.fbv-tint .fbv-bare [stroke="#fff"] { stroke: currentColor; }
.fbv-tint .fbv-bare [fill="#fff"] { fill: currentColor; }
.fbv-tint .fbv-bare [fill="rgba(255,255,255,.26)"], .fbv-tint .fbv-bare [fill="rgba(255,255,255,.16)"] { fill: color-mix(in srgb, currentColor 28%, transparent); }
.fbv-bgc svg:not(.fbv-bare) [fill="#fff"] { fill: var(--bg); }
.fbv-bgc.fbv-hs-chip { background: var(--bg); }

/* Νέα στοιχεία popup: ήχος, κουμπί, συλλογή */
.fbv-dlg-au { display: block; width: 100%; min-height: 44px; }
.fbv-dlg-btn { display: inline-flex; align-items: center; justify-content: center; min-height: 46px; padding: 0 22px; border-radius: 999px; background: var(--fbv-accent); color: #fff; font: 700 15px/1.2 system-ui, -apple-system, "Segoe UI", sans-serif; text-decoration: none; overflow-wrap: anywhere; transition: transform .15s cubic-bezier(.16,1,.3,1), filter .15s; }
.fbv-dlg-btn:hover { filter: brightness(1.08); transform: translateY(-1px); }
.fbv-dlg-gal { display: flex; gap: 8px; overflow-x: auto; scroll-snap-type: x mandatory; overscroll-behavior-x: contain; -webkit-overflow-scrolling: touch; scrollbar-width: thin; border-radius: 12px; }
.fbv-dlg-gal img { flex: 0 0 100%; width: 100%; max-height: 70dvh; object-fit: contain; scroll-snap-align: center; background: #0e120f; }
.fbv-flush .fbv-dlg-gal { border-radius: 0; gap: 0; }
.fbv-dlg-body > .fbv-dlg-au { margin: 0; }
.fbv-flush .fbv-dlg-btnw, .fbv-flush .fbv-dlg-au { margin: 16px 24px 0; width: auto; } .fbv-flush .fbv-dlg-btnw:last-child, .fbv-flush .fbv-dlg-au:last-child { margin-bottom: 22px; }
.fbv-dlg-body > * { flex: none; }

/* ---- Πρότυπα popup: podcast, προϊόν, απόσπασμα, κουπόνι + θέματα (σκούρο / χρώμα έμφασης) και μεγέθη ---- */
.fbv-dlg-card.fbv-sz-s { width: min(400px, 100%); } .fbv-dlg-card.fbv-sz-w { width: min(860px, 100%); }
.fbv-dlg-card.fbv-th-dark { background: #14181a; color: #eef1ee; }
.fbv-dlg-card.fbv-th-brand { background: var(--fbv-accent); color: #fff; }
.fbv-th-dark .fbv-dlg-body p, .fbv-th-brand .fbv-dlg-body p { color: inherit; }
.fbv-th-dark .fbv-dlg-head .fbv-btn, .fbv-th-brand .fbv-dlg-head .fbv-btn { background: rgba(255,255,255,.16); color: #fff; }
.fbv-th-dark .fbv-dlg-head .fbv-btn:hover, .fbv-th-brand .fbv-dlg-head .fbv-btn:hover { background: rgba(255,255,255,.28); }
.fbv-th-brand .fbv-dlg-btn { background: #fff; color: var(--fbv-accent); }
.fbv-pod { display: flex; gap: 18px; align-items: flex-start; padding: 6px 0 4px; }
.fbv-pod-img { flex: none; width: 132px; height: 132px; border-radius: 14px; object-fit: cover; box-shadow: 0 8px 24px rgba(0,0,0,.28); background: #2a2f31; }
.fbv-pod-body { min-width: 0; flex: 1; display: flex; flex-direction: column; gap: 8px; }
.fbv-pod-show { font: 700 12px/1.2 system-ui, sans-serif; letter-spacing: .08em; text-transform: uppercase; opacity: .7; }
.fbv-pod-title { margin: 0; font-size: 22px; line-height: 1.2; letter-spacing: -.01em; overflow-wrap: anywhere; }
.fbv-pod-text { margin: 0; font-size: 15px; line-height: 1.5; opacity: .85; }
.fbv-pod-btns { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 6px; }
.fbv-pod-btn { display: inline-flex; align-items: center; min-height: 40px; padding: 0 18px; border-radius: 999px; background: var(--fbv-accent); color: #fff; font: 700 14px/1 system-ui, sans-serif; text-decoration: none; transition: transform .15s cubic-bezier(.16,1,.3,1), filter .15s; }
.fbv-pod-btn:hover { filter: brightness(1.1); transform: translateY(-1px); }
.fbv-prod { display: flex; flex-direction: column; }
.fbv-prod-img { display: block; width: 100%; max-height: 46dvh; object-fit: contain; background: #f2f3f1; }
.fbv-prod-body { display: flex; flex-direction: column; align-items: flex-start; gap: 8px; padding: 18px 24px 24px; }
.fbv-prod-title { margin: 0; font-size: 21px; line-height: 1.25; overflow-wrap: anywhere; }
.fbv-prod-price { display: flex; align-items: baseline; gap: 10px; } .fbv-prod-price strong { font-size: 24px; color: var(--fbv-accent); } .fbv-prod-price s { opacity: .55; }
.fbv-th-dark .fbv-prod-img { background: #0e1112; }
.fbv-quote { margin: 0; padding: 6px 0 6px 20px; border-left: 4px solid var(--fbv-accent); }
.fbv-quote p { font-size: 22px; line-height: 1.4; font-weight: 600; letter-spacing: -.01em; }
.fbv-quote footer { margin-top: 10px; font-size: 14px; opacity: .7; }
.fbv-th-brand .fbv-quote { border-color: rgba(255,255,255,.7); }
.fbv-coupon { display: flex; flex-direction: column; gap: 12px; align-items: center; text-align: center; padding: 8px 0; }
.fbv-coupon p { font-size: 18px; font-weight: 600; }
.fbv-coupon-row { display: flex; align-items: stretch; gap: 8px; max-width: 100%; }
.fbv-coupon code { display: flex; align-items: center; padding: 12px 20px; border: 2px dashed currentColor; border-radius: 12px; font: 800 22px/1 ui-monospace, SFMono-Regular, Menlo, monospace; letter-spacing: .12em; overflow-wrap: anywhere; }
.fbv-coupon-copy { padding: 0 18px; border: 0; border-radius: 12px; background: #fff; color: #14181a; font: 700 14px/1 system-ui, sans-serif; cursor: pointer; }
.fbv-th-dark .fbv-coupon-copy { background: var(--fbv-accent); color: #fff; }
@media (max-width: 520px) { .fbv-pod { flex-direction: column; } .fbv-pod-img { width: 100%; height: auto; aspect-ratio: 1 / 1; max-height: 48dvh; } }
.fbv-flush .fbv-prod-body p { padding: 0; }

/* Πιο επίπεδο, λιγότερο «αυτοκόλλητο»: ελαφριά σκιά· προαιρετικά χωρίς λευκό δίσκο (μόνο το σύμβολο, με λεπτό λευκό περίγραμμα) */
.fbv-nodisc svg > circle:first-child[fill="#fff"], .fbv-nodisc svg > rect:first-child[fill="#fff"], .fbv-nodisc svg > path:first-child[d^="M12 1.6"] { display: none; }
.fbv-nodisc svg { filter: drop-shadow(0 0 1px #fff) drop-shadow(0 0 1.5px #fff) drop-shadow(0 1px 3px rgba(0,0,0,.28)); }

/* Το πλαίσιο hover μόνο για αόρατες περιοχές (π.χ. link περιεχομένων)· τα hotspots με εικονίδιο/εφέ δεν βγάζουν πλαίσιο */
.fbv-hs-vis::after { display: none; }

/* ---- Αναγνώστης άρθρου ---- */
.fbv-read-btn { position: absolute; left: 50%; top: 14px; z-index: 6; display: inline-flex; align-items: center; gap: 8px; min-height: 40px; padding: 0 16px 0 14px; border: 0; border-radius: 999px; background: var(--fbv-accent); color: #fff; font: 700 14px/1 system-ui, -apple-system, "Segoe UI", sans-serif; cursor: pointer; transform: translateX(-50%); box-shadow: 0 2px 4px rgba(0,0,0,.2), 0 8px 22px rgba(0,0,0,.25); transition: filter .15s; animation: fbv-fade .25s ease-out; }
.fbv-read-btn:hover { filter: brightness(1.1); } .fbv-read-btn[hidden] { display: none; }
.fbv-toc-hasread { position: relative; }
.fbv-toc-read { position: absolute; right: 10px; bottom: 8px; padding: 4px 10px; border: 1px solid rgba(255,255,255,.3); border-radius: 999px; background: rgba(255,255,255,.1); color: inherit; font: 600 12px/1.2 system-ui, sans-serif; cursor: pointer; }
.fbv-toc-read:hover { background: rgba(255,255,255,.22); }
.fbv-reader { position: absolute; inset: 0; z-index: 12; display: flex; flex-direction: column; background: #fbfaf6; color: #1d2321; animation: fbv-rise .24s cubic-bezier(.16,1,.3,1) both; }
.fbv-reader.fbv-out { animation: fbv-fadeout .16s ease-in forwards; }
@keyframes fbv-rise { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: none; } }
.fbv-rd-bar { flex: none; display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 8px 12px; border-bottom: 1px solid #e6e3da; background: #fbfaf6; }
.fbv-rd-tools { display: flex; align-items: center; gap: 6px; }
.fbv-rd-btn { min-height: 40px; min-width: 40px; padding: 0 12px; border: 1px solid #dcd8cc; border-radius: 10px; background: #fff; color: #1d2321; font: 600 14px/1 system-ui, -apple-system, "Segoe UI", sans-serif; cursor: pointer; }
.fbv-rd-btn:hover { background: #f1efe7; }
.fbv-rd-scroll { flex: 1; overflow-y: auto; overscroll-behavior: contain; -webkit-overflow-scrolling: touch; outline: none; }
.fbv-rd-art { max-width: 720px; margin: 0 auto; padding: 28px 22px 64px; font-family: Georgia, "Iowan Old Style", "Palatino Linotype", "Times New Roman", serif; font-size: var(--rd-fs, 19px); line-height: 1.72; overflow-wrap: anywhere; }
.fbv-rd-kicker { margin: 0 0 8px; font: 700 .62em/1.2 system-ui, sans-serif; letter-spacing: .1em; text-transform: uppercase; color: var(--fbv-accent); }
.fbv-rd-title { margin: 0 0 .7em; font-size: 1.7em; line-height: 1.2; letter-spacing: -.01em; font-weight: 700; }
.fbv-rd-art p { margin: 0 0 1.05em; }
.fbv-rd-lead { font-weight: 700; }
.fbv-rd-h { margin: 1.5em 0 .5em; font-size: 1.18em; line-height: 1.3; font-weight: 700; }
.fbv-rd-nav { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 10px; margin-top: 2.2em; padding-top: 1.2em; border-top: 1px solid #e6e3da; }
.fbv-rd-nav .fbv-rd-btn { max-width: 100%; height: auto; min-height: 44px; padding: 10px 14px; text-align: left; line-height: 1.3; }
.fbv-reading .fbv-read-btn { display: none; }
@media (max-width: 520px) { .fbv-rd-art { padding: 20px 16px 56px; } .fbv-read-btn { top: auto; bottom: 78px; } }
@media (prefers-reduced-motion: reduce) { .fbv-reader, .fbv-read-btn { animation: none; } }

.fbv-rd-fig { margin: 1.4em auto; padding: 0; }
.fbv-rd-img { position: relative; width: 100%; overflow: hidden; border-radius: 8px; background: #ece9e0; }
.fbv-rd-img img { position: absolute; display: block; max-width: none; height: auto; }
.fbv-rd-fig figcaption { margin-top: 8px; font: 500 .72em/1.45 system-ui, -apple-system, "Segoe UI", sans-serif; color: #5a625e; }
.fbv-read-menu { position: absolute; left: 50%; top: 62px; z-index: 7; display: flex; flex-direction: column; min-width: 240px; max-width: min(420px, 90%); padding: 6px; transform: translateX(-50%); border-radius: 14px; background: #fff; color: #1d2321; box-shadow: 0 2px 6px rgba(0,0,0,.18), 0 14px 36px rgba(0,0,0,.26); animation: fbv-fade .15s ease-out; }
.fbv-read-menu button { padding: 11px 14px; border: 0; border-radius: 10px; background: transparent; color: inherit; font: 600 14px/1.3 system-ui, sans-serif; text-align: left; cursor: pointer; }
.fbv-read-menu button:hover { background: #f0efe8; }
@media (max-width: 520px) { .fbv-read-menu { top: auto; bottom: 126px; } }

/* Λάμψη τίτλου άρθρου: λευκό φως με λεπτό σκούρο περίγραμμα, ώστε να φαίνεται και σε σκούρο και σε ανοιχτό φόντο */
.fbv-hs-article .fbv-hs-fx.fbv-fx-glow { color: #fff; border-color: rgba(255,255,255,.95); box-shadow: 0 0 0 1px rgba(20,24,22,.38), 0 0 16px 3px rgba(255,255,255,.85), inset 0 0 0 1px rgba(20,24,22,.22); border-radius: 12px; }
.fbv-hs-article { cursor: pointer; }

/* Πάτημα στο κείμενο του άρθρου: αόρατο στρώμα ΚΑΤΩ από τα hotspots */
.fbv-txl { position: absolute; inset: 0; z-index: 1; pointer-events: none; }
.fbv-txl.fbv-txl-on { pointer-events: auto; }
.fbv-txl.fbv-txl-hit { cursor: pointer; }
.fbv-rd-hl { background: color-mix(in srgb, var(--fbv-accent) 16%, transparent); box-shadow: -10px 0 0 color-mix(in srgb, var(--fbv-accent) 16%, transparent), 10px 0 0 color-mix(in srgb, var(--fbv-accent) 16%, transparent); border-radius: 4px; transition: background .6s; }

.fbv-txl-hl { position: absolute; z-index: 1; pointer-events: none; border-radius: 4px; background: color-mix(in srgb, var(--fbv-accent) 16%, transparent); box-shadow: 0 0 0 1px color-mix(in srgb, var(--fbv-accent) 38%, transparent); animation: fbv-fade .12s ease-out; }
.fbv-txl-tag { width: max-content; height: auto !important; padding: 5px 10px; border-radius: 999px; background: var(--fbv-accent); color: #fff; font: 700 12px/1.2 system-ui, -apple-system, "Segoe UI", sans-serif; box-shadow: 0 2px 10px rgba(0,0,0,.25); box-sizing: border-box; }
.fbv-txl-flash { animation: fbv-hint 1.6s ease-in-out both; }
@keyframes fbv-hint { 0% { opacity: 0; } 25%, 65% { opacity: 1; } 100% { opacity: 0; } }

.fbv-txl-hl.fbv-txl-hl-on { background: color-mix(in srgb, var(--fbv-accent) 26%, transparent); box-shadow: 0 0 0 1.5px color-mix(in srgb, var(--fbv-accent) 60%, transparent); }

/* λίστες (π.χ. συντελεστές): μία γραμμή ανά αλλαγή γραμμής του κειμένου */
.fbv-rd-art p { white-space: pre-line; }

/* Φόρμα εισόδου (επιβεβαίωση επαγγελματία) */
.fbv-gate { position: absolute; inset: 0; z-index: 30; display: grid; place-items: center; padding: 16px; background: rgba(18, 22, 19, .62); overscroll-behavior: contain; }
.fbv-gate-card { width: min(420px, 100%); max-height: 100%; overflow-y: auto; padding: 28px 24px 24px; border-radius: 20px; background: #fff; color: #262a28; text-align: center; box-shadow: 0 12px 28px rgba(20, 28, 22, .24), 0 32px 72px rgba(20, 28, 22, .3); }
.fbv-gate-title { margin: 0 0 14px; font-size: 21px; font-weight: 700; line-height: 1.25; color: var(--fbv-accent, #a62b4d); overflow-wrap: anywhere; }
.fbv-gate-text { margin: 0 0 20px; font-size: 15px; line-height: 1.55; overflow-wrap: anywhere; white-space: pre-line; }
.fbv-gate-text strong { color: #1d2b6b; }
.fbv-gate-acts { display: grid; gap: 10px; }
.fbv-gate-btn { display: flex; align-items: center; justify-content: center; gap: 8px; width: 100%; min-height: 48px; padding: 12px 16px; border: 0; border-radius: 12px; font-family: inherit; font-weight: 700; font-size: 15px; line-height: 1.2; text-transform: uppercase; letter-spacing: .01em; color: #fff; cursor: pointer; }
.fbv-gate-yes { background: #2f8a3e; }
.fbv-gate-no { background: #c9302c; }
.fbv-gate-back { background: #4b5563; margin-top: 4px; }
.fbv-gate-yes:hover { background: #28772f; } .fbv-gate-no:hover { background: #b02a26; } .fbv-gate-back:hover { background: #3b434f; }
.fbv-gate-btn:focus-visible { outline: 3px solid #1d2b6b; outline-offset: 2px; }
.fbv-gate [hidden] { display: none !important; }

/* ---- Νέες κινήσεις (v0.3.2): shake, swing, tada, flip, pop, nudge, flash, drift — μόνο transform/opacity ---- */
.fbv-a-shake { animation: fbv-shake calc(2.4s / var(--spd, 1)) ease-in-out infinite; }
.fbv-a-swing { animation: fbv-swing calc(2.6s / var(--spd, 1)) ease-in-out infinite; transform-origin: 50% 15%; }
.fbv-a-tada { animation: fbv-tada calc(2.6s / var(--spd, 1)) ease-in-out infinite; }
.fbv-a-flip { animation: fbv-flip calc(3s / var(--spd, 1)) ease-in-out infinite; }
.fbv-a-pop { animation: fbv-popa calc(2s / var(--spd, 1)) ease-out infinite; }
.fbv-a-nudge { animation: fbv-nudge calc(1.6s / var(--spd, 1)) ease-in-out infinite; }
.fbv-a-flash { animation: fbv-flash calc(2.4s / var(--spd, 1)) linear infinite; }
.fbv-a-drift { animation: fbv-drift calc(3.2s / var(--spd, 1)) linear infinite; }
@keyframes fbv-shake { 0%, 50%, 100% { transform: translateX(0); } 8%, 24%, 40% { transform: translateX(-4px); } 16%, 32%, 46% { transform: translateX(4px); } }
@keyframes fbv-swing { 0%, 60%, 100% { transform: rotate(0); } 68% { transform: rotate(16deg); } 76% { transform: rotate(-12deg); } 84% { transform: rotate(7deg); } 92% { transform: rotate(-3deg); } }
@keyframes fbv-tada { 0%, 60%, 100% { transform: scale(1) rotate(0); } 66% { transform: scale(.9) rotate(-4deg); } 72%, 84% { transform: scale(1.12) rotate(4deg); } 78%, 90% { transform: scale(1.12) rotate(-4deg); } 96% { transform: scale(1) rotate(0); } }
@keyframes fbv-flip { 0%, 55%, 100% { transform: perspective(240px) rotateY(0); } 80% { transform: perspective(240px) rotateY(180deg); } 99% { transform: perspective(240px) rotateY(360deg); } }
@keyframes fbv-popa { 0%, 55%, 100% { transform: scale(1); } 68% { transform: scale(1.28); } 80% { transform: scale(.94); } 90% { transform: scale(1.04); } }
@keyframes fbv-nudge { 0%, 100% { transform: translateX(-2px); } 50% { transform: translateX(6px); } }
@keyframes fbv-flash { 0%, 50%, 100% { opacity: 1; } 12%, 36% { opacity: .15; } 24%, 46% { opacity: 1; } }
@keyframes fbv-drift { 0% { transform: translate(0, -3px); } 25% { transform: translate(3px, 0); } 50% { transform: translate(0, 3px); } 75% { transform: translate(-3px, 0); } 100% { transform: translate(0, -3px); } }
@media (prefers-reduced-motion: reduce) { .fbv-a-shake, .fbv-a-swing, .fbv-a-tada, .fbv-a-flip, .fbv-a-pop, .fbv-a-nudge, .fbv-a-flash, .fbv-a-drift { animation: none !important; } }
