/* The Shop (shop.html) and product pages (product.html). Hard-edged cards,
   square covers and square buttons, same tokens as the rest of the Hub. */
:root{--max:1600px;--sale:#ff7a59}
*{box-sizing:border-box}
body{
  margin:0; min-height:100vh; color:var(--text); font-family:'Inter',sans-serif;
  background:radial-gradient(ellipse 900px 440px at 50% -8%, rgba(201,255,61,.07), transparent), var(--bg);
}
body.has-lrp{padding-bottom:76px}
[hidden]{display:none!important}
.wrap{max-width:calc(var(--max) + 2 * var(--page-gutter, 20px)); margin:0 auto; padding:0 var(--page-gutter, 20px) 64px}
.eyebrow{font:700 11px 'JetBrains Mono',monospace; letter-spacing:.16em; text-transform:uppercase; color:var(--acid); margin-bottom:14px; display:flex; align-items:center; gap:10px}
/* Same acid dot as every other page's eyebrow. */
h1{font:800 clamp(29px,5.2vw,44px)/1.06 'Archivo',sans-serif; letter-spacing:-.025em; margin:0 0 12px}
h1 span{color:var(--acid)}
.sub{font-size:15px; color:var(--text-dim); max-width:62ch; line-height:1.6; margin:0}
.sub a{color:var(--text)}
.sub a:hover{color:var(--acid)}
a{color:inherit}
.btn{display:inline-flex; align-items:center; justify-content:center; gap:8px; background:var(--acid); color:var(--ink); border:0; border-radius:3px;
  padding:11px 20px; font:600 14px 'Inter',sans-serif; cursor:pointer; white-space:nowrap; text-decoration:none}
.btn:hover{filter:brightness(1.08)}
.btn[disabled]{opacity:.6; cursor:default; filter:none}
.btn-ghost{background:transparent; color:var(--text); border:1px solid var(--line)}
.btn-ghost:hover{border-color:var(--acid); color:var(--acid); filter:none}
.btn-owned{background:transparent; color:var(--acid); border:1px solid rgba(201,255,61,.45)}

/* ------------------------------------------------------------ drawn cover */
.cv{position:relative; aspect-ratio:1; overflow:hidden; background:var(--surface2)}
.cv > img{position:absolute; inset:0; width:100%; height:100%; object-fit:cover; display:block}
.gc{position:absolute; inset:0; display:flex; flex-direction:column; justify-content:flex-end; gap:6px; padding:9% 9% 8%;
  background:radial-gradient(circle, color-mix(in srgb, var(--gc) 40%, transparent) 0 1px, transparent 1.6px) 0 0/10px 10px,
             linear-gradient(140deg, color-mix(in srgb, var(--gc) 16%, #0e0e10) 0%, #0e0e10 62%)}
.gc::before{content:''; position:absolute; inset:0; background:linear-gradient(15deg,#0e0e10 22%,rgba(14,14,16,.25) 80%)}
.gc > *{position:relative}
.gc-kind{position:absolute; top:9%; left:9%; font:700 10px 'JetBrains Mono',monospace; letter-spacing:.16em; text-transform:uppercase; color:var(--gc)}
.gc-mark{position:absolute; top:9%; left:9%; width:26%; height:auto}
.gc-title{font:800 clamp(17px,2.2vw,26px)/1 'Archivo',sans-serif; letter-spacing:-.025em; color:var(--text);
  display:-webkit-box; -webkit-line-clamp:4; -webkit-box-orient:vertical; overflow:hidden; overflow-wrap:anywhere}
.gc-title span{display:block; color:var(--gc)}
.gc-by{font:500 13px 'Inter',system-ui,sans-serif; color:var(--text-dim); white-space:nowrap; overflow:hidden; text-overflow:ellipsis}

/* ------------------------------------------------------------ store card */
.grid{display:grid; grid-template-columns:repeat(auto-fill, minmax(200px, 1fr)); gap:18px 14px}
.sc{min-width:0; display:flex; flex-direction:column; gap:10px}
.sc-art{position:relative; border:1px solid var(--line); border-radius:5px; overflow:hidden; transition:border-color .16s ease}
.sc:hover .sc-art{border-color:rgba(201,255,61,.4)}
.sc-cover{display:block}
.sc-cover .cv img{transition:transform .35s ease}
.sc:hover .sc-cover .cv img{transform:scale(1.03)}
.sc-badge{position:absolute; right:8px; bottom:8px; font:700 10px 'JetBrains Mono',monospace; letter-spacing:.12em; text-transform:uppercase;
  background:rgba(10,10,11,.82); color:var(--text); border:1px solid var(--line); border-radius:3px; padding:4px 7px}
.sc-badge.is-sale{background:var(--sale); border-color:var(--sale); color:var(--ink)}
.sc-badge.is-free{background:var(--acid); border-color:var(--acid); color:var(--ink)}
.sc-play{position:absolute; width:40px; height:40px; border-radius:3px; border:0; cursor:pointer; display:flex; align-items:center; justify-content:center}
.sc-play{left:50%; top:50%; width:52px; height:52px; margin:-26px 0 0 -26px; background:var(--acid); color:var(--ink); box-shadow:0 8px 22px rgba(0,0,0,.5);
  opacity:0; transform:scale(.92); transition:opacity .15s ease, transform .15s ease}
.sc:hover .sc-play, .sc-play:focus-visible, .sc-play.is-playing{opacity:1; transform:none}
@media (hover:none){ .sc-play{opacity:1; transform:none; width:42px; height:42px; margin:-21px 0 0 -21px} }
.sc-play svg, .pd-play svg, .pv-play svg, .lrp-toggle svg{width:18px; height:18px}
.i-pause{display:none}
.is-playing .i-play{display:none}
.is-playing .i-pause{display:block}
.sc-save{position:absolute; right:8px; top:8px}
/* Look and saved state come from the shared .lr-heart in lr-ui.js. */
.sc-body{display:flex; flex-direction:column; gap:3px; min-width:0}
.sc-kind{font:500 11px 'JetBrains Mono',monospace; letter-spacing:.12em; text-transform:uppercase; color:var(--acid);
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.sc-title{font:800 15px/1.25 'Archivo',sans-serif; letter-spacing:-.01em; text-decoration:none; overflow-wrap:anywhere;
  display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden}
.sc-title:hover{color:var(--acid)}
.sc-by{font-size:12.5px; color:var(--text-dim); white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.sc-by a{text-decoration:none}
.sc-by a:hover{color:var(--text)}
.sc-foot{display:flex; align-items:baseline; justify-content:space-between; gap:8px; margin-top:4px}
.pr{font:800 15px 'Archivo',sans-serif; letter-spacing:-.01em; white-space:nowrap}
.pr-free, .pr-owned{color:var(--acid)}
.pr-sale{color:var(--sale)}
.pr-sale s{color:var(--muted2); font-weight:500; margin-right:3px}
.pr-ext{font:500 12px 'Inter',sans-serif; color:var(--text-dim)}
.rt{font:600 12px 'JetBrains Mono',monospace; color:var(--text); white-space:nowrap}
.rt span{color:var(--text-dim); font-weight:500}

/* ------------------------------------------------------------ rails */
.rail-sec{margin:0 0 38px}
.rail-head{display:flex; align-items:baseline; justify-content:space-between; gap:12px; margin:0 0 14px}
.rail-head h2{font:800 20px 'Archivo',sans-serif; letter-spacing:-.01em; margin:0}
.rail-head a, .rail-head button{background:none; border:0; padding:0; font:500 13px 'Inter',sans-serif; color:var(--text-dim); cursor:pointer; text-decoration:none}
.rail-head a:hover, .rail-head button:hover{color:var(--acid)}
.rail{display:grid; grid-auto-flow:column; grid-auto-columns:minmax(170px, calc((100% - 70px) / 6)); gap:14px; overflow-x:auto; scroll-snap-type:x proximity;
  padding-bottom:6px; scrollbar-width:thin; scrollbar-color:var(--line) transparent}
.rail > .sc{scroll-snap-align:start}

/* ------------------------------------------------------------ bottom player */
.lrp{position:fixed; left:0; right:0; bottom:0; z-index:60; height:68px; display:flex; align-items:center; gap:14px;
  padding:0 var(--page-gutter, 16px); background:rgba(16,16,18,.96); border-top:1px solid var(--line); backdrop-filter:blur(10px)}
.lrp-art{width:46px; height:46px; flex:none; border-radius:3px; overflow:hidden; background:var(--surface2); border:1px solid var(--line)}
.lrp-art img{width:100%; height:100%; object-fit:cover; display:block}
.lrp-toggle{width:40px; height:40px; flex:none; border-radius:3px; border:0; background:var(--acid); color:var(--ink); cursor:pointer; display:flex; align-items:center; justify-content:center}
.lrp-meta{min-width:0; flex:0 1 260px; display:flex; flex-direction:column}
.lrp-title{font:800 14px 'Archivo',sans-serif; text-decoration:none; white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.lrp-title:hover{color:var(--acid)}
.lrp-name{font-size:12px; color:var(--text-dim); white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.lrp-track{flex:1; display:flex; align-items:center; gap:10px; min-width:0}
.lrp-t{font:500 11px 'JetBrains Mono',monospace; color:var(--text-dim); flex:none}
.lrp-bar{flex:1; height:22px; cursor:pointer; position:relative; display:flex; align-items:center}
.lrp-bar::before{content:''; position:absolute; left:0; right:0; height:3px; background:var(--line); border-radius:2px}
.lrp-bar i{position:relative; display:block; height:3px; width:0; background:var(--acid); border-radius:2px}
.lrp-bar:focus-visible{outline:2px solid var(--acid); outline-offset:2px}
.lrp-x{width:34px; height:34px; flex:none; border-radius:3px; border:1px solid var(--line); background:transparent; color:var(--text-dim); cursor:pointer}
.lrp-x:hover{color:var(--text); border-color:var(--text-dim)}
@media (max-width:640px){
  .lrp{gap:10px}
  .lrp-art, .lrp-t{display:none}
  .lrp-meta{flex:1}
  .lrp-track{position:absolute; left:0; right:0; top:-11px}
  .lrp-bar{height:22px}
}

/* ------------------------------------------------------------ misc */
.empty{grid-column:1/-1; background:var(--surface); border:1px solid var(--line); border-radius:5px; padding:40px 28px; text-align:center}
.empty h2{font:800 18px 'Archivo',sans-serif; letter-spacing:-.01em; margin:0 0 9px}
.empty p{color:var(--text-dim); font-size:15px; line-height:1.6; margin:0 auto; max-width:48ch}
.empty a, .empty button{color:var(--acid); background:none; border:0; font:inherit; padding:0; cursor:pointer; text-decoration:underline}
