/*
Theme Name: Goth Night
Theme URI: https://example.com/goth-night
Author: Goth Night
Description: Mroczny, monochromatyczny motyw WooCommerce dla sklepu z koszulkami gotyckimi. Estetyka wiktoriańskiej karty żałobnej: włoskowate linie, wysokokontrastowa antykwa i maszynopisowe etykiety. Bez kolorowych akcentów — wyłącznie czerń, popiół i kość.
Version: 1.0.0
Requires at least: 6.2
Tested up to: 6.6
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: goth-night
Tags: e-commerce, dark, monochrome, two-columns, custom-menu, custom-logo, featured-images, translation-ready
WC requires at least: 7.0
WC tested up to: 9.1
*/

/* =========================================================
   1. TOKENY
   ========================================================= */
:root{
  /* Skala czerni — od pustki do papieru */
  --gn-void:   #191919;   /* tło strony */
  --gn-crypt:  #7c7c7c;   /* karty, panele */
  --gn-slab:   #17171b;   /* pola formularzy, hover */
  --gn-ash:    #2b2b31;   /* włoskowate linie, obramowania */
  --gn-veil:   #8b8891;   /* tekst drugorzędny */
  --gn-bone:   #d9d5cd;   /* tekst główny */
  --gn-paper:  #f3f0ea;   /* odwrócona karta żałobna, CTA */

  /* Typografia */
  --gn-display: "Bodoni Moda", "Didot", "Times New Roman", serif;
  --gn-body:    "Spectral", Georgia, "Times New Roman", serif;
  --gn-util:    "Courier Prime", "Courier New", monospace;

  --gn-step--1: clamp(.78rem, .76rem + .1vw, .84rem);
  --gn-step-0:  clamp(1rem, .97rem + .16vw, 1.08rem);
  --gn-step-1:  clamp(1.3rem, 1.2rem + .5vw, 1.6rem);
  --gn-step-2:  clamp(1.7rem, 1.45rem + 1.2vw, 2.4rem);
  --gn-step-3:  clamp(2.3rem, 1.7rem + 2.8vw, 4rem);
  --gn-step-4:  clamp(3rem, 1.8rem + 5.6vw, 6.5rem);

  --gn-track:  .22em;     /* światło międzyliterowe etykiet */
  --gn-hair:   1px;
  --gn-gutter: clamp(1.25rem, 4vw, 3rem);
  --gn-max:    1280px;
  --gn-narrow: 720px;
  --gn-ease:   cubic-bezier(.2,.6,.2,1);
}

/* =========================================================
   2. RESET / BAZA
   ========================================================= */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{
  margin:0;
  background:var(--gn-void);
  color:var(--gn-bone);
  font-family:var(--gn-body);
  font-size:var(--gn-step-0);
  line-height:1.7;
  font-weight:300;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
img,svg,video{max-width:100%;height:auto;display:block}
a{color:inherit;text-decoration:none}
p{margin:0 0 1.2em}
ul,ol{padding-left:1.2em}

h1,h2,h3,h4,h5,h6{
  font-family:var(--gn-display);
  font-weight:400;
  line-height:1.08;
  letter-spacing:-.015em;
  margin:0 0 .5em;
}
h1{font-size:var(--gn-step-3)}
h2{font-size:var(--gn-step-2)}
h3{font-size:var(--gn-step-1)}
h4,h5,h6{font-size:var(--gn-step-0);font-family:var(--gn-util);text-transform:uppercase;letter-spacing:var(--gn-track)}

blockquote{
  margin:2rem 0;padding:0 0 0 1.5rem;
  border-left:var(--gn-hair) solid var(--gn-ash);
  font-family:var(--gn-display);font-style:italic;font-size:var(--gn-step-1);
  color:var(--gn-veil);
}
hr{border:0;border-top:var(--gn-hair) solid var(--gn-ash);margin:3rem 0}
code,pre,kbd{font-family:var(--gn-util);font-size:.9em;background:var(--gn-slab)}
pre{padding:1.25rem;overflow:auto;border:var(--gn-hair) solid var(--gn-ash)}

::selection{background:var(--gn-paper);color:var(--gn-void)}

:focus-visible{
  outline:2px solid var(--gn-paper);
  outline-offset:3px;
}

/* Pasek przewijania */
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-track{background:var(--gn-void)}
::-webkit-scrollbar-thumb{background:var(--gn-ash)}
::-webkit-scrollbar-thumb:hover{background:var(--gn-veil)}

/* =========================================================
   3. UKŁAD
   ========================================================= */
.gn-wrap{width:100%;max-width:var(--gn-max);margin-inline:auto;padding-inline:var(--gn-gutter)}
.gn-wrap--narrow{max-width:var(--gn-narrow)}
.gn-section{padding-block:clamp(3.5rem,8vw,7rem)}
.gn-main{min-height:50vh}
.screen-reader-text{
  position:absolute!important;width:1px;height:1px;overflow:hidden;
  clip:rect(1px,1px,1px,1px);white-space:nowrap;
}
.gn-skip-link{
  position:absolute;left:-9999px;top:0;z-index:999;
  background:var(--gn-paper);color:var(--gn-void);
  padding:.75rem 1.25rem;font-family:var(--gn-util);text-transform:uppercase;
  letter-spacing:var(--gn-track);font-size:var(--gn-step--1);
}
.gn-skip-link:focus{left:.5rem;top:.5rem}

/* Etykieta maszynopisowa — powtarzalny element interfejsu */
.gn-label{
  font-family:var(--gn-util);
  font-size:var(--gn-step--1);
  text-transform:uppercase;
  letter-spacing:var(--gn-track);
  color:var(--gn-veil);
  display:inline-block;
}

/* --- SYGNATURA: podwójna włoskowata linia z fleuronem --- */
.gn-rule{
  display:flex;align-items:center;gap:1.25rem;
  margin:0;border:0;
}
.gn-rule::before,.gn-rule::after{
  content:"";flex:1;height:3px;
  border-top:var(--gn-hair) solid var(--gn-ash);
  border-bottom:var(--gn-hair) solid var(--gn-ash);
}
.gn-rule__mark{
  width:7px;height:7px;flex:0 0 auto;
  border:var(--gn-hair) solid var(--gn-veil);
  transform:rotate(45deg);
}
.gn-rule__mark--text{
  width:auto;height:auto;border:0;transform:none;
  font-family:var(--gn-display);color:var(--gn-veil);
  font-size:1.05rem;line-height:1;
}
.gn-rule--tight::before,.gn-rule--tight::after{height:0;border-bottom:0}

/* Nagłówek sekcji */
.gn-section__head{margin-bottom:clamp(2rem,5vw,3.5rem)}
.gn-section__head .gn-rule{margin-top:1.25rem}
.gn-section__title{font-size:var(--gn-step-2);margin:.35em 0 0}

/* =========================================================
   4. NAGŁÓWEK STRONY
   ========================================================= */
.gn-topbar{
  border-bottom:var(--gn-hair) solid var(--gn-ash);
  background:var(--gn-void);
}
.gn-topbar__inner{
  display:flex;justify-content:center;align-items:center;gap:1rem;
  min-height:38px;
  font-family:var(--gn-util);font-size:.72rem;
  text-transform:uppercase;letter-spacing:var(--gn-track);
  color:var(--gn-veil);text-align:center;
}

.gn-header{
  position:sticky;top:0;z-index:80;
  background:rgba(8,8,10,.92);
  backdrop-filter:blur(10px);
  border-bottom:var(--gn-hair) solid var(--gn-ash);
}
.gn-header__inner{
  display:grid;grid-template-columns:1fr auto 1fr;align-items:center;
  gap:1.5rem;padding-block:1.15rem;
}
.gn-branding{grid-column:2;text-align:center}
.gn-branding__title{
  font-family:var(--gn-display);
  font-size:clamp(1.4rem,3.2vw,2rem);
  font-weight:400;letter-spacing:.16em;text-transform:uppercase;
  margin:0;line-height:1;
}
.gn-branding__title a:hover{color:var(--gn-paper)}
.gn-branding__tagline{
  display:block;margin-top:.5rem;
  font-family:var(--gn-util);font-size:.68rem;
  text-transform:uppercase;letter-spacing:.3em;color:var(--gn-veil);
}
.gn-branding img{margin-inline:auto;max-height:56px;width:auto}

.gn-nav{grid-column:1;justify-self:start}
.gn-nav__list{list-style:none;display:flex;gap:1.75rem;margin:0;padding:0}
.gn-nav a{
  font-family:var(--gn-util);font-size:var(--gn-step--1);
  text-transform:uppercase;letter-spacing:var(--gn-track);
  color:var(--gn-veil);padding-block:.35rem;
  border-bottom:var(--gn-hair) solid transparent;
  transition:color .25s var(--gn-ease),border-color .25s var(--gn-ease);
}
.gn-nav a:hover,.gn-nav .current-menu-item > a{color:var(--gn-bone);border-bottom-color:var(--gn-bone)}
.gn-nav .sub-menu{
  list-style:none;margin:0;padding:.75rem 0;
  position:absolute;min-width:200px;
  background:var(--gn-crypt);border:var(--gn-hair) solid var(--gn-ash);
  opacity:0;visibility:hidden;transform:translateY(6px);
  transition:opacity .2s var(--gn-ease),transform .2s var(--gn-ease),visibility .2s;
}
.gn-nav li{position:relative}
.gn-nav li:hover > .sub-menu,.gn-nav li:focus-within > .sub-menu{opacity:1;visibility:visible;transform:none}
.gn-nav .sub-menu a{display:block;padding:.5rem 1.25rem;border:0}

.gn-utils{grid-column:3;justify-self:end;display:flex;align-items:center;gap:1.25rem}
.gn-utils__link{
  font-family:var(--gn-util);font-size:var(--gn-step--1);
  text-transform:uppercase;letter-spacing:var(--gn-track);color:var(--gn-veil);
  transition:color .25s var(--gn-ease);
}
.gn-utils__link:hover{color:var(--gn-bone)}
.gn-cart-count{
  display:inline-block;min-width:1.6em;padding:0 .3em;margin-left:.4em;
  background:var(--gn-paper);color:var(--gn-void);
  text-align:center;font-size:.68rem;line-height:1.6em;
}
.gn-cart-count:empty,.gn-cart-count[data-count="0"]{display:none}

.gn-burger{
  display:none;background:none;border:0;padding:.4rem;cursor:pointer;
  color:var(--gn-bone);
}
.gn-burger span{display:block;width:24px;height:1px;background:currentColor;margin:6px 0;transition:transform .3s var(--gn-ease),opacity .2s}
.gn-burger[aria-expanded="true"] span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.gn-burger[aria-expanded="true"] span:nth-child(2){opacity:0}
.gn-burger[aria-expanded="true"] span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}

/* =========================================================
   5. HERO — odwrócona karta żałobna (sygnatura)
   ========================================================= */
.gn-hero{
  position:relative;
  padding-block:clamp(4rem,12vw,9rem);
  border-bottom:var(--gn-hair) solid var(--gn-ash);
  overflow:hidden;
}
.gn-hero__grid{
  display:grid;grid-template-columns:1.05fr .95fr;
  gap:clamp(2rem,6vw,5rem);align-items:center;
}
.gn-hero__eyebrow{margin-bottom:1.5rem}
.gn-hero__title{
  font-size:var(--gn-step-4);
  line-height:.88;letter-spacing:-.035em;margin:0 0 1.75rem;
  max-width:11ch;
}
.gn-hero__title em{font-style:italic;color:var(--gn-veil)}
.gn-hero__lead{
  max-width:42ch;color:var(--gn-veil);
  font-size:var(--gn-step-1);line-height:1.5;font-weight:200;
}
.gn-hero__actions{display:flex;flex-wrap:wrap;gap:1rem;margin-top:2.5rem}

/* Karta żałobna: biały papier w grubej czarnej ramie */
.gn-card-obit{
  background:var(--gn-paper);
  padding:16px;                       /* szerokość „żałobnej” bordiury */
  box-shadow:0 0 0 16px var(--gn-void);
  position:relative;
}
.gn-card-obit__inner{
  border:var(--gn-hair) solid rgba(8,8,10,.35);
  padding:clamp(1.5rem,4vw,2.5rem);
  text-align:center;color:var(--gn-void);
}
.gn-card-obit__inner .gn-label{color:rgba(8,8,10,.55)}
.gn-card-obit img{width:100%;object-fit:cover;aspect-ratio:4/5;filter:grayscale(1) contrast(1.06)}
.gn-card-obit__caption{
  margin-top:1rem;font-family:var(--gn-util);font-size:.72rem;
  text-transform:uppercase;letter-spacing:var(--gn-track);color:rgba(8,8,10,.6);
}

/* =========================================================
   6. PRZYCISKI I FORMULARZE
   ========================================================= */
.gn-btn,
button,input[type="submit"],input[type="button"],
.wp-block-button__link,
.woocommerce a.button,.woocommerce button.button,.woocommerce input.button,
.woocommerce a.button.alt,.woocommerce button.button.alt,.woocommerce input.button.alt,
.woocommerce #respond input#submit{
  display:inline-block;
  font-family:var(--gn-util);
  font-size:var(--gn-step--1);
  text-transform:uppercase;
  letter-spacing:var(--gn-track);
  font-weight:400;
  padding:.95rem 2rem;
  background:transparent;
  color:var(--gn-bone);
  border:var(--gn-hair) solid var(--gn-ash);
  border-radius:0;
  cursor:pointer;
  line-height:1.2;
  transition:background-color .3s var(--gn-ease),color .3s var(--gn-ease),border-color .3s var(--gn-ease);
}
.gn-btn:hover,
button:hover,input[type="submit"]:hover,
.wp-block-button__link:hover,
.woocommerce a.button:hover,.woocommerce button.button:hover,.woocommerce input.button:hover,
.woocommerce a.button.alt:hover,.woocommerce button.button.alt:hover,.woocommerce input.button.alt:hover,
.woocommerce #respond input#submit:hover{
  background:var(--gn-paper);color:var(--gn-void);border-color:var(--gn-paper);
}
/* Wariant główny — papier na czerni */
.gn-btn--solid,
.woocommerce a.button.alt,.woocommerce button.button.alt,.woocommerce input.button.alt,
.woocommerce .single_add_to_cart_button,
.woocommerce .checkout-button{
  background:var(--gn-paper);color:var(--gn-void);border-color:var(--gn-paper);
}
.gn-btn--solid:hover,
.woocommerce a.button.alt:hover,.woocommerce button.button.alt:hover,.woocommerce input.button.alt:hover,
.woocommerce .single_add_to_cart_button:hover,
.woocommerce .checkout-button:hover{
  background:transparent;color:var(--gn-bone);border-color:var(--gn-bone);
}
.gn-btn--ghost{border-color:var(--gn-ash)}
button[disabled],.woocommerce a.button.disabled,.woocommerce button.button:disabled{opacity:.4;cursor:not-allowed}

input[type="text"],input[type="email"],input[type="url"],input[type="password"],
input[type="search"],input[type="number"],input[type="tel"],input[type="date"],
select,textarea,.select2-container .select2-selection--single{
  width:100%;
  background:var(--gn-slab);
  border:var(--gn-hair) solid var(--gn-ash);
  border-radius:0;
  color:var(--gn-bone);
  font-family:var(--gn-body);
  font-size:var(--gn-step-0);
  padding:.85rem 1rem;
  transition:border-color .25s var(--gn-ease);
}
input:focus,select:focus,textarea:focus{border-color:var(--gn-veil);outline:none}
::placeholder{color:#5c5a61}
label{
  display:block;font-family:var(--gn-util);font-size:var(--gn-step--1);
  text-transform:uppercase;letter-spacing:var(--gn-track);color:var(--gn-veil);
  margin-bottom:.5rem;
}
.gn-searchform{display:flex;gap:.75rem}
.gn-searchform input[type="search"]{flex:1}

/* =========================================================
   7. WOOCOMMERCE — SIATKA PRODUKTÓW
   ========================================================= */
.woocommerce .gn-wrap{max-width:var(--gn-max)}
.woocommerce-products-header{padding-block:clamp(2.5rem,6vw,4.5rem) 1rem;text-align:center}
.woocommerce-products-header__title{font-size:var(--gn-step-3);margin:0}
.woocommerce-products-header .term-description{max-width:60ch;margin:1.25rem auto 0;color:var(--gn-veil)}

.woocommerce .woocommerce-result-count,
.woocommerce-page .woocommerce-result-count{
  font-family:var(--gn-util);font-size:var(--gn-step--1);
  text-transform:uppercase;letter-spacing:var(--gn-track);color:var(--gn-veil);
  margin:0;
}
.woocommerce .woocommerce-ordering{margin:0}
.gn-shop-bar{
  display:flex;justify-content:space-between;align-items:center;gap:1.5rem;
  flex-wrap:wrap;
  padding-block:1.25rem;
  border-top:var(--gn-hair) solid var(--gn-ash);
  border-bottom:var(--gn-hair) solid var(--gn-ash);
  margin-bottom:clamp(2rem,5vw,3.5rem);
}
.woocommerce .woocommerce-ordering select{width:auto;padding:.5rem 2rem .5rem .75rem;font-family:var(--gn-util);font-size:var(--gn-step--1);text-transform:uppercase;letter-spacing:.12em}

.woocommerce ul.products,
.woocommerce-page ul.products{
  display:grid;
  grid-template-columns:repeat(var(--gn-cols,3),minmax(0,1fr));
  gap:clamp(1.5rem,3.5vw,2.75rem);
  margin:0;padding:0;list-style:none;
}
.woocommerce ul.products::before,.woocommerce ul.products::after{content:none}
.woocommerce ul.products li.product,
.woocommerce-page ul.products li.product{
  width:auto!important;margin:0!important;float:none!important;
  text-align:left;position:relative;
}

.gn-product-card,
.woocommerce ul.products li.product a.woocommerce-loop-product__link{display:block}
.gn-product-card__media{
  position:relative;overflow:hidden;
  background:var(--gn-crypt);
  border:var(--gn-hair) solid var(--gn-ash);
  aspect-ratio:4/5;
  transition:border-color .35s var(--gn-ease);
}
.gn-product-card__media img{
  width:100%;height:100%;object-fit:cover;
  filter:grayscale(1) brightness(.92) contrast(1.08);
  transition:transform .7s var(--gn-ease),filter .5s var(--gn-ease);
}
li.product:hover .gn-product-card__media img{transform:scale(1.045);filter:grayscale(1) brightness(1.02) contrast(1.12)}
li.product:hover .gn-product-card__media{border-color:var(--gn-veil)}

/* Wewnętrzna włoskowata ramka — echo karty żałobnej */
.gn-product-card__media::after{
  content:"";position:absolute;inset:10px;
  border:var(--gn-hair) solid rgba(217,213,205,.14);
  pointer-events:none;
  transition:inset .45s var(--gn-ease),border-color .45s var(--gn-ease);
}
li.product:hover .gn-product-card__media::after{inset:6px;border-color:rgba(243,240,234,.4)}

.gn-product-card__body{padding-top:1.1rem}
.woocommerce ul.products li.product .woocommerce-loop-product__title,
.gn-product-card__title{
  font-family:var(--gn-display);
  font-size:var(--gn-step-1);
  font-weight:400;line-height:1.2;
  padding:0;margin:0 0 .35rem;
  color:var(--gn-bone);
}
.gn-product-card__meta{
  display:flex;justify-content:space-between;align-items:baseline;gap:1rem;
  font-family:var(--gn-util);font-size:var(--gn-step--1);
  letter-spacing:.1em;color:var(--gn-veil);
}
.woocommerce ul.products li.product .price{
  font-family:var(--gn-util);
  font-size:var(--gn-step--1);
  letter-spacing:.1em;
  color:var(--gn-bone);
  margin:0;
}
.woocommerce ul.products li.product .price del{color:var(--gn-veil);opacity:.7;margin-right:.5rem}
.woocommerce ul.products li.product .price ins{text-decoration:none;color:var(--gn-paper)}

/* Rozmiary widoczne na karcie */
.gn-product-card__sizes{
  display:flex;gap:.4rem;margin-top:.75rem;flex-wrap:wrap;
}
.gn-product-card__sizes span{
  font-family:var(--gn-util);font-size:.66rem;letter-spacing:.1em;
  color:var(--gn-veil);border:var(--gn-hair) solid var(--gn-ash);
  padding:.12rem .45rem;text-transform:uppercase;
}

/* Znacznik przeceny / nowości */
.woocommerce span.onsale,
.gn-flag{
  position:absolute;top:0;left:0;z-index:3;
  background:var(--gn-paper);color:var(--gn-void);
  font-family:var(--gn-util);font-size:.66rem;
  text-transform:uppercase;letter-spacing:var(--gn-track);
  padding:.35rem .7rem;
  border-radius:0;min-height:0;min-width:0;line-height:1.4;
  margin:0;
}
.gn-flag--out{background:var(--gn-void);color:var(--gn-veil);border:var(--gn-hair) solid var(--gn-ash)}

/* Przycisk „do koszyka” w siatce — pojawia się na spodzie karty */
.woocommerce ul.products li.product .button{
  display:block;width:100%;text-align:center;margin-top:1rem;padding:.7rem 1rem;
}
.woocommerce ul.products li.product .added_to_cart{
  display:block;margin-top:.5rem;font-family:var(--gn-util);
  font-size:var(--gn-step--1);letter-spacing:.1em;color:var(--gn-veil);text-align:center;
}

/* Gwiazdki — zamienione na monochromatyczne */
.woocommerce .star-rating{
  font-size:.8em;color:var(--gn-bone);letter-spacing:.1em;height:1.2em;
}
.woocommerce .star-rating::before{color:var(--gn-ash)}

/* =========================================================
   8. WOOCOMMERCE — KARTA PRODUKTU
   ========================================================= */
.woocommerce div.product{padding-block:clamp(2rem,5vw,3.5rem)}
.woocommerce div.product .product_title{
  font-size:var(--gn-step-3);line-height:1;margin:0 0 1rem;
}
.woocommerce div.product p.price,
.woocommerce div.product span.price{
  font-family:var(--gn-util);
  font-size:var(--gn-step-1);
  letter-spacing:.08em;
  color:var(--gn-bone);
  margin:0 0 1.5rem;
}
.woocommerce div.product p.price del{color:var(--gn-veil);opacity:.65}
.woocommerce div.product p.price ins{text-decoration:none;color:var(--gn-paper)}
.woocommerce div.product .woocommerce-product-details__short-description{
  color:var(--gn-veil);max-width:52ch;
}
.woocommerce div.product .woocommerce-product-rating{margin-bottom:1.25rem}

.woocommerce div.product div.images{margin-bottom:0}
.woocommerce div.product div.images img{
  filter:grayscale(1) contrast(1.06);
  border:var(--gn-hair) solid var(--gn-ash);
}
.woocommerce div.product div.images .flex-control-thumbs{margin-top:.9rem;display:grid;grid-template-columns:repeat(4,1fr);gap:.75rem}
.woocommerce div.product div.images .flex-control-thumbs li{width:auto;margin:0;float:none}
.woocommerce div.product div.images .flex-control-thumbs img{opacity:.45;transition:opacity .3s var(--gn-ease)}
.woocommerce div.product div.images .flex-control-thumbs img.flex-active,
.woocommerce div.product div.images .flex-control-thumbs img:hover{opacity:1}
.woocommerce div.product div.summary{margin-bottom:0}

/* Warianty (rozmiar / krój) jako kafle */
.woocommerce div.product form.cart .variations{
  border:0;margin-bottom:1.5rem;width:100%;
}
.woocommerce div.product form.cart .variations th,
.woocommerce div.product form.cart .variations td{
  display:block;padding:0;text-align:left;border:0;
}
.woocommerce div.product form.cart .variations label{
  font-family:var(--gn-util);font-size:var(--gn-step--1);
  text-transform:uppercase;letter-spacing:var(--gn-track);color:var(--gn-veil);
  margin-bottom:.6rem;font-weight:400;
}
.woocommerce div.product form.cart .reset_variations{
  font-family:var(--gn-util);font-size:.72rem;text-transform:uppercase;
  letter-spacing:.12em;color:var(--gn-veil);display:inline-block;margin-top:.6rem;
}
.woocommerce div.product form.cart .reset_variations:hover{color:var(--gn-bone)}

.woocommerce div.product form.cart{margin-bottom:2rem}
.woocommerce div.product form.cart div.quantity{
  float:none;display:inline-flex;margin:0 .75rem 0 0;
  border:var(--gn-hair) solid var(--gn-ash);
}
.woocommerce .quantity input.qty{
  width:78px;text-align:center;border:0;background:transparent;
  font-family:var(--gn-util);padding:.95rem .5rem;
}
.woocommerce div.product form.cart .button{padding-block:.95rem}
.woocommerce div.product .single_add_to_cart_button{min-width:220px}

.woocommerce div.product .product_meta{
  margin-top:2rem;padding-top:1.5rem;
  border-top:var(--gn-hair) solid var(--gn-ash);
  font-family:var(--gn-util);font-size:var(--gn-step--1);
  letter-spacing:.08em;color:var(--gn-veil);
}
.woocommerce div.product .product_meta > span{display:block;margin-bottom:.4rem}
.woocommerce div.product .product_meta a{color:var(--gn-bone);border-bottom:var(--gn-hair) solid var(--gn-ash)}
.woocommerce div.product .product_meta a:hover{border-bottom-color:var(--gn-bone)}

/* Zakładki */
.woocommerce div.product .woocommerce-tabs{margin-top:clamp(3rem,7vw,5rem)}
.woocommerce div.product .woocommerce-tabs ul.tabs{
  padding:0;margin:0 0 2rem;
  border-bottom:var(--gn-hair) solid var(--gn-ash);
  display:flex;gap:2.25rem;flex-wrap:wrap;
}
.woocommerce div.product .woocommerce-tabs ul.tabs::before{content:none;border:0}
.woocommerce div.product .woocommerce-tabs ul.tabs li{
  background:transparent;border:0;border-radius:0;margin:0;padding:0;
}
.woocommerce div.product .woocommerce-tabs ul.tabs li::before,
.woocommerce div.product .woocommerce-tabs ul.tabs li::after{content:none;border:0;box-shadow:none}
.woocommerce div.product .woocommerce-tabs ul.tabs li a{
  font-family:var(--gn-util);font-size:var(--gn-step--1);font-weight:400;
  text-transform:uppercase;letter-spacing:var(--gn-track);
  color:var(--gn-veil);padding:0 0 1rem;display:block;
  border-bottom:var(--gn-hair) solid transparent;margin-bottom:-1px;
}
.woocommerce div.product .woocommerce-tabs ul.tabs li.active a,
.woocommerce div.product .woocommerce-tabs ul.tabs li a:hover{color:var(--gn-bone);border-bottom-color:var(--gn-bone)}
.woocommerce div.product .woocommerce-tabs .panel{max-width:70ch}
.woocommerce div.product .woocommerce-tabs .panel h2{font-size:var(--gn-step-1);margin-bottom:1rem}

/* Tabela atrybutów */
.woocommerce table.shop_attributes{border:0;width:100%}
.woocommerce table.shop_attributes th,
.woocommerce table.shop_attributes td{
  border:0;border-bottom:var(--gn-hair) solid var(--gn-ash);
  padding:.9rem 0;font-style:normal;background:transparent;
}
.woocommerce table.shop_attributes th{
  font-family:var(--gn-util);font-weight:400;font-size:var(--gn-step--1);
  text-transform:uppercase;letter-spacing:var(--gn-track);color:var(--gn-veil);width:40%;
}
.woocommerce table.shop_attributes td p{margin:0}

/* Powiązane / upsell */
.woocommerce .related,.woocommerce .upsells,.woocommerce .cross-sells{
  margin-top:clamp(3.5rem,8vw,6rem);
  padding-top:clamp(2.5rem,6vw,4rem);
  border-top:var(--gn-hair) solid var(--gn-ash);
}
.woocommerce .related > h2,.woocommerce .upsells > h2,.woocommerce .cross-sells > h2{
  font-size:var(--gn-step-2);margin-bottom:2rem;
}

/* Opinie */
.woocommerce #reviews #comments ol.commentlist{padding:0;margin:0}
.woocommerce #reviews #comments ol.commentlist li{margin-bottom:2rem}
.woocommerce #reviews #comments ol.commentlist li img.avatar{
  width:44px;border:var(--gn-hair) solid var(--gn-ash);background:var(--gn-crypt);
  padding:0;border-radius:0;filter:grayscale(1);
}
.woocommerce #reviews #comments ol.commentlist li .comment-text{
  border:var(--gn-hair) solid var(--gn-ash);border-radius:0;
  padding:1.5rem;margin-left:64px;background:var(--gn-crypt);
}
.woocommerce #reviews .comment-reply-title{
  font-family:var(--gn-util);text-transform:uppercase;letter-spacing:var(--gn-track);
  font-size:var(--gn-step--1);color:var(--gn-veil);
}
.woocommerce p.stars a{color:var(--gn-bone)}

/* =========================================================
   9. KOSZYK / ZAMÓWIENIE / KONTO
   ========================================================= */
.woocommerce table.shop_table{
  border:0;border-radius:0;border-collapse:collapse;width:100%;
}
.woocommerce table.shop_table th{
  font-family:var(--gn-util);font-weight:400;font-size:var(--gn-step--1);
  text-transform:uppercase;letter-spacing:var(--gn-track);color:var(--gn-veil);
  padding:1rem 1rem 1rem 0;border-bottom:var(--gn-hair) solid var(--gn-ash);text-align:left;
}
.woocommerce table.shop_table td{
  padding:1.5rem 1rem 1.5rem 0;
  border-top:0;border-bottom:var(--gn-hair) solid var(--gn-ash);
  vertical-align:middle;
}
.woocommerce table.shop_table img{width:74px;border:var(--gn-hair) solid var(--gn-ash);filter:grayscale(1)}
.woocommerce table.shop_table .product-name a{font-family:var(--gn-display);font-size:var(--gn-step-1)}
.woocommerce table.shop_table td.product-remove a.remove{
  color:var(--gn-veil)!important;font-size:1.3rem;line-height:1;
  width:1.4em;height:1.4em;border-radius:0;
}
.woocommerce table.shop_table td.product-remove a.remove:hover{background:transparent;color:var(--gn-paper)!important}
.woocommerce table.shop_table tfoot td,.woocommerce table.shop_table tfoot th{font-weight:400}

.woocommerce .cart-collaterals .cart_totals > h2,
.woocommerce-checkout h3,
.woocommerce-account h2{
  font-family:var(--gn-util);font-size:var(--gn-step--1);font-weight:400;
  text-transform:uppercase;letter-spacing:var(--gn-track);color:var(--gn-veil);
  padding-bottom:1rem;border-bottom:var(--gn-hair) solid var(--gn-ash);margin-bottom:1.5rem;
}
.woocommerce .cart-collaterals .cart_totals{
  width:100%;float:none;
  background:var(--gn-crypt);border:var(--gn-hair) solid var(--gn-ash);padding:2rem;
}
.woocommerce-cart .cart-collaterals{display:grid;grid-template-columns:1fr;gap:2rem}
.woocommerce .cart .button,.woocommerce .cart input.button{width:auto}
.woocommerce .coupon{display:flex;gap:.75rem;align-items:stretch}
.woocommerce .coupon .input-text{width:auto;min-width:180px}

#order_review,.woocommerce-checkout-review-order{
  background:var(--gn-crypt);border:var(--gn-hair) solid var(--gn-ash);padding:2rem;
}
.woocommerce-checkout #payment{background:transparent;border-radius:0}
.woocommerce-checkout #payment ul.payment_methods{border-bottom:var(--gn-hair) solid var(--gn-ash);padding:0 0 1.25rem}
.woocommerce-checkout #payment ul.payment_methods li{list-style:none;margin-bottom:.75rem}
.woocommerce-checkout #payment div.payment_box{
  background:var(--gn-slab);color:var(--gn-veil);border-radius:0;font-size:var(--gn-step--1);
}
.woocommerce-checkout #payment div.payment_box::before{border-bottom-color:var(--gn-slab)}
.woocommerce form .form-row{padding:0;margin-bottom:1.25rem}
.woocommerce form .form-row label{line-height:1.4}
.woocommerce form.checkout_coupon,.woocommerce form.login,.woocommerce form.register{
  border:var(--gn-hair) solid var(--gn-ash);border-radius:0;padding:2rem;background:var(--gn-crypt);
}

/* Konto klienta */
.woocommerce-account .woocommerce-MyAccount-navigation ul{list-style:none;margin:0;padding:0}
.woocommerce-account .woocommerce-MyAccount-navigation li{border-bottom:var(--gn-hair) solid var(--gn-ash)}
.woocommerce-account .woocommerce-MyAccount-navigation li a{
  display:block;padding:.9rem 0;
  font-family:var(--gn-util);font-size:var(--gn-step--1);
  text-transform:uppercase;letter-spacing:var(--gn-track);color:var(--gn-veil);
}
.woocommerce-account .woocommerce-MyAccount-navigation li.is-active a,
.woocommerce-account .woocommerce-MyAccount-navigation li a:hover{color:var(--gn-bone)}

/* Komunikaty */
.woocommerce-message,.woocommerce-info,.woocommerce-error,.woocommerce-noreviews,
.woocommerce div.message-wrapper{
  background:var(--gn-crypt);
  border:var(--gn-hair) solid var(--gn-ash);
  border-top:2px solid var(--gn-paper);
  color:var(--gn-bone);
  font-family:var(--gn-util);font-size:var(--gn-step--1);
  letter-spacing:.06em;
  padding:1.25rem 1.5rem;margin-bottom:2rem;border-radius:0;
  list-style:none;
}
.woocommerce-message::before,.woocommerce-info::before,.woocommerce-error::before{content:none}
.woocommerce-error{border-top-color:var(--gn-veil)}
.woocommerce-message .button,.woocommerce-info .button{float:right;padding:.5rem 1.25rem;margin-left:1rem}

/* Paginacja */
.woocommerce nav.woocommerce-pagination ul,
.gn-pagination .nav-links{
  border:0;display:flex;gap:.5rem;justify-content:center;margin:3rem 0 0;padding:0;list-style:none;
}
.woocommerce nav.woocommerce-pagination ul li{border:0;margin:0;overflow:visible}
.woocommerce nav.woocommerce-pagination ul li a,
.woocommerce nav.woocommerce-pagination ul li span,
.gn-pagination .page-numbers{
  font-family:var(--gn-util);font-size:var(--gn-step--1);letter-spacing:.1em;
  min-width:44px;padding:.7rem .8rem;text-align:center;display:block;
  background:transparent;color:var(--gn-veil);
  border:var(--gn-hair) solid var(--gn-ash);
  transition:color .25s var(--gn-ease),border-color .25s var(--gn-ease);
}
.woocommerce nav.woocommerce-pagination ul li a:hover,
.woocommerce nav.woocommerce-pagination ul li span.current,
.gn-pagination .page-numbers:hover,
.gn-pagination .page-numbers.current{background:transparent;color:var(--gn-bone);border-color:var(--gn-bone)}

/* Okruszki */
.woocommerce .woocommerce-breadcrumb{
  font-family:var(--gn-util);font-size:var(--gn-step--1);
  text-transform:uppercase;letter-spacing:.12em;color:var(--gn-veil);
  padding-block:1.5rem 0;margin:0;
}
.woocommerce .woocommerce-breadcrumb a{color:var(--gn-veil)}
.woocommerce .woocommerce-breadcrumb a:hover{color:var(--gn-bone)}

/* Filtry / widżety sklepu */
.widget_price_filter .ui-slider{background:var(--gn-ash);height:2px;border-radius:0;margin:1.5rem 0}
.widget_price_filter .ui-slider .ui-slider-range{background:var(--gn-bone);border-radius:0}
.widget_price_filter .ui-slider .ui-slider-handle{
  background:var(--gn-paper);border-radius:0;width:10px;height:10px;top:-4px;
}
.widget_price_filter .price_slider_amount .price_label{font-family:var(--gn-util);font-size:var(--gn-step--1);color:var(--gn-veil)}
.widget_price_filter .price_slider_amount .button{float:left;padding:.5rem 1.25rem}

/* =========================================================
   10. WPISY, ARCHIWA, KOMENTARZE
   ========================================================= */
.gn-page-header{padding-block:clamp(3rem,7vw,5rem) 0;text-align:center}
.gn-page-header__title{font-size:var(--gn-step-3);margin:0}
.gn-page-header .gn-rule{margin-top:1.75rem}

.gn-posts{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:clamp(2rem,4vw,3rem)}
.gn-post-card__media{overflow:hidden;border:var(--gn-hair) solid var(--gn-ash);aspect-ratio:3/2}
.gn-post-card__media img{width:100%;height:100%;object-fit:cover;filter:grayscale(1) brightness(.9);transition:transform .7s var(--gn-ease)}
.gn-post-card:hover .gn-post-card__media img{transform:scale(1.04)}
.gn-post-card__title{font-size:var(--gn-step-1);margin:1rem 0 .5rem}
.gn-post-card__excerpt{color:var(--gn-veil);font-size:.95rem}
.gn-entry-meta{
  font-family:var(--gn-util);font-size:var(--gn-step--1);
  text-transform:uppercase;letter-spacing:var(--gn-track);color:var(--gn-veil);
}
.gn-entry__content{max-width:68ch;margin-inline:auto}
.gn-entry__content a{border-bottom:var(--gn-hair) solid var(--gn-ash)}
.gn-entry__content a:hover{border-bottom-color:var(--gn-bone)}
.gn-entry__thumb{margin-bottom:2.5rem}
.gn-entry__thumb img{width:100%;filter:grayscale(1) contrast(1.05);border:var(--gn-hair) solid var(--gn-ash)}

.comment-list{list-style:none;padding:0;margin:0}
.comment-list li{border-bottom:var(--gn-hair) solid var(--gn-ash);padding-block:1.5rem}
.comment-list .avatar{border-radius:0;filter:grayscale(1);border:var(--gn-hair) solid var(--gn-ash)}
.comment-form{max-width:var(--gn-narrow)}

/* =========================================================
   11. STOPKA
   ========================================================= */
.gn-footer{
  border-top:var(--gn-hair) solid var(--gn-ash);
  margin-top:clamp(4rem,9vw,7rem);
  background:var(--gn-void);
}
.gn-footer__cols{
  display:grid;grid-template-columns:1.4fr repeat(3,1fr);
  gap:clamp(2rem,5vw,4rem);
  padding-block:clamp(3rem,7vw,5rem);
}
.gn-footer__mark{
  font-family:var(--gn-display);font-size:var(--gn-step-1);
  letter-spacing:.16em;text-transform:uppercase;margin:0 0 1rem;
}
.gn-footer__note{color:var(--gn-veil);font-size:.92rem;max-width:34ch}
.gn-footer .widget-title,.gn-footer__heading{
  font-family:var(--gn-util);font-size:var(--gn-step--1);
  text-transform:uppercase;letter-spacing:var(--gn-track);
  color:var(--gn-veil);margin:0 0 1.25rem;
}
.gn-footer ul{list-style:none;padding:0;margin:0}
.gn-footer li{margin-bottom:.6rem}
.gn-footer a{color:var(--gn-bone);opacity:.75;transition:opacity .25s var(--gn-ease)}
.gn-footer a:hover{opacity:1}
.gn-footer__bottom{
  border-top:var(--gn-hair) solid var(--gn-ash);
  padding-block:1.5rem;
  display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;
  font-family:var(--gn-util);font-size:.72rem;
  text-transform:uppercase;letter-spacing:var(--gn-track);color:var(--gn-veil);
}

/* Zapis na powiadomienia — „klepsydry” */
.gn-obit-signup{
  border-top:var(--gn-hair) solid var(--gn-ash);
  border-bottom:var(--gn-hair) solid var(--gn-ash);
  text-align:center;
}
.gn-obit-signup__form{
  display:flex;gap:.75rem;max-width:440px;margin:2rem auto 0;
}
.gn-obit-signup__form input[type="email"]{flex:1}

/* =========================================================
   12. BLOKI EDYTORA
   ========================================================= */
.alignwide{max-width:1080px;margin-inline:auto}
.alignfull{max-width:none;width:100%}
.aligncenter{margin-inline:auto;display:block}
.alignleft{float:left;margin:0 1.5rem 1rem 0}
.alignright{float:right;margin:0 0 1rem 1.5rem}
.wp-caption-text,figcaption{
  font-family:var(--gn-util);font-size:.72rem;
  text-transform:uppercase;letter-spacing:.12em;color:var(--gn-veil);
  margin-top:.6rem;text-align:center;
}
.wp-block-quote{border-left:var(--gn-hair) solid var(--gn-ash)}
.wp-block-table td,.wp-block-table th{border-color:var(--gn-ash)}

/* =========================================================
   12b. UKŁAD SKLEPU I KARTY PRODUKTU
   ========================================================= */
.gn-shop-layout{display:grid;gap:clamp(2rem,5vw,4rem)}
.gn-shop-layout--sidebar{grid-template-columns:250px minmax(0,1fr)}
.gn-shop-layout--sidebar .gn-shop-layout__main{grid-column:2}
.gn-shop-layout--sidebar .gn-shop-sidebar{grid-column:1;grid-row:1}
.gn-shop-sidebar .widget{
  padding-bottom:1.75rem;margin-bottom:1.75rem;
  border-bottom:var(--gn-hair) solid var(--gn-ash);
}
.gn-shop-sidebar .widget:last-child{border-bottom:0}
.gn-shop-sidebar ul{list-style:none;padding:0;margin:0}
.gn-shop-sidebar li{margin-bottom:.55rem}
.gn-shop-sidebar a{color:var(--gn-veil);transition:color .25s var(--gn-ease)}
.gn-shop-sidebar a:hover,.gn-shop-sidebar .current-cat > a{color:var(--gn-bone)}

.gn-empty{max-width:var(--gn-narrow);margin-inline:auto;text-align:center}
.gn-empty h2{font-size:var(--gn-step-2);margin-block:.5rem 1rem}
.gn-empty p{color:var(--gn-veil)}
.gn-empty .gn-btn{margin-top:1rem}

/* Kategorie na stronie głównej wyglądają jak produkty, ale bez ceny */
.woocommerce ul.products li.product-category a{display:block}
.woocommerce ul.products li.product-category img{
  filter:grayscale(1) brightness(.85);
  border:var(--gn-hair) solid var(--gn-ash);
  aspect-ratio:1/1;object-fit:cover;width:100%;
  transition:filter .5s var(--gn-ease);
}
.woocommerce ul.products li.product-category:hover img{filter:grayscale(1) brightness(1.05)}
.woocommerce ul.products li.product-category h2.woocommerce-loop-category__title{
  font-family:var(--gn-display);font-size:var(--gn-step-1);font-weight:400;
  padding:1rem 0 0;margin:0;color:var(--gn-bone);
}
.woocommerce ul.products li.product-category mark{
  background:transparent;color:var(--gn-veil);
  font-family:var(--gn-util);font-size:var(--gn-step--1);
}

/* Karta produktu: dwie kolumny zamiast domyślnych floatów WooCommerce */
@media (min-width:861px){
  .woocommerce div.product{
    display:grid;
    grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);
    column-gap:clamp(2rem,5vw,4.5rem);
    align-items:start;
  }
  .woocommerce div.product > *{grid-column:1/-1}
  .woocommerce div.product div.images{grid-column:1;grid-row:1;width:auto;float:none;margin:0}
  .woocommerce div.product div.summary{grid-column:2;grid-row:1;width:auto;float:none;margin:0;position:sticky;top:110px}
  .woocommerce-cart .cart-collaterals{grid-template-columns:minmax(0,1fr) 380px;justify-content:end}
  .woocommerce-cart .cart-collaterals .cross-sells{grid-column:1}
  .woocommerce-cart .cart-collaterals .cart_totals{grid-column:2}
  .woocommerce .col2-set .col-1,.woocommerce .col2-set .col-2{width:100%;float:none}
  .woocommerce-checkout .col2-set{display:grid;grid-template-columns:1fr 1fr;gap:2rem}
  .woocommerce-account .woocommerce-MyAccount-navigation{width:240px;float:left}
  .woocommerce-account .woocommerce-MyAccount-content{width:calc(100% - 300px);float:right}
}
@media (max-width:860px){
  .gn-shop-layout--sidebar{grid-template-columns:1fr}
  .gn-shop-layout--sidebar .gn-shop-layout__main{grid-column:1;grid-row:1}
  .gn-shop-layout--sidebar .gn-shop-sidebar{grid-column:1;grid-row:2}
}

/* =========================================================
   13. RESPONSYWNOŚĆ
   ========================================================= */
@media (max-width:1024px){
  .woocommerce ul.products,.woocommerce-page ul.products{--gn-cols:2}
  .gn-footer__cols{grid-template-columns:1fr 1fr}
  .gn-hero__grid{grid-template-columns:1fr;gap:3rem}
  .gn-hero__lead{max-width:none}
}
@media (max-width:860px){
  .gn-burger{display:block;grid-column:1;justify-self:start}
  .gn-header__inner{grid-template-columns:auto 1fr auto;gap:1rem}
  .gn-branding{grid-column:2;text-align:center}
  .gn-nav{
    grid-column:1/-1;grid-row:2;
    display:none;padding-top:1.25rem;margin-top:1.25rem;
    border-top:var(--gn-hair) solid var(--gn-ash);
  }
  .gn-nav.is-open{display:block}
  .gn-nav__list{flex-direction:column;gap:0}
  .gn-nav__list > li > a{display:block;padding:.85rem 0;border-bottom:var(--gn-hair) solid var(--gn-ash)}
  .gn-nav .sub-menu{position:static;opacity:1;visibility:visible;transform:none;border:0;background:transparent;padding:0 0 .5rem 1rem}
  .woocommerce div.product div.images,.woocommerce div.product div.summary{width:100%;float:none}
  .gn-shop-bar{flex-direction:column;align-items:flex-start;gap:1rem}
}
@media (max-width:560px){
  .woocommerce ul.products,.woocommerce-page ul.products{--gn-cols:2;gap:1.25rem}
  .gn-footer__cols{grid-template-columns:1fr}
  .gn-branding__tagline{display:none}
  .gn-branding__title{letter-spacing:.08em;white-space:nowrap}
  .gn-card-obit{padding:10px;box-shadow:0 0 0 10px var(--gn-void)}
  .woocommerce div.product form.cart div.quantity{margin-bottom:.75rem}
  .woocommerce div.product .single_add_to_cart_button{width:100%}
  .gn-obit-signup__form{flex-direction:column}

  .gn-utils__link:first-child{display:none}
  .gn-product-card__meta > span:last-child:not(.price){display:none}
  .woocommerce ul.products li.product .button{
    padding:.7rem .5rem;letter-spacing:.1em;font-size:.72rem;
  }
  .gn-product-card__sizes span{padding:.1rem .35rem;font-size:.62rem}
}

/* =========================================================
   14. RUCH I DOSTĘPNOŚĆ
   ========================================================= */
.gn-reveal{opacity:0;transform:translateY(18px)}
.gn-reveal.is-visible{opacity:1;transform:none;transition:opacity .8s var(--gn-ease),transform .8s var(--gn-ease)}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.01ms!important;animation-iteration-count:1!important;
    transition-duration:.01ms!important;scroll-behavior:auto!important;
  }
  .gn-reveal{opacity:1;transform:none}
}

/* =========================================================
   15. WARSTWA DRUKARSKA
   Sklep jest drukarnią, więc strona zachowuje się jak druk:
   raster, pasery, pasowanie kolorów i ziarno papieru.
   ========================================================= */

/* --- Ziarno papieru: jedna warstwa na całą stronę --- */
body::after{
  content:"";position:fixed;inset:0;z-index:999;pointer-events:none;
  opacity:.05;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E");
}

/* --- Raster: zdjęcia są wydrukowane, nie wyświetlone --- */
.gn-raster{position:relative;overflow:hidden}
.gn-raster::before{
  content:"";position:absolute;inset:0;z-index:2;pointer-events:none;
  background-image:radial-gradient(circle at center, var(--gn-void) 1.15px, transparent 1.25px);
  background-size:4px 4px;
  opacity:.48;
  transition:opacity .55s var(--gn-ease), background-size .55s var(--gn-ease);
}
/* Najechanie = dobre pasowanie: siatka punktów gęstnieje i znika */
.gn-product-card:hover .gn-raster::before,
li.product:hover .gn-raster::before,
.gn-raster:hover::before{opacity:0;background-size:2px 2px}

/* --- Pasery: znaki cięcia w narożnikach --- */
.gn-marks{position:relative}
.gn-marks::before,.gn-marks::after{
  content:"";position:absolute;width:20px;height:20px;
  border:var(--gn-hair) solid var(--gn-ash);pointer-events:none;
}
.gn-marks::before{top:-32px;left:-32px;border-right:0;border-bottom:0}
.gn-marks::after{bottom:-32px;right:-32px;border-left:0;border-top:0}

/* Krzyż pasowniczy — używany pojedynczo, tam gdzie coś się „zgrywa” */
.gn-reg{
  width:22px;height:22px;position:relative;flex:0 0 auto;
  border:var(--gn-hair) solid var(--gn-veil);border-radius:50%;
}
.gn-reg::before,.gn-reg::after{
  content:"";position:absolute;background:var(--gn-veil);
}
.gn-reg::before{left:50%;top:-7px;bottom:-7px;width:1px;margin-left:-.5px}
.gn-reg::after{top:50%;left:-7px;right:-7px;height:1px;margin-top:-.5px}

/* --- Niepasowanie: druga odbitka przesunięta o dwa piksele --- */
.gn-mis{position:relative;display:inline-block}
.gn-mis::after{
  content:attr(data-text);
  position:absolute;left:0;top:0;width:100%;
  color:var(--gn-veil);opacity:0;
  transform:translate(0,0);
  transition:opacity .3s var(--gn-ease),transform .3s var(--gn-ease);
  pointer-events:none;
}
a:hover .gn-mis::after,
.gn-mis:hover::after,
li.product:hover .gn-mis::after,
.product_title:hover .gn-mis::after{opacity:.5;transform:translate(3px,-3px)}

/* --- Stempel: nakład wyczerpany --- */
.gn-stamp{
  position:absolute;inset:0;z-index:4;
  display:grid;place-items:center;pointer-events:none;
  background:rgba(8,8,10,.55);
}
.gn-stamp span{
  transform:rotate(-8deg);
  border:2px solid var(--gn-bone);
  color:var(--gn-bone);
  padding:.55rem 1.4rem;
  font-family:var(--gn-util);font-size:.78rem;
  text-transform:uppercase;letter-spacing:.22em;
  opacity:.9;
}

/* --- Metryczka nakładu: numer wzoru i wielkość serii --- */
.gn-edition{
  display:flex;align-items:center;gap:.6rem;
  font-family:var(--gn-util);font-size:.7rem;
  text-transform:uppercase;letter-spacing:.16em;color:var(--gn-veil);
  margin-top:.6rem;
}
.gn-edition__bar{
  flex:1;height:1px;background:var(--gn-ash);position:relative;overflow:hidden;
}
.gn-edition__bar i{
  position:absolute;left:0;top:0;bottom:0;background:var(--gn-bone);
}
.gn-edition--single{
  margin:1.5rem 0;padding:1rem 0;
  border-top:var(--gn-hair) solid var(--gn-ash);
  border-bottom:var(--gn-hair) solid var(--gn-ash);
  font-size:var(--gn-step--1);letter-spacing:var(--gn-track);
}

/* --- Notka na marginesie: pionowy opis jak na arkuszu drukarskim --- */
.gn-margin-note{
  position:absolute;left:calc(var(--gn-gutter) * -1 + .5rem);top:0;
  writing-mode:vertical-rl;
  font-family:var(--gn-util);font-size:.66rem;
  text-transform:uppercase;letter-spacing:.3em;color:#3d3d45;
  white-space:nowrap;
}

/* --- Pasek przelotowy: informacje o nakładzie w ruchu --- */
.gn-ticker{
  overflow:hidden;
  border-top:var(--gn-hair) solid var(--gn-ash);
  border-bottom:var(--gn-hair) solid var(--gn-ash);
  padding-block:.85rem;
}
.gn-ticker__track{
  display:flex;width:max-content;
  animation:gn-slide 48s linear infinite;
}
.gn-ticker__track > span{
  font-family:var(--gn-util);font-size:.72rem;
  text-transform:uppercase;letter-spacing:var(--gn-track);
  color:var(--gn-veil);padding-right:2.5rem;white-space:nowrap;
}
.gn-ticker:hover .gn-ticker__track{animation-play-state:paused}
@keyframes gn-slide{from{transform:translateX(0)}to{transform:translateX(-50%)}}

/* --- Karta żałobna: odbija się jak arkusz zdjęty z prasy --- */
.gn-card-obit{transition:transform .6s var(--gn-ease),box-shadow .6s var(--gn-ease)}
.gn-card-obit:hover{transform:translate(-3px,-3px)}
.gn-card-obit:hover{box-shadow:0 0 0 16px var(--gn-void),20px 20px 0 -4px rgba(139,136,145,.16)}

/* --- Numeracja sekcji jako sygnatury arkuszy --- */
.gn-signature{
  font-family:var(--gn-util);font-size:.68rem;letter-spacing:.24em;
  color:var(--gn-veil);text-transform:uppercase;
}

@media (max-width:1100px){
  .gn-margin-note{display:none}
}
@media (prefers-reduced-motion:reduce){
  .gn-ticker__track{animation:none}
  .gn-raster::before{opacity:.5}
  .gn-mis::after{display:none}
}

/* =========================================================
   16. NADPISANIA MOBILNE WARSTWY DRUKARSKIEJ
   Muszą stać po sekcji 15 — inaczej przegrywają kolejnością.
   ========================================================= */
@media (max-width:560px){
  /* Pasery bliżej krawędzi, żeby mieściły się w kadrze telefonu */
  .gn-marks::before{top:-16px;left:-16px}
  .gn-marks::after{bottom:-16px;right:-16px}

  /* Metryka nakładu wraca na karcie produktu — w siatce nie ma na nią miejsca */
  .gn-edition{display:none}
  .gn-edition--single{display:flex}

  .gn-ticker__track > span{padding-right:1.5rem}
}
