/* Trial 2026-10-06 (second round): opening, held scenes, rising headings and the pointer ring.
   Remove this file, shared/luxe.js and their links (plus the D-marked code in the motion files) to go back. */

/* D2 Sales PC: the income sheet holds still under the menu while the reward ledger slides up over it
   (land-development-sales/sales-motion.js sets .is-stacked, --stack-top and --under, and wraps the ledger in .reward-lift).
   The sheet below sinks back as it is covered; the ledger's shadow only shows while it is on its way. */
.reward.is-stacked .income-sheet{position:sticky;top:var(--stack-top,112px);transform-origin:50% 0;
  scale:calc(1 - .05 * var(--under,0));filter:brightness(calc(1 - .12 * var(--under,0)))}
.reward.is-stacked .reward-lift{position:relative;z-index:1;
  filter:drop-shadow(0 -10px 28px rgba(9,43,67,calc(var(--under,0) * (1 - var(--under,0)) * .8)))}

/* D7 Sales PC: the selection sheet holds still while the rounded ENTRY photo rises over it, the same move as D2
   (land-development-sales/sales-motion.js sets .is-stacked, --stack-top, --stack-room and --under on the selection and
   --under on the ENTRY scene). The room under the sheet keeps it stuck until the photo has covered it; the negative
   margin takes the room back, so the page is no longer than before. */
.selection.is-stacked{margin-bottom:calc(-1 * var(--stack-room,0px))}
.selection.is-stacked::after{content:"";display:block;height:var(--stack-room,0px)}
.selection.is-stacked .selection-sheet{position:sticky;top:var(--stack-top,112px);transform-origin:50% 0;
  scale:calc(1 - .05 * var(--under,0));filter:brightness(calc(1 - .12 * var(--under,0)))}
/* Safari moves the stuck sheet on its scrolling thread. Unless the ENTRY scene already has its own layer above it, the
   photo is drawn under the sheet for a moment as it arrives. */
.selection.is-stacked + .entry-scene{z-index:1;will-change:transform}
.selection.is-stacked + .entry-scene .entry-photo{
  filter:drop-shadow(0 -10px 28px rgba(9,43,67,calc(var(--under,0) * (1 - var(--under,0)) * .8)))}

/* D3 TOP opening, once per tab: the page lies under a navy sheet carrying the white logo; the sheet is lifted and taken
   away to the left, the same move as the sheet page change. The inline head script on the TOP sets html.intro only for a
   fresh visit from outside the site (no reload, back, hash or reduced motion). Any wheel, touch, key or click speeds it
   away (shared/luxe.js); the page underneath scrolls freely the whole time. The hero labels wait for the sheet. */
.intro-cover{display:none}
@media (prefers-reduced-motion:no-preference){
  .intro .intro-cover{display:block;position:fixed;inset:0;z-index:100;pointer-events:none;
    background:radial-gradient(120% 90% at 50% 38%,#0e3d5c,#061d2e);animation:intro-sheet 1.8s both}
  .intro .intro-logo{position:absolute;left:50%;top:50%;width:min(300px,58vw);aspect-ratio:153.57/32.39;translate:-50% -50%;
    background:#fff;-webkit-mask:url(../assets/logo.svg) center/contain no-repeat;mask:url(../assets/logo.svg) center/contain no-repeat;
    animation:intro-logo 1.8s both}
  .js.intro:not(.skip-intro) .hero-title .label{animation-delay:1.05s}
  .js.intro:not(.skip-intro) .hero-title .label:nth-child(2){animation-delay:1.21s}
  .js.intro:not(.skip-intro) .hero-title .label:nth-child(3){animation-delay:1.37s}
}
@keyframes intro-sheet{
  0%,44%{transform:none;border-radius:0;box-shadow:0 0 0 rgba(2,14,24,0);animation-timing-function:cubic-bezier(.6,0,.25,1)}
  64%{transform:scale(.86);border-radius:14px;box-shadow:0 40px 100px rgba(2,14,24,.45);animation-timing-function:cubic-bezier(.55,0,.8,.25)}
  100%{transform:translateX(-128%) rotate(-5deg) scale(.86);border-radius:14px;box-shadow:0 40px 100px rgba(2,14,24,.45)}
}
@keyframes intro-logo{
  0%{opacity:0;translate:-50% calc(-50% + 14px);animation-timing-function:cubic-bezier(.2,.7,.3,1)}
  24%,100%{opacity:1;translate:-50% -50%}
}

/* D4 Big message headings rise line by line (shared/luxe.js wraps the lines; the motion files play them). */
.rise-line,.rise-in{display:block}
.is-rising .rise-line{clip-path:inset(-.5em -1em 0 -1em)}

/* D5 Mouse only: a thin ring trails the pointer (shared/luxe.js; the system pointer stays). Over a gateway, job or person
   card it becomes a navy disc with an arrow; over other links it gives way to their own hover; over fields it hides. */
.adv-cursor{position:fixed;left:0;top:0;z-index:2147483000;pointer-events:none;opacity:0;transition:opacity .3s ease}
.adv-cursor.is-on{opacity:1}
.adv-cursor.is-field{opacity:0}
.adv-cursor-ring,.adv-cursor-disc{position:absolute;left:0;top:0;border-radius:50%;translate:-50% -50%}
.adv-cursor-ring{width:34px;height:34px;border:1px solid rgba(9,43,67,.42);box-shadow:0 0 0 1px rgba(255,255,255,.3);
  transition:scale .45s cubic-bezier(.3,.7,.2,1),opacity .3s ease}
.adv-cursor-disc{display:grid;place-items:center;width:76px;height:76px;background:#092b43;color:#fff;box-shadow:0 14px 34px rgba(9,43,67,.26);
  scale:.44;opacity:0;transition:scale .5s cubic-bezier(.3,.7,.2,1),opacity .28s ease}
.adv-cursor-disc svg{width:26px;height:15px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;
  translate:-8px 0;opacity:0;transition:translate .5s cubic-bezier(.3,.7,.2,1) .06s,opacity .3s ease .06s}
.adv-cursor.is-link .adv-cursor-ring{scale:.5;opacity:0}
.adv-cursor.is-card .adv-cursor-ring{scale:2.2;opacity:0}
.adv-cursor.is-card .adv-cursor-disc{scale:1;opacity:1}
.adv-cursor.is-card .adv-cursor-disc svg{translate:0 0;opacity:1}
.adv-cursor.is-down .adv-cursor-ring{scale:.78}
.adv-cursor.is-down.is-card .adv-cursor-disc{scale:.88}
@media not ((hover:hover) and (pointer:fine)),(prefers-reduced-motion:reduce){.adv-cursor{display:none}}
