/* Shared frame for apps 7–15. Each app sets: --page --screen --ink --frame --frame-ring --font on :root */
*{box-sizing:border-box;margin:0;padding:0}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;text-align:inherit;-webkit-tap-highlight-color:transparent}
input{font:inherit;color:inherit;border:0;outline:0;background:none;min-width:0}
html,body{height:100%;overflow:hidden;background:var(--page)}
body{font-family:var(--font);color:var(--ink);display:flex;align-items:center;justify-content:center;-webkit-font-smoothing:antialiased}
#root{display:contents}
#stage{position:relative;flex:none;transform-origin:center}
.launcher-back{position:fixed;top:14px;left:14px;z-index:40;display:flex;align-items:center;gap:6px;height:32px;padding:0 13px 0 9px;border-radius:16px;background:#111;color:#fff;font:600 12px system-ui,sans-serif;text-decoration:none}
.k-phone{position:absolute;width:var(--pw,240px);height:var(--ph,520px);border-radius:var(--pr,38px);background:var(--frame,#fff);padding:var(--pb,4px);box-shadow:var(--frame-ring,0 0 0 1px #d6d6d6,0 20px 40px rgba(0,0,0,.08))}
.k-screen{position:relative;width:100%;height:100%;border-radius:calc(var(--pr,38px) - var(--pb,4px));overflow:hidden;background:var(--screen,#fff)}
.k-island{position:absolute;top:7px;left:50%;transform:translateX(-50%);width:74px;height:21px;border-radius:12px;background:#000;z-index:20}
.k-status{position:absolute;top:0;left:0;right:0;z-index:19;height:34px;display:flex;align-items:center;justify-content:space-between;padding:2px 20px 0 24px;font-size:10.5px;font-weight:600}
.k-status>span:first-child{display:flex;align-items:center}
.k-st-ic{display:flex;gap:4px;align-items:center}
.k-home{position:absolute;bottom:6px;left:50%;transform:translateX(-50%);width:84px;height:3px;border-radius:2px;z-index:21}
.k-img{background-size:cover;background-repeat:no-repeat;position:relative}
.k-view{position:absolute;inset:0;overflow-y:auto;scrollbar-width:none}
.k-view::-webkit-scrollbar{display:none}
.k-fade{animation:kfade .35s cubic-bezier(.2,.8,.2,1)}
.k-push{animation:kpush .38s cubic-bezier(.2,.8,.2,1)}
@keyframes kfade{from{opacity:0;transform:translateY(6px)}}
@keyframes kpush{from{opacity:0;transform:translateX(30px)}}
.k-toast{position:absolute;top:38px;left:50%;z-index:30;transform:translate(-50%,-70px);height:28px;padding:0 13px;border-radius:14px;display:flex;align-items:center;font-size:10px;font-weight:600;white-space:nowrap;background:var(--toast-bg,#111);color:var(--toast-fg,#fff);transition:transform .45s cubic-bezier(.34,1.4,.64,1)}
.k-toast.show{transform:translate(-50%,0)}
.k-press{transition:transform .15s}.k-press:active{transform:scale(.95)}
.nowrap{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
