/* ---- reveal on scroll ---- */
.js .rv{opacity:0;transform:translateY(22px);transition:opacity .7s ease,transform .7s cubic-bezier(.2,.8,.3,1)}
.js .rv.in{opacity:1;transform:none}
.js .wait,.js .wait *{animation-play-state:paused!important}
/* ---- buttons: ripple ---- */
.btn,button,.rip{position:relative;overflow:hidden}
.ripple{position:absolute;border-radius:50%;background:rgba(255,255,255,.45);transform:scale(0);animation:ripple .6s ease-out forwards;pointer-events:none}
@keyframes ripple{to{transform:scale(4);opacity:0}}
/* ---- menu underline ---- */
nav[aria-label="Main navigation"] a{position:relative}
nav[aria-label="Main navigation"] a:not([aria-current])::after{content:"";position:absolute;left:0;right:0;bottom:4px;height:2px;background:#168f8b;transform:scaleX(0);transform-origin:left;transition:transform .25s ease}
nav[aria-label="Main navigation"] a:hover::after,nav[aria-label="Main navigation"] a:focus-visible::after{transform:scaleX(1)}
/* ---- back to top ---- */
.totop{position:fixed;right:22px;bottom:22px;z-index:50;width:48px;height:48px;border:0;padding:0;background:transparent;cursor:pointer;opacity:0;transform:translateY(12px);transition:opacity .3s,transform .3s;pointer-events:none}
.totop.show{opacity:1;transform:none;pointer-events:auto}
.totop span{position:absolute;inset:6px;background:#0a2d52;transform:rotate(45deg);border-radius:6px;transition:background .2s}
.totop:hover span{background:#168f8b}
.totop svg{position:relative}
/* ---- quiz ---- */
.qz-q{margin:0;padding:0;border:0;min-width:0}
.qz-q legend{padding:0;margin:0 0 12px;font-size:18px;font-weight:700;color:#0a2d52}
.qz-opts{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(230px,100%),1fr));gap:10px}
.qz-opt{display:flex;align-items:center;gap:12px;min-height:52px;padding:12px 16px;border:1.5px solid #c3d2de;border-radius:12px;background:#f6f9fc;color:#18293a;font-size:15px;cursor:pointer;transition:border-color .2s,background .2s,transform .2s}
.qz-opt:hover{border-color:#168f8b;transform:translateY(-1px)}
.qz-opt input{width:18px;height:18px;margin:0;accent-color:#168f8b;flex:none}
.qz-opt:has(input:checked){border-color:#168f8b;background:#eaf7f6}
.qz-result{display:none}
.qz-result.show{display:block;animation:qz-in .6s cubic-bezier(.2,.8,.3,1)}
@keyframes qz-in{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.js .rv{opacity:1;transform:none;transition:none}.js .wait,.js .wait *{animation-play-state:running!important}.ripple{display:none}.qz-result.show{animation:none}}
.faq{border-bottom:1px solid #d8e2ea}
.faq summary{display:flex;justify-content:space-between;align-items:center;gap:16px;min-height:44px;padding:18px 0;cursor:pointer;list-style:none;font-size:18px;font-weight:700;color:#0a2d52}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";flex:none;width:32px;height:32px;border-radius:50%;background:#edf4f9;color:#168f8b;font-size:22px;line-height:32px;text-align:center;transition:transform .25s}
.faq[open] summary::after{transform:rotate(45deg)}
.faq summary:hover{color:#168f8b}
/* busywork ticker */
.ticker{overflow:hidden;background:#edf4f9;border-bottom:1px solid #d8e2ea}
.ticker-track{display:flex;width:max-content;animation:tick 38s linear infinite}
.ticker:hover .ticker-track{animation-play-state:paused}
.ticker-track span{display:inline-flex;align-items:center;gap:22px;padding:16px 11px;white-space:nowrap;color:#607080;font-size:15px;font-weight:600;text-decoration:line-through;text-decoration-color:#2eb8b0;text-decoration-thickness:2px}
.ticker-track span::after{content:"";width:8px;height:8px;background:#168f8b;transform:rotate(45deg);flex:none}
@keyframes tick{to{transform:translateX(-50%)}}
/* card spotlight */
.spot{position:relative;isolation:isolate}
.spot::before{content:"";position:absolute;inset:0;border-radius:inherit;background:radial-gradient(260px circle at var(--sp,50% 50%),rgba(46,184,176,.18),transparent 65%);opacity:0;transition:opacity .3s;pointer-events:none;z-index:-1}
.spot:hover::before{opacity:1}
/* tilting panes */
.tilt svg{transition:transform .2s ease-out;transform-style:preserve-3d;will-change:transform}
@media (prefers-reduced-motion:reduce){.ticker-track{animation:none}.spot::before{display:none}}
