@keyframes fadeUp{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}
.au{animation:fadeUp .55s var(--ease) both}
.d1{animation-delay:.07s}.d2{animation-delay:.14s}.d3{animation-delay:.21s}.d4{animation-delay:.28s}
.rev{opacity:0;transform:translateY(26px);transition:opacity .6s var(--ease),transform .6s var(--ease)}
.rev.rl{transform:translateX(-28px)}.rev.rr{transform:translateX(28px)}
.revd{opacity:1!important;transform:none!important}
.d1d{transition-delay:.08s}.d2d{transition-delay:.16s}.d3d{transition-delay:.24s}


/* BADGE */
.badge{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:var(--rf);font-size:11px;font-weight:800}
.bp{background:var(--pl);color:var(--pd)}
.bok{background:rgba(14,168,112,.1);color:#0a7840}
.bneu{background:var(--s3);color:var(--ink3);border:1px solid var(--bd)}
.bnew{background:rgba(0,229,160,.1);color:#059669}
.bwarn{background:rgba(245,158,11,.1);color:#b45309}

/* HERO */
.hero{margin-top:68px;background:var(--s2);border-bottom:1px solid var(--bd);padding:48px 0}
.hero-in{max-width:1140px;margin:0 auto;padding:0 32px;display:grid;grid-template-columns:1fr auto;gap:40px;align-items:start}
@media(max-width:820px){.hero-in{grid-template-columns:1fr}}
.crumb{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--ink4);margin-bottom:18px}
.crumb a{color:var(--ink3);transition:color .15s}
.crumb a:hover{color:var(--p)}
.crumb i{font-size:11px}
.app-head{display:flex;align-items:flex-start;gap:22px;margin-bottom:20px}
.app-logo{width:72px;height:72px;border-radius:18px;background:linear-gradient(135deg,#635bff,#7b73ff);display:flex;align-items:center;justify-content:center;flex-shrink:0;box-shadow:0 8px 24px rgba(99,91,255,.28)}
.app-logo i{font-size:38px;color:#fff}
.app-name{font-size:30px;font-weight:900;color:var(--ink);letter-spacing:-1px;margin-bottom:7px}
.app-badges{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:10px}
.app-tagline{font-size:16px;color:var(--ink3);line-height:1.6;max-width:600px}
.app-meta-row{display:flex;flex-wrap:wrap;gap:20px;margin-top:16px}
.app-meta-item{display:flex;align-items:center;gap:7px;font-size:13px;color:var(--ink3)}
.app-meta-item i{font-size:16px;color:var(--p)}
.app-meta-item strong{color:var(--ink);font-weight:700}

/* Stats boxes */
.app-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:20px;min-width:280px}
.astat{background:#fff;border:1px solid var(--bd);border-radius:var(--rl);padding:16px 18px;text-align:center;box-shadow:var(--sh)}
.astat-n{font-size:26px;font-weight:900;color:var(--p);letter-spacing:-1px;line-height:1}
.astat-l{font-size:11.5px;color:var(--ink4);margin-top:4px;font-weight:500}

/* CONTENT LAYOUT */
.content{margin:0 auto;padding:52px 32px;display:grid;grid-template-columns:1fr 340px;gap:52px;align-items:start}
@media(max-width:1024px){.content{grid-template-columns:1fr}}
@media(max-width:768px){.content{padding:36px 20px}}

/* TABS */
.tabs{display:flex;gap:2px;border-bottom:2px solid var(--bd);margin-bottom:0px}
.tab{padding:11px 20px;font-size:14px;font-weight:700;color:var(--ink3);border-radius:var(--r) var(--r) 0 0;cursor:pointer;border:none;background:none;font-family:inherit;transition:all .18s;position:relative;bottom:-2px;border-bottom:2px solid transparent}
.tab:hover{color:var(--ink);background:var(--s2)}
.tab.active{color:var(--p);border-bottom-color:var(--p);background:var(--pl)}
.tabs-contents{
	background: #fff;
	padding: 22px;
	box-shadow: var(--sh);
}
hr{
	border:1px solid var(--bd);
}
/* Prose */
.prose h2{font-size:21px;font-weight:800;color:var(--ink);margin:36px 0 12px;scroll-margin-top:80px}
.prose h3{font-size:16.5px;font-weight:800;color:var(--ink);margin:24px 0 9px}
.prose p{font-size:15.5px;color:var(--ink2);line-height:1.8;margin-bottom:16px}
.prose ul{margin:0 0 16px 20px;display:flex;flex-direction:column;gap:7px}
.prose li{font-size:15px;color:var(--ink2);line-height:1.65}
.prose ul li::marker{color:var(--p);font-size:18px}
.prose code{font-family:'DM Mono',monospace;font-size:13px;background:var(--s3);color:var(--p);padding:2px 7px;border-radius:5px}
.prose pre{background:var(--ink);border-radius:var(--rl);padding:20px 22px;margin:16px 0;overflow-x:auto}
.prose pre code{background:transparent;color:#a8d8f0;padding:0;font-size:13.5px;line-height:1.75}
.prose strong{color:var(--ink);font-weight:700}
.prose a{color:var(--p);font-weight:600;text-decoration:underline;text-decoration-color:rgba(0,102,153,.28);text-underline-offset:3px}
.ws-app-card .ws-app-link{position: absolute;top: 0;left: 0;text-align: center;width: 100%;height: 100%;background: #00669938;border-radius: 12px;padding-top: 50px;color: #000;text-decoration: none;font-size: 20px;display: none;}
.ws-app-card:hover .ws-app-link{display: block;}
.ws-app-card:hover .ws-app-link a{color:#fff;text-decoration: none}
.prose hr{border:none;border-top:1px solid var(--bd);margin:28px 0}

/* Screenshot gallery */
.gallery{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:20px 0}
.gallery-img{border-radius:var(--rl);background:linear-gradient(135deg,var(--s3),var(--s2));border:1px solid var(--bd);height:160px;display:flex;align-items:center;justify-content:center;overflow:hidden;transition:all .22s var(--ease);cursor:pointer}
.gallery-img:hover{border-color:var(--pm);box-shadow:var(--shm);transform:translateY(-3px)}
.gallery-img i{font-size:48px;color:var(--ink5)}
.gallery span{
	position: absolute;
	background: #f2f7fa;
	color: #008fcf;
	padding: 10px;
	border-radius: 50px;
}
@media(max-width:600px){.gallery{grid-template-columns:1fr}}

/* Changelog */
.changelog{display:flex;flex-direction:column;gap:0;position:relative}
.changelog::before{content:'';position:absolute;left:25px;top:16px;bottom:16px;width:2px;background:var(--bd)}
.cl-item{display:flex;gap:16px;margin-bottom:4px}
.cl-dot{width:52px;height:52px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;position:relative;z-index:1;font-size:12px;font-weight:800}
.cl-dot.latest{background:var(--p);color:#fff;box-shadow:0 0 0 3px var(--pl)}
.cl-dot.old{background:#fff;color:var(--ink4);border:2px solid var(--bd)}
.cl-body{background:var(--s2);border:1px solid var(--bd);border-radius:var(--rl);padding:14px 16px;flex:1;margin-bottom:12px}
.cl-ver{font-size:13px;font-weight:800;color:var(--ink);margin-bottom:3px;display:flex;align-items:center;gap:8px}
.cl-date{font-size:11.5px;color:var(--ink4)}
.cl-changes,.changelog ul {font-size:13px;color:var(--ink3);line-height:1.65;margin-top:6px}
.cl-changes li{list-style:disc;margin-left:16px;margin-bottom:3px}

/* Reviews */
.rev-list{display:flex;flex-direction:column;gap:16px}
.rv-card{background:var(--s2);border:1px solid var(--bd);border-radius:var(--rl);padding:18px 20px;transition:all .2s var(--ease)}
.rv-card:hover{border-color:var(--pm);box-shadow:var(--sh)}
.rv-head{display:flex;align-items:center;gap:12px;margin-bottom:12px}
.rv-av{width:38px;height:38px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:900;color:#fff;flex-shrink:0}
.rv-name{font-size:14px;font-weight:700;color:var(--ink)}
.rv-role{font-size:12px;color:var(--ink4)}
.rv-stars{color:#f59e0b;font-size:13px;letter-spacing:1.5px;margin-left:auto}
.rv-text{font-size:14px;color:var(--ink2);line-height:1.7}
.rv-date{font-size:11.5px;color:var(--ink4);margin-top:8px}

/* SIDEBAR */
.sidebar{display:flex;flex-direction:column;gap:18px}
.sc{background:#fff;border:1px solid var(--bd);border-radius:var(--rxl);padding:22px;box-shadow:var(--sh)}
.sc-title{font-size:11px;font-weight:900;text-transform:uppercase;letter-spacing:1.2px;color:var(--ink4);margin-bottom:15px;display:flex;align-items:center;gap:7px}
.sc-title i{font-size:14px;color:var(--p)}

/* Info rows */
.info-row{display:flex;justify-content:space-between;align-items:center;padding:9px 0;border-bottom:1px solid var(--bd);font-size:13.5px}
.info-row:last-child{border-bottom:none}
.info-lbl{color:var(--ink3);font-weight:500}
.info-val{font-weight:700;color:var(--ink);text-align:right}

/* Requirements */
.req-item{display:flex;align-items:center;gap:9px;padding:8px 0;border-bottom:1px solid var(--bd);font-size:13.5px;color:var(--ink2)}
.req-item:last-child{border-bottom:none}
.req-item i{font-size:17px;color:var(--ok);flex-shrink:0}
.req-item i.warn{color:var(--warn)}

/* Similar apps */
.similar-app{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--bd);text-decoration:none;transition:all .15s}
.similar-app:last-child{border-bottom:none}
.similar-app:hover .sa-name{color:var(--p)}
.sa-ic{width:40px;height:40px;border-radius:10px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.sa-ic i{font-size:22px;color:#fff}
.sa-name{font-size:13.5px;font-weight:700;color:var(--ink);margin-bottom:2px;transition:color .15s}
.sa-cat{font-size:11.5px;color:var(--ink4)}

/* FOOTER */
.foot{background:#050d16;padding:36px 0 24px;margin-top:80px}
.foot-in{max-width:1140px;margin:0 auto;padding:0 32px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:16px}
.foot-logo{display:flex;align-items:center;gap:9px}
.fl-ic{width:26px;height:26px;background:linear-gradient(135deg,var(--p),var(--ac));border-radius:7px;display:flex;align-items:center;justify-content:center}
.fl-ic i{font-size:13px;color:#fff}
.foot-logo span{font-size:15px;font-weight:900;color:#fff}
.foot-copy{font-size:12px;color:rgba(255,255,255,.3)}
