/* Parish doves: see js/parish-doves.js */
.pd-layer { position: absolute; left: 0; top: 0; width: 0; height: 0; overflow: visible; pointer-events: none; z-index: 90; }
.pd-layer-fixed { position: fixed; z-index: 100001; }
/* doves entering or leaving past the edges must never widen the page:
   each layer has a real size and hides whatever flies outside it */
.pd-layer { overflow: hidden; }
#pd-ambient-layer { width: 100%; }                       /* height set from JS to the page height */
.pd-layer-fixed { right: 0; bottom: 0; width: auto; height: auto; }
.pd-dove { position: absolute; left: 0; top: 0; pointer-events: none; will-change: transform, opacity; }
.pd-small { width: 64px; height: 69px; }
.pd-big { width: var(--pdw, 170px); height: calc(var(--pdw, 170px) * 1.077); }
.pd-svg { width: 100%; height: 100%; display: block; overflow: visible; filter: drop-shadow(0 8px 10px rgba(0,0,0,.28)); }
.pd-small .pd-svg { filter: drop-shadow(0 4px 5px rgba(0,0,0,.25)); }
.pd-small .dove-branch { display: none; }
.pd-svg .dove-wing { transform-box: view-box; transition: transform .35s cubic-bezier(.3,.7,.4,1); }

/* flapping: quick while flying, slow while hovering on the login alert */
.pd-dove.flying, .pd-dove.hover { --pd-beat: .32s; }
.pd-dove.hover { --pd-beat: .9s; }
.pd-dove.flying .near, .pd-dove.hover .near { animation: pdNear var(--pd-beat) cubic-bezier(.45,0,.55,1) infinite alternate; }
.pd-dove.flying .far, .pd-dove.hover .far { animation: pdFar var(--pd-beat) cubic-bezier(.45,0,.55,1) infinite alternate; }
.pd-dove.flying .dove-body, .pd-dove.flying .dove-tail, .pd-dove.flying .dove-feet, .pd-dove.flying .dove-branch,
.pd-dove.hover .dove-body, .pd-dove.hover .dove-tail, .pd-dove.hover .dove-feet, .pd-dove.hover .dove-branch { animation: pdBob var(--pd-beat) cubic-bezier(.45,0,.55,1) infinite alternate; }
@keyframes pdNear { from { transform: rotate(0); } to { transform: rotate(-42deg) scale(.9,.82); } }
@keyframes pdFar  { from { transform: rotate(0); } to { transform: rotate(22deg) scale(.92,.82); } }
@keyframes pdBob  { from { transform: translateY(0); } to { transform: translateY(5px); } }

/* resting: wings folded, gentle breathing and an occasional head tilt */
.pd-dove.resting .near { transform: rotate(-86deg) scale(.58,.42); }
.pd-dove.resting .far  { transform: rotate(70deg) scale(.4,.34); }
.pd-dove.resting .pd-svg { animation: pdPeck 5s ease-in-out infinite; }
.pd-dove.resting .dove-body { animation: pdBreathe 2.6s ease-in-out infinite; }
@keyframes pdPeck { 0%,70%,100% { transform: rotate(0); } 74% { transform: rotate(7deg); } 78% { transform: rotate(0); } 84% { transform: rotate(-4deg) translateY(-1px); } 88% { transform: rotate(0); } }
@keyframes pdBreathe { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-1.5px); } }

@media print { .pd-layer { display: none !important; } }
@media (prefers-reduced-motion: reduce) { .pd-layer { display: none !important; } }
