@import url('/linksphere/showcase.css');
@import url('/linksphere/page-map.css');
html,body{height:100%;min-height:0;overflow:hidden}#stage.showcase{height:100%;margin:0}.owner-empty{position:absolute;top:58%;width:100%;text-align:center;color:#607b8b;font:11px Oxanium,sans-serif;letter-spacing:.1em;pointer-events:none}.owner-connections{position:absolute;bottom:12px;left:50%;transform:translateX(-50%);z-index:5;display:flex;gap:16px;flex-wrap:wrap;justify-content:center;max-width:90%}.owner-connections a{color:#b1c8d8;font:11px Oxanium,sans-serif;text-decoration:none;border-bottom:1px solid #b8cee433;padding:10px 0;min-height:44px}.owner-connections[hidden]{display:none}.demo-node .node-label{font-family:Oxanium,sans-serif}
.owner-compact .page-map-panel{left:12px;bottom:12px;transform-origin:bottom left;transform:scale(.68)}.owner-compact .page-map.is-open .page-map-panel{transform:scale(.78)}.owner-compact .page-map-list{max-height:calc((100dvh - 64px)/.78);overflow-y:auto;overflow-x:hidden;scrollbar-width:none;overscroll-behavior:contain}.owner-compact .page-map-branch{position:relative;left:12px;top:2px}

.public-home{position:fixed;top:max(12px,env(safe-area-inset-top));left:max(18px,env(safe-area-inset-left));z-index:10;color:#8198a7;font:11px Oxanium,sans-serif;letter-spacing:.065em;text-decoration:none;min-height:44px;display:flex;align-items:center}.public-home:hover{color:#d1e4ef}.public-home:focus-visible{outline:1px dotted #aac9dc;outline-offset:3px}.sphere-error{position:absolute;top:45%;left:15px;width:calc(100% - 30px);text-align:center;color:#92aabb;font:13px Oxanium,sans-serif;line-height:1.6}

/* This renderer also runs inside a short owner iframe. Its map must fit that
   viewport rather than inheriting the standalone creator's scrolling layout. */
body.owner-renderer #stage.showcase{height:100%;max-height:none;margin:0}
.owner-renderer .page-map-panel{transform:scale(.62);transform-origin:top left}
.owner-renderer .page-map.is-open .page-map-panel{transform:scale(.82)}
body.owner-compact .page-map-panel{transform:scale(.68)}
body.owner-compact .page-map.is-open .page-map-panel{transform:scale(.78)}
.owner-renderer .page-map-list{min-width:140px;max-height:calc((100dvh - 56px)/.82 - 32px);overflow-y:auto;overflow-x:hidden;scrollbar-width:none;overscroll-behavior:contain;touch-action:pan-y}
body.owner-compact .page-map-list{max-height:calc((100dvh - 56px)/.78 - 32px)}
.owner-renderer .page-map-row{max-width:min(220px,calc((100vw - 56px)/.82 - 22px));overflow:hidden;text-overflow:ellipsis}
.owner-renderer .page-map-branch{position:relative;left:12px;top:2px;max-width:128px}
.owner-renderer .page-map-child{max-width:100%;overflow:hidden;text-overflow:ellipsis}
@media(max-width:600px){body.owner-renderer:not(.owner-compact) #stage.showcase{height:min(100vw,100dvh)}}

/* Embedded frames reserve a real lower band, never lift the link list into the
   particle object. Only this frame scrolls if its unchanged object fills it. */
body.owner-renderer{overflow-y:auto;overflow-x:hidden;scrollbar-width:none}
.owner-renderer .page-map-panel,.owner-compact .page-map-panel{transform-origin:top left}
.owner-renderer .page-map-list{min-width:0;touch-action:none}
.owner-renderer .page-map[data-side=right] .page-map-panel{transform-origin:top left}
.owner-renderer .page-map-branch{position:absolute;max-width:128px}
.owner-renderer .page-map[data-constrained=true] .page-map-branch{position:relative}
body.owner-creation{overflow:hidden}body.owner-creation .owner-empty{display:none}body.owner-creation #stage{height:100%;min-height:0;max-height:none}

.owner-renderer .owner-connections{bottom:auto;width:max-content;max-width:calc(100% - 24px);background:transparent}

body.owner-compact[data-editor-focus=true]{overflow:hidden;background:transparent}
body.owner-compact[data-editor-focus=true] #stage.showcase{height:var(--editor-hero-height,48%);min-height:0;overflow:visible}
body.owner-compact[data-editor-focus=true] .page-map{filter:blur(1.6px);opacity:.42;pointer-events:none;transition:filter .3s,opacity .3s}
@media(prefers-reduced-motion:reduce){body.owner-compact[data-editor-focus=true] .page-map{transition:none}}

/* Owner home is a full transparent scene, not a cropped hero iframe. A measured
   upper hero and independent stack band keep every scrollable row reachable. */
body.owner-compact[data-owner-home=true]{overflow:hidden;background:transparent}
body.owner-compact[data-owner-home=true] #stage.showcase{height:var(--owner-home-hero-height,50%);min-height:0;margin:0!important;overflow:visible}

.owner-renderer .owner-connections{flex-direction:column;align-items:center;gap:2px}
.owner-renderer .owner-connections a{border:0;padding:5px 8px;min-height:36px}
.owner-renderer .owner-connections a:active{transform:scale(.95)}

/* Local soft focus keeps group ink readable over pale grains without a panel. */
.owner-renderer .owner-connections a{color:#e4e9ed;background:transparent;text-shadow:0 1px 2px #000,0 0 5px #000c,0 0 10px #0008}
.owner-renderer .owner-connections a:focus-visible{outline:none;filter:none;color:#fff;text-shadow:0 1px 2px #000,0 0 5px #000c,0 0 10px #0008,0 0 3px #ffffff66}
