.route-curtain{position:fixed;inset:84px 0 0;z-index:40;pointer-events:none;background:var(--paper);opacity:.28;contain:strict}
@keyframes kon-arrive{from{opacity:0;transform:translateY(9px)}to{opacity:1;transform:translateY(0)}}
@keyframes kon-progress{from{transform:translateX(-95%)}to{transform:translateX(160%)}}
@keyframes kon-skeleton{to{background-position:-200% 0}}
html::before{content:'';position:fixed;z-index:1000;top:0;left:0;width:45%;height:2px;background:var(--pick);opacity:0;pointer-events:none;transform:translateX(-100%)}
html.navigating::before{opacity:1;animation:kon-progress 1.2s ease-in-out infinite}
.header a,button,.button,input,textarea,select{transition:background-color .18s,color .18s,border-color .18s,box-shadow .18s,opacity .18s,transform .18s}
button:active:not(:disabled),.button:active{transform:scale(.98)}
input:focus,textarea:focus{border-color:var(--navy);box-shadow:0 0 0 3px #2d4a7a10}
.header nav a::after{transition:opacity .18s,transform .18s}
.header nav a.active::after{animation:kon-tab-mark .26s cubic-bezier(.16,1,.3,1) both;transform-origin:center}
@keyframes kon-tab-mark{from{transform:scaleX(.15);opacity:0}to{transform:scaleX(1);opacity:1}}
.header nav a:active,.economy-tabs a:active,.users-filters button:active,.directory-filters a:active{transform:translateY(2px) scale(.96)}
.header nav a,.economy-tabs a,.users-filters button,.directory-filters a{transition:background-color .2s,color .2s,box-shadow .2s,transform .15s cubic-bezier(.2,.8,.2,1)}
.user-card,.shop-card,.directory-card,.directory-person,.admin-shortcuts button{transition:transform .22s cubic-bezier(.16,1,.3,1),box-shadow .22s,border-color .22s,background-color .22s}
@media(hover:hover){.header nav a:hover,.economy-tabs a:hover{background:var(--soft)}.user-card:hover,.shop-card:hover,.directory-card:hover{transform:translateY(-4px);box-shadow:0 7px 0 var(--line)}.directory-person:hover,.admin-shortcuts button:hover{transform:translateY(-2px)}}
.directory-person:active,.shop-card button:active,.user-card a:active{transform:translateY(2px) scale(.97)}
.member,.explore-grid>a,.team-member,.player-entry-grid>a,.guild-comment-entry,.photo-tile,.player-panel{transition:transform .22s cubic-bezier(.2,.7,.2,1),box-shadow .22s,border-color .22s,background-color .22s}
@media(hover:hover){.member:hover,.explore-grid>a:hover,.team-member:hover,.player-entry-grid>a:hover,.guild-comment-entry:hover{transform:translateY(-3px);box-shadow:0 8px 24px #22252b08}.photo-tile:hover img{transform:scale(1.025)}}
.photo-tile img,.story-photo img{transition:transform .4s ease,opacity .25s}
.member-grid>.member,.photo-grid>.photo-tile,.team-roster>.team-member,.comment-card,.targets>article{animation:none}
dialog[open]{animation:kon-backdrop .16s ease}dialog[open]::backdrop{animation:kon-backdrop .16s ease}
@keyframes kon-backdrop{from{opacity:0}to{opacity:1}}
.auth-card{animation:kon-backdrop .16s ease}
.page-wrap,.player-directory,.comment-heading{animation:none}
.page-loading{animation:kon-arrive .2s ease both}.page-loading .loading-mark{font-size:20px}
.page-skeleton{max-width:1120px;margin:44px auto;padding:0 var(--gutter);min-height:65vh;animation:kon-arrive .2s ease both}
.skeleton-line,.skeleton-panel{background:linear-gradient(100deg,var(--soft) 25%,#f9fafb 45%,var(--soft) 65%);background-size:200% 100%;animation:kon-skeleton 1.5s linear infinite;border-radius:6px}
.skeleton-line{height:15px;width:55%;margin:16px 0}.skeleton-line.title{height:40px;width:42%;margin-bottom:25px}.skeleton-panels{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;margin-top:38px}.skeleton-panel{height:220px}.cache-note{color:var(--muted);font-size:12px}.sync-dot.cached{background:var(--warn)}
.gallery-toolbar[aria-busy=true]{opacity:.75}.comment-feed[aria-busy=true] .comment-feed-head button{opacity:.5}
@media(max-width:700px){.skeleton-panels{grid-template-columns:1fr 1fr;gap:12px}.skeleton-panels>:last-child{display:none}.skeleton-line.title{width:70%}.skeleton-panel{height:180px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}.navigating::before{display:none}}
