#frp-modal{position:fixed;inset:0;z-index:9999;display:none}
#frp-modal.open{display:block}
body.frp-modal-open{overflow:hidden}
.frp-gallery{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:24px}
.frp-gallery.frp-document{display:block}
.frp-gallery.frp-document p{margin:0 0 8px 0}
.frp-gallery .frp-media{cursor:pointer;margin:0;display:flex;align-items:center;justify-content:center;aspect-ratio:4/3;overflow:hidden;background:#fff}
.frp-gallery img{width:100%;height:100%;display:block;object-fit:contain}
.frp-gallery figcaption{display:none}

#frp-modal{position:fixed;inset:0;z-index:9999;display:none}
#frp-modal.open{display:block}
#frp-modal .frp-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.7)}
#frp-modal .frp-dialog{position:fixed;inset:0;background:#fff;box-shadow:0 10px 40px rgba(0,0,0,.35);padding:1rem;overflow:auto}
#frp-modal .frp-close{position:absolute;top:.5rem;right:.5rem;background:#fff;border:1px solid #ddd;border-radius:999px;padding:.25rem .5rem;cursor:pointer}
#frp-modal .frp-prev,#frp-modal .frp-next{position:absolute;top:50%;transform:translateY(-50%);border:1px solid #ddd;background:#fff;border-radius:999px;width:2.25rem;height:2.25rem;display:flex;align-items:center;justify-content:center;cursor:pointer}
#frp-modal .frp-prev{left:.5rem}#frp-modal .frp-next{right:.5rem}
#frp-modal .frp-media{margin:1rem auto;text-align:center;max-width:1440px;width:100%}
#frp-modal .frp-media img,#frp-modal .frp-media iframe{max-width:100%;max-height:70vh;height:auto}
#frp-modal .frp-modal-loader{display:flex;justify-content:center;align-items:center;min-height:40vh}
#frp-modal .frp-modal-loader .frp-spinner{width:40px;height:40px;border:4px solid rgba(0,0,0,.15);border-top-color:#00A651;border-radius:50%;animation:frp-spin .8s linear infinite}
@keyframes frp-spin{to{transform:rotate(360deg)}}
#frp-modal .frp-actions{margin:.5rem 0 1rem 0;display:flex;gap:.5rem;justify-content:center}
#frp-modal .frp-actions .frp-btn{display:inline-block;padding:.5rem .75rem;border:1px solid #ddd;background:#f6f7f7;text-decoration:none}
#frp-modal .frp-info{width:100%;max-width:1440px;margin:0 auto;border-collapse:collapse;background:#fff}
#frp-modal .frp-info tr{background:#fff !important}
#frp-modal .frp-info th,#frp-modal .frp-info td{border-top:2px solid #000;border-bottom:2px solid #000;border-left:0;border-right:0;padding:.375rem .5rem;text-align:left;background:#fff;vertical-align:top}
#frp-modal .frp-info th{width:var(--frp-meta-key-width,13.75rem);white-space:normal}

/* Simple scroll animations */
.will-animate{opacity:0;transform:translateY(8px)}
.animated{animation-duration:.7s;animation-fill-mode:forwards;animation-timing-function:ease-out}
.animated-slow{animation-duration:2s}
@keyframes fadeIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.fadeIn{animation-name:fadeIn}

/* Prevent initial flicker on projects page: hide targets until animated */
[data-frp-pl][data-animate="1"] .frp-card,
[data-frp-pl][data-animate="1"] .frp-filter-panels .frp-filter-section,
[data-frp-pl][data-animate="1"] .frp-block-title{opacity:0;transform:translateY(8px)}
[data-frp-pl][data-animate="1"] .frp-filter-bar .frp-filter-trigger{opacity:0}

/* Ensure animated overrides hidden state */
/* let keyframes drive the transition; no hard override */

/* Prevent initial flicker on single page */
[data-frp-single][data-animate="1"] .frp-hero,
[data-frp-single][data-animate="1"] .frp-project-single,
[data-frp-single][data-animate="1"] .frp-block-title,
[data-frp-single][data-animate="1"] .frp-side-nav,
[data-frp-single][data-animate="1"] .frp-downloads,
[data-frp-single][data-animate="1"] .frp-documents{opacity:0;transform:translateY(8px)}

/* On single pages, animate media items individually to avoid delaying the whole section */
[data-frp-single][data-animate="1"] .frp-media-sections .frp-gallery .frp-media{opacity:0;transform:translateY(8px)}


