/* A light paper sheet connects documents without moving their fixed anchors. */
html::before{
 content:"";position:fixed;inset:0;z-index:10000;background:#f9f6e7;
 pointer-events:none;transform:translateY(100%);visibility:hidden;cursor:var(--cursor,auto);
}
html[data-page-direction=back]::before{transform:translateY(-100%)}
html[data-page-transition]::before{visibility:visible}
html[data-page-transition=waiting]::before{transform:translateY(0)}
html[data-page-transition]::before{pointer-events:auto}
html[data-page-transition] #work-content,html[data-page-transition] .about-resume{transform-origin:50% 0}
html[data-page-transition=leaving]::before{
 transform:translateY(0);
 transition:transform var(--page-exit-duration,var(--transition-exit,160ms)) var(--transition-exit-ease,cubic-bezier(.4,0,1,1));
}
html[data-page-transition=revealing]::before{
 transform:translateY(-100%);
 transition:transform var(--page-enter-duration,var(--transition-enter,320ms)) var(--transition-enter-ease,cubic-bezier(.16,.8,.24,1));
}
html[data-page-transition=revealing][data-page-direction=back]::before{transform:translateY(100%)}
@media(prefers-reduced-motion:reduce){html::before{display:none}}

/* Collection navigation uses a single opacity reveal. It starts the next
   document immediately and has no geometry proxy or image-owner handoff. */
html[data-page-transition-mode=collection-fade]::before{
 background:var(--page-source-surface,#f8f5f0);transform:none;opacity:0;will-change:opacity;
 transition:none;
}
html[data-page-transition-mode=collection-fade][data-page-transition=leaving]::before{
 opacity:0;transition:none;
}
html[data-page-transition-mode=collection-fade][data-page-transition=waiting]::before{
 opacity:1;
}
html[data-page-transition-mode=collection-fade][data-page-transition=revealing]::before{
 opacity:0;transform:none;
 transition:opacity var(--page-enter-duration,var(--transition-enter,320ms)) var(--transition-enter-ease,cubic-bezier(.16,.8,.24,1));
}
/* A finite public source pose keeps its actual disc/name pixels across native
   documents. Collection subjects dissolve in place; none are flown or swapped. */
html[data-page-source-pose]::before{display:none}
.page-source-pose{position:fixed;inset:0;z-index:10000;overflow:clip;pointer-events:auto;cursor:var(--cursor,auto);isolation:isolate;will-change:opacity}
.page-source-art{position:absolute;inset:0;overflow:clip}
.page-source-image{position:absolute;display:block;max-width:none;object-fit:contain;pointer-events:none;user-select:none}
.page-source-text{position:absolute;display:block;overflow:hidden;margin:0;padding:0;border:0;white-space:pre-wrap;overflow-wrap:anywhere;pointer-events:none;z-index:30;-webkit-font-smoothing:antialiased}
.page-source-text-clip{position:absolute;overflow:hidden;pointer-events:none;z-index:30}
.page-source-svg{position:absolute;display:block;overflow:visible;pointer-events:none;z-index:30}
.page-source-dot{position:absolute;display:block;border-radius:50%;pointer-events:none;z-index:30}
.page-paper-sheet{position:absolute;inset:0;z-index:50;background:#f9f6e7;pointer-events:none;will-change:transform}
@media(prefers-reduced-motion:reduce){.page-source-pose{display:none}}

html[data-page-transition-mode=shared]::before{display:none}
[data-shared-hidden=true]{visibility:hidden!important}
.shared-flight{position:fixed;inset:0;z-index:10001;overflow:hidden;pointer-events:auto;cursor:var(--cursor,auto);isolation:isolate}
.shared-flight-background{position:absolute;inset:0;pointer-events:none}
.shared-flight-tile{position:absolute;transform-origin:0 0;overflow:visible;pointer-events:none;line-height:0;will-change:transform}
.shared-flight-tile.is-cover{overflow:hidden}
.shared-flight-cover{position:absolute;overflow:clip;pointer-events:none;line-height:0;transform-origin:0 0;will-change:clip-path,transform,opacity}
.shared-flight-cover img.shared-flight-cover-image{width:100%;height:100%;object-fit:cover!important;object-position:top;max-width:none}
html[data-shared-circle=opening] :is(#work-hero-cover,.first-frame-work-cover){visibility:hidden}
html[data-shared-circle=opening] :is(#work-hero-disc,.first-frame-disc[data-shared-kind=work]){visibility:hidden}
.shared-flight-tile img{display:block;width:100%;height:100%;max-width:none;object-fit:contain;transform-origin:50% 50%;pointer-events:none}
.shared-flight-replacement{position:absolute;inset:0;object-fit:contain!important}
html[data-page-transition-mode=shared]:is([data-page-transition=waiting],[data-page-transition=revealing]):not([data-shared-stage=landed]):not([data-shared-stage=content]) :is(#scene,.catalog-header,#catalog-grid,#catalog-empty,#work-content){opacity:0}
/* Sea bridge discs must wait with the native scene. Without this guard the
   four side records paint at full opacity before the shared return reveals. */
html[data-page-transition-mode=shared][data-first-frame=portfolio]:is([data-page-transition=waiting],[data-page-transition=revealing]):not([data-shared-stage=landed]):not([data-shared-stage=content]) .first-frame-bridge{opacity:0}
html[data-page-transition-mode=shared][data-first-frame=portfolio]:is([data-page-transition=waiting],[data-page-transition=revealing]):not([data-shared-stage=landed]):not([data-shared-stage=content]) :is(#navigation,#browse-controls){opacity:0}
html[data-page-transition-mode=shared][data-shared-stage=landed] :is(#scene,#catalog-grid,#work-content){transition:opacity 80ms ease-out}
@media(prefers-reduced-motion:reduce){.shared-flight{display:none}}

.shared-flight-tile img.shared-stone-fragment{position:absolute;inset:auto;object-fit:contain;transform-origin:50% 50%;z-index:3;max-width:none;will-change:transform,opacity;filter:drop-shadow(0 3px 4px rgb(0 0 0 / .2))}

.shared-stone-piece{position:absolute;inset:0;transform-origin:50% 50%;pointer-events:none;will-change:transform,opacity;z-index:2}
.shared-flight-tile img.shared-stone-rim{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;max-width:none;pointer-events:none}

.shared-flight-source-plane{position:absolute;inset:0;overflow:hidden;border-radius:inherit;pointer-events:none}

/* Restore native history reading positions before the first visible content frame. */
html[data-page-scroll=restoring] body{visibility:hidden}

/* The inert first-frame bridge paints from fresh HTML data before modules. */
.first-frame-bridge{position:fixed;inset:0;z-index:7;pointer-events:none;overflow:clip}
.first-frame-bridge,.first-frame-bridge *{pointer-events:none!important}
.first-frame-disc{position:absolute;pointer-events:none}
.first-frame-disc img{width:100%;height:100%;object-fit:contain}
.first-frame-bridge .first-frame-caption{opacity:1;visibility:visible}
html[data-first-frame=portfolio] #scene,html[data-first-frame=portfolio] .browse-v08-caption:not(.first-frame-caption){visibility:hidden}
html[data-first-frame=portfolio] #status-line{visibility:hidden}
html[data-first-frame=work] #work-status{visibility:hidden}
html[data-first-frame=portfolio] #navigation>button{opacity:.600006}
html[data-first-frame=catalog] #catalog-grid,html[data-first-frame=catalog] #catalog-content>.catalog-header{visibility:hidden}
html[data-first-frame=catalog] .first-frame-bridge{position:absolute;overflow:visible}
.first-frame-catalog-stage{--s:var(--catalog-scale);color:#111}
.first-frame-catalog-header{color:#111}
html[data-page-transition-mode=shared]:not([data-shared-stage=content]):not([data-shared-stage=landed]) :is(.first-frame-catalog-cell,.first-frame-catalog-header,.first-frame-caption){opacity:0}
html[data-shared-stage=content] .browse-v08-caption{opacity:1}

/* The reverse cover is the only copy of the source artwork during closure.
   Never leave the complete detail page underneath a translucent sea plane. */
html[data-page-transition-mode=shared][data-shared-from=work][data-page-transition=leaving] :is(#work-hero,#work-content,#work-next){visibility:hidden}
html[data-page-transition-mode=shared][data-shared-from=work][data-page-transition=leaving] .work-information{opacity:0;transition:opacity 160ms ease-out}

.first-frame-image-error{display:grid;position:absolute;inset:0;place-items:center;color:#f2efe8;font:13px Helvetica,'Source Han Sans',sans-serif;text-shadow:0 1px 3px #000;background:rgb(5 24 32 / .8);border-radius:50%;line-height:1.4}
