/* Root full-height contract. Backgrounds own the viewport; controls own insets. */
:root{--viewport-height:100vh;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--safe-left:env(safe-area-inset-left,0px);--safe-right:env(safe-area-inset-right,0px)}
@supports(height:100dvh){:root{--viewport-height:100dvh}}
:root[data-keyboard="open"]{--safe-bottom:0px}
html,body{width:100%;height:var(--viewport-height);min-height:0;margin:0;padding:0;overflow:hidden;box-sizing:border-box}
body{display:block}
#app.phone-shell,#cloud-auth-root{position:fixed;left:0;top:var(--viewport-top,0px);width:100%;height:var(--keyboard-height,var(--viewport-height));min-height:0;max-height:none;margin:0;padding:0;box-sizing:border-box}
#app>.app-screen{position:relative;width:100%;height:100%;min-height:0;max-height:none;box-sizing:border-box;padding-left:var(--safe-left);padding-right:var(--safe-right);overflow:hidden}
.page-motion-frame{display:flex;flex-direction:column;flex:1;min-height:0;min-width:0;position:relative}
.page-motion-frame>section{min-height:0;min-width:0}
#cloud-auth-root{overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
#cloud-auth-backdrop{position:absolute;inset:0;width:100%;height:var(--viewport-height);pointer-events:none;z-index:0}
html[data-cloud-auth="visible"] body{background:transparent}
.cloud-auth-shell{padding-left:max(22px,var(--safe-left));padding-right:max(22px,var(--safe-right))}
/* No transformed page ancestor: fixed drag ghosts remain viewport-relative and
   opaque page backgrounds remain painted throughout navigation. */
.page-motion-enter-active,.page-motion-leave-active{transition:none}
.page-motion-enter-from,.page-motion-leave-to{opacity:1;transform:none}
