/* Functions and Facilities (fu-quotes.js, fu-billing.js, fu-sheet.js): two browser windows, one per person, placed and
   switched as in Renewals & Invoicing (reference.md §3a); a desktop window at every width (no phone layout). Window a is
   the one seen first; b rises over it when the person using the system changes. Over the hirer's window, the club's
   email to her (Deposits & Billing), in the look of the other demos' message cards. */
.fu-win-a { left: 26px; top: 20px; width: 848px; height: 500px; }
.fu-win-b { left: 46px; top: 34px; width: 828px; height: 492px; }
.fu-win .dv-url-text { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }

/* whose window it is, at the right of its bar */
.fu-who { position: absolute; right: 10px; top: 50%; transform: translateY(-50%); display: flex; align-items: center; gap: 5px;
  font: 600 8.5px/1 Geist, Arial, sans-serif; color: #4a463d; white-space: nowrap; }
.fu-who i { width: 15px; height: 15px; border-radius: 50%; display: grid; place-items: center; font-style: normal; font-size: 6.5px; letter-spacing: .02em; color: #fff; }

.fu-page { position: absolute; inset: 0; overflow: hidden; background: #fff; }
.fu-if { position: absolute; left: 0; top: 0; border: 0; transform-origin: 0 0; pointer-events: none; background: #fff; }
/* A page change by the same person: later pages lie over earlier ones and cross-fade in (0.5 s). */
.fu-later { opacity: 0; visibility: hidden; transition: opacity .5s ease, visibility 0s .5s; }
.fu-later.is-on { opacity: 1; visibility: visible; transition: opacity .5s ease, visibility 0s; }
.fu-loading .fu-page { visibility: hidden; }   /* an empty window while a page loads: never a page loading on camera */

/* The window switch: a steps back (0.6 s), then b comes forward (0.7 s), 0.85 s after it began. */
.fu-win-a { transition: transform .6s cubic-bezier(.4, 0, .2, 1), filter .6s ease, opacity .6s ease; transform-origin: 50% 35%; }
.fu-win-a.is-back { transform: translateY(-8px) scale(.92); filter: brightness(.82) saturate(.75); opacity: .72; }
.fu-win-a:not(.is-back) { transition-duration: .7s; transition-timing-function: cubic-bezier(.2, .7, .2, 1); }
.fu-win-b { opacity: 0; visibility: hidden; transform: translateY(44px) scale(.96); box-shadow: 0 24px 60px rgba(27, 26, 23, .3), 0 0 0 1px rgba(27, 26, 23, .08);
  transition: transform .6s cubic-bezier(.4, 0, .2, 1), opacity .45s ease .15s, visibility 0s .6s; }
.fu-win-b.is-on { opacity: 1; visibility: visible; transform: none; transition: transform .7s cubic-bezier(.2, .7, .2, 1), opacity .45s ease, visibility 0s; }

/* The club's email to the hirer, over her window (Deposits & Billing): the real message from the outbox. */
.fu-mail { position: absolute; z-index: 20; right: 18px; top: 44px; width: 286px; padding: 11px 14px 12px; border-radius: 14px; pointer-events: none;
  background: rgba(252, 252, 250, .98); box-shadow: 0 0 0 1px rgba(27, 26, 23, .08), 0 24px 44px -18px rgba(40, 30, 8, .5);
  font: 400 11px/1.45 Geist, Arial, sans-serif; color: #1b1a17;
  opacity: 0; transform: translateY(-14px) scale(.98); transition: opacity .35s ease, transform .55s cubic-bezier(.2, .85, .2, 1); }
.fu-mail.is-on { opacity: 1; transform: none; }
.fu-mail-top { display: flex; align-items: center; gap: 7px; font-size: 9.5px; color: #77736a; margin-bottom: 6px; }
.fu-mail-top b { font-weight: 600; text-transform: uppercase; letter-spacing: .05em; }
.fu-mail-top span:last-child { margin-left: auto; }
.fu-mail-app { display: grid; place-items: center; width: 20px; height: 20px; border-radius: 5px; background: linear-gradient(#4a93ff, #1f6fe5); }
.fu-mail-app svg { width: 12px; height: 12px; }
.fu-mail-from { display: block; font-size: 11.5px; font-weight: 600; }
.fu-mail-sub { display: block; font-size: 11px; }
.fu-mail-text { margin: 2px 0 0; font-size: 10.5px; line-height: 1.42; color: #5d5a52; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.fu-mail-btn { display: inline-block; margin-top: 8px; padding: 5px 10px; border-radius: 5px; background: #14275E; color: #fff; font-size: 10px; font-weight: 600; }

@media (prefers-reduced-motion: reduce) { .fu-later, .fu-later.is-on, .fu-win-a, .fu-win-a:not(.is-back), .fu-win-b, .fu-win-b.is-on, .fu-mail, .fu-mail.is-on { transition: none; } }

/* Deposits & Billing's roster beat: the person carried (a script's drag has no picture of its own), as Rostering draws it. */
.fu-ghost { position: absolute; left: 0; top: 0; z-index: 40; display: flex; align-items: center; gap: 5px; padding: 3px 8px 3px 3px;
  background: #fff; border-radius: 6px; box-shadow: 0 6px 18px rgba(27, 26, 23, .22), 0 0 0 1px #9CCBAB;
  font: 600 7.5px/1 Geist, Arial, sans-serif; color: #1b1a17; opacity: 0; pointer-events: none; transition: opacity .15s ease; }
.fu-ghost i { width: 14px; height: 14px; border-radius: 50%; display: grid; place-items: center; font-style: normal; font-size: 5.5px; background: #E7F3EC; color: #1E7A45; }
.fu-ghost.is-on { opacity: .92; }
/* Enquiries & Quotes: the board seen closer, column by column (the office window's page scaled from its top left). */
.fu-page.fu-zoom { transform-origin: 0 0; will-change: transform; }
@media (prefers-reduced-motion: reduce) { .fu-ghost { transition: none; } }
