/* ================= motion & polish ================= */
html{scroll-behavior:smooth}
body{animation:pageIn .5s ease both}
@keyframes pageIn{from{opacity:0}to{opacity:1}}
.scroll-progress{position:fixed;top:0;left:0;height:3px;width:0;z-index:2000;background:linear-gradient(90deg,var(--brand),var(--accent));transition:width .1s}

/* scroll reveal (only when JS is on) */
.js .reveal{opacity:0;transform:translateY(26px) scale(.985);transition:opacity .6s cubic-bezier(.2,.7,.2,1),transform .6s cubic-bezier(.2,.7,.2,1);transition-delay:var(--d,0ms)}
.js .reveal.in{opacity:1;transform:none}

/* hero */
.hero{background-size:200% 200%;animation:heroShift 18s ease-in-out infinite alternate}
@keyframes heroShift{0%{background-position:0% 50%}100%{background-position:100% 50%}}
.blob{position:absolute;border-radius:50%;filter:blur(50px);opacity:.45;pointer-events:none;animation:floaty 12s ease-in-out infinite}
.blob.b1{width:340px;height:340px;background:var(--accent);top:-120px;left:-80px}
.blob.b2{width:280px;height:280px;background:#f472b6;bottom:-120px;right:8%;animation-delay:-4s;animation-duration:15s}
.blob.b3{width:200px;height:200px;background:#facc15;top:30%;right:-60px;opacity:.25;animation-delay:-7s}
@keyframes floaty{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(30px,-26px) scale(1.12)}}
.hero h1 span.grad{background:linear-gradient(90deg,#fff,var(--accent),#fde68a,#fff);background-size:250% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:textShine 6s linear infinite}
@keyframes textShine{to{background-position:250% 0}}
.hero .chip{animation:chipIn .6s ease both}
.hero .chip:nth-child(2){animation-delay:.1s}.hero .chip:nth-child(3){animation-delay:.2s}
@keyframes chipIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.search-box{transition:box-shadow .3s,transform .3s}
.search-box:focus-within{transform:translateY(-2px);box-shadow:0 26px 60px rgba(0,0,0,.35),0 0 0 4px rgba(255,255,255,.25)}

/* buttons */
.btn-brand{position:relative;overflow:hidden;transition:transform .2s,box-shadow .2s}
.btn-brand:hover{transform:translateY(-2px);box-shadow:0 10px 22px color-mix(in srgb,var(--brand) 40%,transparent)}
.btn-brand:active{transform:translateY(0) scale(.98)}
.btn-brand:after{content:"";position:absolute;top:0;left:-120%;width:60%;height:100%;background:linear-gradient(120deg,transparent,rgba(255,255,255,.35),transparent);transform:skewX(-20deg);transition:left .6s}
.btn-brand:hover:after{left:140%}
.btn-glow{animation:glow 2.4s ease-in-out infinite}
@keyframes glow{0%,100%{box-shadow:0 0 0 0 color-mix(in srgb,var(--brand) 45%,transparent)}50%{box-shadow:0 0 0 9px transparent}}

/* cards */
.t-card:before{content:"";position:absolute;left:0;top:14px;bottom:14px;width:4px;border-radius:0 4px 4px 0;background:linear-gradient(var(--brand),var(--accent));transform:scaleY(0);transition:transform .3s}
.t-card:hover:before{transform:scaleY(1)}
.t-card h3{transition:color .2s}.t-card:hover h3{color:var(--brand)}
.cat-tile i{transition:transform .35s cubic-bezier(.3,1.6,.5,1)}
.cat-tile:hover i{transform:scale(1.25) rotate(-8deg)}
.stat{transition:transform .25s,box-shadow .25s}.stat:hover{transform:translateY(-4px);box-shadow:0 18px 36px rgba(15,23,42,.12)}
.stat .ic{animation:icPulse 3s ease-in-out infinite}
@keyframes icPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.07)}}
.countdown:not(.ok){animation:urgent 1.8s ease-in-out infinite}
@keyframes urgent{0%,100%{box-shadow:0 0 0 0 rgba(234,88,12,.35)}50%{box-shadow:0 0 0 7px rgba(234,88,12,0)}}
.list-row{transition:background .2s,padding-left .2s}.list-row:hover{padding-left:24px}
.t-card:hover .src{transform:scale(1.06)}
.src{transition:transform .2s}
.cta{background-size:200% 200%;animation:heroShift 10s ease-in-out infinite alternate}

/* bell + nav */
#bellBtn.ring i{display:inline-block;transform-origin:50% 0;animation:ring 2.6s ease-in-out infinite}
@keyframes ring{0%,60%,100%{transform:rotate(0)}5%{transform:rotate(16deg)}10%{transform:rotate(-14deg)}15%{transform:rotate(10deg)}20%{transform:rotate(-8deg)}25%{transform:rotate(0)}}
.badge-dot,.bn-dot{animation:pop .4s cubic-bezier(.3,1.8,.5,1)}
@keyframes pop{from{transform:scale(0)}to{transform:scale(1)}}
.notif-menu.show{animation:menuIn .22s ease both}
@keyframes menuIn{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
.navbar .nav-link{position:relative}
.navbar .nav-link:after{content:"";position:absolute;left:50%;bottom:2px;width:0;height:2px;background:var(--brand);border-radius:2px;transition:.25s;transform:translateX(-50%)}
.navbar .nav-link:hover:after,.navbar .nav-link.active:after{width:40%}

.bottom-nav a{position:relative;transition:color .2s}
.bottom-nav a.on:before{content:"";position:absolute;top:-6px;left:50%;width:26px;height:4px;border-radius:0 0 6px 6px;background:var(--brand);transform:translateX(-50%);animation:tabPop .35s cubic-bezier(.3,1.6,.5,1)}
@keyframes tabPop{from{width:0}to{width:26px}}
.bottom-nav a:active i{transform:scale(.82)}
.bottom-nav a i{transition:transform .2s}
.more-sheet.show .more-tile{animation:chipIn .4s ease both}
.more-tile:active{transform:scale(.94)}

/* accordion + filters */
.acc .accordion-item{transition:box-shadow .25s,border-color .25s}
.acc .accordion-item:hover{box-shadow:0 8px 22px rgba(15,23,42,.07)}
.acc .accordion-collapse.show .accordion-body{animation:chipIn .35s ease both}
.status-scroll a{transition:.2s}.status-scroll a:hover{border-color:var(--brand);color:var(--brand)}.status-scroll a.on:hover{color:#fff}
.pdf-row{transition:transform .2s,box-shadow .2s}.pdf-row:hover{transform:translateX(3px);box-shadow:0 8px 20px rgba(15,23,42,.08)}

/* ============ in-page PDF viewer ============ */
.pdfv{position:fixed;inset:0;z-index:3000;background:#1e2433;display:flex;flex-direction:column;opacity:0;visibility:hidden;transform:translateY(24px) scale(.98);transition:opacity .28s,transform .28s,visibility .28s}
.pdfv.show{opacity:1;visibility:visible;transform:none}
.pdfv-bar{display:flex;align-items:center;gap:10px;padding:10px 14px;background:#0f172a;color:#fff;box-shadow:0 2px 12px rgba(0,0,0,.35)}
.pdfv-title{flex:1;min-width:0;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pdfv-tools{display:flex;align-items:center;gap:6px}
.pdfv-pages{font-size:.8rem;opacity:.8;padding:0 6px;white-space:nowrap}
.pdfv-btn{width:40px;height:40px;border-radius:12px;border:0;background:rgba(255,255,255,.1);color:#fff;display:grid;place-items:center;font-size:1.1rem;transition:background .2s,transform .15s;text-decoration:none}
.pdfv-btn:hover{background:rgba(255,255,255,.22);color:#fff}.pdfv-btn:active{transform:scale(.9)}
.pdfv-body{flex:1;overflow:auto;padding:16px 8px 40px;-webkit-overflow-scrolling:touch;position:relative}
.pdfv-pages-wrap{display:flex;flex-direction:column;align-items:center;gap:14px}
.pdfv-page{background:#fff;box-shadow:0 8px 30px rgba(0,0,0,.45);border-radius:4px;position:relative;max-width:none;animation:chipIn .4s ease both}
.pdfv-page:not(.ready):after{content:"";position:absolute;inset:0;background:linear-gradient(100deg,#fff 30%,#eef2f7 50%,#fff 70%);background-size:200% 100%;animation:shimmer 1.2s linear infinite}
@keyframes shimmer{to{background-position:-200% 0}}
.pdfv-page canvas{display:block}
.pdfv-loading,.pdfv-error{position:absolute;inset:0;display:grid;place-content:center;text-align:center;color:#e2e8f0}
html.pdfv-lock,html.pdfv-lock body{overflow:hidden}
@media(max-width:575.98px){.pdfv-bar{padding:8px 10px}.pdfv-btn{width:38px;height:38px}.pdfv-pages{display:none}}

@media (prefers-reduced-motion:reduce){
  *,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
  .js .reveal{opacity:1;transform:none}
}
