/* Shared interaction rhythm. Native controls and navigation remain in charge. */
html[data-motion=active] body:not(.house-door){animation:house-page-in var(--motion-page) ease-out backwards}
@keyframes house-page-in{from{opacity:0}to{opacity:1}}

:is(.house-page,.writing-shell) :is(button,summary,.house-button,.house-nav-link){
 transition:background-color var(--motion-hover) ease,color var(--motion-hover) ease,opacity var(--motion-press) ease,scale var(--motion-press) var(--ease-out),translate var(--motion-hover) var(--ease-out);
}
:is(.house-page,.writing-shell) button[aria-busy=true]{cursor:progress}
html[data-motion=active] :is(.house-page,.writing-shell) :is(button,.house-button,summary):not(:disabled):not(.bear-hit):active{scale:.98!important;translate:0 1px!important}
.house-page .house-button:not(:disabled):active{transform:none}
.house-page :is(.house-header nav a,.house-nav-link,.hall-account a){transition:background-color var(--motion-hover) ease,color var(--motion-hover) ease}
.house-page :is(.house-button,.house-nav-link)>span[aria-hidden=true]{transition:translate var(--motion-hover) var(--ease-out)}
@media(hover:hover) and (pointer:fine){
 html[data-motion=active] .house-page .house-button:not(:disabled):hover{transform:none;translate:0 -1px!important}
 html[data-motion=active] .house-page :is(.house-button,.house-nav-link):hover>span[aria-hidden=true]{translate:2px 0}
 .house-page :is(.house-header nav a,.hall-account a):hover{color:var(--color-ink)}
}

/* Popovers open from their trigger; ordinary details keep native disclosure. */
:is(.sky-control,.member-menu,.inbox-menu,.desk-menu)[open]>:not(summary){animation:house-menu-in var(--motion-menu) var(--ease-out) both;transform-origin:top right}
@keyframes house-menu-in{from{opacity:0;transform:translateY(-5px) scale(.985)}to{opacity:1;transform:none}}
.member-popover:not([hidden]){animation:house-popover-in var(--motion-menu) var(--ease-out) backwards;transform-origin:top right}
@keyframes house-popover-in{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
.news-history[open]>.news-list{animation:house-disclosure-in var(--motion-menu) ease-out both}
@keyframes house-disclosure-in{from{opacity:0}to{opacity:1}}

/* Discrete transitions are progressive enhancement for native dialog.close(). */
:is(.house-page,.writing-shell) dialog{
 opacity:0;transform:translateY(8px) scale(.99);
 transition:opacity var(--motion-menu) ease-out,transform var(--motion-dialog) var(--ease-out),display var(--motion-menu) allow-discrete,overlay var(--motion-menu) allow-discrete;
}
:is(.house-page,.writing-shell) dialog[open]{opacity:1;transform:none}
:is(.house-page,.writing-shell) dialog::backdrop{opacity:0;transition:opacity var(--motion-menu) ease-out,display var(--motion-menu) allow-discrete,overlay var(--motion-menu) allow-discrete}
:is(.house-page,.writing-shell) dialog[open]::backdrop{opacity:1}
@starting-style{
 :is(.house-page,.writing-shell) dialog[open]{opacity:0;transform:translateY(8px) scale(.99)}
 :is(.house-page,.writing-shell) dialog[open]::backdrop{opacity:0}
}

html[data-motion=active]:has(.house-door){scroll-behavior:smooth}
#announcements{scroll-margin-block-start:24px}
.house-page .news-history summary::after{font-size:1.15em;line-height:1}

html:not([data-motion=active]) :is(.house-page,.writing-shell) :is(button,summary,.house-button,.house-nav-link){transition-duration:0s;scale:none!important;translate:none!important}
html:not([data-motion=active]) :is(.house-page,.writing-shell) dialog,
html:not([data-motion=active]) :is(.house-page,.writing-shell) dialog::backdrop{transition:none}
html:not([data-motion=active]) :is(.sky-control,.member-menu,.inbox-menu,.desk-menu)[open]>:not(summary),
html:not([data-motion=active]) .news-history[open]>.news-list,
html:not([data-motion=active]) .member-popover,
html:not([data-motion=active]) .room-art *{animation:none!important}
html:not([data-motion=active]) .house-page .room-art{transform:none!important}
html:not([data-motion=active]) body{animation:none}
@media(prefers-reduced-motion:reduce){
 body{animation:none!important}
 :is(.house-page,.writing-shell) dialog,:is(.house-page,.writing-shell) dialog::backdrop{transition:none}
 :is(.sky-control,.member-menu,.inbox-menu,.desk-menu)[open]>:not(summary),.member-popover,.news-history[open]>.news-list{animation:none}
 :is(.house-page,.writing-shell) :is(button,summary,.house-button,.house-nav-link){scale:none!important;translate:none!important;transition:none!important}
}
