#frpp-overlay{position:fixed!important;inset:0;z-index:2147483647;width:100vw;height:100vh;height:100dvh;box-sizing:border-box;margin:0!important;padding:0!important;background-color:var(--fr-bg);background-image:linear-gradient(rgba(48,145,194,.075) 1px,transparent 1px),linear-gradient(90deg,rgba(48,145,194,.075) 1px,transparent 1px),radial-gradient(ellipse at center,rgba(48,145,194,.12),transparent 65%);background-size:var(--fr-grid) var(--fr-grid),var(--fr-grid) var(--fr-grid),100% 100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:22px;opacity:1;visibility:visible;transition:opacity var(--fr-fade) ease,visibility var(--fr-fade) ease}
#frpp-overlay.frpp-no-grid{background-image:radial-gradient(ellipse at center,rgba(48,145,194,.12),transparent 65%)}
#frpp-overlay.frpp-no-glow{background-image:linear-gradient(rgba(48,145,194,.075) 1px,transparent 1px),linear-gradient(90deg,rgba(48,145,194,.075) 1px,transparent 1px);background-size:var(--fr-grid) var(--fr-grid)}
#frpp-overlay.frpp-no-grid.frpp-no-glow{background-image:none}
#frpp-overlay.frpp-finished{opacity:0;visibility:hidden;pointer-events:none}
#frpp-overlay .frpp-center{width:var(--fr-size);height:var(--fr-size);position:relative;display:grid;place-items:center;flex:none}
#frpp-overlay .frpp-logo{width:var(--fr-logo);height:var(--fr-logo);max-width:90%;max-height:90%;object-fit:contain;position:relative;z-index:2;animation:frpp-breathe 2s ease-in-out infinite}
.frpp-frame{position:absolute;inset:0;pointer-events:none}
.frpp-frame i,.frpp-frame b,.frpp-frame em,.frpp-frame strong{position:absolute;display:block;box-sizing:border-box;inset:0;border-radius:50%;border:3px solid transparent}
.frpp-frame-double i{border-color:color-mix(in srgb,var(--fr-accent) 15%,transparent);border-top-color:var(--fr-accent);border-bottom-color:var(--fr-text);animation:frpp-spin 1.7s linear infinite}
.frpp-frame-double b{inset:13px;border:2px dashed var(--fr-accent);opacity:.7;animation:frpp-reverse 5s linear infinite}
.frpp-frame-single i{border:4px solid transparent;border-top-color:var(--fr-accent);border-left-color:var(--fr-text);animation:frpp-spin 1.1s linear infinite}
.frpp-frame-dashed i{border:3px dashed var(--fr-accent);animation:frpp-spin 3s linear infinite}.frpp-frame-dashed b{inset:15px;border:2px dashed var(--fr-text);animation:frpp-reverse 4s linear infinite}
.frpp-frame-triple i{border-top-color:var(--fr-accent);border-width:4px;animation:frpp-spin 1.2s linear infinite}.frpp-frame-triple b{inset:12px;border-left-color:var(--fr-text);animation:frpp-reverse 1.8s linear infinite}.frpp-frame-triple em{inset:24px;border-bottom-color:var(--fr-accent);animation:frpp-spin 2.4s linear infinite}
.frpp-frame-dots i{border:3px dotted var(--fr-accent);animation:frpp-spin 2s linear infinite}.frpp-frame-dots b{inset:12px;border:3px dotted var(--fr-text);animation:frpp-reverse 3s linear infinite}
.frpp-frame-pulse i{border:3px solid var(--fr-accent);animation:frpp-pulse 1.8s ease-out infinite}.frpp-frame-pulse b{border:2px solid var(--fr-text);animation:frpp-pulse 1.8s ease-out .6s infinite}
.frpp-frame-radar i{border:3px solid var(--fr-accent);opacity:.4}.frpp-frame-radar b{border:0;background:conic-gradient(from 0deg,transparent 0 280deg,var(--fr-accent) 360deg);opacity:.45;animation:frpp-spin 2s linear infinite}
.frpp-frame-arcs i{border-top-color:var(--fr-accent);border-bottom-color:var(--fr-accent);animation:frpp-spin 1.4s linear infinite}.frpp-frame-arcs b{inset:12px;border-left-color:var(--fr-text);border-right-color:var(--fr-text);animation:frpp-reverse 1.9s linear infinite}
.frpp-frame-square i{border:3px solid var(--fr-accent);border-radius:16%;animation:frpp-spin 3s linear infinite}.frpp-frame-square b{inset:16px;border:2px solid var(--fr-text);border-radius:16%;animation:frpp-reverse 4s linear infinite}
.frpp-frame-diamond i{inset:15%;border:3px solid var(--fr-accent);border-radius:0;animation:frpp-diamond 3s linear infinite}.frpp-frame-diamond b{inset:25%;border:2px solid var(--fr-text);border-radius:0;animation:frpp-diamond 3s linear infinite reverse}
.frpp-frame-neon i{border:3px solid var(--fr-accent);box-shadow:0 0 12px var(--fr-accent),inset 0 0 12px var(--fr-accent);animation:frpp-pulse 2s ease-in-out infinite}.frpp-frame-neon b{inset:12px;border:2px solid var(--fr-text);opacity:.65;animation:frpp-reverse 4s linear infinite}
.frpp-frame-minimal i{border:2px solid transparent;border-top-color:var(--fr-accent);animation:frpp-spin 1s linear infinite}
#frpp-overlay .frpp-name{color:var(--fr-text);font:700 12px Arial,sans-serif;letter-spacing:3px;text-align:center}
#frpp-overlay .frpp-progress{width:125px;height:3px;overflow:hidden;border-radius:10px;background:rgba(255,255,255,.15)}
#frpp-overlay .frpp-progress span{display:block;width:35%;height:100%;background:linear-gradient(90deg,var(--fr-accent),var(--fr-text));animation:frpp-bar 1.4s ease-in-out infinite}
@keyframes frpp-spin{to{transform:rotate(360deg)}}@keyframes frpp-reverse{to{transform:rotate(-360deg)}}@keyframes frpp-diamond{from{transform:rotate(45deg)}to{transform:rotate(405deg)}}@keyframes frpp-breathe{50%{transform:scale(.95);opacity:.8}}@keyframes frpp-pulse{50%{transform:scale(1.12);opacity:.25}}@keyframes frpp-bar{from{transform:translateX(-110%)}to{transform:translateX(300%)}}
@media(max-width:767px){#frpp-overlay .frpp-center{transform:scale(.82)}}
@media(prefers-reduced-motion:reduce){#frpp-overlay *,#frpp-overlay *:before,#frpp-overlay *:after{animation:none!important}}

/* v1.1: Reveal the loaded page from bottom to top.
   Overlay slides upward while the page remains stationary beneath it. */
#frpp-overlay.frpp-finished{
  opacity:1;
  visibility:visible;
  pointer-events:none;
  transform:translate3d(0,-105%,0);
}
#frpp-overlay{
  transform:translate3d(0,0,0);
  transition:transform var(--fr-fade) cubic-bezier(.76,0,.24,1);
  will-change:transform;
}
@media(prefers-reduced-motion:reduce){
  #frpp-overlay{transition:opacity .15s ease,visibility .15s ease;will-change:auto}
  #frpp-overlay.frpp-finished{transform:none;opacity:0;visibility:hidden}
}
