:root{--ease-out:cubic-bezier(.18,.75,.25,1);--ease-spring:cubic-bezier(.2,.9,.2,1.2)}
main.container>section,main.container>.page-head,main.container>.cols,main.container>.stats{animation:portal-enter .65s var(--ease-out) both}
main.container>section:nth-of-type(2){animation-delay:.07s}main.container>section:nth-of-type(3){animation-delay:.13s}main.container>section:nth-of-type(4){animation-delay:.19s}
.panel,.stat,.feature,.service-card,.unit-card,.academy-card,.team-card,.task-card{transition:transform .3s var(--ease-out),border-color .28s ease,box-shadow .3s ease}
.panel:hover,.stat:hover,.feature:hover,.service-card:hover,.unit-card:hover,.academy-card:hover,.team-card:hover,.task-card:hover{transform:translateY(-4px);box-shadow:0 16px 35px #0003;border-color:color-mix(in srgb,var(--brand-accent) 40%,#343c47)}
.btn,.out,.theme-toggle,.nav a,.text-link,.feature-link i,.service-card i{transition:transform .24s var(--ease-out),background-color .2s,color .2s,border-color .2s,box-shadow .24s}
.btn:hover{transform:translateY(-2px)}.btn:active{transform:translateY(0) scale(.98)}
.btn.primary{background-image:linear-gradient(105deg,color-mix(in srgb,var(--brand-accent) 92%,white),var(--brand-accent),color-mix(in srgb,var(--brand-accent) 75%,#121821));background-size:200% 100%;animation:accent-flow 7s ease-in-out infinite}
.nav a{position:relative}.nav a:after{content:"";position:absolute;bottom:0;left:50%;width:0;height:2px;background:var(--brand-accent);transition:width .25s,left .25s}.nav a:hover:after,.nav a.on:after{left:0;width:100%}
.hero-art .art-orb{animation:orb-drift 7s ease-in-out infinite}.hero-art .card-a{animation:float-card 5s ease-in-out infinite}.hero-art .card-b{animation:float-card 5.8s ease-in-out infinite reverse}
.brand-mark{transition:transform .35s var(--ease-spring),box-shadow .25s}.brand:hover .brand-mark{transform:rotate(-9deg) scale(1.08);box-shadow:0 0 20px color-mix(in srgb,var(--brand-accent) 45%,transparent)}
.academy-progress-track i{animation:progress-grow 1s .2s var(--ease-out) both;transform-origin:left}.earned-badge,.course-award{animation:badge-pop .55s var(--ease-spring) both}.badge-grid .earned-badge:nth-child(2){animation-delay:.08s}.badge-grid .earned-badge:nth-child(3){animation-delay:.16s}.badge-grid .earned-badge:nth-child(4){animation-delay:.24s}
.earned-badge-icon{animation:badge-shine 4s ease-in-out infinite}.team-avatar,.team-emblem{transition:transform .25s var(--ease-spring)}.team-card:hover .team-emblem{transform:rotate(20deg) scale(1.15)}
.task-state{animation:state-pulse 2.5s ease-in-out infinite}.task-card:has(.is-done) .task-state{animation:none}
.landing-editor,.team-edit,.lesson{transition:background .25s,border-color .25s}.landing-editor[open],.team-edit[open],.lesson[open]{animation:detail-open .3s var(--ease-out) both}
input,select,textarea{transition:border-color .2s,box-shadow .2s,background-color .2s}
@keyframes portal-enter{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}
@keyframes accent-flow{0%,100%{background-position:0 50%}50%{background-position:100% 50%}}
@keyframes orb-drift{0%,100%{transform:translate3d(0,0,0) rotate(-2deg)}50%{transform:translate3d(0,-13px,0) rotate(2deg)}}
@keyframes float-card{0%,100%{transform:translateY(0)}50%{transform:translateY(-7px)}}
@keyframes progress-grow{from{transform:scaleX(.05)}to{transform:scaleX(1)}}
@keyframes badge-pop{from{opacity:0;transform:translateY(12px) scale(.92)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes badge-shine{0%,70%,100%{filter:drop-shadow(0 0 0 transparent)}82%{filter:drop-shadow(0 0 8px var(--badge-color))}}
@keyframes state-pulse{0%,100%{box-shadow:0 0 0 0 color-mix(in srgb,var(--brand-accent) 26%,transparent)}50%{box-shadow:0 0 0 7px transparent}}
@keyframes detail-open{from{opacity:.55;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
.admin-badges{animation:panel-in .55s both}.badge-preview,.badge-inline{display:inline-flex;align-items:center;gap:.45rem;border:1px solid color-mix(in srgb,var(--badge-color,#c18a32) 45%,transparent);background:color-mix(in srgb,var(--badge-color,#c18a32) 12%,transparent);color:var(--badge-color,#c18a32);border-radius:999px;padding:.45rem .75rem;font-weight:700}.admin-badges h3{margin:1.8rem 0 .8rem}.admin-badges td small{display:inline-block;margin-top:.35rem;color:var(--muted,#9aa6b2)}.regulation-content{white-space:normal;line-height:1.9;padding:clamp(1.25rem,4vw,2.5rem);animation:panel-in .55s both}.independent-note{color:var(--muted,#9aa6b2);font-size:.85rem;margin:1rem 0 2rem}.admin-badges .section-head{align-items:center}@keyframes panel-in{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){.admin-badges,.regulation-content{animation:none}}
