html.radial-capture::view-transition-group(root){animation-duration:2000ms}
html.radial-capture::view-transition-new(root){animation:none;mix-blend-mode:normal}
html.radial-capture::view-transition-old(root){z-index:2;mix-blend-mode:normal}
html.radial-capture::view-transition-old(root),html.radial-to-light::view-transition-new(root){animation:radial-hold 2000ms linear both;mask-image:var(--radial-shape);mask-size:100vw 100vh;mask-repeat:no-repeat}
html.radial-to-light::view-transition-old(root){z-index:1;mask-image:none;animation:none}
html.radial-to-light::view-transition-new(root){z-index:2}
html.radial-capture,html.radial-capture body{transition:none!important}
@keyframes radial-hold{from{opacity:1}to{opacity:1}}

/* Keep real controls reachable below the browser snapshot layer. */
::view-transition,::view-transition-group(*),::view-transition-image-pair(*),::view-transition-old(*),::view-transition-new(*){pointer-events:none}
html.radial-capture::view-transition-old(root),html.radial-to-light::view-transition-new(root){animation-iteration-count:infinite}


/* A separate live transition layer keeps falling leaves out of the frozen root. */
@media(min-width:769px) and (hover:hover) and (pointer:fine){#leaves{view-transition-name:autumn-leaves}}
::view-transition-group(autumn-leaves){animation:none!important;z-index:10}
::view-transition-image-pair(autumn-leaves){isolation:auto}
::view-transition-old(autumn-leaves){display:none}
::view-transition-new(autumn-leaves){animation:none!important;mix-blend-mode:normal;opacity:1}


html.radial-capture #leaves .leaf {
  filter: brightness(calc(1 + var(--transition-night,0) * (-0.58 + var(--desk-light,0) * 1.13)))
          saturate(calc(1 + var(--transition-night,0) * (-0.25 + var(--desk-light,0) * 0.6)))
          sepia(calc(var(--transition-night,0) * (0.08 + var(--desk-light,0) * 0.37)));
}


@media(min-width:769px) and (hover:hover) and (pointer:fine){.workspace-image{view-transition-name:live-desk}}
::view-transition-group(live-desk){animation:none!important;z-index:5}
::view-transition-image-pair(live-desk){isolation:auto}
::view-transition-old(live-desk){display:none}
::view-transition-new(live-desk){animation:none!important;mix-blend-mode:normal;opacity:1}
html.radial-capture .workspace-image .desk-theme-light{opacity:calc(1 - var(--desk-transition-night,0))!important}
html.radial-capture .workspace-image .desk-theme-dark{opacity:var(--desk-transition-night,0)!important}

html.radial-capture.radial-control-hover{cursor:pointer!important}


body{isolation:isolate}
.theme-live-backdrop{position:fixed;inset:0;z-index:-1;background:#07121f;pointer-events:none}
.theme-live-wave{position:absolute;inset:0;background:#e6e5de;mask-size:100vw 100vh;mask-repeat:no-repeat}
html.radial-capture,html.radial-capture body{transition:none!important}
html.radial-capture .desk-theme,html.radial-capture .leaf{transition:none!important}

[data-live-wipe-source]{opacity:0!important}

/* Keep the original animated hand painted; cloning it restarts its playback. */
ry-nav .top-nav[data-live-wipe-source]{opacity:1!important;background:transparent!important;border-color:transparent!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
ry-nav .top-nav[data-live-wipe-source]> :not(.top-nav-pfp-link){opacity:0!important}
ry-nav .top-nav[data-live-wipe-source]>.top-nav-pfp-link{background:transparent!important;box-shadow:none!important}

/* Pre-interaction fallback uses the existing 1.5 s desk/theme crossfade clock.
   A solid root updates native chrome; the body supplies the visible color fade. */
html[data-theme-transition="simple"],html[data-theme-transition="reduced"]{transition:none!important}
html[data-theme-transition="simple"] body{background-color:#e6e5de;transition:background-color 1.5s ease-in-out}
html[data-theme-transition="simple"] body.dark-mode{background-color:#07121f}
html[data-theme-transition="reduced"] body{background-color:#e6e5de;transition:none!important}
html[data-theme-transition="reduced"] body.dark-mode{background-color:#07121f}
html[data-theme-transition="reduced"] .desk-theme,
html[data-theme-transition="reduced"] #leaves .leaf{transition:none!important}

@media(min-width:769px){html[data-safari-startup] body.fonts-loaded .launch-banner{animation-delay:.18s;animation-duration:.65s}}

/* Safari keeps the same entrance keyframes, with a compact waterfall after
   the bounded font wait. Chrome retains its established choreography. */
html[data-safari-startup] .top-nav{transition:opacity .5s ease}
html[data-safari-startup] ry-nav .top-nav.fonts-loaded > *{animation-duration:.5s;animation-timing-function:cubic-bezier(.22,1,.36,1)}
html[data-safari-startup] ry-nav .top-nav.fonts-loaded > :nth-child(1){animation-delay:.08s}
html[data-safari-startup] ry-nav .top-nav.fonts-loaded > :nth-child(2){animation-delay:.16s}
html[data-safari-startup] ry-nav .top-nav.fonts-loaded > :nth-child(3){animation-delay:.24s}
html[data-safari-startup] ry-nav .top-nav.fonts-loaded > :nth-child(4){animation-delay:.32s}
html[data-safari-startup] body.fonts-loaded .controls-group,
html[data-safari-startup] body.fonts-loaded .controls-group .theme-toggle,
html[data-safari-startup] body.fonts-loaded .controls-group .changelog-button,
html[data-safari-startup] body.fonts-loaded .voice-button.start-call,
html[data-safari-startup] body.fonts-loaded .voice-info-wrapper,
html[data-safari-startup] body.fonts-loaded .homepage-resources[data-reveal-ready] .sidequests-title,
html[data-safari-startup] body.fonts-loaded .homepage-resources[data-reveal-ready] .sidequests-item{animation-duration:.5s;animation-timing-function:cubic-bezier(.22,1,.36,1)}
html[data-safari-startup] body.fonts-loaded .voice-button.start-call{animation-delay:.42s}
html[data-safari-startup] body.fonts-loaded .voice-info-wrapper{animation-delay:.54s}
html[data-safari-startup] body.fonts-loaded .controls-group{animation-delay:.66s}
html[data-safari-startup] body.fonts-loaded .controls-group .theme-toggle,
html[data-safari-startup] body.fonts-loaded .controls-group .changelog-button{animation-delay:0s}
html[data-safari-startup] body.fonts-loaded .homepage-resources[data-reveal-ready] .sidequests-title{animation-delay:.18s}
html[data-safari-startup] body.fonts-loaded .homepage-resources[data-reveal-ready] .sidequests-item:nth-child(1){animation-delay:.24s}
html[data-safari-startup] body.fonts-loaded .homepage-resources[data-reveal-ready] .sidequests-item:nth-child(2){animation-delay:.30s}
html[data-safari-startup] body.fonts-loaded .homepage-resources[data-reveal-ready] .sidequests-item:nth-child(3){animation-delay:.36s}
html[data-safari-startup] body.fonts-loaded .homepage-resources[data-reveal-ready] .sidequests-item:nth-child(4){animation-delay:.42s}
html[data-safari-startup] body.fonts-loaded .homepage-resources[data-reveal-ready] .sidequests-item:nth-child(5){animation-delay:.48s}
html[data-safari-startup] body.fonts-loaded .homepage-resources[data-reveal-ready] .sidequests-item:nth-child(6){animation-delay:.54s}
html[data-safari-startup] body.fonts-loaded .homepage-resources[data-reveal-ready] .sidequests-item:nth-child(7){animation-delay:.60s}
@media(max-width:768px){
 html[data-safari-startup] body.fonts-loaded .controls-group .theme-toggle,
 html[data-safari-startup] body.fonts-loaded .controls-group .changelog-button{animation-delay:.66s}
}
@media(prefers-reduced-motion:reduce){
 html[data-safari-startup] .top-nav{transition:none}
 html[data-safari-startup] body.fonts-loaded .top-nav > *,
 html[data-safari-startup] body.fonts-loaded .controls-group,
 html[data-safari-startup] body.fonts-loaded .controls-group .theme-toggle,
 html[data-safari-startup] body.fonts-loaded .controls-group .changelog-button,
 html[data-safari-startup] body.fonts-loaded .voice-button.start-call,
 html[data-safari-startup] body.fonts-loaded .voice-info-wrapper,
 html[data-safari-startup] body.fonts-loaded .homepage-resources[data-reveal-ready] .sidequests-title,
 html[data-safari-startup] body.fonts-loaded .homepage-resources[data-reveal-ready] .sidequests-item{animation-delay:0s!important;animation-duration:.01ms!important}
}

/* One reveal gate prevents independent component/font readiness from separating
   the banner from the two resource headings. Rows retain their short stagger. */
html[data-safari-startup]:not([data-secondary-ready]) body.fonts-loaded .launch-banner,
html[data-safari-startup]:not([data-secondary-ready]) body.fonts-loaded .homepage-resources .sidequests-title,
html[data-safari-startup]:not([data-secondary-ready]) body.fonts-loaded .homepage-resources .sidequests-item{animation:none!important;opacity:0}

/* Keep the anchor itself as Safari's mouse target while its hover scramble
   replaces text nodes. Decorative text/icons must not break a press/release. */
html[data-safari-startup] ry-nav .top-nav-link > *{pointer-events:none}
