/* ============================================================================
   Zamn Studios — visual override sheet.

   CSS is the other half of the content layer (see zamn-content.js). It survives
   Framer's hydration untouched, which is why anything visual lives here rather
   than in JS: hiding third-party artefacts, and swapping images.

   Loaded last on every page so these rules win on equal specificity.
   ==========================================================================*/


/* ----------------------------------------------------------------------------
   1. Template-author attribution and Framer badges.

   The footer credited the original template designer by name and linked to her
   Dribbble / Behance / LinkedIn / X / Framer profiles. Two of those were fully
   visible and clickable (431x24 and 121x19); the rest measured 0x0 but were
   still in the DOM and crawlable. Hidden by href so this keeps working even if
   Framer's generated class names change on a re-scrape.
   -------------------------------------------------------------------------- */
a[href*="framer.com/@yulia-design"],
a[href*="framer.link/yulia95"],
a[href*="framer.link/oSDAIqC"],
a[href*="dribbble.com/JuliaUi"],
a[href*="behance.net/tvorba"],
a[href*="yuliia-tsyhanenko"],
a[aria-label="Link to social network"],
.framer-c7dy4x,          /* "Created by Tvorba" wrapper */
.framer-drkbac,          /* "Built in Framer" wrapper   */
.framer-wbze5i-container, /* "Get Template for Free"    */
.framer-1bns4u9-container,
.__framer-badge,
[class*="__framer-badge"] {
  display: none !important;
}


/* ----------------------------------------------------------------------------
   2. Client logos on the case-study pages.

   Each project's logo is one image hash, reused wherever that project appears
   (its own hero and the "other projects" cards on sibling pages), so a single
   global rule per hash covers every occurrence. Sources are the clients' own
   live sites; NPC's was an inline SVG on npcgroup.xyz and is rebuilt locally.

   object-fit keeps the replacement inside the original box regardless of its
   aspect ratio — the slots are fixed-size and the real logos are not all the
   same proportions as the placeholders they replace.
   -------------------------------------------------------------------------- */
img[src*="KkWkr3RKNgn6lh2DNmgXfnl0aM"] { content: url("/images/zamn/logo-olympian.svg"); }
img[src*="DcyjKN2M049L48Uer8gegvN3TM"] { content: url("/images/zamn/logo-scheerheart.png"); }
img[src*="o79azPQf14jyjMR3U8feqLgXO8"] { content: url("/images/zamn/logo-playheadshot.png"); }
img[src*="35aMUmf8cScxAjoEmMG8goNzOE"] { content: url("/images/zamn/logo-helogen.png"); }
img[src*="4j6RppykZH8p8VecD6Nb7IRJE"]  { content: url("/images/zamn/logo-aeos.png"); }
img[src*="8oy8lKEr1IItgZeA9GlzobqXq1g"] { content: url("/images/zamn/logo-npc.svg"); }

img[src*="KkWkr3RKNgn6lh2DNmgXfnl0aM"],
img[src*="DcyjKN2M049L48Uer8gegvN3TM"],
img[src*="o79azPQf14jyjMR3U8feqLgXO8"],
img[src*="35aMUmf8cScxAjoEmMG8goNzOE"],
img[src*="4j6RppykZH8p8VecD6Nb7IRJE"],
img[src*="8oy8lKEr1IItgZeA9GlzobqXq1g"] {
  object-fit: contain !important;
  object-position: center center !important;
}


/* ----------------------------------------------------------------------------
   3. The largest asset on the site.

   The homepage gradient blob shipped as a 681 KB PNG painted at ~1360px. It is
   a soft gradient with an alpha channel, which is the worst case for PNG and
   the best case for AVIF: 681 KB -> 195 KB with the transparency intact.

   Only this one is swapped. The other three BG blobs were measured too and
   came out LARGER as AVIF (35 KB -> 61 KB, 115 KB -> 133 KB) once alpha was
   preserved, so converting them would have made the page heavier. Left alone.
   -------------------------------------------------------------------------- */
img[src*="M8wzz19GZtHvkDOYvpNmIavSQw8"] {
  content: url("/images/zamn/gradient-hero.avif");
}


/* ----------------------------------------------------------------------------
   4. The "visit website" buttons on case-study pages shipped pointing at the
   template author's personal X account. They are NOT hidden above on purpose —
   zamn-content.js repoints each one at the real client site, so the button stays
   as designed and just goes somewhere true. Until that runs (a few hundred ms),
   suppress the click so nobody can land on the wrong destination.
   -------------------------------------------------------------------------- */
a[href*="x.com/YTsyhanenko"] { pointer-events: none; }


/* ----------------------------------------------------------------------------
   5. Dead nav item.

   The full-screen menu lists "blog", but there is no /blog in the mirror - it
   404s. Hidden until there is something to link to. Hiding the <a> keeps the
   menu's numbering rows intact; removing it would reflow the list.
   -------------------------------------------------------------------------- */
a[href="./blog"],
a[href="/blog"],
a[href$="/blog"] {
  display: none !important;
}
