/* EveryGameMade storefront — dark design system (v1, 2026-10-31)
   Scope: everything here applies only under body.egm-storefront.
   Pages opt in with <meta name="egm-storefront" content="v1">,
   <link rel="stylesheet" href="../assets/storefront.css"> after style.css,
   <script src="../assets/storefront.js" defer></script>, and <body class="egm-storefront">.

   Markup contract (generators emit this; every block works without JS):
   HERO     section.sf-hero[data-sf-hero] > .sf-hero-track > article.sf-slide[data-fam][data-hero="1|2|3"]
              .sf-slide-art (key art layer, empty div)
              figure.sf-slide-media > img            (optional real screenshot)
              .sf-slide-body > .sf-pill.sf-pill-kind, .sf-plat > i.sf-dot, h2.sf-slide-title,
                               p.sf-slide-line, p.sf-slide-maker > a[data-maker], a.sf-btn (+.sf-btn-ghost)
            .sf-hero-dots > button.sf-hero-dot[aria-current], button.sf-hero-prev, button.sf-hero-next
            p.sf-hero-note                            ("we host nothing" line)
   SHELF    section.sf-shelf (.sf-shelf-record for the taken-down shelf)
              > .sf-shelf-head > h2, p.sf-shelf-sub, a.sf-see-all, .sf-arrows > button.sf-arrow.sf-prev/.sf-next
              > ol.sf-row > li.sf-card
   CARD     li.sf-card[data-fam][data-kind][data-status]
              > a|div.sf-cover[data-fam]  > img? , span.sf-cover-kind, span.sf-cover-rank?, span.sf-cover-title,
                                            span.sf-cover-meta > span.sf-chip > i.sf-dot + span.sf-year, span.sf-credit?
              > .sf-info > h3.sf-title, p.sf-orig, p.sf-maker > a[data-maker],
                           p.sf-state > span.sf-status.sf-st-live|archived|taken_down|unknown + span.sf-checked,
                           p.sf-own ("needs your own copy"), p.sf-evidence > a
   CONSOLES section.sf-consoles > ul.sf-console-grid > li > a.sf-console[data-fam] > .sf-console-label, .sf-console-count
   CATALOG  .sf-searchbar (sticky), #sf-catalog.sf-catalog (grid of li.sf-card), #ports-static stays as the plain list
   GALLERY  li.gal-card keeps its classes and gains a .sf-cover inside .gal-art
   Backdrops: data-fam="<family key>" -> assets/storefront/fam-<key>.webp (20 keys, data/platform_families.json).
   No modal, interstitial or popup lives in this system. */

/* ---------- 1. tokens: re-point the site variables so existing components go dark ---------- */
body.egm-storefront{
  --sf-bg:#0a1213; --sf-bg2:#0d1719; --sf-surface:#111c1f; --sf-raised:#16252a; --sf-line:#22363b; --sf-line2:#2d4549;
  --sf-text:#ede7dc; --sf-muted:#9fb0ad; --sf-accent:#2fc6b8; --sf-accent-hi:#4fd8ca; --sf-accent-ink:#062423;
  --sf-amber:#f0b453; --sf-live:#4ade80; --sf-archived:#fbbf24; --sf-down:#fca5a5; --sf-down-bg:#f87171; --sf-unknown:#94a3b8;
  --sf-radius:14px; --sf-radius-s:9px; --sf-shadow:0 18px 40px -18px rgba(0,0,0,.75);
  --sf-ring:0 0 0 3px #0a1213,0 0 0 5px #4fd8ca;
  --fam-c:#64748b; --sf-card-w:200px; --sf-ease:cubic-bezier(.2,.7,.2,1);
  --paper:#0a1213; --ink:#ede7dc; --white:#111c1f; --muted:#9fb0ad; --border:#22363b; --teal:#2fc6b8; --amber:#f0b453;
  --shadow:0 18px 40px -18px rgba(0,0,0,.75);
  background:#0a1213;
  background-image:radial-gradient(1200px 520px at 85% -120px,rgba(47,198,184,.13),transparent 70%),
                   radial-gradient(900px 420px at -10% 0,rgba(240,180,83,.06),transparent 70%);
  background-repeat:no-repeat;
  color:#ede7dc;
  color-scheme:dark;
  -webkit-font-smoothing:antialiased;
}
body.egm-storefront ::selection{background:rgba(47,198,184,.35);color:#fff}
body.egm-storefront a{color:var(--sf-accent)}
body.egm-storefront a:hover{color:var(--sf-accent-hi)}
body.egm-storefront h1,body.egm-storefront h2,body.egm-storefront h3,body.egm-storefront h4{color:var(--sf-text)}
body.egm-storefront .muted{color:var(--sf-muted)}
body.egm-storefront hr{border-color:var(--sf-line)}
body.egm-storefront code,body.egm-storefront kbd{background:var(--sf-raised);color:var(--sf-text);border-radius:5px;padding:.05em .35em}
body.egm-storefront img{max-width:100%}

/* ---------- 2. site chrome (header, nav, footer, chips, crumbs) ---------- */
body.egm-storefront .site-header{background:rgba(10,18,19,.86);border-bottom:1px solid var(--sf-line);
  -webkit-backdrop-filter:saturate(1.4) blur(12px);backdrop-filter:saturate(1.4) blur(12px)}
body.egm-storefront .site-header a,body.egm-storefront .site-nav a{color:var(--sf-text)}
body.egm-storefront .site-header a:hover,body.egm-storefront .site-nav a:hover{color:var(--sf-accent-hi)}
body.egm-storefront .nav-toggle{color:var(--sf-text)}
body.egm-storefront .nav-menu{background:var(--sf-surface);border-color:var(--sf-line);box-shadow:var(--sf-shadow)}
body.egm-storefront .site-footer{background:var(--sf-bg2);border-top:1px solid var(--sf-line);color:var(--sf-muted)}
body.egm-storefront .site-footer a{color:var(--sf-text)}
body.egm-storefront .site-footer a:hover{color:var(--sf-accent-hi)}
body.egm-storefront .foot-legal{color:var(--sf-muted)}
body.egm-storefront .chip{background:rgba(47,198,184,.1);border-color:rgba(47,198,184,.28);color:var(--sf-accent-hi)}
body.egm-storefront .chip:hover{background:var(--sf-accent);color:var(--sf-accent-ink)}
body.egm-storefront .crumbs,body.egm-storefront .crumbs a{color:var(--sf-muted)}
body.egm-storefront .crumbs a:hover{color:var(--sf-accent-hi)}
body.egm-storefront .compare-table thead th{background:var(--sf-raised);color:var(--sf-text)}
body.egm-storefront .compare-table td,body.egm-storefront .compare-table th{border-color:var(--sf-line)}
@media (max-width:900px){
  body.egm-storefront .site-nav{background:var(--sf-surface);border-color:var(--sf-line)}
}

/* ---------- 3. focus: always visible on the dark ground ---------- */
body.egm-storefront :is(a,button,input,select,textarea,summary,[tabindex]):focus-visible{
  outline:2px solid var(--sf-accent-hi);outline-offset:3px;box-shadow:var(--sf-ring);border-radius:6px}
body.egm-storefront .sf-cover:focus-visible,body.egm-storefront .sf-console:focus-visible{outline:3px solid var(--sf-accent-hi);outline-offset:3px}
body.egm-storefront .sf-skip{position:absolute;left:-9999px;top:8px;z-index:60;background:var(--sf-accent);color:var(--sf-accent-ink);
  padding:.55em 1em;border-radius:8px;font-weight:700}
body.egm-storefront .sf-skip:focus{left:12px}

/* ---------- 4. layout primitives, buttons, pills ---------- */
body.egm-storefront .sf-wrap{max-width:1320px;margin:0 auto;padding:0 clamp(14px,3vw,32px)}
body.egm-storefront .sf-main{overflow-x:clip}
body.egm-storefront .sf-btn{display:inline-flex;align-items:center;gap:.5em;padding:.72em 1.25em;border-radius:999px;
  background:var(--sf-accent);color:var(--sf-accent-ink);font-weight:700;font-size:.95rem;text-decoration:none;border:0;
  cursor:pointer;transition:background .18s var(--sf-ease),transform .18s var(--sf-ease)}
body.egm-storefront .sf-btn:hover{background:var(--sf-accent-hi);color:var(--sf-accent-ink);transform:translateY(-1px)}
body.egm-storefront .sf-btn-ghost{background:rgba(237,231,220,.08);color:var(--sf-text);box-shadow:inset 0 0 0 1px rgba(237,231,220,.22)}
body.egm-storefront .sf-btn-ghost:hover{background:rgba(237,231,220,.16);color:#fff}
body.egm-storefront .sf-pill{display:inline-flex;align-items:center;gap:.4em;padding:.28em .7em;border-radius:999px;font-size:.72rem;
  font-weight:800;letter-spacing:.08em;text-transform:uppercase;background:rgba(47,198,184,.14);color:var(--sf-accent-hi);
  box-shadow:inset 0 0 0 1px rgba(47,198,184,.35)}
body.egm-storefront .sf-dot{display:inline-block;width:.6em;height:.6em;border-radius:50%;background:var(--fam-c,#64748b);
  box-shadow:0 0 0 2px rgba(0,0,0,.35);flex:none}
body.egm-storefront .sf-plat{display:inline-flex;align-items:center;gap:.45em;font-size:.85rem;font-weight:600;color:var(--sf-text)}
body.egm-storefront .sf-kicker{font-size:.75rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--sf-amber)}
body.egm-storefront .sf-section-title{font-family:"Fraunces",Georgia,serif;font-weight:900;font-size:clamp(1.35rem,2.4vw,1.85rem);
  letter-spacing:-.01em;margin:0}

/* ---------- 5. slim sticky search bar ---------- */
body.egm-storefront .sf-searchbar{position:sticky;top:0;z-index:30;display:flex;flex-wrap:wrap;align-items:center;gap:.6rem;
  padding:.65rem clamp(14px,3vw,32px);background:rgba(10,18,19,.9);border-bottom:1px solid var(--sf-line);
  -webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}
body.egm-storefront .sf-searchbar input[type=search],body.egm-storefront .sf-searchbar input[type=text]{flex:1 1 220px;min-width:0;
  background:var(--sf-surface);color:var(--sf-text);border:1px solid var(--sf-line2);border-radius:999px;padding:.6em 1.1em;font:inherit;font-size:.95rem}
body.egm-storefront .sf-searchbar input::placeholder{color:#7d8f8c}
body.egm-storefront .sf-searchbar .sf-count{color:var(--sf-muted);font-size:.85rem;white-space:nowrap}

/* ---------- 6. hero carousel (native scroll-snap; storefront.js only adds autoplay) ---------- */
body.egm-storefront .sf-hero{position:relative;margin:clamp(10px,2vw,22px) auto 0;max-width:1320px;padding:0 clamp(14px,3vw,32px)}
body.egm-storefront .sf-hero-track{display:flex;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scroll-behavior:smooth;
  border-radius:20px;scrollbar-width:none;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;
  box-shadow:0 30px 60px -30px rgba(0,0,0,.9),0 0 0 1px var(--sf-line)}
body.egm-storefront .sf-hero-track::-webkit-scrollbar{display:none}
body.egm-storefront .sf-slide{position:relative;flex:0 0 100%;min-width:0;scroll-snap-align:start;scroll-snap-stop:always;
  min-height:clamp(340px,42vw,520px);display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);align-items:center;
  overflow:hidden;isolation:isolate;background:#0b1416}
body.egm-storefront .sf-slide-art{position:absolute;inset:0;z-index:-2;background-size:cover;background-position:center;
  background-image:url(storefront/hero-1.webp)}
body.egm-storefront .sf-slide:nth-child(3n+2) .sf-slide-art{background-image:url(storefront/hero-2.webp)}
body.egm-storefront .sf-slide:nth-child(3n+3) .sf-slide-art{background-image:url(storefront/hero-3.webp)}
body.egm-storefront .sf-slide[data-hero="1"] .sf-slide-art{background-image:url(storefront/hero-1.webp)}
body.egm-storefront .sf-slide[data-hero="2"] .sf-slide-art{background-image:url(storefront/hero-2.webp)}
body.egm-storefront .sf-slide[data-hero="3"] .sf-slide-art{background-image:url(storefront/hero-3.webp)}
body.egm-storefront .sf-slide::before{content:"";position:absolute;inset:0;z-index:-1;
  background:linear-gradient(90deg,rgba(7,13,14,.94) 0%,rgba(7,13,14,.78) 38%,rgba(7,13,14,.25) 70%,rgba(7,13,14,.1) 100%),
             linear-gradient(0deg,rgba(7,13,14,.85) 0%,transparent 45%)}
body.egm-storefront .sf-slide-body{position:relative;padding:clamp(22px,4vw,56px);display:flex;flex-direction:column;align-items:flex-start;gap:.7rem;max-width:620px}
body.egm-storefront .sf-slide-title{font-family:"Fraunces",Georgia,serif;font-weight:900;margin:.1rem 0 0;line-height:1.02;
  font-size:clamp(2rem,4.6vw,3.6rem);letter-spacing:-.02em;color:#fff;text-shadow:0 2px 24px rgba(0,0,0,.55)}
body.egm-storefront .sf-slide-line{margin:0;color:#d6dedb;font-size:clamp(.98rem,1.3vw,1.1rem);line-height:1.5;max-width:52ch}
body.egm-storefront .sf-slide-maker{margin:0;color:var(--sf-muted);font-size:.92rem}
body.egm-storefront .sf-slide-maker a{color:var(--sf-text);font-weight:700;text-decoration:underline;text-decoration-color:rgba(47,198,184,.6);text-underline-offset:3px}
body.egm-storefront .sf-slide-maker a:hover{color:var(--sf-accent-hi)}
body.egm-storefront .sf-slide-acts{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:.4rem}
body.egm-storefront .sf-slide-media{margin:0 clamp(18px,3vw,44px) 0 0;justify-self:end;align-self:center;width:min(100%,520px);
  aspect-ratio:16/9;border-radius:14px;overflow:hidden;box-shadow:0 24px 50px -20px rgba(0,0,0,.9),0 0 0 1px rgba(255,255,255,.08);
  transform:rotate(1.2deg)}
body.egm-storefront .sf-slide-media img{width:100%;height:100%;object-fit:cover;display:block}
body.egm-storefront .sf-hero-ctrl{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-top:.8rem}
body.egm-storefront .sf-hero-dots{display:flex;gap:.45rem;align-items:center}
body.egm-storefront .sf-hero-dot{width:28px;height:6px;padding:0;border:0;border-radius:999px;background:rgba(237,231,220,.22);cursor:pointer;
  transition:background .2s,width .2s var(--sf-ease)}
body.egm-storefront .sf-hero-dot:hover{background:rgba(237,231,220,.45)}
body.egm-storefront .sf-hero-dot[aria-current="true"]{background:var(--sf-accent);width:44px}
body.egm-storefront .sf-hero-prev,body.egm-storefront .sf-hero-next,body.egm-storefront .sf-arrow{display:inline-grid;place-items:center;
  width:40px;height:40px;border-radius:50%;border:1px solid var(--sf-line2);background:var(--sf-surface);color:var(--sf-text);
  font-size:1.1rem;line-height:1;cursor:pointer;transition:background .18s,border-color .18s,opacity .18s}
body.egm-storefront .sf-hero-prev:hover,body.egm-storefront .sf-hero-next:hover,body.egm-storefront .sf-arrow:hover{
  background:var(--sf-raised);border-color:var(--sf-accent)}
body.egm-storefront .sf-arrow[disabled],body.egm-storefront .sf-hero-prev[disabled],body.egm-storefront .sf-hero-next[disabled]{opacity:.35;cursor:default}
body.egm-storefront .sf-hero-btns{display:flex;gap:.45rem}
body.egm-storefront .sf-hero-pause{display:inline-grid;place-items:center;width:40px;height:40px;border-radius:50%;border:1px solid var(--sf-line2);background:var(--sf-surface);color:var(--sf-text);font-size:.78rem;line-height:1;cursor:pointer}
body.egm-storefront .sf-hero-pause:hover{background:var(--sf-raised);border-color:var(--sf-accent)}
body.egm-storefront .sf-hero-pause[aria-pressed="true"]{border-color:var(--sf-accent);color:var(--sf-accent-hi)}
body.egm-storefront .sf-arrows[hidden],body.egm-storefront .sf-hero-pause[hidden]{display:none}
body.egm-storefront .sf-hero-note{margin:.7rem 0 0;color:var(--sf-muted);font-size:.85rem}

/* ---------- 7. shelves (horizontal rows, scroll-snap; arrows on desktop, swipe on phone) ---------- */
body.egm-storefront .sf-shelf{position:relative;max-width:1320px;margin:clamp(26px,4vw,46px) auto 0;padding:0 clamp(14px,3vw,32px)}
body.egm-storefront .sf-shelf-head{display:flex;align-items:flex-end;gap:.6rem 1rem;flex-wrap:wrap;margin-bottom:.85rem}
body.egm-storefront .sf-shelf-head h2{font-family:"Fraunces",Georgia,serif;font-weight:900;font-size:clamp(1.3rem,2.2vw,1.7rem);
  margin:0;letter-spacing:-.01em;line-height:1.15}
body.egm-storefront .sf-shelf-sub{flex:1 1 100%;order:3;margin:0;color:var(--sf-muted);font-size:.92rem}
body.egm-storefront .sf-see-all{margin-left:auto;font-size:.88rem;font-weight:700;color:var(--sf-accent-hi);text-decoration:none;white-space:nowrap}
body.egm-storefront .sf-see-all:hover{text-decoration:underline;text-underline-offset:3px}
body.egm-storefront .sf-arrows{display:flex;gap:.4rem}
body.egm-storefront .sf-row{list-style:none;margin:0;padding:4px 2px 18px;display:grid;grid-auto-flow:column;
  grid-auto-columns:var(--sf-card-w);gap:16px;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;
  scroll-padding-inline:2px;scroll-behavior:smooth;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;
  scrollbar-width:thin;scrollbar-color:var(--sf-line2) transparent}
body.egm-storefront .sf-row::-webkit-scrollbar{height:8px}
body.egm-storefront .sf-row::-webkit-scrollbar-thumb{background:var(--sf-line2);border-radius:8px}
body.egm-storefront .sf-row>.sf-card{scroll-snap-align:start}
body.egm-storefront .sf-shelf-record{padding-top:clamp(18px,2.4vw,26px);padding-bottom:6px;border-radius:18px;
  background:linear-gradient(180deg,rgba(248,113,113,.07),transparent 70%);box-shadow:inset 0 1px 0 rgba(248,113,113,.25)}
body.egm-storefront .sf-shelf-record .sf-shelf-head h2::before{content:"";display:inline-block;width:.5em;height:.5em;border-radius:50%;
  background:var(--sf-down-bg);margin-right:.45em;vertical-align:.12em}

/* ---------- 8. cards ---------- */
body.egm-storefront .sf-card{position:relative;display:flex;flex-direction:column;gap:.6rem;min-width:0;list-style:none}
body.egm-storefront .sf-info{display:flex;flex-direction:column;gap:.22rem;min-width:0;padding:0 2px}
body.egm-storefront .sf-title{margin:0;font-family:"Inter",system-ui,sans-serif;font-weight:700;font-size:.98rem;line-height:1.25;color:var(--sf-text);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
body.egm-storefront .sf-title a{color:inherit;text-decoration:none}
body.egm-storefront .sf-title a:hover{color:var(--sf-accent-hi)}
body.egm-storefront .sf-orig{margin:0;color:var(--sf-muted);font-size:.84rem;line-height:1.35;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
body.egm-storefront .sf-maker{margin:0;font-size:.84rem;color:var(--sf-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
body.egm-storefront .sf-maker a,body.egm-storefront a.sf-maker{color:var(--sf-text);font-weight:600;text-decoration:underline;
  text-decoration-color:rgba(47,198,184,.55);text-underline-offset:2px}
body.egm-storefront .sf-maker a:hover,body.egm-storefront a.sf-maker:hover{color:var(--sf-accent-hi)}
body.egm-storefront .sf-state{margin:.15rem 0 0;display:flex;flex-wrap:wrap;align-items:center;gap:.35rem .5rem;font-size:.78rem}
body.egm-storefront .sf-status{display:inline-flex;align-items:center;gap:.35em;padding:.18em .6em;border-radius:999px;font-weight:700;
  font-size:.74rem;letter-spacing:.02em;background:rgba(148,163,184,.12);color:var(--sf-unknown);box-shadow:inset 0 0 0 1px rgba(148,163,184,.3)}
body.egm-storefront .sf-status::before{content:"";width:.5em;height:.5em;border-radius:50%;background:currentColor}
body.egm-storefront .sf-st-live{background:rgba(74,222,128,.1);color:var(--sf-live);box-shadow:inset 0 0 0 1px rgba(74,222,128,.32)}
body.egm-storefront .sf-st-archived{background:rgba(251,191,36,.1);color:var(--sf-archived);box-shadow:inset 0 0 0 1px rgba(251,191,36,.32)}
body.egm-storefront .sf-st-taken_down{background:rgba(248,113,113,.12);color:var(--sf-down);box-shadow:inset 0 0 0 1px rgba(248,113,113,.4)}
body.egm-storefront .sf-st-unknown{background:rgba(148,163,184,.12);color:var(--sf-unknown)}
body.egm-storefront .sf-checked{color:var(--sf-muted);font-size:.74rem}
body.egm-storefront .sf-own{margin:.1rem 0 0;font-size:.76rem;font-weight:700;color:var(--sf-amber)}
body.egm-storefront .sf-own::before{content:"\25C6\00a0";font-size:.8em}
body.egm-storefront .sf-evidence{margin:.1rem 0 0;font-size:.78rem;display:flex;flex-wrap:wrap;gap:.2rem .6rem}
body.egm-storefront .sf-evidence a{color:var(--sf-down);text-decoration:underline;text-underline-offset:2px}
body.egm-storefront .sf-evidence a:hover{color:#fecaca}

/* ---------- 9. covers: 2:3 typographic posters over the platform-family backdrop ---------- */
body.egm-storefront .sf-cover{position:relative;display:flex;flex-direction:column;justify-content:flex-end;
  aspect-ratio:2/3;width:100%;border-radius:var(--sf-radius);overflow:hidden;isolation:isolate;text-decoration:none;color:#fff;
  background-color:#101b1e;background-image:url(storefront/fam-other.webp);background-size:cover;background-position:center;
  box-shadow:0 0 0 1px rgba(255,255,255,.07),0 14px 28px -16px rgba(0,0,0,.85);
  transition:transform .22s var(--sf-ease),box-shadow .22s var(--sf-ease)}
body.egm-storefront .sf-cover::before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;
  background:linear-gradient(180deg,rgba(6,11,12,.55) 0%,rgba(6,11,12,0) 26%,rgba(6,11,12,.12) 48%,rgba(6,11,12,.93) 100%)}
body.egm-storefront .sf-cover::after{content:"";position:absolute;inset:0;z-index:3;border-radius:inherit;pointer-events:none;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.08),inset 0 3px 0 -1px var(--fam-c)}
body.egm-storefront .sf-cover>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-1;display:block}
body.egm-storefront a.sf-cover:hover,body.egm-storefront .sf-card:hover .sf-cover,body.egm-storefront .gal-card:hover .sf-cover{
  transform:translateY(-4px);box-shadow:0 0 0 1px var(--fam-c),0 22px 40px -18px rgba(0,0,0,.95)}
body.egm-storefront .sf-cover-kind{position:absolute;top:10px;left:10px;z-index:2;padding:.26em .6em;border-radius:6px;font-size:.62rem;
  font-weight:800;letter-spacing:.1em;text-transform:uppercase;background:rgba(6,11,12,.72);color:#fff;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.18);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}
body.egm-storefront .sf-cover-rank{position:absolute;top:6px;right:10px;z-index:2;font-family:"Fraunces",Georgia,serif;font-weight:900;
  font-size:2.3rem;line-height:1;color:rgba(255,255,255,.92);text-shadow:0 2px 14px rgba(0,0,0,.7)}
body.egm-storefront .sf-cover-title{position:relative;z-index:2;margin:0 12px;font-family:"Fraunces",Georgia,serif;font-weight:900;
  font-size:clamp(1.05rem,1.5vw,1.32rem);line-height:1.06;letter-spacing:-.01em;color:#fff;text-wrap:balance;
  text-shadow:0 2px 16px rgba(0,0,0,.75);overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}
body.egm-storefront .sf-cover-meta{position:relative;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:.4rem;
  padding:.55rem 12px 12px;font-size:.72rem;color:#e3e9e7}
body.egm-storefront .sf-chip{display:inline-flex;align-items:center;gap:.4em;min-width:0;padding:.2em .55em;border-radius:999px;
  background:rgba(6,11,12,.62);box-shadow:inset 0 0 0 1px rgba(255,255,255,.14);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
body.egm-storefront .sf-year{font-variant-numeric:tabular-nums;font-weight:700;color:#cfd8d6;flex:none}
body.egm-storefront .sf-credit{position:absolute;right:6px;bottom:4px;z-index:2;font-size:.58rem;color:rgba(255,255,255,.6)}
/* kind accents on the corner badge */
body.egm-storefront [data-kind="recomp"] .sf-cover-kind,body.egm-storefront .sf-cover[data-kind="recomp"] .sf-cover-kind{color:#5eead4}
body.egm-storefront [data-kind="decomp"] .sf-cover-kind,body.egm-storefront .sf-cover[data-kind="decomp"] .sf-cover-kind{color:#c4b5fd}
body.egm-storefront [data-kind="source-port"] .sf-cover-kind,body.egm-storefront [data-kind="source_port"] .sf-cover-kind{color:#fcd34d}
body.egm-storefront [data-kind="remake"] .sf-cover-kind,body.egm-storefront [data-kind="engine-remake"] .sf-cover-kind{color:#fda4af}
body.egm-storefront [data-status="taken_down"] .sf-cover{filter:saturate(.55)}
body.egm-storefront [data-status="taken_down"] .sf-cover::after{box-shadow:inset 0 0 0 1px rgba(248,113,113,.45),inset 0 3px 0 -1px #f87171}

/* ---------- 10. platform-family backdrops + accent colors (keys from data/platform_families.json) ----------
   ancestor form first, self form after, so [data-fam] on the cover itself wins over a card-level one. */
body.egm-storefront [data-fam="pc-dos"]{--fam-c:#2dd4bf}
body.egm-storefront [data-fam="windows-pc"]{--fam-c:#38bdf8}
body.egm-storefront [data-fam="n64"]{--fam-c:#4ade80}
body.egm-storefront [data-fam="ps1"]{--fam-c:#94a3b8}
body.egm-storefront [data-fam="ps2"]{--fam-c:#6366f1}
body.egm-storefront [data-fam="ps3-4"]{--fam-c:#60a5fa}
body.egm-storefront [data-fam="xbox"]{--fam-c:#84cc16}
body.egm-storefront [data-fam="xbox360"]{--fam-c:#22c55e}
body.egm-storefront [data-fam="gamecube-wii"]{--fam-c:#a78bfa}
body.egm-storefront [data-fam="wiiu-switch"]{--fam-c:#f87171}
body.egm-storefront [data-fam="nes"]{--fam-c:#fb7185}
body.egm-storefront [data-fam="snes"]{--fam-c:#c084fc}
body.egm-storefront [data-fam="gb-gbc"]{--fam-c:#a3e635}
body.egm-storefront [data-fam="gba"]{--fam-c:#818cf8}
body.egm-storefront [data-fam="ds-3ds"]{--fam-c:#5eead4}
body.egm-storefront [data-fam="sega"]{--fam-c:#3b82f6}
body.egm-storefront [data-fam="micro"]{--fam-c:#fbbf24}
body.egm-storefront [data-fam="arcade"]{--fam-c:#f472b6}
body.egm-storefront [data-fam="mobile"]{--fam-c:#f59e0b}
body.egm-storefront [data-fam="other"]{--fam-c:#64748b}
body.egm-storefront [data-fam="pc-dos"] :is(.sf-cover,.sf-console){background-image:url(storefront/fam-pc-dos.webp)}
body.egm-storefront [data-fam="windows-pc"] :is(.sf-cover,.sf-console){background-image:url(storefront/fam-windows-pc.webp)}
body.egm-storefront [data-fam="n64"] :is(.sf-cover,.sf-console){background-image:url(storefront/fam-n64.webp)}
body.egm-storefront [data-fam="ps1"] :is(.sf-cover,.sf-console){background-image:url(storefront/fam-ps1.webp)}
body.egm-storefront [data-fam="ps2"] :is(.sf-cover,.sf-console){background-image:url(storefront/fam-ps2.webp)}
body.egm-storefront [data-fam="ps3-4"] :is(.sf-cover,.sf-console){background-image:url(storefront/fam-ps3-4.webp)}
body.egm-storefront [data-fam="xbox"] :is(.sf-cover,.sf-console){background-image:url(storefront/fam-xbox.webp)}
body.egm-storefront [data-fam="xbox360"] :is(.sf-cover,.sf-console){background-image:url(storefront/fam-xbox360.webp)}
body.egm-storefront [data-fam="gamecube-wii"] :is(.sf-cover,.sf-console){background-image:url(storefront/fam-gamecube-wii.webp)}
body.egm-storefront [data-fam="wiiu-switch"] :is(.sf-cover,.sf-console){background-image:url(storefront/fam-wiiu-switch.webp)}
body.egm-storefront [data-fam="nes"] :is(.sf-cover,.sf-console){background-image:url(storefront/fam-nes.webp)}
body.egm-storefront [data-fam="snes"] :is(.sf-cover,.sf-console){background-image:url(storefront/fam-snes.webp)}
body.egm-storefront [data-fam="gb-gbc"] :is(.sf-cover,.sf-console){background-image:url(storefront/fam-gb-gbc.webp)}
body.egm-storefront [data-fam="gba"] :is(.sf-cover,.sf-console){background-image:url(storefront/fam-gba.webp)}
body.egm-storefront [data-fam="ds-3ds"] :is(.sf-cover,.sf-console){background-image:url(storefront/fam-ds-3ds.webp)}
body.egm-storefront [data-fam="sega"] :is(.sf-cover,.sf-console){background-image:url(storefront/fam-sega.webp)}
body.egm-storefront [data-fam="micro"] :is(.sf-cover,.sf-console){background-image:url(storefront/fam-micro.webp)}
body.egm-storefront [data-fam="arcade"] :is(.sf-cover,.sf-console){background-image:url(storefront/fam-arcade.webp)}
body.egm-storefront [data-fam="mobile"] :is(.sf-cover,.sf-console){background-image:url(storefront/fam-mobile.webp)}
body.egm-storefront [data-fam="other"] :is(.sf-cover,.sf-console){background-image:url(storefront/fam-other.webp)}
body.egm-storefront :is(.sf-cover,.sf-console)[data-fam="pc-dos"]{background-image:url(storefront/fam-pc-dos.webp)}
body.egm-storefront :is(.sf-cover,.sf-console)[data-fam="windows-pc"]{background-image:url(storefront/fam-windows-pc.webp)}
body.egm-storefront :is(.sf-cover,.sf-console)[data-fam="n64"]{background-image:url(storefront/fam-n64.webp)}
body.egm-storefront :is(.sf-cover,.sf-console)[data-fam="ps1"]{background-image:url(storefront/fam-ps1.webp)}
body.egm-storefront :is(.sf-cover,.sf-console)[data-fam="ps2"]{background-image:url(storefront/fam-ps2.webp)}
body.egm-storefront :is(.sf-cover,.sf-console)[data-fam="ps3-4"]{background-image:url(storefront/fam-ps3-4.webp)}
body.egm-storefront :is(.sf-cover,.sf-console)[data-fam="xbox"]{background-image:url(storefront/fam-xbox.webp)}
body.egm-storefront :is(.sf-cover,.sf-console)[data-fam="xbox360"]{background-image:url(storefront/fam-xbox360.webp)}
body.egm-storefront :is(.sf-cover,.sf-console)[data-fam="gamecube-wii"]{background-image:url(storefront/fam-gamecube-wii.webp)}
body.egm-storefront :is(.sf-cover,.sf-console)[data-fam="wiiu-switch"]{background-image:url(storefront/fam-wiiu-switch.webp)}
body.egm-storefront :is(.sf-cover,.sf-console)[data-fam="nes"]{background-image:url(storefront/fam-nes.webp)}
body.egm-storefront :is(.sf-cover,.sf-console)[data-fam="snes"]{background-image:url(storefront/fam-snes.webp)}
body.egm-storefront :is(.sf-cover,.sf-console)[data-fam="gb-gbc"]{background-image:url(storefront/fam-gb-gbc.webp)}
body.egm-storefront :is(.sf-cover,.sf-console)[data-fam="gba"]{background-image:url(storefront/fam-gba.webp)}
body.egm-storefront :is(.sf-cover,.sf-console)[data-fam="ds-3ds"]{background-image:url(storefront/fam-ds-3ds.webp)}
body.egm-storefront :is(.sf-cover,.sf-console)[data-fam="sega"]{background-image:url(storefront/fam-sega.webp)}
body.egm-storefront :is(.sf-cover,.sf-console)[data-fam="micro"]{background-image:url(storefront/fam-micro.webp)}
body.egm-storefront :is(.sf-cover,.sf-console)[data-fam="arcade"]{background-image:url(storefront/fam-arcade.webp)}
body.egm-storefront :is(.sf-cover,.sf-console)[data-fam="mobile"]{background-image:url(storefront/fam-mobile.webp)}
body.egm-storefront :is(.sf-cover,.sf-console)[data-fam="other"]{background-image:url(storefront/fam-other.webp)}

/* ---------- 11. console tiles ---------- */
body.egm-storefront .sf-consoles{max-width:1320px;margin:clamp(30px,4.5vw,54px) auto 0;padding:0 clamp(14px,3vw,32px)}
body.egm-storefront .sf-console-grid{list-style:none;margin:0;padding:0;display:grid;gap:12px;
  grid-template-columns:repeat(auto-fill,minmax(176px,1fr))}
body.egm-storefront .sf-console-grid>li{margin:0;min-width:0}
body.egm-storefront .sf-console{position:relative;display:flex;flex-direction:column;justify-content:flex-end;gap:.15rem;
  min-height:104px;padding:14px 14px 12px;border-radius:var(--sf-radius);overflow:hidden;isolation:isolate;text-decoration:none;color:#fff;
  background-color:#101b1e;background-image:url(storefront/fam-other.webp);background-size:cover;background-position:center;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.08);transition:transform .2s var(--sf-ease),box-shadow .2s var(--sf-ease)}
body.egm-storefront .sf-console::before{content:"";position:absolute;inset:0;z-index:-1;
  background:linear-gradient(100deg,rgba(6,11,12,.92) 0%,rgba(6,11,12,.62) 55%,rgba(6,11,12,.35) 100%)}
body.egm-storefront .sf-console::after{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--fam-c)}
body.egm-storefront .sf-console:hover{transform:translateY(-3px);color:#fff;box-shadow:inset 0 0 0 1px var(--fam-c),0 16px 30px -18px rgba(0,0,0,.9)}
body.egm-storefront .sf-console-label{font-family:"Fraunces",Georgia,serif;font-weight:900;font-size:1.06rem;line-height:1.15;color:#fff}
body.egm-storefront .sf-console-count{font-size:.8rem;color:#cdd7d5;font-variant-numeric:tabular-nums}

/* ---------- 12. full catalog grid + filters (reuses the existing pp-* filter markup) ---------- */
body.egm-storefront .sf-catalog,body.egm-storefront #sf-catalog{list-style:none;margin:0;padding:0;display:grid;gap:22px 16px;
  grid-template-columns:repeat(auto-fill,minmax(170px,1fr))}
body.egm-storefront #sf-catalog>.sf-card[hidden]{display:none}
body.egm-storefront .sf-catalog-sec{max-width:1320px;margin:clamp(30px,4.5vw,54px) auto 0;padding:0 clamp(14px,3vw,32px)}
body.egm-storefront .sf-more{display:flex;justify-content:center;margin:1.4rem 0 0}
body.egm-storefront .pp-search,body.egm-storefront .pp-bar{background:transparent}
body.egm-storefront #ports-q,body.egm-storefront .pp-search input{background:var(--sf-surface);color:var(--sf-text);border:1px solid var(--sf-line2);
  border-radius:999px;padding:.62em 1.1em}
body.egm-storefront #ports-q::placeholder{color:#7d8f8c}
body.egm-storefront .pp-fg{border-color:var(--sf-line)}
body.egm-storefront .pp-fl{color:var(--sf-muted);font-size:.78rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase}
body.egm-storefront .pp-f{background:var(--sf-surface);color:var(--sf-text);border:1px solid var(--sf-line2);border-radius:999px;
  cursor:pointer;transition:background .15s,border-color .15s}
body.egm-storefront .pp-f:hover{border-color:var(--sf-accent);background:var(--sf-raised)}
body.egm-storefront .pp-f[aria-pressed="true"]{background:var(--sf-accent);border-color:var(--sf-accent);color:var(--sf-accent-ink)}
body.egm-storefront .pp-n{color:var(--sf-muted)}
body.egm-storefront .pp-f[aria-pressed="true"] .pp-n{color:var(--sf-accent-ink)}
body.egm-storefront .pp-reset{background:transparent;color:var(--sf-accent-hi);border:1px solid var(--sf-line2);border-radius:999px;cursor:pointer}
body.egm-storefront .pp-msg{background:var(--sf-surface);color:var(--sf-text);border:1px solid var(--sf-line);border-radius:var(--sf-radius-s)}

/* ---------- 13. existing ports-page sections, restyled dark (content untouched) ---------- */
body.egm-storefront .hub,body.egm-storefront .pp-sec{color:var(--sf-text)}
body.egm-storefront .hub-kicker{color:var(--sf-amber)}
body.egm-storefront .hub-intro,body.egm-storefront .prose{color:#d3dbd8}
body.egm-storefront .prose a{color:var(--sf-accent-hi)}
body.egm-storefront .pp-card{background:var(--sf-surface);border:1px solid var(--sf-line);border-radius:var(--sf-radius);box-shadow:none}
body.egm-storefront .pp-card:hover{border-color:var(--sf-line2)}
body.egm-storefront .card-title,body.egm-storefront .card-title a{color:var(--sf-text)}
body.egm-storefront .card-specs{color:var(--sf-muted)}
body.egm-storefront .pp-art{background-color:var(--sf-raised)}
body.egm-storefront details.pp-before,body.egm-storefront .pp-before{background:var(--sf-surface);border:1px solid var(--sf-line);
  border-radius:var(--sf-radius);color:var(--sf-text)}
body.egm-storefront .pp-before>summary{cursor:pointer;font-weight:700;color:var(--sf-text)}
body.egm-storefront .pp-before>summary::marker{color:var(--sf-accent)}
body.egm-storefront .pp-gloss dt{color:var(--sf-text);font-weight:700}
body.egm-storefront .pp-gloss dd{color:#c9d2cf}
body.egm-storefront .pp-changes,body.egm-storefront .pp-feed{color:#d3dbd8}
body.egm-storefront .pp-feed li,body.egm-storefront .pp-changes li{border-color:var(--sf-line)}
body.egm-storefront .pp-links a{color:var(--sf-accent-hi)}
body.egm-storefront #faq details,body.egm-storefront .faq details{background:var(--sf-surface);border:1px solid var(--sf-line);border-radius:var(--sf-radius-s)}
body.egm-storefront #faq summary{color:var(--sf-text);font-weight:700;cursor:pointer}
body.egm-storefront #taken-down a{color:var(--sf-down)}
/* the full plain list stays (crawlable, no JS); compact multi-column on wide screens */
body.egm-storefront #ports-static{columns:3 300px;column-gap:28px;font-size:.88rem;line-height:1.5;color:var(--sf-muted);padding-left:1.4em}
body.egm-storefront #ports-static li{break-inside:avoid;margin:0 0 .25rem}
body.egm-storefront #ports-static a{color:var(--sf-text);text-decoration:none}
body.egm-storefront #ports-static a:hover{color:var(--sf-accent-hi);text-decoration:underline}
body.egm-storefront #ports-static-section{max-width:1320px;margin-left:auto;margin-right:auto}

/* ---------- 14. gallery page (li.gal-card keeps its classes; .sf-cover sits inside .gal-art) ---------- */
body.egm-storefront .gal{max-width:1320px}
body.egm-storefront .gal-head h1{font-family:"Fraunces",Georgia,serif;font-weight:900;letter-spacing:-.02em;margin-bottom:.3rem}
body.egm-storefront .gal-checked{color:var(--sf-muted);font-size:.85rem}
body.egm-storefront .gal-lede{color:#d3dbd8;max-width:72ch}
body.egm-storefront .gal-bar{position:sticky;top:0;z-index:30;display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin:1rem 0 1.2rem;
  padding:.6rem 0;background:rgba(10,18,19,.9);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--sf-line)}
body.egm-storefront .gal-f{background:var(--sf-surface);color:var(--sf-text);border:1px solid var(--sf-line2);border-radius:999px;
  padding:.45em .95em;font:inherit;font-size:.88rem;font-weight:600;cursor:pointer}
body.egm-storefront .gal-f:hover{border-color:var(--sf-accent);background:var(--sf-raised)}
body.egm-storefront .gal-f[aria-pressed="true"]{background:var(--sf-accent);border-color:var(--sf-accent);color:var(--sf-accent-ink)}
body.egm-storefront .gal-f .n{opacity:.75;margin-left:.3em;font-variant-numeric:tabular-nums}
body.egm-storefront .gal-q{flex:1 1 220px;min-width:0;background:var(--sf-surface);color:var(--sf-text);border:1px solid var(--sf-line2);
  border-radius:999px;padding:.55em 1.05em;font:inherit;font-size:.92rem}
body.egm-storefront .gal-q::placeholder{color:#7d8f8c}
body.egm-storefront .gal-count{color:var(--sf-muted);font-size:.85rem;white-space:nowrap}
body.egm-storefront .gal-grid{list-style:none;margin:0;padding:0;display:grid;gap:22px 16px;grid-template-columns:repeat(auto-fill,minmax(180px,1fr))}
body.egm-storefront .gal-card{display:flex;flex-direction:column;gap:.55rem;min-width:0;background:transparent;border:0;box-shadow:none;padding:0}
body.egm-storefront .gal-card[hidden]{display:none}
body.egm-storefront .gal-art{position:relative;border-radius:var(--sf-radius);overflow:visible;background:transparent;aspect-ratio:auto}
body.egm-storefront .gal-art>img,body.egm-storefront .gal-pimg{width:100%;aspect-ratio:2/3;object-fit:cover;border-radius:var(--sf-radius);display:block}
body.egm-storefront .gal-credit{color:rgba(255,255,255,.65);font-size:.6rem}
body.egm-storefront .gal-tc{border-radius:var(--sf-radius);aspect-ratio:2/3;background:var(--sf-raised);color:#fff}
body.egm-storefront .gal-body{display:flex;flex-direction:column;gap:.25rem;min-width:0;padding:0 2px}
body.egm-storefront .gal-tags{display:flex;flex-wrap:wrap;gap:.3rem}
body.egm-storefront .gal-tag{display:inline-flex;align-items:center;padding:.14em .55em;border-radius:999px;font-size:.68rem;font-weight:800;
  letter-spacing:.06em;text-transform:uppercase;background:rgba(148,163,184,.12);color:#cbd5e1;box-shadow:inset 0 0 0 1px rgba(148,163,184,.28)}
body.egm-storefront .gal-tag-ai{background:rgba(240,180,83,.12);color:var(--sf-amber);box-shadow:inset 0 0 0 1px rgba(240,180,83,.35)}
body.egm-storefront .gal-tag-port{background:rgba(47,198,184,.12);color:var(--sf-accent-hi);box-shadow:inset 0 0 0 1px rgba(47,198,184,.35)}
body.egm-storefront .gal-tag-kind{color:#c4b5fd;background:rgba(167,139,250,.12);box-shadow:inset 0 0 0 1px rgba(167,139,250,.3)}
body.egm-storefront .gal-st-live{color:var(--sf-live);background:rgba(74,222,128,.1);box-shadow:inset 0 0 0 1px rgba(74,222,128,.32)}
body.egm-storefront .gal-st-archived{color:var(--sf-archived);background:rgba(251,191,36,.1);box-shadow:inset 0 0 0 1px rgba(251,191,36,.32)}
body.egm-storefront .gal-st-taken_down{color:var(--sf-down);background:rgba(248,113,113,.12);box-shadow:inset 0 0 0 1px rgba(248,113,113,.4)}
body.egm-storefront .gal-st-unknown{color:var(--sf-unknown)}
body.egm-storefront .gal-title{margin:0;font-family:"Inter",system-ui,sans-serif;font-weight:700;font-size:.98rem;line-height:1.25;color:var(--sf-text)}
body.egm-storefront .gal-title a{color:inherit;text-decoration:none}
body.egm-storefront .gal-maker{margin:0;font-size:.84rem;color:var(--sf-muted)}
body.egm-storefront .gal-maker a{color:var(--sf-text);font-weight:600;text-decoration:underline;text-decoration-color:rgba(47,198,184,.55);text-underline-offset:2px}
body.egm-storefront .gal-maker a:hover{color:var(--sf-accent-hi)}
body.egm-storefront .gal-where,body.egm-storefront .gal-spec{margin:0;font-size:.8rem;color:var(--sf-muted)}
body.egm-storefront .gal-td{margin:0;font-size:.8rem;color:var(--sf-down)}
body.egm-storefront .gal-td a{color:var(--sf-down)}
body.egm-storefront .gal-acts{margin:.2rem 0 0;display:flex;flex-wrap:wrap;gap:.4rem}
body.egm-storefront .gal-play{display:inline-flex;align-items:center;padding:.4em .9em;border-radius:999px;background:var(--sf-accent);
  color:var(--sf-accent-ink);font-weight:700;font-size:.82rem;text-decoration:none}
body.egm-storefront .gal-play:hover{background:var(--sf-accent-hi);color:var(--sf-accent-ink)}
body.egm-storefront .gal-help{display:inline-flex;align-items:center;padding:.4em .9em;border-radius:999px;font-size:.82rem;
  color:var(--sf-text);text-decoration:none;box-shadow:inset 0 0 0 1px var(--sf-line2)}
body.egm-storefront .gal-help:hover{color:var(--sf-accent-hi);box-shadow:inset 0 0 0 1px var(--sf-accent)}

/* ---------- 15. responsive: desktop 1440 is the base; tablet 900; phone 620 / 390 ---------- */
@media (min-width:1280px){
  body.egm-storefront{--sf-card-w:212px}
}
@media (max-width:900px){
  body.egm-storefront{--sf-card-w:172px}
  body.egm-storefront .sf-slide{grid-template-columns:minmax(0,1fr)}
  body.egm-storefront .sf-slide-media{position:absolute;right:-6%;top:8%;width:58%;opacity:.35;transform:rotate(2deg);margin:0}
  body.egm-storefront .sf-arrows,body.egm-storefront .sf-hero-prev,body.egm-storefront .sf-hero-next{display:none}
  body.egm-storefront #ports-static{columns:2 240px}
}
@media (max-width:620px){
  body.egm-storefront{--sf-card-w:150px;font-size:16px}
  body.egm-storefront .sf-hero{padding:0 12px}
  body.egm-storefront .sf-hero-track{border-radius:16px}
  body.egm-storefront .sf-slide{min-height:430px;align-items:end}
  body.egm-storefront .sf-slide-media{display:none}
  body.egm-storefront .sf-slide::before{background:linear-gradient(0deg,rgba(7,13,14,.96) 0%,rgba(7,13,14,.8) 45%,rgba(7,13,14,.25) 80%,rgba(7,13,14,.1) 100%)}
  body.egm-storefront .sf-slide-body{padding:20px 18px 22px;gap:.55rem}
  body.egm-storefront .sf-slide-title{font-size:clamp(1.7rem,8.4vw,2.3rem)}
  body.egm-storefront .sf-slide-line{font-size:.95rem}
  body.egm-storefront .sf-shelf,body.egm-storefront .sf-consoles,body.egm-storefront .sf-catalog-sec{padding:0 12px}
  body.egm-storefront .sf-row{gap:12px;margin:0 -12px;padding:4px 12px 16px;scroll-padding-inline:12px}
  body.egm-storefront .sf-cover-title{font-size:1.02rem;margin:0 10px}
  body.egm-storefront .sf-cover-meta{padding:.45rem 10px 10px;font-size:.66rem}
  body.egm-storefront .sf-cover-kind{top:8px;left:8px;font-size:.56rem}
  body.egm-storefront .sf-console-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  body.egm-storefront .sf-console{min-height:88px;padding:12px 12px 10px}
  body.egm-storefront .sf-console-label{font-size:.95rem}
  body.egm-storefront .sf-catalog,body.egm-storefront #sf-catalog,body.egm-storefront .gal-grid{
    grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 12px}
  body.egm-storefront #ports-static{columns:1}
  body.egm-storefront .sf-searchbar{padding:.55rem 12px}
  body.egm-storefront .gal-bar{gap:.4rem}
  body.egm-storefront .gal-f{padding:.4em .75em;font-size:.82rem}
}
@media (max-width:390px){
  body.egm-storefront{--sf-card-w:140px}
  body.egm-storefront .sf-title,body.egm-storefront .gal-title{font-size:.92rem}
  body.egm-storefront .sf-status{font-size:.7rem}
}
@media (hover:none){
  body.egm-storefront .sf-arrows{display:none}
}

/* ---------- 16. reduced motion: no carousel motion, no lifts, no smooth scrolling ---------- */
@media (prefers-reduced-motion:reduce){
  body.egm-storefront .sf-hero-track,body.egm-storefront .sf-row{scroll-behavior:auto}
  body.egm-storefront *,body.egm-storefront *::before,body.egm-storefront *::after{
    transition-duration:0s!important;animation-duration:0s!important;animation-iteration-count:1!important}
  body.egm-storefront a.sf-cover:hover,body.egm-storefront .sf-card:hover .sf-cover,body.egm-storefront .gal-card:hover .sf-cover,
  body.egm-storefront .sf-console:hover,body.egm-storefront .sf-btn:hover{transform:none}
  body.egm-storefront .sf-slide-media{transform:none}
}

/* ---------- 17. print: keep it legible ---------- */
@media print{
  body.egm-storefront{background:#fff;color:#000}
  body.egm-storefront .sf-hero-ctrl,body.egm-storefront .sf-arrows,body.egm-storefront .sf-searchbar{display:none}
}
