/* ProMed motion: small interactions, calm reveals, cinematic navigation. */
:root {
  --motion-fast:150ms;
  --motion-normal:300ms;
  --motion-slow:500ms;
  --motion-cinematic:650ms;
  --motion-ease:cubic-bezier(.22,1,.36,1);
  --motion-settle:cubic-bezier(.2,.8,.2,1);
}
/* The shared controller replaces the legacy nested entrance animations. */
.au,.tv.show { animation:none; }
.brand-reveal { opacity:1; transform:none; }
.motion-reveal { transition:opacity var(--motion-slow) var(--motion-ease),transform var(--motion-cinematic) var(--motion-ease); transition-delay:var(--reveal-delay,0ms); }
.motion-reveal.motion-pending { opacity:0; transform:translateY(22px); }
.motion-reveal.motion-depth.motion-pending { transform:translateY(14px) scale(.975); }
.motion-reveal.motion-side.motion-pending { transform:translateX(-18px); }
.motion-reveal.motion-visible { opacity:1; transform:none; }
/* Keep link/button hit areas stationary during entrance; hover supplies their lift. */
.motion-reveal.motion-pending:is(.svc,.solcard,.casecard,.tcard,.va-card,.hctas,.ctaband .btn,.footer>div) { transform:none; }
.motion-reveal:is(.va-card,.svc,.casecard,.tcard,.wcard,.solcard) { transition:opacity var(--motion-slow) var(--motion-ease),transform var(--motion-cinematic) var(--motion-ease),box-shadow var(--motion-normal),border-color var(--motion-normal); transition-delay:var(--reveal-delay,0ms); }
/* A keyboard user must never focus invisible content while awaiting a reveal. */
.motion-reveal:focus-within { opacity:1; transform:none; transition-delay:0ms; }
::view-transition-old(root) { animation:motion-page-out 350ms var(--motion-settle) both; }
::view-transition-new(root) { animation:motion-page-in var(--motion-slow) var(--motion-ease) both; }
::view-transition-group(root) { animation-duration:var(--motion-slow); }
@keyframes motion-page-out { to { opacity:0; transform:scale(.985); filter:blur(1px); } }
@keyframes motion-page-in { from { opacity:0; transform:translateY(18px) scale(.985); filter:blur(1px); } to { opacity:1; transform:none; filter:none; } }
.motion-view-enter { animation:motion-view-in var(--motion-slow) var(--motion-ease) both; }
@keyframes motion-view-in { from { opacity:.35; } to { opacity:1; } }
body.motion-leaving { animation:motion-document-out var(--motion-fast) ease-out both; }
@keyframes motion-document-out { to { opacity:.4; } }
.stage-card,.amodal.open .amodal-box { animation:motion-card-in var(--motion-slow) var(--motion-ease) both; }
@keyframes motion-card-in { from { opacity:0; transform:translateY(12px) scale(.99); } to { opacity:1; transform:none; } }
.btn { transition:transform var(--motion-fast) var(--motion-ease),translate var(--motion-fast) var(--motion-ease),box-shadow var(--motion-normal),background-color var(--motion-normal),border-color var(--motion-normal); }
.btn:active { transform:scale(.985); }
.nlinks a,.mnlinks a,.flinks a,.back { text-decoration-thickness:2px; text-underline-offset:6px; transition:color var(--motion-fast),text-decoration-color var(--motion-normal); }
.nlinks a:hover,.nlinks a:focus-visible,.flinks a:hover,.back:hover { text-decoration:underline; text-decoration-color:var(--g400); }
.nav,.tnav { transition:background-color var(--motion-normal),box-shadow var(--motion-normal); }
.inp,.typing-area,.qopt { transition:border-color var(--motion-normal),box-shadow var(--motion-normal),background-color var(--motion-normal); }
.fgrp:focus-within .flabel { color:#247a68; }
input[type=checkbox],input[type=radio] { accent-color:#247a68; transition:box-shadow var(--motion-fast); }
input[type=checkbox]:checked { box-shadow:0 0 0 2px rgba(212,175,82,.25); }
.va-card[role=button] { cursor:pointer; touch-action:manipulation; }
.va-card[role=button]:focus-visible { outline:3px solid #d4af52; outline-offset:5px; }
.va-card { transition:transform var(--motion-normal) var(--motion-ease),box-shadow var(--motion-normal),border-color var(--motion-normal); }
.va-avatar { transition:transform var(--motion-normal) var(--motion-ease); }
.hero-bg { transform:translate(var(--depth-x,0px),var(--depth-y,0px)); transition:transform 700ms var(--motion-ease); }
.profile-dialog { margin:auto; width:min(92vw,440px); max-height:85svh; overflow:auto; border:1px solid #d4af52; border-radius:24px; padding:2rem; background:#faf8f3; color:#202b28; box-shadow:0 24px 80px rgba(18,61,53,.28); }
.profile-dialog[open] { animation:motion-profile-in var(--motion-normal) var(--motion-ease) both; transform-origin:var(--profile-origin,center); }
.profile-dialog::backdrop { background:rgba(18,40,34,.65); animation:motion-backdrop var(--motion-normal) both; }
.profile-dialog h2 { margin:1rem 0 .5rem; font-size:1.6rem; color:#123d35; }
.profile-dialog .va-avatar { width:84px; height:84px; }
.profile-dialog .profile-role { color:#67558c; font-weight:600; margin-bottom:.5rem; }
.profile-dialog .profile-note { font-size:.75rem; color:#53635d; line-height:1.6; margin:1.5rem 0; }
.profile-dialog .profile-close { position:absolute; top:1rem; right:1rem; width:36px; height:36px; border:1px solid #d7cbe5; border-radius:50%; background:#eee8f7; color:#123d35; cursor:pointer; }
.profile-dialog .btn { width:100%; justify-content:center; }
@keyframes motion-profile-in { from { opacity:0; transform:scale(.94); } to { opacity:1; transform:none; } }
@keyframes motion-backdrop { from { opacity:0; } to { opacity:1; } }
@media(hover:hover) and (pointer:fine) and (min-width:901px) {
  .btn { translate:var(--magnet-x,0px) var(--magnet-y,0px); }
  .va-card:not(.motion-pending) { animation:motion-breathe 6s ease-in-out infinite; }
  .va-card.bill { animation-delay:-2s; }
  .va-card.admin { animation-delay:-4s; }
  .va-card:hover,.va-card:focus-visible { animation:none; translate:0 -5px; transform:perspective(800px) rotateX(var(--tilt-x,0deg)) rotateY(var(--tilt-y,0deg)); border-color:#d4af52; box-shadow:0 20px 50px rgba(18,61,53,.28); }
  .va-card:hover .va-avatar { transform:scale(1.025); }
  .svc:hover,.casecard:hover,.tcard:hover,.wcard:hover,.solcard:hover { transform:translateY(-5px); border-color:#b69b67; box-shadow:0 16px 36px rgba(103,85,140,.15); }
  .svc,.casecard,.tcard,.wcard,.solcard { transition:transform var(--motion-normal) var(--motion-ease),box-shadow var(--motion-normal),border-color var(--motion-normal); }
  .solcard:hover .sol-icon,.hstat:hover .hstat-ico { transform:translateY(-2px) rotate(-3deg); }
  .sol-icon,.hstat-ico { transition:transform var(--motion-normal) var(--motion-ease); }
  .himg-main img { animation:motion-image 12s ease-in-out infinite alternate; }
  .va-card:hover { background-image:linear-gradient(120deg,rgba(212,175,82,.08),rgba(103,85,140,.05),rgba(36,122,104,.05)); }
  .motion-reveal:hover,.motion-reveal:focus-visible { transition-delay:0ms; }
}
@keyframes motion-breathe { 0%,100% { translate:0 0; } 50% { translate:0 -3px; } }
@keyframes motion-image { from { transform:scale(1); } to { transform:scale(1.025); } }
@media(max-width:900px) {
  .motion-reveal.motion-pending,.motion-reveal.motion-side.motion-pending { transform:translateY(12px); }
  .motion-reveal.motion-depth.motion-pending { transform:translateY(12px) scale(.99); }
  .motion-reveal { --reveal-delay:0ms!important; }
  .hero-bg { transform:none; }
}
@media(prefers-reduced-motion:reduce) {
  .motion-reveal.motion-pending { opacity:1; transform:none; }
  .hero-bg,.va-card,.btn { translate:none!important; transform:none!important; }
  .motion-reveal,.motion-view-enter,.profile-dialog[open],.profile-dialog::backdrop,.himg-main img,.va-card { animation:none!important; transition:none!important; }
  body.motion-leaving { animation:none!important; opacity:1; }
  ::view-transition-old(root),::view-transition-new(root),::view-transition-group(root) { animation:none!important; }
}
