[hidden]{display:none!important}
.page-view{background:#fff;min-height:100svh}
html[data-page="home"] .page-view:not([data-page-view="home"]):not(.is-stage),
html[data-page="music"] .page-view:not([data-page-view="music"]):not(.is-stage),
html[data-page="live"] .page-view:not([data-page-view="live"]):not(.is-stage),
html[data-page="about"] .page-view:not([data-page-view="about"]):not(.is-stage),
html[data-page="sound-theory"] .page-view:not([data-page-view="sound-theory"]):not(.is-stage){display:none}
html[data-page^="sound-theory"] #site-header{display:none}
html:not([data-page^="sound-theory"]) [data-st-portal]{display:none!important}
html[data-page="sound-theory-project"] .page-view:not([data-page-view="sound-theory-project"]):not(.is-stage){display:none}
.site-header{position:absolute;top:0;left:0;width:100%;z-index:30;height:88px;padding:28px 32px;display:flex;align-items:center;justify-content:space-between;pointer-events:none;color:#111}
.site-header>a,.site-header nav{pointer-events:auto}.site-header>a{display:flex;align-items:center;min-height:44px;min-width:44px}.site-header nav{display:flex;gap:64px;align-items:center;font-size:14px;font-weight:500;line-height:20px}.site-header nav a{display:flex;align-items:center;min-height:44px}
.site-header [aria-current="page"]{text-decoration:underline;text-underline-offset:5px;text-decoration-thickness:1px}
.is-page-transitioning{background:#000;overflow:hidden}
/* Hide only live body-level chrome while inert visual copies ride inside each card. */
.is-page-transitioning>:is(#site-header,#st-header,#dock,#st-floating,#st-mobile-dock,#study){visibility:hidden!important;pointer-events:none!important}
.page-chrome-snapshot{pointer-events:none!important}
.page-view.is-stage{display:block!important;position:fixed;inset:0;width:100%;height:100svh;min-height:0;overflow:clip;transform-origin:50% 50%;will-change:transform}
.page-view.is-stage>.page-content{will-change:transform}
.page-view.is-stage.is-outgoing{z-index:10}.page-view.is-stage.is-incoming{z-index:11}
/* Dock contrast is captured from its page, rather than forced white during a flip. */
@media(max-width:700px){.site-header{padding:24px 20px}.site-header nav{gap:24px;font-size:13px}.study:not([open]){position:absolute;top:var(--entry-header,64px);bottom:auto;right:16px;transform:none}}
/* Reserve room for the application dock only after deliberate audio selection. */
body[data-audio-active="true"] .music-archive,body[data-audio-active="true"] .live-calendar{padding-bottom:max(112px,env(safe-area-inset-bottom))}
@media(max-width:700px){body[data-audio-active="true"] .music-archive,body[data-audio-active="true"] .live-calendar{padding-bottom:160px}}
@media(prefers-reduced-motion:reduce){.page-view.is-stage{will-change:auto}.page-view.is-stage>.page-content{will-change:auto}}
