/* Bottom navigation refinement: keep all gaze targets below the character. */
.topbar{position:relative;min-height:124px;gap:32px}
.brand-lockup{display:flex;align-items:center;gap:28px;min-width:0}
.brand{flex-shrink:0}
.slogan{font-size:clamp(14px,1.1vw,18px);line-height:1.65;letter-spacing:0;font-weight:450;overflow-wrap:anywhere}
.top-actions{flex-shrink:0}
.world{height:calc(100svh - 124px);min-height:636px;max-height:1076px}
.character{width:min(1440px,110vw,calc((max(760px,100svh) - 300px)*1.77778));bottom:162px}
/* One visible video; no character-layer opacity crossfade. */
.constellation{inset:auto max(6vw,24px) 64px;max-width:880px;margin:0 auto;display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:clamp(24px,5vw,84px)}
.constellation .portal{position:relative;inset:auto;min-width:0;padding:16px 32px 16px 0;min-height:100px}
.portal-name{font-size:clamp(20px,2vw,30px);overflow-wrap:anywhere}
.portal-note{font-size:12px;line-height:1.5}
.entering .cooperate{animation-delay:.36s}
.character-caption{bottom:190px;font-size:12px}
.bottom{bottom:10px;font-size:12px;min-height:24px}
.panel-open{overflow:hidden}
.panel-open .topbar{visibility:visible;opacity:.24;filter:blur(10px)}
.about-actions{display:flex;flex-wrap:wrap;gap:24px 48px;margin-top:44px}
.motion-setting{margin-top:44px;border-top:1px solid var(--line);padding-top:24px}
.motion-setting button{padding:12px 0;min-height:44px;font-size:14px;color:var(--purple)}
.motion-setting p{margin:6px 0 0;font-size:12px;color:var(--muted)}
.top-actions select{font-size:13px}
.panel{padding-bottom:100px;scroll-padding-bottom:100px}
.panel h2{font-size:clamp(32px,5vw,60px)}
.panel p{font-size:16px}
.panel-bar,.panel-bar button,.contact{font-size:14px}
.entry{font-size:clamp(20px,2.5vw,30px)}
.entry span{font-size:12px}.viewer-actions{font-size:13px}
.panel .motion-setting p{font-size:12px}
.panel .disciplines{margin:32px 0 0;color:var(--purple);font-size:14px}
:root{--contact-left:clamp(24px,9vw,190px);--contact-top:clamp(140px,32svh,380px)}
.persistent-contact{position:fixed;left:var(--contact-left);top:var(--contact-top);right:auto;bottom:auto;z-index:10;display:flex;flex-direction:column;align-items:center;gap:16px;width:104px;min-height:112px;padding:8px;background:transparent;color:#d9c8f5;border-radius:12px;font-size:13px;box-shadow:none}
.hairclip-icon{display:block;flex-shrink:0;width:48px;height:68px;border:10px solid #8b4de2;border-radius:14px;transform:rotate(-14deg);box-shadow:inset 2px 2px 2px #c199f0,3px 5px 0 #522397,5px 12px 16px #0005;transition:transform .3s cubic-bezier(.16,1,.3,1),border-color .3s}
.contact-label{line-height:1.5;text-align:center;overflow-wrap:anywhere}
.persistent-contact:hover .hairclip-icon,.persistent-contact:focus-visible .hairclip-icon{border-color:#ab77fa;transform:rotate(-7deg) translateY(-3px)}
.persistent-contact[aria-expanded=true] .hairclip-icon{border-color:#b58bfd}
.contact-dock{position:fixed;z-index:11;left:calc(var(--contact-left) + 124px);top:var(--contact-top);right:auto;bottom:auto;width:min(340px,calc(100vw - 40px));max-height:calc(100svh - var(--contact-top) - 24px);overflow:auto;padding:24px;background:#21162e;border-radius:12px;box-shadow:0 16px 48px #0008;animation:panel-in .35s cubic-bezier(.16,1,.3,1) both}
.contact-stars{position:fixed;inset:0;z-index:20;pointer-events:none;overflow:hidden}
.gold-star{position:absolute;width:18px;height:18px;background:#ffd671;clip-path:polygon(50% 0,61% 35%,98% 35%,68% 57%,79% 94%,50% 72%,21% 94%,32% 57%,2% 35%,39% 35%);filter:drop-shadow(0 2px 3px #b7791f);pointer-events:none}
.contact-dock-head{display:flex;align-items:center;justify-content:space-between;gap:16px}
.contact-dock h2{font-size:18px;margin:0;font-weight:500}
.contact-dock button{font-size:12px;min-height:44px;color:var(--muted)}
.contact-dock p{font-size:14px;color:var(--muted);line-height:1.7;margin:12px 0 0}
[hidden]{display:none!important}
@media(max-width:900px){
 .panel{padding-left:calc(var(--contact-left) + 116px)}
 .topbar{padding:20px 24px;min-height:100px;gap:20px}
 .brand-lockup{gap:20px}.slogan{font-size:14px}
 .world{height:calc(100svh - 100px);min-height:660px}
 .character{width:min(110vw,calc((max(760px,100svh) - 300px)*1.77778));bottom:170px}
 .constellation{inset:auto 32px 76px;gap:32px}
 .constellation .portal{padding-right:24px}
 .character-caption{bottom:202px}
}
@media(max-width:600px){
 .topbar{padding:16px;min-height:96px;gap:12px;align-items:center}
 .brand-lockup{gap:12px;flex:1}.brand img{width:64px;height:44px}
 .slogan{font-size:12px;line-height:1.55;max-width:210px}
 .top-actions{gap:0}select{max-width:80px;font-size:12px}
 .world{height:calc(100svh - 96px);min-height:600px}
 .character{width:min(700px,180vw);bottom:184px}
 .constellation{inset:auto 20px 76px;grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-flow:row;gap:12px}
 .constellation .portal{padding:16px 0;min-height:104px}
 .portal-name{font-size:17px;line-height:1.45}
 .portal-note{display:none}.portal svg{display:none}
 .character-caption{bottom:206px;width:85%;font-size:12px}
 .bottom{left:20px;right:20px;bottom:4px}.copyright{display:block}
 .top-actions select{font-size:12px}.panel h2{font-size:32px}
 :root{--contact-left:16px;--contact-top:clamp(132px,23svh,184px)}
 .persistent-contact{font-size:12px;width:88px;min-height:98px;gap:12px;padding:8px}
 .hairclip-icon{width:38px;height:55px;border-width:8px;border-radius:11px}
 .contact-dock{left:20px;top:calc(var(--contact-top) + 116px);max-height:calc(100svh - var(--contact-top) - 140px);padding:20px}
 .panel{padding-left:20px}.panel-inner{margin-top:calc(var(--contact-top) + 56px)}
}
@media(prefers-reduced-motion:reduce){.panel-open .topbar{filter:none}}
