/* Base styles shared by every public page. Layout lives inline in the
   templates, exactly as in the design files; this sheet holds what inline
   styles cannot express: hover and focus states, and styles for content
   whose markup comes from the database. */
body{margin:0;background:#f5f7fa;color:#17202a;font-family:'Plus Jakarta Sans',system-ui,sans-serif;-webkit-font-smoothing:antialiased}
*{box-sizing:border-box}
a{color:#178045}
a:hover{color:#0f5f32}
[hidden]{display:none!important}

/* Hover states */
.hv-green:hover{background:#0f6a37!important}
.hv-grey:hover{background:#edf1f6!important}
.hv-mint:hover{background:#d5eedf!important}
.hv-pale:hover{background:#e7f5ec!important}
.hv-fill:hover{background:#178045!important;color:#fff!important}

/* Focus states */
.fc:focus{border-color:#178045!important;outline:3px solid #cdebd9}
a:focus-visible,button:focus-visible,select:focus-visible,summary:focus-visible,.shots:focus-visible{outline:3px solid #178045;outline-offset:2px}
input[type=search]:focus-visible{outline:0}
form[role=search]:focus-within{box-shadow:0 0 0 3px #cdebd9}

.skip{position:absolute;left:-9999px;top:8px;z-index:10;padding:10px 16px;border-radius:999px;background:#17202a;color:#fff!important;font-size:14px;font-weight:700;text-decoration:none}
.skip:focus{left:8px}
.sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* Descriptions and release notes */
.prose>:first-child{margin-top:0}
.prose>:last-child{margin-bottom:0}
.prose p{margin:0 0 12px}
.prose ul,.prose ol{margin:0 0 12px;padding-left:20px}
.prose li{margin:0 0 6px}
.prose h3,.prose h4{margin:18px 0 6px;font-size:17px;line-height:1.3;font-weight:800;color:#17202a}

.policy h2{margin:32px 0 8px;font-size:21px;line-height:1.25;font-weight:800;letter-spacing:-.02em;color:#17202a}

/* Screenshot strip */
.shots{list-style:none;margin:0;padding:0 0 6px;display:flex;gap:10px;overflow-x:auto;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch}
.shots li{flex:none;scroll-snap-align:start}
.shots img{display:block;height:clamp(240px,42vw,340px);width:auto;border-radius:14px;background:#edf1f6}

/* Star rating */
.stars{margin:0;padding:0;border:0;min-width:0;display:inline-flex;gap:2px}
.stars button{width:48px;height:48px;padding:0;border:0;border-radius:12px;background:transparent;font:inherit;font-size:34px;line-height:1;color:#c5cfdb;cursor:pointer}
.stars button.on{color:#178045}
.stars:hover button{color:#c5cfdb}
.stars button:hover,.stars button:has(~ button:hover){color:#178045}
.stars[disabled] button{cursor:default}

/* Report form */
.reason{display:flex;align-items:center;gap:12px;min-height:60px;padding:10px 14px;border-radius:16px;cursor:pointer;border:1.5px solid #e1e7ee;background:#fff}
.reason:has(input:checked){border-color:#178045;background:#e7f5ec}
.dmca{display:none}
form:has(input[name=reason][value=dmca]:checked) .dmca{display:flex}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}

/* APK Downloader */
.pill:focus-within{box-shadow:0 0 0 3px #cdebd9,0 8px 24px rgba(23,128,69,.1)!important}
.pill input:focus-visible{outline:0}
.steps{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.steps li{display:flex;align-items:center;gap:14px;padding:14px 16px;border-radius:16px;background:#f5f7fa;color:#566373}
.steps .dot{flex:none;display:grid;place-items:center;width:28px;height:28px;border-radius:50%;border:3px solid #cfd8e3}
.steps li[data-state=now]{background:#e7f5ec;color:#17202a}
.steps li[data-state=now] .dot{border-color:#b9e2c9;border-top-color:#178045}
.steps li[data-state=done]{color:#17202a}
.steps li[data-state=done] .dot{border-color:#178045;background:#178045}
.steps li[data-state=done] .dot::after{content:"";width:10px;height:5px;border-left:2.5px solid #fff;border-bottom:2.5px solid #fff;transform:translateY(-1px) rotate(-45deg)}
@keyframes spin{to{transform:rotate(360deg)}}

@media (prefers-reduced-motion:no-preference){
html{scroll-behavior:smooth}
.steps li[data-state=now] .dot{animation:spin .9s linear infinite}
}
