/*!
 * FancyFields component library — styles.
 *
 * Dependency-free, RTL-aware (CSS logical properties only — no left/right),
 * keyboard-accessible (visible focus), and reduced-motion-aware. Pairs with
 * fancyfields-components.js. See references/components.md for the markup
 * contract the agent must emit. Components: lightbox, carousel, scroll-reveal,
 * sticky header, mobile drawer.
 *
 * Convention: every selector is namespaced under `.ff-*`. Directional CSS uses
 * logical properties (inset-inline-*, margin-inline-*, border-start-*, etc.) so
 * the same rules work in `dir="ltr"` and `dir="rtl"` with no mirrored overrides.
 */:root{--ff-overlay-bg: rgba(0, 0, 0, .85);--ff-control-bg: rgba(255, 255, 255, .12);--ff-control-fg: #fff;--ff-focus-ring: 3px solid #4d90fe;--ff-z-overlay: 9999;--ff-transition: .24s ease}.ff-lightbox :focus-visible,.ff-carousel :focus-visible,.ff-drawer :focus-visible,.ff-drawer-toggle:focus-visible,.ff-reveal :focus-visible{outline:var(--ff-focus-ring);outline-offset:2px}.ff-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.ff-lightbox{position:fixed;inset:0;z-index:var(--ff-z-overlay);display:none;align-items:center;justify-content:center;background:var(--ff-overlay-bg)}.ff-lightbox.is-open{display:flex}.ff-lightbox__figure{margin:0;max-inline-size:90vw;max-block-size:90vh;text-align:center}.ff-lightbox__img{max-inline-size:90vw;max-block-size:80vh;block-size:auto;inline-size:auto;object-fit:contain}.ff-lightbox__caption{color:var(--ff-control-fg);margin-block-start:.5rem}.ff-lightbox__counter{position:absolute;inset-block-start:1rem;inset-inline-start:1rem;color:var(--ff-control-fg);font-variant-numeric:tabular-nums}.ff-lightbox__close{position:absolute;inset-block-start:1rem;inset-inline-end:1rem}.ff-lightbox__nav{position:absolute;inset-block-start:50%;transform:translateY(-50%)}.ff-lightbox__nav--prev{inset-inline-start:1rem}.ff-lightbox__nav--next{inset-inline-end:1rem}.ff-lightbox__close,.ff-lightbox__nav{appearance:none;border:0;cursor:pointer;background:var(--ff-control-bg);color:var(--ff-control-fg);font-size:1.5rem;line-height:1;inline-size:2.75rem;block-size:2.75rem;border-radius:999px}[dir=rtl] .ff-lightbox__nav{transform:translateY(-50%) scaleX(-1)}.ff-carousel{position:relative;overflow:hidden}.ff-carousel__track{display:flex;transition:transform var(--ff-transition);will-change:transform}.ff-carousel__slide{flex:0 0 100%;min-inline-size:0}.ff-carousel__nav{position:absolute;inset-block-start:50%;transform:translateY(-50%);appearance:none;border:0;cursor:pointer;background:var(--ff-control-bg);color:var(--ff-control-fg);inline-size:2.5rem;block-size:2.5rem;border-radius:999px}.ff-carousel__nav--prev{inset-inline-start:.5rem}.ff-carousel__nav--next{inset-inline-end:.5rem}[dir=rtl] .ff-carousel__nav{transform:translateY(-50%) scaleX(-1)}.ff-carousel__dots{display:flex;gap:.5rem;justify-content:center;margin-block-start:.75rem;padding:0;list-style:none}.ff-carousel__dot{appearance:none;border:0;cursor:pointer;inline-size:.75rem;block-size:.75rem;border-radius:999px;background:currentColor;opacity:.4}.ff-carousel__dot.is-active{opacity:1}.ff-reveal{opacity:0;transform:translateY(1.5rem);transition:opacity var(--ff-transition),transform var(--ff-transition)}.ff-reveal.is-revealed{opacity:1;transform:none}html:not(.ff-js) .ff-reveal{opacity:1;transform:none}.ff-sticky-header{position:sticky;inset-block-start:0;z-index:calc(var(--ff-z-overlay) - 1);transition:transform var(--ff-transition),box-shadow var(--ff-transition)}.ff-sticky-header.is-condensed{box-shadow:0 2px 12px #0000001f}.ff-sticky-header.is-hidden{transform:translateY(-100%)}.ff-drawer{position:fixed;inset-block:0;inset-inline-start:0;z-index:var(--ff-z-overlay);inline-size:min(80vw,320px);max-inline-size:100%;background:#fff;transform:translate(-100%);transition:transform var(--ff-transition);overflow-y:auto}[dir=rtl] .ff-drawer{transform:translate(100%)}.ff-drawer.is-open{transform:none}.ff-drawer__backdrop{position:fixed;inset:0;z-index:calc(var(--ff-z-overlay) - 1);background:#00000080;opacity:0;visibility:hidden;transition:opacity var(--ff-transition),visibility var(--ff-transition)}.ff-drawer__backdrop.is-open{opacity:1;visibility:visible}.ff-drawer__close{position:absolute;inset-block-start:.75rem;inset-inline-end:.75rem}.ff-scroll-locked,.ff-scroll-locked body{overflow:hidden}.ff-scroll-locked body{position:fixed;inset-inline:0;inline-size:100%}@media(prefers-reduced-motion:reduce){.ff-reveal{opacity:1;transform:none;transition:none}.ff-carousel__track,.ff-sticky-header,.ff-drawer,.ff-drawer__backdrop{transition:none}}
