/* The cover is a root sibling of body, unaffected by page layout and opacity. */
.study-launch-overlay{position:fixed;inset:0;width:100vw;height:100dvh;z-index:2147483000;overflow:hidden;pointer-events:auto;background:#faf6ef;isolation:isolate;transform:translateZ(0);backface-visibility:hidden;will-change:opacity;contain:layout paint;view-transition-name:tyy-launch-cover}
.study-launch-circle{position:absolute;width:100px;height:100px;top:50%;left:50%;border-radius:50%;background:#f1e6d7;transform:translate(-50%,-50%) scale(0);will-change:transform}
.study-launch-content{position:absolute;inset:0}
.study-launch-emblem{position:absolute;top:var(--launch-y,50%);left:var(--launch-x,50%);transform:translate(-50%,-50%);width:96px;height:96px;display:grid;place-items:center;font-size:48px;line-height:1}
.study-launch-emblem img{display:block;width:48px;height:48px;object-fit:contain}
.study-launch-overlay.arriving{background:#f1e6d7}
.launch-progress{position:absolute;top:calc(var(--launch-y,50%) + 64px);left:var(--launch-x,50%);transform:translateX(-50%);display:flex;align-items:center;gap:8px;opacity:0;color:#806d59;font:13px/1.5 system-ui,sans-serif;white-space:nowrap;transition:opacity .15s ease-out}
.is-waiting .launch-progress{opacity:1}
.launch-spinner{width:15px;height:15px;box-sizing:border-box;border:2px solid #806d5940;border-right-color:#806d59;border-radius:50%;animation:launch-spin .8s linear infinite}
.launch-retry{position:absolute;top:calc(var(--launch-y,50%) + 104px);left:var(--launch-x,50%);transform:translateX(-50%);border:0;border-radius:20px;padding:10px 16px;color:#765f49;background:#fff;cursor:pointer;white-space:nowrap}
html.tyy-page-loading body{pointer-events:none}
@keyframes launch-spin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.launch-progress{transition:none}.launch-spinner{animation:none}}
html:is(.tyy-page-pending,.tyy-page-loading){background:#f1e6d7!important}

/* Keep the outgoing painted cover until the incoming document has a stable frame. */
@view-transition{navigation:auto}
html:is(.tyy-page-pending,.tyy-page-loading)::view-transition-group(*){animation:none}
html:is(.tyy-page-pending,.tyy-page-loading)::view-transition-old(*){animation:launch-handoff-hold 20s linear both;opacity:1;mix-blend-mode:normal}
html:is(.tyy-page-pending,.tyy-page-loading)::view-transition-new(*){animation:none;opacity:1;mix-blend-mode:normal}
@keyframes launch-handoff-hold{from{opacity:1}to{opacity:1}}
@media(prefers-reduced-motion:reduce){@view-transition{navigation:none}}
html.tyy-page-pending body{opacity:0!important}
html.tyy-startup-pending{background:#faf6ef!important}
html.tyy-startup-pending body{opacity:0!important;pointer-events:none}
html.tyy-startup-pending::after{content:"";position:fixed;left:calc(50% - 9px);top:calc(50% - 9px);width:18px;height:18px;border:2px solid #806d5940;border-right-color:#806d59;border-radius:50%;animation:launch-spin .8s linear infinite}
/* Cold launch continues the installed application identity; page links keep their own icons. */
html.tyy-cold-launch:is(.tyy-page-pending,.tyy-page-loading){background:#faf6ef!important}
.study-launch-overlay.launch-cold{background:#faf6ef}
.launch-cold .study-launch-emblem{width:min(56vw,224px);height:min(56vw,224px)}
.launch-cold .study-launch-emblem::before{content:"";position:absolute;inset:0;border-radius:30%;background:var(--launch-preview,none) center/contain no-repeat;filter:blur(5px);transition:opacity .2s ease-out}
.launch-cold .study-launch-emblem img{width:100%;height:100%;position:relative;z-index:1;border-radius:30%;opacity:0;transition:opacity .2s ease-out}
.launch-cold .study-launch-emblem.is-icon-ready img{opacity:1}
.launch-cold .study-launch-emblem.is-icon-ready::before{opacity:0}
.launch-cold .launch-progress{top:calc(var(--launch-y,50%) + min(28vw,112px) + 22px)}
@media(prefers-reduced-motion:reduce){.launch-cold .study-launch-emblem img,.launch-cold .study-launch-emblem::before{transition:none}}
/* Session checks hide private content, never the root-level loading cover. */
html.tyy-session-pending body,html.tyy-session-pending :is(dialog[open],[popover]:popover-open,:fullscreen){opacity:0!important;pointer-events:none!important;user-select:none!important}html.tyy-session-pending body,html.tyy-session-pending body *{visibility:hidden!important}
html.tyy-session-pending :is(dialog[open],[popover]:popover-open,:fullscreen)::backdrop{opacity:0!important;backdrop-filter:none!important;pointer-events:none!important}
.study-launch-emblem>.tyy-line-icon{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;color:inherit}
