/* Puzzlecat. Locked tokens, sampled off assets/avatar.png and assets/banner.png.
   ink #22190F outline brown . paper #EFEADB cream card . orange #E8861C tabby
   sky #BEDCEE . grass #6FA83C . gold #F0A825 star . spacing 6/12/20/32/52/84/128
   radius 14 btn . 22 card . 26px board . motion: snap 620ms cubic-bezier(.18,.9,.28,1.25) */

@font-face{font-family:Fraunces;src:url(assets/fonts/fraunces-latin-700-normal.woff2) format('woff2');font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:Fraunces;src:url(assets/fonts/fraunces-latin-900-normal.woff2) format('woff2');font-weight:900;font-style:normal;font-display:swap}
@font-face{font-family:InterSite;src:url(assets/fonts/inter-latin-400-normal.woff2) format('woff2');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:InterSite;src:url(assets/fonts/inter-latin-500-normal.woff2) format('woff2');font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:InterSite;src:url(assets/fonts/inter-latin-700-normal.woff2) format('woff2');font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:RHMono;src:url(assets/fonts/red-hat-mono-latin-500-normal.woff2) format('woff2');font-weight:500;font-style:normal;font-display:swap}

:root{
  --ink:#22190F; --ink-2:#4A3B29; --ink-3:#7A6A53;
  --paper:#EFEADB; --card:#FFFFFF; --hair:#E2DAC5; --slot:#DCD3BC;
  --orange:#E8861C; --orange-deep:#C25F0C; --fur:#7A5222;
  --sky:#BEDCEE; --sky-ink:#3F7397; --grass:#6FA83C; --grass-deep:#4A7A2C;
  --gold:#F0A825; --gold-off:#D9D1BC;
  --s1:6px; --s2:12px; --s3:20px; --s4:32px; --s5:52px; --s6:84px; --s7:128px;
  --r-btn:14px; --r-card:22px; --r-board:26px;
  --snap:cubic-bezier(.18,.9,.28,1.25);
  --disp:Fraunces,Georgia,serif;
  --body:InterSite,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{
  margin:0; background:var(--paper); color:var(--ink);
  font:400 16px/1.6 var(--body); letter-spacing:-.006em;
  background-image:url(assets/tiles.jpg);
  background-size:840px auto; background-repeat:repeat;
  background-blend-mode:multiply;
}
body::before{content:"";position:fixed;inset:0;background:var(--paper);opacity:.90;z-index:-1;pointer-events:none}
img{max-width:100%;display:block}
h1,h2,h3{margin:0;font-family:var(--disp);font-weight:900;letter-spacing:-.022em;line-height:1.04}
p{margin:0}
a{color:inherit}
:focus-visible{outline:3px solid var(--sky-ink);outline-offset:3px;border-radius:6px}

.wrap{width:min(1120px,100% - 40px);margin-inline:auto}
.skip{position:absolute;left:-9999px}
.skip:focus{left:14px;top:14px;z-index:999;background:var(--card);padding:10px 16px;border-radius:12px;border:2px solid var(--ink)}

.sec-h{font-size:clamp(22px,2.4vw,30px);margin-bottom:var(--s3)}

/* ---------- store chrome ---------- */
.chrome{position:sticky;top:0;z-index:60;background:rgba(239,234,219,.88);backdrop-filter:blur(14px) saturate(1.3);border-bottom:1px solid var(--hair)}
.chrome-in{display:flex;align-items:center;gap:var(--s2);height:62px}
.chrome-brand{display:flex;align-items:center;gap:10px;text-decoration:none}
.chrome-icon{width:36px;height:36px;border-radius:10px;border:1.5px solid var(--ink);background:var(--card);object-fit:cover}
.chrome-name{font-family:var(--disp);font-weight:900;font-size:19px;letter-spacing:-.02em}
.chip{display:inline-block;font:500 11px/1 var(--body);letter-spacing:.09em;text-transform:uppercase;padding:7px 11px;border-radius:999px}
.chip-chain{background:var(--sky);color:var(--sky-ink);border:1px solid #9FC6DD}
.chrome-right{margin-left:auto;display:flex;align-items:center;gap:10px}
.xlink{display:grid;place-items:center;width:38px;height:38px;border-radius:12px;border:1.5px solid var(--ink);background:var(--card);color:var(--ink);transition:transform .18s var(--snap),background .18s}
.xlink:hover{background:var(--ink);color:var(--paper);transform:rotate(-8deg)}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font:700 13px/1 var(--body);letter-spacing:.05em;text-transform:uppercase;padding:13px 20px;border-radius:999px;border:2px solid var(--ink);text-decoration:none;cursor:pointer;transition:transform .16s var(--snap),box-shadow .16s,background .16s}
.btn-get,.btn-buy{background:var(--orange);color:#fff;box-shadow:0 4px 0 var(--ink)}
.btn-get:hover,.btn-buy:hover{background:var(--orange-deep);transform:translateY(-2px);box-shadow:0 6px 0 var(--ink)}
.btn-get:active,.btn-buy:active{transform:translateY(3px);box-shadow:0 1px 0 var(--ink)}
.btn-get{padding:11px 16px;font-size:12px}
.btn-continue{background:var(--card);color:var(--ink);box-shadow:0 4px 0 var(--ink);font-family:var(--disp);font-weight:700;font-size:15px;letter-spacing:-.01em;text-transform:none;padding:13px 26px}
.btn-continue:hover{background:#fff;transform:translateY(-2px);box-shadow:0 6px 0 var(--ink)}
.btn-continue:active{transform:translateY(3px);box-shadow:0 1px 0 var(--ink)}
.btn-ghost{background:transparent;color:var(--ink);border-color:var(--ink)}
.btn-ghost:hover{background:var(--ink);color:var(--paper)}
.btn-wide{flex:1 1 220px}
.btn-pulse{animation:pulse 1.1s ease-in-out 3}
@keyframes pulse{0%,100%{box-shadow:0 4px 0 var(--ink)}50%{box-shadow:0 4px 0 var(--ink),0 0 0 10px rgba(232,134,28,.22)}}

/* ---------- listing ---------- */
.listing{padding:var(--s6) 0 var(--s5)}
.listing-in{display:grid;grid-template-columns:minmax(0,.86fr) minmax(0,1.14fr);gap:var(--s5);align-items:center}
.head{display:flex;gap:var(--s3);align-items:center}
.app-icon{width:116px;height:116px;border-radius:26px;border:2.5px solid var(--ink);background:var(--card);object-fit:cover;box-shadow:0 8px 0 rgba(34,25,15,.14)}
.head-txt h1{font-size:clamp(36px,4.6vw,56px)}
.sub{font-size:17px;color:var(--ink-2);margin-top:4px}
.seller{font:500 13px/1 var(--body);color:var(--sky-ink);margin-top:9px;letter-spacing:.02em}

.cta{display:flex;flex-wrap:wrap;gap:var(--s2);margin-top:var(--s4)}
.cta-note{margin-top:var(--s2);font-size:13px;color:var(--ink-3);min-height:20px}

.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:0;margin:var(--s4) 0 0;padding:var(--s3) 0 0;border-top:1px solid var(--hair)}
.metric{text-align:center;padding:0 8px;border-right:1px solid var(--hair)}
.metric:last-child{border-right:0}
.metric dt{font:700 10px/1.3 var(--body);letter-spacing:.11em;text-transform:uppercase;color:var(--ink-3)}
.metric dd{margin:0}
.metric-big{font-family:var(--disp);font-weight:900;font-size:clamp(20px,2.2vw,27px);margin-top:6px!important;letter-spacing:-.02em}
.metric-sub{font-size:11px;color:var(--ink-3);margin-top:4px!important;display:flex;justify-content:center}

.stars{display:inline-flex;gap:2px;line-height:0}
.star{display:block}
.star-on{fill:var(--gold)}
.star-off{fill:var(--gold-off)}

/* ---------- the board, snapping pieces ---------- */
.board{position:relative;background:var(--paper);border:2.5px solid var(--ink);border-radius:var(--r-board);padding:12px;box-shadow:0 12px 0 rgba(34,25,15,.13)}
.board-bar{display:flex;justify-content:space-between;align-items:center;font:700 11px/1 var(--body);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-2);padding:2px 4px 10px}
.board-count b{font-family:RHMono,ui-monospace,monospace;font-size:13px;color:var(--ink)}
.grid{display:grid;grid-template-columns:repeat(8,1fr);grid-template-rows:repeat(4,1fr);aspect-ratio:1200/537;border-radius:12px;overflow:hidden;background:var(--slot);border:1.5px solid var(--ink)}
.tile{background-image:url(assets/puzzle.jpg);background-size:800% 400%;background-position:var(--px) var(--py);animation:snap .62s var(--snap) both;animation-delay:calc(var(--i) * 34ms)}
.tile:nth-child(4n+1){--dx:-74px;--dy:-46px;--rot:-9deg}
.tile:nth-child(4n+2){--dx:70px;--dy:-54px;--rot:7deg}
.tile:nth-child(4n+3){--dx:-56px;--dy:62px;--rot:6deg}
.tile:nth-child(4n+4){--dx:78px;--dy:50px;--rot:-8deg}
@keyframes snap{
  0%{opacity:0;transform:translate(var(--dx,-60px),var(--dy,-40px)) rotate(var(--rot,-6deg)) scale(1.15)}
  62%{opacity:1}
  84%{transform:translate(0,0) rotate(0) scale(1.035)}
  100%{opacity:1;transform:none}
}
.tile-gap{background:
  repeating-linear-gradient(135deg,rgba(34,25,15,.26) 0 6px,transparent 6px 13px),
  #C7BC9F;
  box-shadow:inset 0 0 0 2px rgba(34,25,15,.55),inset 0 3px 7px rgba(34,25,15,.3);animation:none;opacity:1}
.catwrap{position:absolute;display:block;width:29%;right:2%;bottom:-3%;z-index:3;animation:catin .7s var(--snap) 1.25s both}
.cat{width:100%;height:auto;transform-origin:50% 100%;filter:drop-shadow(0 8px 6px rgba(34,25,15,.22));animation:breathe 4.6s ease-in-out 1.95s infinite}
.cat.peek{animation:peek 1.05s ease-in-out}
@keyframes catin{0%{opacity:0;transform:translateY(-26px) scale(.86)}100%{opacity:1;transform:none}}
@keyframes breathe{0%,100%{transform:scale(1)}50%{transform:scale(1.024) translateY(-3px)}}
@keyframes peek{0%{transform:none}22%{transform:translate(26%,-38%) rotate(11deg)}64%{transform:translate(26%,-38%) rotate(11deg)}100%{transform:none}}
.board-cap{margin-top:var(--s2);text-align:center;font-size:13px;color:var(--ink-3)}
.board.shake{animation:shake .42s ease-in-out}
@keyframes shake{0%,100%{transform:translateX(0)}20%{transform:translateX(-7px) rotate(-.5deg)}45%{transform:translateX(6px) rotate(.4deg)}70%{transform:translateX(-4px)}}

/* ---------- preview rail ---------- */
.shots{padding:var(--s5) 0 var(--s6)}
.rail{display:flex;gap:var(--s3);overflow-x:auto;scroll-snap-type:x mandatory;padding:6px max(20px,calc((100vw - 1120px)/2)) var(--s3);scrollbar-width:thin}
.phone{margin:0;flex:0 0 auto;scroll-snap-align:center}
.phone figcaption{margin-top:10px;text-align:center;font:500 12px/1 var(--body);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3)}
.screen{width:236px;height:452px;border-radius:30px;border:3px solid var(--ink);background:var(--card);overflow:hidden;display:flex;flex-direction:column;box-shadow:0 10px 0 rgba(34,25,15,.13)}
.scr-bar{display:flex;justify-content:space-between;font:700 10px/1 var(--body);letter-spacing:.1em;padding:13px 14px;background:var(--ink);color:var(--paper)}
.scr-foot{margin-top:auto;padding:12px 14px;font:500 11px/1.3 var(--body);text-align:center;color:var(--ink-2);border-top:1px solid var(--hair);background:var(--paper)}
.scr-art{flex:1;background:url(assets/puzzle.jpg) center/cover no-repeat var(--slot)}
.lv-grid{flex:1;display:grid;grid-template-columns:repeat(2,1fr);gap:10px;padding:16px}
.lv{display:grid;place-items:center;border-radius:14px;font:700 15px/1 var(--body);border:2px solid var(--ink)}
.lv-done{background:var(--grass);color:#fff}
.lv-locked{background:var(--slot);color:var(--ink-3);border-style:dashed}
.scr-cat{flex:1;display:grid;place-items:end center;background:linear-gradient(180deg,var(--sky) 0%,#DCEBD3 58%,var(--grass) 100%);padding:14px}
.scr-cat img{width:84%;height:auto;filter:drop-shadow(0 6px 4px rgba(34,25,15,.22))}
.scr-stats{flex:1;list-style:none;margin:0;padding:16px;display:grid;gap:10px;align-content:start}
.scr-stats li{background:var(--paper);border:1.5px solid var(--hair);border-radius:14px;padding:11px 13px;display:flex;align-items:baseline;gap:9px}
.scr-stats b{font-family:var(--disp);font-weight:900;font-size:20px}
.scr-stats span{font-size:11px;color:var(--ink-3)}

/* ---------- what is new ---------- */
.news{padding:0 0 var(--s6)}
.news-card{background:var(--card);border:2px solid var(--ink);border-radius:var(--r-card);padding:var(--s4);box-shadow:0 8px 0 rgba(34,25,15,.11)}
.news-ver{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding-bottom:var(--s2);border-bottom:1px solid var(--hair)}
.news-ver b{font-family:var(--disp);font-weight:900;font-size:20px}
.news-ver span{font-size:12px;color:var(--ink-3)}
.news-list{margin:var(--s3) 0 0;padding:0;list-style:none;display:grid;gap:12px}
.news-list li{position:relative;padding-left:26px;color:var(--ink-2)}
.news-list li::before{content:"";position:absolute;left:0;top:.52em;width:12px;height:12px;border-radius:3px 3px 3px 0;background:var(--orange);box-shadow:0 0 0 1.5px var(--ink)}

/* ---------- features ---------- */
.feats{padding:0 0 var(--s6)}
.feat-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(272px,1fr));gap:var(--s3)}
.feature{background:var(--card);border:2px solid var(--ink);border-radius:var(--r-card);padding:var(--s3) var(--s3) 22px;box-shadow:0 6px 0 rgba(34,25,15,.10);transition:transform .2s var(--snap)}
.feature:hover{transform:translateY(-4px) rotate(-.5deg)}
.feature h3{font-size:20px;margin-bottom:7px}
.feature p{font-size:14px;color:var(--ink-2)}
.feature:nth-child(2n){border-color:var(--ink);background:#FBF8EF}

/* ---------- ratings ---------- */
.rate{padding:0 0 var(--s6)}
.rate-top{display:grid;grid-template-columns:auto 1fr;gap:var(--s5);align-items:center;background:var(--card);border:2px solid var(--ink);border-radius:var(--r-card);padding:var(--s4);box-shadow:0 8px 0 rgba(34,25,15,.11)}
.score-big{font-family:var(--disp);font-weight:900;font-size:clamp(56px,8vw,84px);line-height:.9;letter-spacing:-.04em}
.score-of{font-size:12px;color:var(--ink-3);letter-spacing:.08em;text-transform:uppercase;margin-top:6px}
.bars{display:grid;gap:7px}
.bar-row{display:flex;align-items:center;gap:10px}
.bar-n{font:700 11px/1 var(--body);color:var(--ink-3);width:10px;text-align:right}
.bar-track{flex:1;height:9px;border-radius:999px;background:var(--slot);overflow:hidden}
.bar-fill{display:block;height:100%;width:var(--w);background:var(--gold);border-radius:999px}
.bars-n{font-size:11px;color:var(--ink-3);text-align:right;margin-top:4px!important;letter-spacing:.06em;text-transform:uppercase}

.tap{margin-top:var(--s4);text-align:center;background:var(--paper);border:2px dashed var(--ink);border-radius:var(--r-card);padding:var(--s4) var(--s3)}
.tap-h{font:700 11px/1 var(--body);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3)}
.tap-stars{display:flex;justify-content:center;gap:10px;margin:var(--s3) 0 var(--s2)}
.tapstar{width:38px;height:38px;border:0;background:none;padding:0;cursor:pointer;-webkit-mask:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M10 1.4l2.5 5.3 5.7.8-4.1 4.1 1 5.8-5.1-2.8-5.1 2.8 1-5.8L1.8 7.5l5.7-.8z'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M10 1.4l2.5 5.3 5.7.8-4.1 4.1 1 5.8-5.1-2.8-5.1 2.8 1-5.8L1.8 7.5l5.7-.8z'/%3E%3C/svg%3E") center/contain no-repeat;background-color:var(--gold-off);transition:background-color .16s,transform .16s var(--snap)}
.tapstar:hover{transform:scale(1.14) rotate(-6deg)}
.tapstar.lit{background-color:var(--gold)}
.tapstar.slip{animation:slip .5s ease-in-out}
@keyframes slip{0%{transform:none}35%{transform:translateY(-10px) rotate(14deg)}100%{transform:none}}
.tap-msg{margin-top:var(--s2)!important;font-size:14px;color:var(--ink-2);min-height:22px}

.reviews{display:grid;grid-template-columns:repeat(auto-fit,minmax(252px,1fr));gap:var(--s3);margin-top:var(--s4)}
.review{background:var(--card);border:2px solid var(--ink);border-radius:var(--r-card);padding:var(--s3);box-shadow:0 6px 0 rgba(34,25,15,.10)}
.review-title{font-size:17px}
.review-meta{display:flex;align-items:center;gap:9px;margin-top:8px!important;font-size:11px;color:var(--ink-3)}
.review-who{letter-spacing:.04em}
.review-body{margin-top:11px!important;font-size:14px;color:var(--ink-2)}

/* ---------- information ---------- */
.info{padding:0 0 var(--s6)}
.info-table{margin:0;background:var(--card);border:2px solid var(--ink);border-radius:var(--r-card);overflow:hidden;box-shadow:0 8px 0 rgba(34,25,15,.11)}
.info-row{display:flex;justify-content:space-between;align-items:center;gap:var(--s3);padding:15px var(--s3);border-bottom:1px solid var(--hair)}
.info-row:last-child{border-bottom:0}
.info-row dt{font:700 11px/1 var(--body);letter-spacing:.11em;text-transform:uppercase;color:var(--ink-3)}
.info-row dd{margin:0;font-size:14px;text-align:right;color:var(--ink-2)}
.info-row-ca{background:var(--paper)}
.ca{display:inline-flex;align-items:center;gap:10px;font:500 13px/1 RHMono,ui-monospace,monospace;background:var(--card);border:2px solid var(--ink);border-radius:var(--r-btn);padding:10px 12px;cursor:pointer;color:var(--ink);transition:transform .16s var(--snap),background .16s}
.ca:hover{background:var(--sky)}
.ca:active{transform:scale(.97)}
.ca-tag{font:700 9px/1 var(--body);letter-spacing:.12em;background:var(--ink);color:var(--paper);padding:5px 7px;border-radius:5px}
.ca.done .ca-tag{background:var(--grass-deep)}
.info-cta{display:flex;flex-wrap:wrap;gap:var(--s2);margin-top:var(--s3)}

/* ---------- footer ---------- */
.foot{border-top:1px solid var(--hair);padding:var(--s5) 0 var(--s6);text-align:center}
.foot-icon{width:44px;height:44px;border-radius:12px;border:1.5px solid var(--ink);margin:0 auto var(--s2)}
.foot-line{font-family:var(--disp);font-weight:700;font-size:16px}
.foot-small{margin-top:8px!important;font-size:12px;color:var(--ink-3)}

/* ---------- responsive ---------- */
@media (max-width:920px){
  .listing{padding:var(--s5) 0 var(--s4)}
  .listing-in{grid-template-columns:1fr;gap:var(--s4)}
  .rate-top{grid-template-columns:1fr;gap:var(--s3);text-align:center}
  .score-of{margin-bottom:var(--s2)}
}
@media (max-width:560px){
  .wrap{width:calc(100% - 32px)}
  .chrome-in{height:56px;gap:8px}
  .chip-chain{display:none}
  .chrome-name{font-size:17px}
  .btn-get{padding:10px 13px;font-size:11px}
  .head{gap:var(--s2)}
  .app-icon{width:82px;height:82px;border-radius:19px}
  .metrics{grid-template-columns:repeat(2,1fr);gap:var(--s3) 0}
  .metric:nth-child(2n){border-right:0}
  .cta .btn{flex:1 1 100%}
  .screen{width:206px;height:406px}
  .info-row{flex-direction:column;align-items:flex-start;gap:9px}
  .info-row dd{text-align:left}
}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .tile,.cat,.catwrap,.btn-pulse,.tapstar.slip,.board.shake{animation:none!important}
  .cat{opacity:1}
  *{transition-duration:.01ms!important}
}
