:root{
  --baep-motion-ease:cubic-bezier(.22,.8,.24,1);
  --baep-motion-spring:cubic-bezier(.2,.9,.25,1.12);
}

@keyframes baep-page-enter{
  from{opacity:0;transform:translateY(10px)}
  to{opacity:1;transform:none}
}
@keyframes baep-header-enter{
  from{opacity:0;transform:translateY(-18px)}
  to{opacity:1;transform:none}
}
@keyframes baep-helmet-float{
  0%,100%{transform:translate3d(0,0,0) rotate(-1deg)}
  50%{transform:translate3d(0,-8px,0) rotate(1deg)}
}
@keyframes baep-helmet-float-large{
  0%,100%{transform:translate3d(0,0,0) scale(1.12) rotate(-1deg)}
  50%{transform:translate3d(0,-8px,0) scale(1.15) rotate(1deg)}
}
@keyframes baep-helmet-breathe{
  0%,100%{transform:translate3d(0,0,0) scale(1);opacity:.095}
  50%{transform:translate3d(-7px,-5px,0) scale(1.045);opacity:.145}
}
@keyframes baep-helmet-centered-breathe{
  0%,100%{transform:translateY(-50%) scale(1);opacity:.05}
  50%{transform:translateY(-50%) scale(1.055);opacity:.085}
}
@keyframes baep-grid-drift{
  from{background-position:0 0}
  to{background-position:70px 70px}
}
@keyframes baep-scan{
  0%,18%{transform:translateX(-150%);opacity:0}
  30%{opacity:.55}
  48%,100%{transform:translateX(270%);opacity:0}
}
@keyframes baep-card-in{
  from{opacity:0;transform:translateY(15px) scale(.985);filter:blur(4px)}
  to{opacity:1;transform:none;filter:none}
}
@keyframes baep-pin-pulse{
  0%,100%{opacity:.15;transform:scale(.86)}
  50%{opacity:.32;transform:scale(1.1)}
}
@keyframes baep-alert-flow{
  from{background-position:0 50%}
  to{background-position:220% 50%}
}
@keyframes baep-row-in{
  from{opacity:0;transform:translateX(-10px)}
  to{opacity:1;transform:none}
}
@keyframes baep-bar-grow{
  from{transform:scaleX(0);filter:saturate(.7)}
  to{transform:scaleX(1);filter:saturate(1)}
}
@keyframes baep-marker-arrive{
  from{opacity:0;filter:drop-shadow(0 0 0 transparent)}
  60%{opacity:1;filter:drop-shadow(0 0 8px var(--note-color))}
  to{opacity:1;filter:none}
}
@keyframes baep-step-pop{
  0%{transform:scale(.78) rotate(-7deg)}
  65%{transform:scale(1.12) rotate(2deg)}
  100%{transform:scale(1) rotate(0)}
}
@keyframes baep-soft-flash{
  0%{box-shadow:0 0 0 0 rgba(209,170,75,.24)}
  100%{box-shadow:0 0 0 10px rgba(209,170,75,0)}
}

/* Entrada e navegação do portal público */
.top-alert{
  background-image:linear-gradient(100deg,#c9992d 0%,#efd371 28%,#d5aa43 50%,#efd371 72%,#c9992d 100%);
  background-size:220% 100%;
  animation:baep-alert-flow 9s linear infinite;
}
.site-header{animation:baep-header-enter .72s var(--baep-motion-ease) both}
.main-nav a:not(.nav-login){position:relative}
.main-nav a:not(.nav-login)::after{
  position:absolute;
  right:0;
  bottom:-9px;
  left:0;
  height:1px;
  background:var(--gold);
  content:"";
  transform:scaleX(0);
  transform-origin:right center;
  transition:transform .32s var(--baep-motion-ease);
}
.main-nav a:not(.nav-login):hover::after{transform:scaleX(1);transform-origin:left center}
.hero-content,.hero-side{animation:baep-page-enter .75s var(--baep-motion-ease) both}
.hero-side{animation-delay:.14s}
.hero-grid{animation:baep-grid-drift 18s linear infinite}
.hero::before{
  position:absolute;
  z-index:1;
  inset:-25% auto -25% -18%;
  width:28%;
  background:linear-gradient(90deg,transparent,rgba(218,179,79,.055),transparent);
  content:"";
  transform:skewX(-14deg) translateX(-150%);
  animation:baep-scan 10s ease-in-out infinite;
  pointer-events:none;
}
.hero-index{animation:baep-helmet-float 8s ease-in-out infinite}
.reveal{
  filter:blur(5px);
  transform:translateY(26px) scale(.99);
  transition:opacity .72s var(--baep-motion-ease),transform .72s var(--baep-motion-ease),filter .72s ease;
}
.reveal.visible{filter:none;transform:none}
.operational-card{
  position:relative;
  overflow:hidden;
  transition:transform .4s var(--baep-motion-ease),border-color .35s,box-shadow .4s;
}
.operational-card::before,.overview-command::before,.cta-section::before{
  position:absolute;
  z-index:0;
  top:-45%;
  bottom:-45%;
  left:-38%;
  width:18%;
  background:linear-gradient(90deg,transparent,rgba(242,210,119,.11),transparent);
  content:"";
  transform:skewX(-14deg) translateX(-150%);
  animation:baep-scan 9s 1.2s ease-in-out infinite;
  pointer-events:none;
}
.operational-card>*{position:relative;z-index:1}
.operational-card:hover{border-color:rgba(217,178,76,.62);box-shadow:0 34px 90px rgba(0,0,0,.38);transform:translateY(-5px)}
.public-result-grid article,.feature-card,.promotion-track article,.gallery-item,.history-facts article{
  transition:transform .32s var(--baep-motion-ease),background-color .28s,border-color .28s,box-shadow .32s;
}
.public-result-grid article:hover,.history-facts article:hover{position:relative;z-index:1;background:color-mix(in srgb,currentColor,transparent 95%);box-shadow:0 16px 38px rgba(38,32,17,.08);transform:translateY(-5px)}
.feature-card:hover,.promotion-track article:hover{box-shadow:0 24px 52px rgba(0,0,0,.22);transform:translateY(-6px)}
.gallery-item:hover{box-shadow:0 24px 54px rgba(0,0,0,.36);transform:translateY(-4px)}

/* Brasão como assinatura viva da interface */
.login-copy img.helmet-site-mark,.public-emblem img.helmet-site-mark{animation:baep-helmet-float 6.5s ease-in-out infinite;will-change:transform}
.login-copy img.helmet-site-mark{filter:drop-shadow(0 14px 28px rgba(0,0,0,.24))}
.public-emblem img.helmet-site-mark{filter:drop-shadow(0 22px 28px rgba(0,0,0,.34))}
.public-emblem::after{transition:border-color .35s,transform .45s var(--baep-motion-ease)}
.public-emblem:hover::after{border-color:rgba(218,179,79,.35);transform:scale(.98)}
.cta-section{position:relative;overflow:hidden}
.cta-section>*{position:relative;z-index:1}
.cta-section img.helmet-site-mark{animation:baep-helmet-float-large 6s ease-in-out infinite;filter:drop-shadow(0 16px 28px rgba(0,0,0,.25))}
.sidebar-brand img.helmet-site-mark{transition:transform .42s var(--baep-motion-spring),filter .35s}
.sidebar-brand:hover img.helmet-site-mark{filter:drop-shadow(0 0 12px rgba(178,184,181,.34));transform:scale(1.18) rotate(-2deg)}
.sidebar-brand{position:relative}
.sidebar-brand::after{position:absolute;right:8px;bottom:-1px;left:8px;height:1px;background:linear-gradient(90deg,transparent,#aeb3b1,transparent);content:"";transform:scaleX(0);transition:transform .5s var(--baep-motion-ease)}
.sidebar-brand:hover::after{transform:scaleX(1)}
.overview-command::after{animation:baep-helmet-breathe 8s ease-in-out infinite;will-change:transform}
.overview-command>*{position:relative;z-index:1}
.report-detail-hero::after,.profile-hero::after{animation:baep-helmet-centered-breathe 8s ease-in-out infinite;will-change:transform}

/* Sistema: transições de página, cartões e controles */
.dashboard:not([hidden]){animation:baep-page-enter .42s var(--baep-motion-ease) both}
.dashboard:not([hidden]) .dashboard-header{animation:baep-header-enter .55s .05s var(--baep-motion-ease) both}
.dashboard-view.view-entering.active>*{animation:baep-card-in .48s var(--baep-motion-ease) both}
.dashboard-view.view-entering.active>*:nth-child(2){animation-delay:.045s}
.dashboard-view.view-entering.active>*:nth-child(3){animation-delay:.09s}
.dashboard-view.view-entering.active>*:nth-child(4){animation-delay:.135s}
.dashboard-view.view-entering.active>*:nth-child(5){animation-delay:.18s}
.side-nav button{transition:transform .23s var(--baep-motion-spring),background-color .2s,color .2s,border-color .2s}
.side-nav button:hover{transform:translateX(5px)}
.side-nav button.active .nav-icon{filter:drop-shadow(0 0 8px rgba(218,179,79,.3));transform:scale(1.08)}
.overview-grid .panel,.statistics-grid .panel,.profile-grid .panel,.pending-grid .panel,.course-card,.rso-list-card,.staff-rank-section,.map-annotation-list article{
  transition:transform .3s var(--baep-motion-ease),border-color .25s,box-shadow .3s,background-color .25s;
}
.overview-grid .panel:hover,.statistics-grid .panel:hover,.profile-grid .panel:hover,.pending-grid .panel:hover,.course-card:hover,.rso-list-card:hover{
  box-shadow:0 18px 42px rgba(21,20,16,.1);
  transform:translateY(-3px);
}
.metric-grid article,.statistics-metrics article{position:relative;overflow:hidden}
.metric-grid article::before,.statistics-metrics article::before{
  position:absolute;
  inset:0;
  background:linear-gradient(115deg,transparent 34%,rgba(218,179,79,.08) 49%,transparent 64%);
  content:"";
  transform:translateX(-120%);
  transition:transform .75s var(--baep-motion-ease);
  pointer-events:none;
}
.metric-grid article:hover::before,.statistics-metrics article:hover::before{transform:translateX(120%)}
.map-note-pulse{transform-box:fill-box;transform-origin:center;animation:baep-pin-pulse 2.4s ease-in-out infinite}
.map-note-point:hover .map-note-pin{filter:drop-shadow(0 4px 5px rgba(0,0,0,.3))}
.map-note-label{transition:opacity .2s,transform .25s var(--baep-motion-spring);transform-box:fill-box;transform-origin:center bottom}
.map-note-point:hover .map-note-label{transform:translateY(-2px) scale(1.035)}
dialog[open]{animation:baep-card-in .3s var(--baep-motion-ease) both}
dialog[open]::backdrop{animation:baep-page-enter .22s ease-out both}

/* Microinterações adicionais para dados, tabelas, mapa e RSO */
.dashboard-header .user-box{transition:transform .28s var(--baep-motion-ease)}
.dashboard-header .user-box:hover{transform:translateY(-2px)}
.dashboard-header .user-box>span{transition:transform .38s var(--baep-motion-spring),box-shadow .3s}
.dashboard-header .user-box:hover>span{box-shadow:0 0 0 5px rgba(210,170,73,.1);transform:rotate(5deg) scale(1.06)}
.panel-head h2,.statistics-section-title h3{position:relative}
.panel-head h2::after{
  display:block;
  width:24px;
  height:2px;
  margin-top:7px;
  border-radius:2px;
  background:var(--ui-accent,#cba34b);
  content:"";
  transform:scaleX(.45);
  transform-origin:left center;
  transition:transform .36s var(--baep-motion-ease),width .36s var(--baep-motion-ease);
}
.panel:hover .panel-head h2::after{width:42px;transform:scaleX(1)}
#statisticsView.view-entering.active .bar-track i{transform-origin:left center;animation:baep-bar-grow .9s .16s var(--baep-motion-ease) both}
#statisticsView.view-entering.active .ranking-list>div,#statisticsView.view-entering.active .participant-ranking tbody tr{animation:baep-row-in .42s var(--baep-motion-ease) both}
#statisticsView.view-entering.active :is(.ranking-list>div,.participant-ranking tbody tr):nth-child(2){animation-delay:.035s}
#statisticsView.view-entering.active :is(.ranking-list>div,.participant-ranking tbody tr):nth-child(3){animation-delay:.07s}
#statisticsView.view-entering.active :is(.ranking-list>div,.participant-ranking tbody tr):nth-child(4){animation-delay:.105s}
#statisticsView.view-entering.active :is(.ranking-list>div,.participant-ranking tbody tr):nth-child(5){animation-delay:.14s}
#statisticsView.view-entering.active :is(.ranking-list>div,.participant-ranking tbody tr):nth-child(6){animation-delay:.175s}
#statisticsView.view-entering.active :is(.ranking-list>div,.participant-ranking tbody tr):nth-child(7){animation-delay:.21s}
#statisticsView.view-entering.active :is(.ranking-list>div,.participant-ranking tbody tr):nth-child(8){animation-delay:.245s}
#statisticsView.view-entering.active :is(.ranking-list>div,.participant-ranking tbody tr):nth-child(9){animation-delay:.28s}
#statisticsView.view-entering.active :is(.ranking-list>div,.participant-ranking tbody tr):nth-child(10){animation-delay:.315s}
#mapView.view-entering.active #heatmapCanvas{animation:baep-page-enter .7s .18s var(--baep-motion-ease) both}
#mapView.view-entering.active :is(.map-note-pin,.map-note-center,.map-note-symbol){animation:baep-marker-arrive .55s .24s var(--baep-motion-spring) both}
.rso-wizard-steps button>span{transition:transform .3s var(--baep-motion-spring),background-color .25s,color .25s}
.rso-wizard-steps button.active>span,.rso-occurrence-tabs button.active>span{animation:baep-step-pop .38s var(--baep-motion-spring) both}
.rso-wizard-steps button.done>span{animation:baep-soft-flash .55s ease-out both}
.service-report-form label:focus-within{color:var(--ui-accent,#9a7525);transition:color .2s}
.service-report-form label:focus-within input,.service-report-form label:focus-within select,.service-report-form label:focus-within textarea{transform:translateY(-1px);transition:transform .2s var(--baep-motion-ease),border-color .2s,box-shadow .2s}
.rso-review-grid article,.report-detail-grid>div{transition:transform .28s var(--baep-motion-ease),border-color .25s,box-shadow .28s}
.rso-review-grid article:hover,.report-detail-grid>div:hover{border-color:color-mix(in srgb,var(--ui-accent,#cba34b),transparent 40%);box-shadow:0 10px 24px rgba(25,23,17,.07);transform:translateY(-2px)}

@media(max-width:700px){
  .hero-grid{animation-duration:26s}
  .operational-card:hover,.feature-card:hover,.gallery-item:hover,.overview-grid .panel:hover,.statistics-grid .panel:hover,.profile-grid .panel:hover,.pending-grid .panel:hover,.course-card:hover,.rso-list-card:hover{transform:none}
  .dashboard-view.view-entering.active>*{animation-duration:.36s}
}

@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-delay:0s!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
  .hero::before,.operational-card::before,.overview-command::before,.cta-section::before{display:none!important}
  .reveal{filter:none!important;transform:none!important}
}
