/*
Theme Name: Colourful Smells
Theme URI: https://colourfulsmells.com
Author: Colourful Smells
Description: Ročno vlito. Flat colour, hard borders, no gradients. WooCommerce ready.
Version: 2.30.0
Requires at least: 6.4
Tested up to: 6.8
Requires PHP: 7.4
License: GNU General Public License v2 or later
Text Domain: cs
*/

/* ============================================================================

   CONTENTS
   01  Tokens
   02  Reset & base
   03  Typography
   04  Layout primitives
   05  Buttons
   06  Header
   07  Marquee
   08  Hero
   09  Collections
   10  Bands (formats / steps)
   11  Product cards
   12  Roulette
   13  Accordions
   14  Newsletter
   15  Footer
   16  WooCommerce — shop archive
   17  WooCommerce — single product
   18  WooCommerce — variation picker
   19  WooCommerce — blocks (cart, checkout, my account)
   20  Responsive
   21  Motion & print

   HOUSE RULES
   - No gradients. Flat fills only.
   - Border radius never above 2px.
   - Shadows are hard offsets, never blurred.
   - Borders are 3px solid black.
   - Lime is a background for black text, never lime text on white.

   ABOUT !important
   Used only against CSS that WordPress or WooCommerce generates at runtime
   and prints after this file — block layout rules, woocommerce-layout.css,
   and Woo Blocks. Every instance is commented with what it overrides.
   Nowhere else.

   GRID SIZING
   Tracks are minmax(min(100%, Npx), 1fr) with auto-FILL.
   - min(100%, Npx): a track can never demand more width than its container,
     so a grid cannot cause horizontal overflow at any screen size.
   - auto-fill keeps empty tracks. auto-fit collapses them and lets leftover
     items expand — which is how two products on a last row ended up half a
     page wide each.

   ========================================================================= */


/* ============================================================================
   01  TOKENS
   ========================================================================= */
:root{
  /* Palette */
  --cs-black:#0E0E10;
  --cs-pink:#FF2E88;
  --cs-lime:#D4FF3F;
  --cs-blue:#2B4CFF;
  --cs-violet:#9B4DFF;
  --cs-orange:#FF6B1A;
  --cs-paper:#FFF0F6;
  --cs-white:#FFFFFF;
  --cs-ink-soft:#45454E;

  /* Type. Archivo is variable: wdth 62–125, wght 100–900.
     Three settings cover the whole site — don't invent more. */
  --cs-font:'Archivo',system-ui,-apple-system,sans-serif;
  --cs-mono:'Roboto Mono',ui-monospace,monospace;
  --cs-vf-hero:'wdth' 72,'wght' 900;
  --cs-vf-head:'wdth' 84,'wght' 800;
  --cs-vf-ui:'wdth' 82,'wght' 900;

  /* Shape */
  --cs-border:3px solid var(--cs-black);
  --cs-radius:2px;
  --cs-shadow:5px 5px 0 var(--cs-black);
  --cs-shadow-light:5px 5px 0 var(--cs-white);
  --cs-shadow-lg:7px 7px 0 var(--cs-black);

  /* Rhythm */
  --cs-max:1240px;
  --cs-pad:20px;
  --cs-gap:18px;
  --cs-ease:.15s ease;
}

/* Collection colours, keyed to category slug.
   New collection = one line here + one in cs_collection_slugs(). */
.cs-col--mir   {background:var(--cs-violet);color:var(--cs-white)}
.cs-col--fokus {background:var(--cs-lime);color:var(--cs-black)}
.cs-col--zate  {background:var(--cs-orange);color:var(--cs-black)}


/* ============================================================================
   02  RESET & BASE
   ========================================================================= */
*,*::before,*::after{box-sizing:border-box}

/* overflow-x on both elements. Without it, one oversized or rotated child
   makes the document wider than the window — and then every full-width
   section stretches to the document width, which is what made card grids
   compute four columns inside a 320px screen. */
html{overflow-x:hidden;max-width:100%}

body{
  margin:0;
  max-width:100%;
  overflow-x:hidden;
  background:var(--cs-pink);
  color:var(--cs-black);
  font-family:var(--cs-font);
  font-size:16px;
  line-height:1.45;
  -webkit-font-smoothing:antialiased;
}

img,svg,video,iframe{max-width:100%;height:auto;display:block}
a{color:inherit}
button{font-family:inherit}

.screen-reader-text{
  position:absolute;width:1px;height:1px;
  overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;
}
.cs-skip:focus{
  position:fixed;top:8px;left:8px;z-index:999;
  width:auto;height:auto;clip:auto;
  background:var(--cs-black);color:var(--cs-lime);padding:10px 14px;
}



/* Anchor targets sit under the sticky header without this. The offset is the
   header height plus a little breathing room, so #priljubljeni and friends
   land with the section heading visible.
   Available anchors: #kolekcije #priljubljeni #rulet #oblike #kako #faq */
html{scroll-behavior:smooth}
[id]{scroll-margin-top:110px}

@media (max-width:700px){
  [id]{scroll-margin-top:96px}
}

/* ============================================================================
   03  TYPOGRAPHY
   ========================================================================= */
h1,h2,h3,h4{margin:0;text-transform:uppercase;letter-spacing:-.03em}

h1{font-variation-settings:var(--cs-vf-hero);font-size:clamp(38px,7.2vw,94px);line-height:.92}
h2{font-variation-settings:'wdth' 74,'wght' 900;font-size:clamp(28px,5vw,56px);line-height:.94}
h3{font-variation-settings:var(--cs-vf-head);font-size:20px;line-height:1.05;letter-spacing:-.015em}

p{margin:0 0 1em}
p:last-child{margin-bottom:0}

.cs-mono{
  font-family:var(--cs-mono);font-size:11px;font-weight:500;
  letter-spacing:.1em;text-transform:uppercase;
}


/* ============================================================================
   04  LAYOUT PRIMITIVES

   Sections are full-bleed colour bands with a centred content column.
   The column is centred on the SECTION — not by giving children auto
   margins, because any child with its own narrower max-width (the hero
   headline at 17ch, the sub-card at 46ch) would then be centred instead of
   sitting at the column's left edge.
   ========================================================================= */
.cs-wrap{
  width:100%;max-width:var(--cs-max);
  margin:0 auto;padding:0 var(--cs-pad);
}

.cs-hero,
.cs-section,
.cs-news{
  display:grid;
  grid-template-columns:minmax(0,min(var(--cs-max),100%));
  justify-content:center;
  padding-left:var(--cs-pad);
  padding-right:var(--cs-pad);
  max-width:100vw;
  overflow-x:clip;      /* contains tilted children without a scroll container */
}

.cs-section{padding-top:56px;padding-bottom:64px;border-bottom:var(--cs-border)}
.cs-section--paper{background:var(--cs-paper)}
.cs-section--white{background:var(--cs-white)}
.cs-section--lime {background:var(--cs-lime)}

/* WordPress prints `.wp-container-xxxx > * { margin-inline: auto }` for any
   group using constrained layout. That selector carries a per-block hash, so
   it can't be targeted directly — this is the override. */
.cs-hero > *,
.cs-section > *,
.cs-news > *{
  margin-left:0 !important;
  margin-right:0 !important;
  max-width:none !important;
}

.cs-section > h2{max-width:20ch;margin-bottom:30px !important}

.cs-sechead{
  display:flex;flex-wrap:wrap;gap:16px;
  align-items:flex-end;justify-content:space-between;
  margin-bottom:30px;
}


/* ============================================================================
   05  BUTTONS

   core/button puts custom classes on the wrapper <div>, not on the <a>. The
   theme moves them onto the link at render time (inc/blocks.php), so here the
   wrapper only needs neutralising — otherwise you get a button drawn inside
   a button.
   ========================================================================= */
.cs-btn,
a.cs-btn,
.wp-block-button__link{
  display:inline-block;
  font-family:var(--cs-font);
  font-variation-settings:var(--cs-vf-ui);
  font-size:17px;line-height:1.2;
  text-transform:uppercase;text-decoration:none;
  background:var(--cs-black);color:var(--cs-lime);
  border:var(--cs-border);border-radius:var(--cs-radius);
  padding:11px 16px;cursor:pointer;
  box-shadow:var(--cs-shadow-light);
  transition:transform var(--cs-ease),box-shadow var(--cs-ease);
}
.cs-btn:hover,
.wp-block-button__link:hover{
  background:var(--cs-black);color:var(--cs-lime);
  transform:translate(3px,3px);box-shadow:2px 2px 0 var(--cs-white);
}
.cs-btn:focus-visible,
.wp-block-button__link:focus-visible{outline:3px solid var(--cs-blue);outline-offset:3px}

.cs-btn--alt,
a.cs-btn--alt,
.wp-block-button__link.cs-btn--alt{
  background:var(--cs-white);color:var(--cs-black);
  box-shadow:var(--cs-shadow);
}
.cs-btn--alt:hover,
.wp-block-button__link.cs-btn--alt:hover{
  background:var(--cs-white);color:var(--cs-black);
  box-shadow:2px 2px 0 var(--cs-black);
}

/* On white or paper the white offset shadow would be invisible. */
.cs-section--white .cs-btn,
.cs-section--paper .cs-btn,
.cs-section--white .wp-block-button__link,
.cs-section--paper .wp-block-button__link{box-shadow:var(--cs-shadow)}
.cs-section--white .cs-btn:hover,
.cs-section--paper .cs-btn:hover,
.cs-section--white .wp-block-button__link:hover,
.cs-section--paper .wp-block-button__link:hover{box-shadow:2px 2px 0 var(--cs-black)}

.wp-block-button{
  background:none;border:0;box-shadow:none;
  padding:0;border-radius:0;font-size:inherit;
}
.wp-block-buttons{display:flex;flex-wrap:wrap;gap:14px;margin-top:26px}
.wp-block-buttons > .wp-block-button{margin:0}


/* ============================================================================
   06  HEADER
   ========================================================================= */
.cs-ship{
  background:var(--cs-black);color:var(--cs-lime);
  text-align:center;padding:8px var(--cs-pad);
}
.cs-ship span{
  display:block;
  font-family:var(--cs-mono);font-size:11px;font-weight:700;
  letter-spacing:.1em;text-transform:uppercase;
  /* One line at any width. The mono face plus wide tracking is what pushed
     this to two rows on narrow screens; the size and tracking come down
     rather than the text wrapping. */
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}

.cs-header{
  position:sticky;top:0;z-index:80;
  background:var(--cs-lime);border-bottom:var(--cs-border);
}
.cs-bar{
  display:flex;align-items:stretch;justify-content:space-between;
  max-width:var(--cs-max);margin:0 auto;
  min-width:0;
}
/* The wordmark may shrink; the nav, burger and cart may not. */
.cs-bar > .cs-mark{flex:0 1 auto;min-width:0}
.cs-bar > .cs-nav,
.cs-bar > .cs-cart,
.cs-bar > .cs-burger,
.cs-bar > .cs-nav-setup{flex:0 0 auto}

.cs-mark{
  display:flex;align-items:center;gap:8px;
  padding:12px var(--cs-pad);
  font-variation-settings:'wdth' 78,'wght' 900;
  font-size:19px;text-transform:uppercase;letter-spacing:-.01em;
  text-decoration:none;white-space:nowrap;
}
.cs-mark b{
  display:inline-block;padding:1px 6px;
  background:var(--cs-black);color:var(--cs-lime);transform:rotate(-2deg);
}
/* Desktop: height drives the size, width follows. A max-width here becomes
   the binding constraint on a wide horizontal lockup (aspect ~12:1) and
   shrinks it to ~20px tall, which is what made the wordmark look tiny.
   The width cap is only needed on phones, where the burger and cart need
   room. */
.cs-mark{min-width:0}
.cs-mark img,
.cs-mark__img{
  height:34px !important;
  width:auto !important;
  max-width:none;
  display:block;
}

@media (max-width:820px){
  .cs-mark img,
  .cs-mark__img{
    height:auto !important;
    max-height:30px;
    max-width:min(300px,46vw);
    object-fit:contain;
  }
}
@media (max-width:700px){
  .cs-mark{padding:8px 10px}
  .cs-mark img,
  .cs-mark__img{max-height:24px;max-width:42vw}
}
@media (max-width:400px){
  .cs-mark{padding:8px}
  .cs-mark img,
  .cs-mark__img{max-height:20px;max-width:38vw}
}

@media (max-width:430px){
  .cs-ship span{font-size:8.5px;letter-spacing:.02em}
}
@media (max-width:400px){
  .cs-mark{padding:8px}
  .cs-mark img,
  .cs-mark__img{max-height:18px;max-width:36vw}
}

.cs-nav{display:flex;align-items:stretch}
.cs-nav ul{display:flex;align-items:stretch;list-style:none;margin:0;padding:0}
.cs-nav li{display:flex;align-items:stretch}

/* The links must fill the bar's height, or the black dividers between them
   render as short stubs floating in the lime.
   align-self:stretch rather than height:100% — `align-items:stretch` only
   stretches items whose height is auto, so setting an explicit height opts
   the element OUT of stretching and it shrinks to its text. */
.cs-nav a,
.cs-cart,
.cs-burger,
.cs-nav-setup{
  display:flex;align-items:center;
  align-self:stretch;
  padding:0 15px;
  border:0;border-left:var(--cs-border);
  background:transparent;
  font-family:var(--cs-mono);font-size:11px;font-weight:700;
  letter-spacing:.07em;text-transform:uppercase;text-decoration:none;
  white-space:nowrap;cursor:pointer;
}
.cs-nav a:hover,
.cs-nav-setup:hover{background:var(--cs-black);color:var(--cs-lime)}
.cs-nav a:focus-visible{outline:3px solid var(--cs-pink);outline-offset:-6px}

/* The cart is a direct child of .cs-bar, not inside the nav list, so it needs
   its own stretch. It's also replaced wholesale by Woo's cart fragments on
   every add-to-cart, which is why it must not depend on anything but its own
   class to size correctly. */
.cs-bar > .cs-cart,
a.cs-cart{
  align-self:stretch;
  display:flex;align-items:center;
  min-height:100%;
  background:var(--cs-black);color:var(--cs-lime);
}
.cs-cart:hover{background:var(--cs-pink);color:var(--cs-black)}

.cs-burger{display:none}


/* ============================================================================
   07  MARQUEE

   Two identical sets; the animation shifts by -50%, which is exactly one set,
   so the second lands where the first began. The shortcode repeats the phrase
   list enough times to overflow any screen — a short list would otherwise
   have to stretch, leaving big holes between phrases.
   ========================================================================= */
.cs-marq{
  background:var(--cs-black);color:var(--cs-lime);
  border-top:var(--cs-border);border-bottom:var(--cs-border);
  padding:10px 0;overflow:hidden;max-width:100vw;
}
.cs-marq__in{
  display:flex;width:max-content;
  animation:cs-slide 42s linear infinite;
  will-change:transform;
}
.cs-marq__set{
  display:flex;align-items:center;flex:0 0 auto;
  gap:26px;padding-right:26px;
  width:max-content;
  /* Each set must be at least one screen wide, or translating by -50%
     leaves a gap. `min-width:100%` cannot do this: the parent is sized
     max-content, so a percentage resolves against an indefinite width and
     is ignored. 100vw is definite. The parent clips overflow, so this can't
     widen the document. The shortcode also repeats the phrase list enough
     times that the natural width usually exceeds this anyway — which is what
     keeps the spacing tight instead of stretched. */
  min-width:100vw;
  white-space:nowrap;
}
.cs-marq__set span{
  font-variation-settings:'wdth' 80,'wght' 800;
  font-size:16px;text-transform:uppercase;white-space:nowrap;
}
.cs-marq:hover .cs-marq__in{animation-play-state:paused}

@keyframes cs-slide{
  from{transform:translateX(0)}
  to{transform:translateX(-50%)}
}


/* ============================================================================
   08  HERO
   ========================================================================= */
.cs-hero{position:relative;padding-top:54px;padding-bottom:60px}

.cs-hero > h1{max-width:17ch;margin:0 !important}          /* !important: §04 */
.cs-hero mark{
  display:inline-block;padding:0 .1em;
  background:var(--cs-lime);color:var(--cs-black);
  transform:rotate(-1.2deg);
}
.cs-hero .cs-out{
  display:inline-block;
  -webkit-text-stroke:2.5px var(--cs-black);color:transparent;
}

.cs-hero > .cs-hero__sub{
  max-width:46ch;
  margin:26px 0 0 !important;                              /* !important: §04 */
  padding:14px 16px;
  background:var(--cs-white);
  border:var(--cs-border);border-radius:var(--cs-radius);
  font-size:19px;font-weight:500;line-height:1.4;
  transform:rotate(-.5deg);transform-origin:left center;
}
.cs-hero > .wp-block-buttons{margin-top:26px !important;justify-content:flex-start}

.cs-stickers{position:absolute;inset:0;pointer-events:none;display:none}
.cs-stk{
  position:absolute;padding:7px 10px;
  background:var(--cs-white);
  border:var(--cs-border);border-radius:var(--cs-radius);
  font-family:var(--cs-mono);font-size:11px;font-weight:700;
  letter-spacing:.08em;text-transform:uppercase;
}
.cs-stk:nth-child(1){top:9%;right:4%;transform:rotate(7deg);background:var(--cs-lime)}
.cs-stk:nth-child(2){top:36%;right:10%;transform:rotate(-6deg);background:var(--cs-blue);color:var(--cs-white)}
.cs-stk:nth-child(3){top:60%;right:2%;transform:rotate(3deg);background:var(--cs-orange)}
.cs-stk:nth-child(4){top:80%;right:15%;transform:rotate(-9deg)}


/* ============================================================================
   09  COLLECTIONS

   A solid band: no gap, no margins, one black rule between blocks. Flex so
   they wrap on container width; the divider moves from right edge to bottom
   edge once they stack.
   ========================================================================= */
.cs-cols{border-bottom:var(--cs-border);overflow:hidden;max-width:100vw}

.cs-colgrid{display:flex;flex-wrap:wrap;gap:0;margin:0;padding:0}

.cs-col{
  flex:1 1 300px;min-width:0;max-width:100%;
  display:flex;flex-direction:column;
  position:relative;overflow:hidden;
  padding:44px 26px 40px;min-height:340px;
  border-right:var(--cs-border);
  text-decoration:none;
  transition:transform var(--cs-ease);
}
.cs-col:last-child{border-right:0}
.cs-col:hover{transform:translateY(-4px)}
.cs-col:focus-visible{outline:4px solid var(--cs-black);outline-offset:-8px}

.cs-col > *{position:relative;z-index:1}
.cs-col__img{
  position:absolute;inset:0;z-index:0;
  width:100%;height:100%;object-fit:cover;
  opacity:.14;pointer-events:none;
}
.cs-col__kicker{
  font-family:var(--cs-mono);font-size:11px;font-weight:700;
  letter-spacing:.1em;text-transform:uppercase;opacity:.75;
}
.cs-col h2{
  font-variation-settings:'wdth' 70,'wght' 900;
  font-size:clamp(42px,5.6vw,70px);line-height:.9;letter-spacing:-.035em;
  margin:10px 0 14px;
}
.cs-col p{font-size:16px;font-weight:500;max-width:26ch}
.cs-col__list{
  margin-top:auto;padding-top:20px;
  font-family:var(--cs-mono);font-size:11px;line-height:1.9;
  letter-spacing:.03em;opacity:.85;
}
.cs-col__go{
  align-self:flex-start;margin-top:16px;padding-bottom:2px;
  font-variation-settings:var(--cs-vf-head);font-size:15px;text-transform:uppercase;
  border-bottom:3px solid currentColor;
}


/* ============================================================================
   10  BANDS — [cs_formats] and [cs_steps]

   These shortcodes render their own markup rather than nested group blocks,
   so no WordPress layout class can compete with the theme's own layout.
   ========================================================================= */
.cs-band{
  display:block;width:100%;max-width:100vw;
  padding:56px var(--cs-pad) 64px;
  border-bottom:var(--cs-border);
  overflow-x:clip;
}
.cs-band--white{background:var(--cs-white)}
.cs-band--lime {background:var(--cs-lime)}
.cs-band--paper{background:var(--cs-paper)}

.cs-band__inner{width:100%;max-width:var(--cs-max);margin:0 auto}
.cs-band__title{
  font-variation-settings:'wdth' 74,'wght' 900;
  font-size:clamp(28px,5vw,56px);line-height:.94;
  letter-spacing:-.03em;text-transform:uppercase;
  max-width:20ch;margin:0 0 32px;
}

/* Lead paragraph under a section heading. */
.cs-band__lead,
.cs-roul__lead{
  max-width:56ch;margin:-18px 0 30px;
  font-size:17px;font-weight:500;color:var(--cs-ink-soft);
}
.cs-roul__lead{color:rgba(255,255,255,.9);margin:14px 0 0;max-width:44ch}
.cs-section > .cs-band__lead{margin:-18px 0 30px !important}   /* !important: §04 */
.cs-tile p + p{margin-top:.6em}

.cs-tiles{display:flex;flex-wrap:wrap;gap:var(--cs-gap);width:100%}

.cs-tile{
  flex:1 1 210px;min-width:0;max-width:100%;
  padding:20px 18px 22px;
  background:var(--cs-paper);
  border:var(--cs-border);border-radius:var(--cs-radius);
}
.cs-tiles--steps .cs-tile{flex:1 1 240px;background:var(--cs-white);position:relative}

/* A format card that links into the filtered shop. */
.cs-tile--link{
  display:flex;flex-direction:column;text-decoration:none;
  transition:transform var(--cs-ease),box-shadow var(--cs-ease);
}
.cs-tile--link:hover{transform:translate(-3px,-3px);box-shadow:6px 6px 0 var(--cs-black)}
.cs-tile--link:focus-visible{outline:3px solid var(--cs-blue);outline-offset:3px}
.cs-tile--link .cs-tile__go{
  align-self:flex-start;margin-top:auto;padding-top:14px;
  font-family:var(--cs-mono);font-size:11px;font-weight:700;
  letter-spacing:.08em;text-transform:uppercase;
  border-bottom:3px solid var(--cs-black);color:var(--cs-black);
}
.cs-tile--link:hover .cs-tile__go{background:var(--cs-black);color:var(--cs-lime)}
@media (max-width:700px){
  .cs-tile--link:hover{transform:none;box-shadow:none}
}
.cs-tile h3{margin:0 0 8px}
.cs-tile p{font-size:15px;color:var(--cs-ink-soft)}

/* A label, not a button — flat highlight, no border, no pointer cursor. */
.cs-tile__who,
.cs-who{
  display:inline-block;margin-top:14px;padding:3px 6px;
  background:var(--cs-lime);color:var(--cs-black);
  font-family:var(--cs-mono);font-size:10px;font-weight:700;
  letter-spacing:.07em;text-transform:uppercase;
  cursor:default;
}
.cs-tile__num{
  display:inline-block;margin:0 0 10px;padding:2px 8px;
  background:var(--cs-pink);border:var(--cs-border);
  font-variation-settings:'wdth' 88,'wght' 900;font-size:16px;
  transform:rotate(-3deg);
}

/* The fourth step. The heading says three, so this one is the joke — it
   reads as part of the sequence but is the link out to the explainer.
   Inverted colours so it's obviously a different kind of thing. */
.cs-tile--bonus{
  display:flex;flex-direction:column;
  background:var(--cs-black) !important;
  color:var(--cs-white);
  text-decoration:none;
  transition:transform var(--cs-ease),box-shadow var(--cs-ease);
}
.cs-tile--bonus:hover,
.cs-tile--bonus:focus-visible{
  transform:translate(-3px,-3px);
  box-shadow:6px 6px 0 var(--cs-black);
}
.cs-tile--bonus:focus-visible{outline:3px solid var(--cs-blue);outline-offset:3px}

.cs-tile--bonus .cs-tile__num{
  background:var(--cs-lime);color:var(--cs-black);
  border-color:var(--cs-black);
  /* The card is a flex column, so a block child stretches to full width.
     Hug the text like the other three badges do. */
  align-self:flex-start;
  width:auto;
}
.cs-tile--bonus h3{color:var(--cs-lime)}
.cs-tile--bonus p{color:#C9C9D2}

.cs-tile__go{
  display:inline-block;align-self:flex-start;
  margin-top:auto;padding-top:14px;
  font-variation-settings:var(--cs-vf-head);
  font-size:15px;text-transform:uppercase;letter-spacing:-.01em;
  color:var(--cs-lime);
  border-bottom:3px solid var(--cs-lime);
}
.cs-tile--bonus:hover .cs-tile__go{background:var(--cs-lime);color:var(--cs-black)}


/* ============================================================================
   11  PRODUCT CARDS

   One card design. The homepage shortcode, the shop archive and related
   products all render through cs_render_product_card(), so the design can
   never drift between them.
   ========================================================================= */
/* Standalone: a [cs_products] shortcode dropped straight onto a page has no
   section around it, so it needs its own centred column — otherwise it runs
   the full width of the body. */
.cs-grid{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(min(100%,250px),1fr));
  gap:var(--cs-gap);
  list-style:none;
  max-width:var(--cs-max);
  margin:34px auto;
  padding:0 var(--cs-pad);
}

/* Inside a section or band the column already exists — don't inset twice. */
.cs-section .cs-grid,
.cs-band .cs-grid,
.cs-page .cs-grid{max-width:none;margin:0;padding:0}

.cs-card{
  display:flex;flex-direction:column;
  min-width:0;max-width:100%;
  position:relative;overflow:hidden;
  background:var(--cs-white);
  border:var(--cs-border);border-radius:var(--cs-radius);
  transition:transform var(--cs-ease),box-shadow var(--cs-ease);
}
.cs-card:hover,
.cs-card:focus-within{transform:translateY(-5px);box-shadow:var(--cs-shadow-lg)}

.cs-card__media{
  position:relative;flex:none;
  aspect-ratio:4/3;overflow:hidden;
  background:var(--cs-paper);border-bottom:var(--cs-border);
}
.cs-card__media img{width:100%;height:100%;object-fit:cover}

.cs-card__tag{
  position:absolute;left:9px;top:9px;z-index:2;padding:3px 6px;
  background:var(--cs-black);color:var(--cs-white);
  font-family:var(--cs-mono);font-size:10px;font-weight:700;
  letter-spacing:.09em;text-transform:uppercase;
}
.cs-card__flag{
  position:absolute;right:-4px;bottom:8px;z-index:2;padding:3px 7px;
  background:var(--cs-lime);border:var(--cs-border);
  font-family:var(--cs-mono);font-size:10px;font-weight:700;
  letter-spacing:.05em;text-transform:uppercase;
  transform:rotate(-4deg);
}

.cs-card__body{flex:1 1 auto;display:flex;flex-direction:column;padding:14px 14px 16px}
.cs-card__body h3{font-size:18px}
.cs-card__body h3 a{text-decoration:none}
.cs-card__body h3 a::after{content:"";position:absolute;inset:0}   /* whole card clickable */
.cs-card__joke{margin:7px 0 0;font-size:14px;font-style:italic;color:var(--cs-ink-soft)}

.cs-card__foot{
  display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;
  gap:8px;row-gap:8px;
  margin-top:auto;padding-top:11px;border-top:var(--cs-border);
}
.cs-card__price{
  flex:1 1 auto;min-width:0;
  font-variation-settings:'wdth' 86,'wght' 900;
  font-size:16px;line-height:1.25;
}
.cs-card__price del{opacity:.45;font-size:14px;margin-right:5px}
.cs-card__price ins{text-decoration:none}

.cs-add{
  flex:0 0 auto;white-space:nowrap;position:relative;z-index:3;
  padding:7px 9px;cursor:pointer;text-decoration:none;
  background:var(--cs-black);color:var(--cs-lime);
  border:0;border-radius:var(--cs-radius);
  font-family:var(--cs-mono);font-size:10px;font-weight:700;
  letter-spacing:.08em;text-transform:uppercase;
}
.cs-add:hover{background:var(--cs-pink);color:var(--cs-black)}
.cs-add.loading{opacity:.6}
.cs-add.added::after{content:" ✓"}


/* ============================================================================
   12  ROULETTE
   ========================================================================= */
.cs-roul{
  background:var(--cs-blue);color:var(--cs-white);
  border-bottom:var(--cs-border);
  padding:52px var(--cs-pad);
  max-width:100vw;overflow-x:clip;
}
.cs-roul__box{
  display:flex;flex-wrap:wrap;gap:26px;
  align-items:center;justify-content:space-between;
}
.cs-roul h2{max-width:14ch}
.cs-roul__out{
  display:block;min-width:min(300px,100%);
  padding:18px 20px;text-decoration:none;
  background:var(--cs-white);color:var(--cs-black);
  border:var(--cs-border);border-radius:var(--cs-radius);
  transform:rotate(1deg);
}
.cs-roul__pick{
  margin:6px 0 5px;
  font-variation-settings:var(--cs-vf-ui);
  font-size:28px;line-height:1.02;text-transform:uppercase;
}
.cs-roul__why{margin:0;font-size:14px;color:var(--cs-ink-soft)}
.cs-roul__kol{
  display:inline-block;margin-top:10px;padding:2px 7px;
  background:var(--cs-lime);border:2px solid var(--cs-black);
  font-family:var(--cs-mono);font-size:10px;font-weight:700;
  letter-spacing:.09em;text-transform:uppercase;
}


/* ============================================================================
   13  ACCORDIONS — FAQ and product details
   ========================================================================= */
.cs-acc{padding:34px 0 10px;margin-top:20px}

.cs-q,
details.wp-block-details.cs-q{
  margin-top:14px;
  background:var(--cs-white);
  border:var(--cs-border);border-radius:var(--cs-radius);
}
.cs-q:first-child{margin-top:0}

.cs-q summary{
  display:flex;align-items:center;justify-content:space-between;gap:14px;
  padding:14px 16px;cursor:pointer;list-style:none;
  font-variation-settings:var(--cs-vf-head);
  font-size:18px;text-transform:uppercase;letter-spacing:-.01em;
}
.cs-q summary::-webkit-details-marker{display:none}
.cs-q summary::after{content:"+";font-family:var(--cs-mono);font-weight:700;font-size:22px}
.cs-q[open] summary::after{content:"–"}
.cs-q[open] summary{background:var(--cs-lime);border-bottom:var(--cs-border)}
.cs-q summary:focus-visible{outline:3px solid var(--cs-blue);outline-offset:-6px}

.cs-q > p,
.cs-q__in{padding:14px 16px;margin:0;font-size:15px;color:var(--cs-ink-soft);text-align:left}
.cs-q__in p{padding:0;margin:0 0 .7em}
.cs-q__in p:last-child{margin:0}
.cs-q__in ul,
.cs-q__in ol{margin:8px 0 0 20px}
.cs-q__in li{margin-bottom:8px}


/* ============================================================================
   14  NEWSLETTER
   ========================================================================= */
.cs-news{
  background:var(--cs-violet);color:var(--cs-white);
  border-bottom:var(--cs-border);
  padding-top:52px;padding-bottom:52px;
}
.cs-news__row{
  display:flex;flex-wrap:wrap;gap:26px;
  align-items:flex-end;justify-content:space-between;
}
.cs-news h2{max-width:16ch}

.cs-signup{
  display:flex;width:100%;max-width:400px;
  background:var(--cs-white);
  border:var(--cs-border);border-radius:var(--cs-radius);
}
.cs-signup input{
  flex:1;min-width:0;border:0;background:transparent;color:var(--cs-black);
  font-family:var(--cs-mono);font-size:13px;padding:12px;
}
.cs-signup input:focus{outline:3px solid var(--cs-lime);outline-offset:-3px}
.cs-signup button{
  padding:0 16px;cursor:pointer;
  background:var(--cs-lime);color:var(--cs-black);
  border:0;border-left:var(--cs-border);
  font-family:var(--cs-mono);font-size:11px;font-weight:700;
  letter-spacing:.08em;text-transform:uppercase;
}
.cs-signup button:hover{background:var(--cs-pink)}


/* ============================================================================
   15  FOOTER
   ========================================================================= */
.cs-footer{background:var(--cs-black);color:var(--cs-white);padding:48px 0 34px}
.cs-footgrid{display:flex;flex-wrap:wrap;gap:40px;justify-content:space-between}
.cs-footer h4{
  margin:0 0 12px;color:var(--cs-lime);
  font-family:var(--cs-mono);font-size:11px;font-weight:700;
  letter-spacing:.1em;text-transform:uppercase;
}
.cs-footer ul{list-style:none;margin:0;padding:0;font-size:15px;line-height:2}
.cs-footer a{text-decoration:none}
.cs-footer a:hover{background:var(--cs-lime);color:var(--cs-black)}
.cs-footer address{font-style:normal;font-size:14px;line-height:1.8;color:#C9C9D2}
.cs-colophon{
  display:flex;flex-wrap:wrap;gap:12px;justify-content:space-between;
  margin-top:40px;padding-top:16px;
  border-top:3px solid #2C2C33;color:#8A8A96;
}


/* ============================================================================
   16  WOOCOMMERCE — SHOP ARCHIVE

   Woo's `ul.products` is a float grid with percentage widths and clearfix
   pseudo-elements. All of that has to be unwound before CSS grid can take
   over — that's what the !importants in this block are doing.
   ========================================================================= */
.woocommerce-page{background:var(--cs-paper)}
.cs-shopwrap{max-width:var(--cs-max);margin:0 auto;padding:16px var(--cs-pad) 56px}

/* Everything WooCommerce renders inside the wrapper must fill it.
   Woo's own stylesheet constrains several of these containers, and on the
   classic cart that made the page visibly narrower than the checkout beside
   it. Covers block markup too, in case either page is switched later. */
.cs-shopwrap > .woocommerce,
.cs-shopwrap .woocommerce,
.cs-shopwrap .woocommerce-cart-form,
.cs-shopwrap .cart-collaterals,
.cs-shopwrap .woocommerce-cart-form__contents,
.cs-shopwrap .wp-block-woocommerce-cart,
.cs-shopwrap .wp-block-woocommerce-checkout,
.cs-shopwrap .wc-block-cart,
.cs-shopwrap .wc-block-checkout{
  width:100% !important;
  max-width:none !important;
  margin-left:0 !important;
  margin-right:0 !important;
  padding-left:0 !important;
  padding-right:0 !important;
  float:none !important;
}

/* The empty-cart message is a Woo template that centres itself narrow. */
.cs-shopwrap .cart-empty,
.cs-shopwrap .return-to-shop{
  max-width:none !important;
  margin-left:0 !important;
  text-align:left !important;
}

.woocommerce ul.products{
  display:grid !important;                                  /* over Woo's float grid */
  grid-template-columns:repeat(auto-fill,minmax(min(100%,250px),1fr)) !important;
  gap:var(--cs-gap) !important;
  list-style:none;margin:0 !important;padding:0 !important;
}
.woocommerce ul.products::before,
.woocommerce ul.products::after{display:none !important}    /* Woo clearfix */

.woocommerce ul.products > li.product{
  width:auto !important;                                    /* Woo sets % widths */
  margin:0 !important;float:none !important;
  min-width:0;max-width:100%;
  display:flex;flex-direction:column;
}

/* Woo styles `li.product img` more specifically than .cs-card__media img,
   which let tall photos grow the media box and spill over the title. */
.woocommerce ul.products li.product .cs-card__media img{
  width:100% !important;height:100% !important;object-fit:cover;margin:0;
}

.woocommerce .woocommerce-result-count{
  font-family:var(--cs-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;
}
.woocommerce .woocommerce-ordering select,
.woocommerce select{
  padding:9px 10px;background:var(--cs-white);
  border:var(--cs-border);border-radius:var(--cs-radius);
  font-family:var(--cs-mono);font-size:12px;
}

.woocommerce nav.woocommerce-pagination ul{border:0;display:flex;gap:8px;justify-content:center}
.woocommerce nav.woocommerce-pagination ul li{border:0;margin:0}
.woocommerce nav.woocommerce-pagination ul li a,
.woocommerce nav.woocommerce-pagination ul li span{
  padding:8px 12px;background:var(--cs-white);
  border:var(--cs-border);border-radius:var(--cs-radius);
  font-family:var(--cs-mono);font-size:12px;font-weight:700;
}
.woocommerce nav.woocommerce-pagination ul li span.current,
.woocommerce nav.woocommerce-pagination ul li a:hover{background:var(--cs-black);color:var(--cs-lime)}

/* Notices are NOT scoped to .woocommerce: they appear on the homepage too,
   where the body has no woocommerce class. Prefixing these was why the
   default icon and grey button came back outside shop pages. */
.woocommerce-message,
.woocommerce-info,
.woocommerce-error{
  padding:14px 16px;margin:0 0 20px;
  list-style:none;
  display:flex;flex-wrap:wrap;align-items:center;gap:12px;
  background:var(--cs-lime);color:var(--cs-black);
  border:var(--cs-border);border-top-width:3px;border-radius:var(--cs-radius);
  font-size:15px;
}
.woocommerce-error{background:var(--cs-pink);color:var(--cs-white)}

/* Woo positions a glyph absolutely at the left and pads the notice to make
   room for it. This design doesn't use the icon, and leaving it in drops the
   glyph on top of the first word. */
.woocommerce-message::before,
.woocommerce-info::before,
.woocommerce-error::before{display:none !important}

.woocommerce-message li,
.woocommerce-info li,
.woocommerce-error li{list-style:none;margin:0;padding:0}

.woocommerce-message a:not(.button),
.woocommerce-info a:not(.button),
.woocommerce-error a:not(.button){color:inherit;font-weight:600}

/* "Prikaži košarico" sits at the far end of the notice, styled like the rest
   of the site rather than Woo's grey pill. */
.woocommerce-message .button,
.woocommerce-info .button{
  order:2;margin-left:auto;float:none;
  padding:9px 14px;min-width:0;
  background:var(--cs-black) !important;color:var(--cs-lime) !important;
  border:var(--cs-border);border-radius:var(--cs-radius);
  font-family:var(--cs-font);font-variation-settings:var(--cs-vf-ui);
  font-size:14px;text-transform:uppercase;text-decoration:none;
  box-shadow:none;
}
.woocommerce-message .button:hover,
.woocommerce-info .button:hover{background:var(--cs-pink) !important;color:var(--cs-black) !important}
.woocommerce-error .button{
  background:var(--cs-white) !important;color:var(--cs-black) !important;
  border:var(--cs-border);border-radius:var(--cs-radius);
  order:2;margin-left:auto;padding:9px 14px;
}


/* ============================================================================
   17  WOOCOMMERCE — SINGLE PRODUCT

   woocommerce-layout.css floats the gallery and summary and gives each
   `width: 48%`. Inside a grid cell that 48% is measured against the CELL, so
   the content sat in a narrow strip with dead space beside it. Both have to
   be forced back to full width.
   ========================================================================= */
.woocommerce div.product{
  display:grid !important;                                  /* over Woo's floats */
  grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);
  gap:34px;align-items:start;
}
.woocommerce div.product::before,
.woocommerce div.product::after{display:none !important}    /* Woo clearfix */

.woocommerce div.product > .woocommerce-product-gallery,
.woocommerce div.product > .summary{
  grid-row:1;min-width:0;
  width:100% !important;max-width:100% !important;          /* over Woo's 48% */
  float:none !important;margin:0 !important;
}
/* Deliberately NOT position:sticky. A sticky element is constrained by its
   containing block — here the whole product grid, not its own row — so it
   scrolls down over the accordions and cross-sell band beneath it. */
.woocommerce div.product > .woocommerce-product-gallery{grid-column:1;align-self:start}
.woocommerce div.product > .summary{grid-column:2}

/* Everything Woo appends after the summary is also a grid child, so without
   this it gets dealt into the two columns instead of running full width. */
.woocommerce div.product > .cs-acc,
.woocommerce div.product > .cs-cross,
.woocommerce div.product > .related,
.woocommerce div.product > .upsells,
.woocommerce div.product > .woocommerce-tabs,
.woocommerce div.product > .product_meta{grid-column:1 / -1}

/* --- Gallery --- */
.woocommerce div.product .woocommerce-product-gallery__wrapper{
  margin:0;overflow:hidden;background:var(--cs-white);
  border:var(--cs-border);border-radius:var(--cs-radius);
}
.woocommerce div.product .woocommerce-product-gallery__image img{width:100%;height:auto}
.woocommerce div.product .woocommerce-product-gallery__trigger{
  top:12px;right:12px;width:38px;height:38px;
  display:flex;align-items:center;justify-content:center;
  background:var(--cs-lime);color:var(--cs-black);
  border:var(--cs-border);border-radius:var(--cs-radius);
  font-size:16px;text-indent:0;
}
.woocommerce div.product .flex-control-thumbs{
  display:grid !important;                                  /* over flexslider floats */
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:10px;margin:10px 0 0 !important;padding:0 !important;list-style:none;
}
.woocommerce div.product .flex-control-thumbs li{
  width:auto !important;float:none !important;margin:0 !important;
}
.woocommerce div.product .flex-control-thumbs li img{
  width:100% !important;height:auto !important;
  aspect-ratio:1/1;object-fit:cover;opacity:1;cursor:pointer;
  border:var(--cs-border);border-radius:var(--cs-radius);
}
.woocommerce div.product .flex-control-thumbs li img.flex-active{
  outline:3px solid var(--cs-pink);outline-offset:2px;
}

/* --- Summary --- */
.cs-kol{
  display:inline-block;padding:4px 9px;text-decoration:none;
  background:var(--cs-lime);
  border:var(--cs-border);border-radius:var(--cs-radius);
  font-family:var(--cs-mono);font-size:11px;font-weight:700;
  letter-spacing:.09em;text-transform:uppercase;
  transform:rotate(-1.5deg);
}
.cs-kol:hover{background:var(--cs-black);color:var(--cs-lime)}

.woocommerce div.product .product_title{
  margin:14px 0 0;
  font-variation-settings:'wdth' 74,'wght' 900;
  font-size:clamp(36px,5.4vw,62px);line-height:.92;
}
.cs-single__joke{
  margin:12px 0 0;max-width:34ch;
  font-size:19px;font-style:italic;color:var(--cs-ink-soft);
}

/* The whole summary column reads left. Product descriptions often carry
   alignment from however they were written in the editor — centred body copy
   at this measure is hard to read and fights the rest of the page.
   !important because the alignment is inline on the content itself. */
.woocommerce div.product .summary,
.woocommerce div.product .summary p,
.woocommerce div.product .summary li,
.woocommerce-product-details__short-description,
.woocommerce-product-details__short-description *{text-align:left !important}

.woocommerce-product-details__short-description{
  margin-top:16px;max-width:60ch;
  font-size:16px;line-height:1.5;
}
.woocommerce-product-details__short-description p{margin:0 0 .8em}
.woocommerce-product-details__short-description p:last-child{margin:0}

/* Same for the description inside the accordion. */
.cs-q__in,
.cs-q__in *{text-align:left !important}

.woocommerce div.product p.price,
.woocommerce div.product span.price{
  margin:18px 0 0;color:var(--cs-black);
  font-variation-settings:'wdth' 86,'wght' 900;font-size:26px;
}
.woocommerce div.product .woocommerce-variation-price .price{font-size:34px;margin:0}
.woocommerce div.product .stock{
  color:var(--cs-black);
  font-family:var(--cs-mono);font-size:11px;font-weight:700;
  letter-spacing:.08em;text-transform:uppercase;
}
.woocommerce div.product .stock.out-of-stock{color:var(--cs-pink)}

/* --- Buy row --- */
.woocommerce div.product form.cart{
  display:flex;flex-wrap:wrap;align-items:stretch;gap:12px;margin-top:20px;
}
.woocommerce div.product form.cart::before,
.woocommerce div.product form.cart::after{display:none !important}
.woocommerce div.product form.cart .quantity{
  display:inline-flex;float:none;margin:0;
  background:var(--cs-white);
  border:var(--cs-border);border-radius:var(--cs-radius);
}
.woocommerce div.product form.cart .quantity input.qty{
  width:64px;padding:12px 4px;border:0;background:transparent;text-align:center;
  font-family:var(--cs-mono);font-size:16px;font-weight:700;
}
.woocommerce div.product form.cart .single_variation_wrap{width:100%}
.woocommerce div.product .woocommerce-variation-add-to-cart{
  display:flex;flex-wrap:wrap;align-items:stretch;gap:12px;
}

/* Woo's stylesheet loads after this file and its button colour would win. */
.woocommerce div.product form.cart button.single_add_to_cart_button,
.woocommerce a.button.alt,
.woocommerce button.button.alt,
.woocommerce input.button.alt,
.woocommerce #respond input#submit.alt{
  background:var(--cs-black) !important;
  color:var(--cs-lime) !important;
  border:var(--cs-border);border-radius:var(--cs-radius);
  padding:13px 22px;min-width:210px;
  font-family:var(--cs-font);font-variation-settings:var(--cs-vf-ui);
  font-size:19px;text-transform:uppercase;
  box-shadow:var(--cs-shadow-light);
  transition:transform var(--cs-ease),box-shadow var(--cs-ease);
}
.woocommerce div.product form.cart button.single_add_to_cart_button:hover,
.woocommerce a.button.alt:hover,
.woocommerce button.button.alt:hover{
  transform:translate(3px,3px);box-shadow:2px 2px 0 var(--cs-white);
}
.woocommerce button.button.alt.disabled{opacity:.4;box-shadow:none;transform:none}

.cs-freeship{margin-top:14px;font-size:14px;color:var(--cs-ink-soft)}
.cs-freeship b{background:var(--cs-lime);padding:1px 5px;font-weight:500}
.cs-freeship b .woocommerce-Price-amount{font-weight:500}

/* --- Scent notes --- */
.cs-notes{
  margin-top:26px;background:var(--cs-white);
  border:var(--cs-border);border-radius:var(--cs-radius);
}
.cs-notes__head{
  padding:9px 14px;background:var(--cs-black);color:var(--cs-lime);
  font-family:var(--cs-mono);font-size:11px;font-weight:700;
  letter-spacing:.09em;text-transform:uppercase;
}
.cs-notes__rows{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}
.cs-notes__r{padding:14px;border-right:var(--cs-border)}
.cs-notes__r:last-child{border-right:0}
.cs-notes__r span{
  display:block;color:var(--cs-ink-soft);
  font-family:var(--cs-mono);font-size:10px;letter-spacing:.09em;text-transform:uppercase;
}
.cs-notes__r b{
  display:block;margin-top:4px;
  font-variation-settings:'wdth' 86,'wght' 800;font-size:17px;letter-spacing:-.01em;
}

/* --- Cross-sell band --- */
.cs-cross{
  margin-top:48px;padding:44px 0;
  background:var(--cs-blue);color:var(--cs-white);
  border-top:var(--cs-border);border-bottom:var(--cs-border);
}
.cs-cross__row{
  display:flex;flex-wrap:wrap;gap:26px;
  align-items:center;justify-content:space-between;
}
.cs-cross h2{font-size:clamp(26px,4vw,44px)}
.cs-cross p{max-width:38ch;margin:10px 0 0}

/* --- Related --- */
.woocommerce .related{
  margin-top:0;padding:52px 0 60px;background:var(--cs-white);
  border-top:var(--cs-border);border-bottom:var(--cs-border);
}
.woocommerce .related > h2{
  max-width:var(--cs-max);margin:0 auto 26px;padding:0 var(--cs-pad);
  font-variation-settings:'wdth' 74,'wght' 900;font-size:clamp(28px,4.4vw,50px);
}
.woocommerce .related ul.products{max-width:var(--cs-max);margin:0 auto;padding:0 var(--cs-pad)}

/* ============================================================================
   18  WOOCOMMERCE — VARIATION PICKER

   Woo's real <select> stays in the DOM (visually hidden) and remains the
   source of truth; the buttons set its value and fire change. The wrapper
   keeps the `variations` class because add-to-cart-variation.js finds the
   fields with `.variations select` — rename it and the form silently breaks.
   ========================================================================= */
.cs-variations{margin-top:24px;padding-top:20px;border-top:var(--cs-border)}
.cs-variation{margin-bottom:16px}
.cs-variation--hidden{display:none}
.cs-variation__label{
  display:block;margin-bottom:10px;
  font-family:var(--cs-mono);font-size:11px;font-weight:700;
  letter-spacing:.09em;text-transform:uppercase;
}
.cs-native-select{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}

.cs-opts{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(min(100%,140px),1fr));
  gap:10px;
}
.cs-opt{
  padding:11px 10px;text-align:left;cursor:pointer;
  background:var(--cs-white);color:var(--cs-black);
  border:var(--cs-border);border-radius:var(--cs-radius);
  font-family:var(--cs-font);
  transition:transform .12s ease,box-shadow .12s ease;
}
.cs-opt:hover:not(:disabled){transform:translate(-2px,-2px);box-shadow:4px 4px 0 var(--cs-black)}
.cs-opt[aria-pressed="true"]{background:var(--cs-black);color:var(--cs-lime)}
.cs-opt:focus-visible{outline:3px solid var(--cs-blue);outline-offset:3px}
/* Sold out: visible but clearly unavailable. Struck through rather than
   removed, so a customer can see the shape exists and come back for it. */
.cs-opt.is-unavailable,
.cs-opt:disabled{
  opacity:.4;cursor:not-allowed;
  background:var(--cs-paper);
  text-decoration:line-through;
  box-shadow:none;transform:none;
}
.cs-opt.is-unavailable:hover,
.cs-opt:disabled:hover{transform:none;box-shadow:none}
.cs-opt.is-unavailable .cs-opt__mt::after,
.cs-opt:disabled .cs-opt__mt::after{content:" · ni na zalogi"}
.cs-opt.is-unavailable .cs-opt__nm,
.cs-opt:disabled .cs-opt__nm{text-decoration:line-through}
.cs-opt__nm{
  display:block;font-variation-settings:'wdth' 86,'wght' 800;
  font-size:16px;text-transform:uppercase;
}
.cs-opt__mt{
  display:block;margin-top:3px;
  font-family:var(--cs-mono);font-size:10px;letter-spacing:.06em;opacity:.72;
}

/* One shape left: show it as a plain statement instead of a picker. */
.cs-shape{
  margin:22px 0 0;padding-top:20px;
  border-top:var(--cs-border);
  font-variation-settings:'wdth' 86,'wght' 800;
  font-size:18px;text-transform:uppercase;letter-spacing:-.015em;
}
.cs-shape span{
  display:block;margin-bottom:6px;
  font-family:var(--cs-mono);font-size:11px;font-weight:700;
  letter-spacing:.09em;color:var(--cs-ink-soft);
}

/* The range above the picker answers "how much roughly". Once a shape is
   chosen the exact price appears below it, and showing both means the same
   product has two prices on screen. Hide the range at that point.
   .cs-picked is set by cs-variations.js on found_variation. */
.cs-varform--single ~ p.price,
.summary.cs-picked > p.price{display:none}

/* Only one shape → the picker is hidden, so "Počisti" has nothing to clear. */
.cs-varform--single .cs-variations{margin-top:0;padding-top:0;border-top:0}
.cs-varform--single .reset_variations{display:none !important}   /* Woo's JS re-shows it */

.woocommerce div.product .reset_variations{
  display:inline-block;margin-top:10px;padding-bottom:2px;
  color:var(--cs-ink-soft);text-decoration:none;
  border-bottom:2px solid currentColor;
  font-family:var(--cs-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;
}
.woocommerce div.product .reset_variations:hover{color:var(--cs-black)}


/* ============================================================================
   19  WOOCOMMERCE — BLOCKS (cart, checkout, my account)

   Cart and checkout are block-based on modern Woo and use entirely different
   class names from the classic templates. Their stylesheets load late, so
   the !importants here are all overriding Woo Blocks defaults.
   ========================================================================= */
.wp-block-woocommerce-cart,
.wp-block-woocommerce-checkout{
  max-width:var(--cs-max);margin:0 auto;padding:40px var(--cs-pad) 70px;
}

/* --- Block product grids --- */
.wc-block-grid__products,
.wc-block-product-template{
  display:grid !important;
  grid-template-columns:repeat(auto-fill,minmax(min(100%,250px),1fr)) !important;
  gap:var(--cs-gap) !important;
  list-style:none;margin:0 !important;padding:0 !important;
}
.wc-block-grid__product,
.wc-block-product-template li{
  width:auto !important;max-width:none !important;
  margin:0 !important;padding:0 !important;
  display:flex;flex-direction:column;
  text-align:left !important;                              /* Blocks centre by default */
  overflow:hidden;background:var(--cs-white);
  border:var(--cs-border);border-radius:var(--cs-radius);
}
.wc-block-grid__product *{text-align:left !important}
.wc-block-grid__product-image{
  margin:0 !important;padding:0 !important;
  aspect-ratio:4/3;overflow:hidden;border-bottom:var(--cs-border);
}
.wc-block-grid__product-image a{display:block;height:100%}
.wc-block-grid__product-image img{
  width:100% !important;height:100% !important;
  object-fit:cover;margin:0 !important;border-radius:0 !important;
}
.wc-block-grid__product-title{
  padding:14px 14px 0 !important;margin:0 !important;
  font-family:var(--cs-font);font-variation-settings:var(--cs-vf-head);
  font-size:18px;text-transform:uppercase;letter-spacing:-.015em;line-height:1.05;
}
.wc-block-grid__product-price{
  padding:8px 14px 0 !important;margin:0 !important;display:block;
  color:var(--cs-black);
  font-variation-settings:'wdth' 86,'wght' 900;font-size:16px;
}
.wc-block-grid__product-add-to-cart{padding:14px !important;margin:auto 0 0 !important}
.wc-block-grid__product-onsale{
  background:var(--cs-lime) !important;color:var(--cs-black) !important;
  border:var(--cs-border) !important;border-radius:var(--cs-radius) !important;
  font-family:var(--cs-mono);font-size:10px;font-weight:700;letter-spacing:.08em;
}

/* --- Block buttons --- */
.wc-block-components-button,
.wc-block-grid__product-add-to-cart .wp-block-button__link,
.wc-block-cart__submit-button,
.wc-block-components-checkout-place-order-button{
  background:var(--cs-black) !important;color:var(--cs-lime) !important;
  border:var(--cs-border) !important;border-radius:var(--cs-radius) !important;
  padding:11px 16px !important;min-height:0 !important;
  font-family:var(--cs-font) !important;font-variation-settings:var(--cs-vf-ui);
  font-size:16px !important;text-transform:uppercase !important;
  box-shadow:var(--cs-shadow-light);
  transition:transform var(--cs-ease),box-shadow var(--cs-ease);
}
.wc-block-components-button:hover,
.wc-block-cart__submit-button:hover,
.wc-block-components-checkout-place-order-button:hover{
  transform:translate(3px,3px);box-shadow:2px 2px 0 var(--cs-white);
}
.wc-block-components-button__text{color:inherit !important}

/* --- Empty cart / empty checkout --- */
.wp-block-woocommerce-empty-cart-block,
.wp-block-woocommerce-checkout-empty-cart-block{
  max-width:var(--cs-max);margin:0 auto;padding:40px var(--cs-pad) 60px;
}
.wp-block-woocommerce-empty-cart-block *,
.wp-block-woocommerce-checkout-empty-cart-block *{text-align:left !important}
.wp-block-woocommerce-empty-cart-block h1,
.wp-block-woocommerce-empty-cart-block h2,
.wp-block-woocommerce-empty-cart-block h3,
.wp-block-woocommerce-checkout-empty-cart-block h2{
  margin:0 0 20px;
  font-family:var(--cs-font);font-variation-settings:'wdth' 74,'wght' 900;
  text-transform:uppercase;letter-spacing:-.03em;line-height:.94;
}
.wp-block-woocommerce-empty-cart-block h2{font-size:clamp(28px,4.4vw,50px)}
.wp-block-woocommerce-empty-cart-block h3{font-size:clamp(22px,3vw,34px);margin-top:44px}
.wp-block-woocommerce-empty-cart-block svg,
.wp-block-woocommerce-checkout-empty-cart-block svg{display:none}
.wp-block-woocommerce-empty-cart-block .wp-block-separator{
  border:0;border-top:var(--cs-border);max-width:none;margin:26px 0;
}

/* --- Cart table + totals --- */
.wc-block-cart-items{
  background:var(--cs-white);
  border:var(--cs-border);border-radius:var(--cs-radius);
}
.wc-block-cart-items__header{
  background:var(--cs-black);color:var(--cs-lime);border:0;
  font-family:var(--cs-mono);font-size:11px;font-weight:700;
  letter-spacing:.09em;text-transform:uppercase;
}
.wc-block-cart-item__image img{border:var(--cs-border);border-radius:var(--cs-radius)}
.wc-block-components-product-name{
  color:var(--cs-black);text-decoration:none;
  font-variation-settings:var(--cs-vf-head);font-size:17px;
  text-transform:uppercase;letter-spacing:-.015em;
}
.wc-block-components-totals-wrapper{
  background:var(--cs-white);
  border:var(--cs-border);border-radius:var(--cs-radius);
}
.wc-block-components-totals-item__label{
  font-family:var(--cs-mono);font-size:11px;font-weight:700;
  letter-spacing:.08em;text-transform:uppercase;
}
.wc-block-components-totals-footer-item .wc-block-components-totals-item__value{
  font-variation-settings:'wdth' 86,'wght' 900;font-size:26px;
}
.wc-block-components-quantity-selector{
  background:var(--cs-white);
  border:var(--cs-border);border-radius:var(--cs-radius);
}
.wc-block-components-quantity-selector__input{font-family:var(--cs-mono);font-weight:700}

/* --- Checkout fields --- */
.wc-block-components-text-input input,
.wc-block-components-textarea,
.wc-block-components-select__container,
.wc-block-components-combobox-control input{
  border:var(--cs-border) !important;border-radius:var(--cs-radius) !important;
  background:var(--cs-white);font-family:var(--cs-mono);font-size:13px;
}
.wc-block-components-text-input label{
  font-family:var(--cs-mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;
}
.wc-block-components-notice-banner{
  background:var(--cs-lime) !important;color:var(--cs-black) !important;
  border:var(--cs-border) !important;border-radius:var(--cs-radius) !important;
}
.wc-block-components-notice-banner.is-error{
  background:var(--cs-pink) !important;color:var(--cs-white) !important;
}
.wc-block-components-title,
.wp-block-woocommerce-checkout h2{
  font-family:var(--cs-font);font-variation-settings:var(--cs-vf-head);
  text-transform:uppercase;letter-spacing:-.02em;
}


/* --- Checkout sidebar / order summary ---
   Woo Blocks gives this a 1px grey border with rounded corners, which is the
   one panel on the site that didn't match. Rebuilt with the same hard border
   as everything else, and its inner panels flattened so there aren't three
   nested boxes. */
.wc-block-checkout__sidebar,
.wp-block-woocommerce-checkout-order-summary-block,
.wc-block-components-sidebar{
  background:var(--cs-white) !important;
  border:var(--cs-border) !important;
  border-radius:var(--cs-radius) !important;
  padding:0 !important;
  overflow:hidden;
}
.wc-block-components-sidebar .wc-block-components-panel,
.wp-block-woocommerce-checkout-order-summary-block > *{
  border-radius:0 !important;
  border-left:0 !important;border-right:0 !important;
}

.wc-block-components-order-summary__title,
.wp-block-woocommerce-checkout-order-summary-block > h2,
.wc-block-components-checkout-order-summary__title{
  margin:0 !important;padding:12px 16px !important;
  background:var(--cs-black) !important;color:var(--cs-lime) !important;
  border:0 !important;border-radius:0 !important;
  font-family:var(--cs-mono) !important;font-size:11px !important;font-weight:700 !important;
  letter-spacing:.09em;text-transform:uppercase;
}
.wc-block-components-order-summary__title button,
.wc-block-components-checkout-order-summary__title button{color:inherit !important}

.wc-block-components-order-summary-item{
  padding:14px 16px;
  border-bottom:1px solid var(--cs-black);
}
.wc-block-components-order-summary-item:last-child{border-bottom:0}
.wc-block-components-order-summary-item__image img{
  border:var(--cs-border);border-radius:var(--cs-radius);
}
.wc-block-components-order-summary-item__quantity{
  background:var(--cs-black) !important;color:var(--cs-lime) !important;
  border:2px solid var(--cs-black) !important;border-radius:var(--cs-radius) !important;
  font-family:var(--cs-mono);font-weight:700;
}
.wc-block-components-order-summary-item__description .wc-block-components-product-name{
  font-variation-settings:var(--cs-vf-head);font-size:15px;
  text-transform:uppercase;letter-spacing:-.01em;
}
.wc-block-components-product-details__oblika,
.wc-block-components-product-details{
  font-family:var(--cs-mono);font-size:11px;letter-spacing:.04em;color:var(--cs-ink-soft);
}

/* Coupon panel */
.wc-block-components-panel__button{
  padding:13px 16px !important;
  font-family:var(--cs-mono);font-size:11px;font-weight:700;
  letter-spacing:.08em;text-transform:uppercase;
}
.wc-block-components-totals-coupon{border-top:1px solid var(--cs-black)}

/* Totals inside the sidebar are already boxed by the sidebar itself. */
.wc-block-components-sidebar .wc-block-components-totals-wrapper{
  border:0 !important;border-top:1px solid var(--cs-black) !important;
  border-radius:0 !important;padding:12px 16px;
}
.wc-block-components-sidebar .wc-block-components-totals-footer-item{
  border-top:var(--cs-border) !important;background:var(--cs-white);
}


/* --- Everything sold out --- */
.cs-soldout{
  margin-top:24px;padding:22px 20px 24px;
  background:var(--cs-white);
  border:var(--cs-border);border-radius:var(--cs-radius);
}
.cs-soldout__title{
  margin:0 0 8px;
  font-variation-settings:var(--cs-vf-head);
  font-size:20px;text-transform:uppercase;letter-spacing:-.015em;
  color:var(--cs-pink);
}
.cs-soldout__text{margin:0 0 16px;font-size:15px;color:var(--cs-ink-soft);max-width:42ch}

/* --- Free-shipping progress, cart and checkout --- */
.cs-ship-bar{
  margin:0 0 18px;padding:14px 16px;
  background:var(--cs-white);
  border:var(--cs-border);border-radius:var(--cs-radius);
}
.cs-ship-bar--blocks{margin-bottom:14px}
.cs-ship-bar__msg{
  margin:0 0 10px;font-size:15px;
}
.cs-ship-bar__msg b{background:var(--cs-lime);padding:1px 5px;font-weight:700}
.cs-ship-bar.is-done .cs-ship-bar__msg{
  font-variation-settings:var(--cs-vf-head);
  text-transform:uppercase;font-size:15px;
}
.cs-ship-bar__track{
  height:14px;background:var(--cs-paper);
  border:2px solid var(--cs-black);border-radius:var(--cs-radius);
  overflow:hidden;
}
.cs-ship-bar__fill{
  display:block;height:100%;
  background:var(--cs-pink);
  transition:width .3s ease;
}
.cs-ship-bar.is-done .cs-ship-bar__fill{background:var(--cs-lime)}
@media (prefers-reduced-motion:reduce){.cs-ship-bar__fill{transition:none}}

/* --- My account ---
   Woo floats the navigation at 30% and the content at 68%. Inside a grid
   cell those percentages are measured against the CELL, so both columns
   shrink to a third of their space and drift. Same failure as the product
   page: clear the floats and force full width. */
.woocommerce-account .woocommerce{
  display:grid;
  grid-template-columns:minmax(0,260px) minmax(0,1fr);
  gap:28px;align-items:start;
  max-width:var(--cs-max);margin:0 auto;padding:0;
}
.woocommerce-account .woocommerce::before,
.woocommerce-account .woocommerce::after{display:none !important}

.woocommerce-account .woocommerce-MyAccount-navigation,
.woocommerce-account .woocommerce-MyAccount-content{
  width:100% !important;
  float:none !important;
  margin:0 !important;
  min-width:0;
}

.woocommerce-account .woocommerce-MyAccount-navigation ul{
  list-style:none;margin:0;padding:0;
  background:var(--cs-white);
  border:var(--cs-border);border-radius:var(--cs-radius);
  overflow:hidden;
}
.woocommerce-account .woocommerce-MyAccount-navigation li{border-bottom:1px solid var(--cs-black)}
.woocommerce-account .woocommerce-MyAccount-navigation li:last-child{border-bottom:0}
.woocommerce-account .woocommerce-MyAccount-navigation a{
  display:block;padding:12px 14px;text-decoration:none;
  font-family:var(--cs-mono);font-size:11px;font-weight:700;
  letter-spacing:.08em;text-transform:uppercase;
}
.woocommerce-account .woocommerce-MyAccount-navigation li.is-active a,
.woocommerce-account .woocommerce-MyAccount-navigation a:hover{
  background:var(--cs-black);color:var(--cs-lime);
}

.woocommerce-account .woocommerce-MyAccount-content{
  background:var(--cs-white);
  border:var(--cs-border);border-radius:var(--cs-radius);
  padding:26px 28px 28px;
  font-size:16px;line-height:1.6;
}
.woocommerce-account .woocommerce-MyAccount-content > *{max-width:70ch}
.woocommerce-account .woocommerce-MyAccount-content p{margin:0 0 1em}
.woocommerce-account .woocommerce-MyAccount-content a{
  color:var(--cs-black);text-decoration:underline;
  text-underline-offset:3px;text-decoration-thickness:2px;
}
.woocommerce-account .woocommerce-MyAccount-content a:hover{background:var(--cs-lime)}
.woocommerce-account .woocommerce-MyAccount-content h2,
.woocommerce-account .woocommerce-MyAccount-content h3{
  font-variation-settings:var(--cs-vf-head);
  font-size:20px;text-transform:uppercase;letter-spacing:-.015em;
  margin:1.4em 0 .6em;
}
.woocommerce-account .woocommerce-MyAccount-content > :first-child{margin-top:0}

/* Login and register forms */
.woocommerce-account .woocommerce-form-login,
.woocommerce-account .woocommerce-form-register{
  background:var(--cs-white);
  border:var(--cs-border);border-radius:var(--cs-radius);
  padding:26px 24px;max-width:520px;
}
.woocommerce-account .woocommerce-form-login__rememberme{display:inline-flex;align-items:center;gap:8px}

/* The account tables (orders, downloads, addresses) */
.woocommerce-account .woocommerce-orders-table,
.woocommerce-account .shop_table{width:100%}
.woocommerce-account .woocommerce-Addresses{display:flex;flex-wrap:wrap;gap:20px}
.woocommerce-account .woocommerce-Address{flex:1 1 260px;min-width:0}

@media (max-width:820px){
  .woocommerce-account .woocommerce{grid-template-columns:minmax(0,1fr)}
  .woocommerce-account .woocommerce-MyAccount-content{padding:20px 18px 22px}
}

/* No sidebar in this theme. With none registered, WordPress would otherwise
   print its default widgets (Search / Pages / Archives / Categories). */
.woocommerce-page .widget-area,
.woocommerce-page #secondary{display:none}



/* ============================================================================
   23  A–Ž SCENT INDEX — [cs_az]

   Names only. Not a shop page: no photos, no prices, no buttons. Multi-column
   so 50 scents fit in a couple of screens instead of fifty rows — the whole
   point is scanning for a name you half-remember.
   ========================================================================= */
/* The index brings its own paper band. Dropped straight onto the pink page
   background, small dark names are hard to read and the letter bar has
   nothing to sit against. */
.cs-az{
  background:var(--cs-paper);
  border-bottom:var(--cs-border);
  padding:8px var(--cs-pad) 70px;
  max-width:100vw;
}
.cs-az > *{max-width:var(--cs-max);margin-left:auto;margin-right:auto}

.cs-az__controls{
  display:flex;flex-wrap:wrap;gap:14px;align-items:center;
  padding:22px 0;
}
.cs-az__search{flex:1 1 280px;min-width:0}
.cs-az__search input{
  width:100%;padding:12px 14px;
  background:var(--cs-white);color:var(--cs-black);
  border:var(--cs-border);border-radius:var(--cs-radius);
  font-family:var(--cs-mono);font-size:14px;
}
.cs-az__search input:focus{outline:3px solid var(--cs-blue);outline-offset:2px}

.cs-az__count{
  margin:0;white-space:nowrap;
  font-family:var(--cs-mono);font-size:11px;font-weight:700;
  letter-spacing:.08em;text-transform:uppercase;color:var(--cs-ink-soft);
}

/* Letter bar follows you down the page. */
.cs-az__jump{
  position:sticky;top:64px;z-index:20;
  box-shadow:0 3px 0 var(--cs-black);
  display:flex;flex-wrap:wrap;
  background:var(--cs-white);
  border:var(--cs-border);border-radius:var(--cs-radius);
  overflow:hidden;
}
.cs-az__jump a{
  flex:1 1 auto;min-width:34px;padding:9px 4px;
  text-align:center;text-decoration:none;
  border-right:1px solid var(--cs-black);
  font-family:var(--cs-mono);font-size:12px;font-weight:700;
}
.cs-az__jump a:last-child{border-right:0}
.cs-az__jump a:hover{background:var(--cs-lime)}
.cs-az__jump a.is-empty{opacity:.25;pointer-events:none}

.cs-az__group{margin-top:30px}
.cs-az__group[hidden]{display:none}

.cs-az__letter{
  margin:0 0 8px;padding-bottom:6px;
  border-bottom:var(--cs-border);
  font-variation-settings:'wdth' 74,'wght' 900;
  font-size:30px;line-height:1;letter-spacing:-.03em;
}

/* Columns, not rows — 50 names shouldn't be 50 screens. */
.cs-az__list{
  list-style:none;margin:0;padding:0;
  columns:3;column-gap:26px;
}
.cs-az__row{break-inside:avoid;margin:0}
.cs-az__row[hidden]{display:none}

.cs-az__row > a{
  display:block;padding:7px 8px;margin-left:-8px;
  text-decoration:none;border-radius:var(--cs-radius);
}
.cs-az__row > a:hover{background:var(--cs-lime)}
.cs-az__row > a:focus-visible{outline:3px solid var(--cs-blue);outline-offset:-2px}

.cs-az__name{
  font-variation-settings:'wdth' 86,'wght' 800;
  font-size:17px;letter-spacing:-.01em;
}

/* Sold out is worth knowing at a glance, but shouldn't shout — the name is
   still the thing being scanned for. */
.cs-az__row.is-out .cs-az__name{opacity:.45}
.cs-az__out{
  margin-left:7px;padding:1px 5px;
  background:var(--cs-pink);color:var(--cs-white);
  font-family:var(--cs-mono);font-size:9px;font-weight:700;
  letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;
}

.cs-az__empty{
  margin:34px 0 0;padding:22px;text-align:center;
  background:var(--cs-white);border:var(--cs-border);border-radius:var(--cs-radius);
  font-family:var(--cs-mono);font-size:12px;letter-spacing:.06em;text-transform:uppercase;
}

@media (max-width:900px){
  .cs-az__list{columns:2}
}
@media (max-width:560px){
  .cs-az__list{columns:1}
  .cs-az__jump{top:56px}
  .cs-az__jump a{min-width:0;flex:1 1 26px;font-size:11px;padding:8px 2px}
  .cs-az__letter{font-size:26px}
  .cs-az__name{font-size:16px}
}

/* ============================================================================
   24  REVIEWS — [cs_reviews]

   A drag/arrow strip, not an auto-rotating carousel: moving text under
   someone mid-sentence is the quickest way to make them stop reading.
   Scroll-snap so cards land square, and the strip is focusable so it can be
   scrolled with the keyboard.
   ========================================================================= */
.cs-revs{
  background:var(--cs-paper);
  border-bottom:var(--cs-border);
  padding:56px 0 60px;
  max-width:100vw;overflow-x:clip;
}
.cs-revs__inner{max-width:var(--cs-max);margin:0 auto;padding:0 var(--cs-pad)}

.cs-revs__head{
  display:flex;flex-wrap:wrap;gap:18px;
  align-items:flex-end;justify-content:space-between;
  margin-bottom:28px;
}
.cs-revs__head h2{max-width:18ch}
.cs-revs__lead{
  margin:12px 0 0;max-width:46ch;
  font-size:16px;color:var(--cs-ink-soft);
}

.cs-revs__nav{display:flex;gap:8px}
.cs-revs__arrow{
  width:44px;height:44px;cursor:pointer;
  background:var(--cs-white);color:var(--cs-black);
  border:var(--cs-border);border-radius:var(--cs-radius);
  font-size:18px;line-height:1;
  transition:transform .12s ease,box-shadow .12s ease;
}
.cs-revs__arrow:hover:not(:disabled){transform:translate(-2px,-2px);box-shadow:4px 4px 0 var(--cs-black)}
.cs-revs__arrow:disabled{opacity:.3;cursor:default}
.cs-revs__arrow:focus-visible{outline:3px solid var(--cs-blue);outline-offset:3px}

.cs-revs__strip{
  display:flex;gap:var(--cs-gap);
  overflow-x:auto;
  scroll-snap-type:x mandatory;
  scroll-padding-left:0;
  padding-bottom:6px;
  /* The strip is a scroll container, so it needs no scrollbar chrome —
     the arrows and drag do the work. */
  scrollbar-width:none;
  cursor:grab;
}
.cs-revs__strip::-webkit-scrollbar{display:none}
.cs-revs__strip.is-dragging{cursor:grabbing;scroll-snap-type:none;user-select:none}
.cs-revs__strip:focus-visible{outline:3px solid var(--cs-blue);outline-offset:4px}

.cs-rev{
  flex:0 0 min(340px,80%);
  scroll-snap-align:start;
  display:flex;flex-direction:column;
  margin:0;padding:20px 20px 18px;
  background:var(--cs-white);
  border:var(--cs-border);border-radius:var(--cs-radius);
}
.cs-rev__badge{
  align-self:flex-start;margin-bottom:14px;padding:3px 7px;
  background:var(--cs-lime);color:var(--cs-black);
  font-family:var(--cs-mono);font-size:10px;font-weight:700;
  letter-spacing:.08em;text-transform:uppercase;
}
.cs-rev blockquote{
  margin:0 0 16px;
  font-size:16px;line-height:1.5;
}
.cs-rev blockquote::before{content:"„"}
.cs-rev blockquote::after{content:"“"}

.cs-rev figcaption{
  margin-top:auto;padding-top:14px;
  border-top:var(--cs-border);
  display:flex;align-items:baseline;justify-content:space-between;gap:10px;
}
.cs-rev__who{
  font-variation-settings:var(--cs-vf-head);
  font-size:15px;text-transform:uppercase;letter-spacing:-.01em;
}
.cs-rev__src{
  font-family:var(--cs-mono);font-size:10px;font-weight:700;
  letter-spacing:.08em;text-transform:uppercase;color:var(--cs-ink-soft);
}

.cs-revs__more{margin:26px 0 0}
.cs-shoplink{margin:26px 0 0}

/* Slight tilts, same language as the rest of the site. */
@media (min-width:900px){
  .cs-rev:nth-child(2n){transform:rotate(-.6deg)}
  .cs-rev:nth-child(3n){transform:rotate(.5deg)}
}
@media (max-width:700px){
  .cs-rev{flex-basis:min(300px,86%)}
  .cs-revs__nav{display:none}   /* swipe is the obvious gesture on touch */
}
@media (prefers-reduced-motion:reduce){
  .cs-rev{transform:none !important}
  .cs-revs__strip{scroll-behavior:auto}
}


/* ============================================================================
   25  TEXT PAGES — pogoji, politika zasebnosti, kontakt, blog

   Legal and informational pages are plain blocks. Without a container they
   render straight onto the pink body background: no padding, no readable
   measure, dark text on hot pink. This gives them a paper card and a proper
   line length. Pages built from the theme's patterns skip all of this — see
   page.php.
   ========================================================================= */
.cs-page{
  background:var(--cs-paper);
  border-bottom:var(--cs-border);
  padding:46px var(--cs-pad) 70px;
  max-width:100vw;
}
.cs-page__inner{max-width:860px;margin:0 auto}

.cs-page__title{
  font-variation-settings:'wdth' 74,'wght' 900;
  font-size:clamp(32px,5.4vw,58px);line-height:.96;letter-spacing:-.03em;
  margin:0 0 28px;
}

/* Long-form text. Measure capped around 70 characters — past that the eye
   loses its place returning to the start of the next line. */
.cs-prose{
  background:var(--cs-white);
  border:var(--cs-border);border-radius:var(--cs-radius);
  padding:32px 34px 36px;
  font-size:16px;line-height:1.65;
}
.cs-prose > *{max-width:70ch}

.cs-prose h1,.cs-prose h2,.cs-prose h3,.cs-prose h4{
  text-transform:none;letter-spacing:-.01em;
  margin:1.8em 0 .5em;line-height:1.2;
}
.cs-prose > :first-child{margin-top:0}
.cs-prose h2{font-variation-settings:'wdth' 88,'wght' 800;font-size:24px}
.cs-prose h3{font-variation-settings:'wdth' 90,'wght' 800;font-size:19px}
.cs-prose h4{font-variation-settings:'wdth' 92,'wght' 700;font-size:17px}

.cs-prose p{margin:0 0 1.1em}
.cs-prose ul,.cs-prose ol{margin:0 0 1.2em 1.3em;padding:0}
.cs-prose li{margin-bottom:.5em}
.cs-prose strong,.cs-prose b{font-weight:700}

.cs-prose a{color:var(--cs-black);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:2px}
.cs-prose a:hover{background:var(--cs-lime)}

.cs-prose blockquote{
  margin:1.4em 0;padding:14px 18px;
  background:var(--cs-paper);border-left:var(--cs-border);
}
.cs-prose hr{border:0;border-top:var(--cs-border);margin:2em 0}
.cs-prose table{width:100%;border-collapse:collapse;margin:0 0 1.4em;font-size:15px}
.cs-prose th,.cs-prose td{border:1px solid var(--cs-black);padding:8px 10px;text-align:left}
.cs-prose th{background:var(--cs-paper);font-weight:700}
.cs-prose img{border:var(--cs-border);border-radius:var(--cs-radius);margin:1.2em 0}
.cs-prose code{
  background:var(--cs-paper);border:1px solid var(--cs-black);
  padding:1px 5px;font-family:var(--cs-mono);font-size:14px;
}

/* Blog listing */
.cs-entry{margin-bottom:30px}
.cs-entry__title{
  font-variation-settings:'wdth' 84,'wght' 800;
  font-size:26px;margin:0 0 12px;text-transform:none;letter-spacing:-.02em;
}
.cs-entry__title a{text-decoration:none}
.cs-entry__title a:hover{background:var(--cs-lime)}

.wp-block-post-title,
.woocommerce-page .cs-page__title{margin-bottom:24px}

@media (max-width:700px){
  .cs-prose{padding:22px 20px 26px}
  .cs-page{padding-top:34px}

  /* The shop title sat tighter than every other page's, and once the filters
     became bordered bars the two ran into each other. Give the archive the
     same title-to-content rhythm the rest of the site has. */
  .woocommerce-page .cs-page__title{margin-bottom:30px}
  .cs-filters__row:first-of-type{margin-top:8px}
}


/* --- Pieces used by long-form / SEO pages --- */
.cs-eyebrow{
  margin:0 0 10px !important;
  font-family:var(--cs-mono);font-size:11px;font-weight:700;
  letter-spacing:.1em;text-transform:uppercase;color:var(--cs-ink-soft);
}
.cs-lede{
  max-width:52ch !important;margin:0 0 26px !important;
  font-size:19px;font-weight:500;line-height:1.45;
}
.cs-section > p{max-width:70ch !important;margin-bottom:1.1em !important}
.cs-section > h3{margin:1.6em 0 .6em !important;text-transform:none;font-size:20px}
/* Prose lists get a reading measure — but NOT the product grid or the A–Ž
   index, which are also <ul> and must stay full width. */
.cs-section > ul:not(.cs-grid):not(.cs-az__list):not(.cs-chips),
.cs-section > ol{max-width:70ch !important;margin:0 0 1.2em 1.3em !important}
.cs-section li{margin-bottom:.4em}
.cs-section > ul.cs-grid,
.cs-section .cs-grid{max-width:none !important;margin:0 !important;padding:0 !important}
.cs-section .cs-grid li{margin-bottom:0}

/* Ingredient chips */
.cs-chips{list-style:none;display:flex;flex-wrap:wrap;gap:8px;margin:0 !important;padding:0 !important}
.cs-chips li{
  margin:0;padding:6px 10px;
  background:var(--cs-lime);border:2px solid var(--cs-black);border-radius:var(--cs-radius);
  font-family:var(--cs-mono);font-size:11px;font-weight:700;
  letter-spacing:.06em;text-transform:uppercase;
}

/* Lists inside comparison tiles */
.cs-tile ul{margin:0 0 0 1.1em;padding:0}
.cs-tile li{margin-bottom:.4em;font-size:15px;color:var(--cs-ink-soft)}

.cs-inline-links{
  margin-top:26px !important;font-size:15px;
}
.cs-inline-links a{
  text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:2px;
}
.cs-inline-links a:hover{background:var(--cs-lime)}

/* The tile grids come from wp:group on these pages, so the block wrapper
   needs the same treatment the shortcode markup gets. */
.cs-section .cs-tiles{display:flex;flex-wrap:wrap;gap:var(--cs-gap);margin:8px 0 0}
.cs-section .cs-tiles > .wp-block-group{
  flex:1 1 210px;min-width:0;max-width:100%;
  padding:20px 18px 22px;
  background:var(--cs-paper);
  border:var(--cs-border);border-radius:var(--cs-radius);
}
.cs-section--paper .cs-tiles > .wp-block-group{background:var(--cs-white)}
.cs-section .cs-tiles > .wp-block-group > h3{margin:0 0 8px !important;text-transform:uppercase;font-size:19px}
.cs-section .cs-tiles > .wp-block-group > p{max-width:none !important;font-size:15px;color:var(--cs-ink-soft)}
.cs-section .cs-tiles--steps > .wp-block-group{flex-basis:240px;background:var(--cs-white)}


/* ============================================================================
   26  CLASSIC CART & CHECKOUT

   The block cart/checkout is styled in §19. This covers the classic shortcode
   templates, which is what this store actually uses. WooCommerce's own
   stylesheet loads after the theme's, so the payment box and place-order
   button need the extra weight.
   ========================================================================= */

/* --- Form fields --- */
.woocommerce form .form-row label{
  display:block;margin-bottom:6px;
  font-family:var(--cs-mono);font-size:11px;font-weight:700;
  letter-spacing:.07em;text-transform:uppercase;
}
.woocommerce form .form-row .required{color:var(--cs-pink);text-decoration:none}
.woocommerce form .form-row input.input-text,
.woocommerce form .form-row textarea,
.woocommerce form .form-row select,
.woocommerce .select2-container .select2-selection--single{
  width:100%;padding:11px 12px;
  background:var(--cs-white);color:var(--cs-black);
  border:var(--cs-border);border-radius:var(--cs-radius);
  font-family:var(--cs-mono);font-size:13px;height:auto;
}
.woocommerce form .form-row input.input-text:focus,
.woocommerce form .form-row textarea:focus,
.woocommerce form .form-row select:focus{outline:3px solid var(--cs-blue);outline-offset:-3px}
.woocommerce .select2-container--default .select2-selection--single .select2-selection__rendered{
  line-height:1.4;padding:0;color:var(--cs-black);
}
.woocommerce .select2-container--default .select2-selection--single .select2-selection__arrow{top:8px;right:8px}
.woocommerce-input-wrapper{width:100%}

/* --- Section headings --- */
.woocommerce-billing-fields > h3,
.woocommerce-shipping-fields > h3,
.woocommerce-additional-fields > h3,
#order_review_heading,
.woocommerce-order-details__title,
.woocommerce-column__title,
.cart_totals > h2{
  margin:0 0 18px;
  font-variation-settings:var(--cs-vf-head);
  font-size:22px;text-transform:uppercase;letter-spacing:-.02em;
}
.woocommerce-shipping-fields h3 label{
  font-family:var(--cs-font);font-variation-settings:var(--cs-vf-head);
  font-size:22px;letter-spacing:-.02em;
}

/* --- Coupon --- */
.woocommerce-form-coupon-toggle .woocommerce-info,
.woocommerce form.checkout_coupon{
  background:var(--cs-lime);color:var(--cs-black);
  border:var(--cs-border);border-radius:var(--cs-radius);
}
.woocommerce form.checkout_coupon{padding:18px}

/* --- Order review table --- */
.woocommerce table.shop_table{
  /* Explicit, not inherited from WooCommerce. A table without a width sizes
     to its content, so a cart with short product names rendered narrower
     than the checkout beside it. */
  width:100%;
  table-layout:auto;
  background:var(--cs-white);
  border:var(--cs-border);border-radius:var(--cs-radius);
  border-collapse:separate;border-spacing:0;
}
.woocommerce table.cart,
.woocommerce-cart-form,
.woocommerce-cart-form__contents{width:100%}

/* The product name column takes the slack, so the table always fills the
   row whatever the names happen to be. */
.woocommerce table.cart td.product-name,
.woocommerce table.cart th.product-name{width:auto}
.woocommerce table.cart td.product-thumbnail,
.woocommerce table.cart td.product-remove{width:1%;white-space:nowrap}
.woocommerce table.shop_table th{
  background:var(--cs-black);color:var(--cs-lime);
  padding:12px 14px;border:0;
  font-family:var(--cs-mono);font-size:11px;font-weight:700;
  letter-spacing:.08em;text-transform:uppercase;
}
.woocommerce table.shop_table td{
  padding:12px 14px;
  border-top:1px solid var(--cs-black);
  font-size:15px;
}
.woocommerce table.shop_table tfoot th,
.woocommerce table.shop_table tfoot td{
  background:var(--cs-paper);color:var(--cs-black);
  border-top:var(--cs-border);
  font-family:var(--cs-font);font-variation-settings:var(--cs-vf-head);
  font-size:15px;text-transform:uppercase;letter-spacing:-.01em;
}
.woocommerce table.shop_table tfoot tr.order-total th,
.woocommerce table.shop_table tfoot tr.order-total td{
  font-variation-settings:'wdth' 86,'wght' 900;font-size:20px;
}
.woocommerce table.shop_table .product-name{font-variation-settings:var(--cs-vf-head);text-transform:uppercase;letter-spacing:-.01em}
.woocommerce table.shop_table .variation{
  margin:4px 0 0;
  font-family:var(--cs-mono);font-size:11px;letter-spacing:.04em;color:var(--cs-ink-soft);
}
.woocommerce table.shop_table .variation dt,
.woocommerce table.shop_table .variation dd{display:inline;margin:0}
.woocommerce table.shop_table .variation p{margin:0}

/* --- Payment box ---
   Woo's default here is a lavender-grey panel with rounded corners and a
   little arrow. All of it needs replacing, and Woo's stylesheet wins on
   specificity without !important. */
.woocommerce #payment,
.woocommerce-checkout #payment{
  background:var(--cs-white) !important;
  border:var(--cs-border);border-radius:var(--cs-radius) !important;
  padding:6px;
}
.woocommerce #payment ul.payment_methods{
  padding:14px 16px;margin:0;
  border-bottom:var(--cs-border);
}
.woocommerce #payment ul.payment_methods li{
  margin:0;padding:10px 0;list-style:none;
}
.woocommerce #payment ul.payment_methods li + li{border-top:1px solid var(--cs-black)}
.woocommerce #payment ul.payment_methods label{
  font-variation-settings:var(--cs-vf-head);
  font-size:16px;text-transform:uppercase;letter-spacing:-.01em;
  cursor:pointer;
}
.woocommerce #payment ul.payment_methods input[type=radio]{
  accent-color:var(--cs-pink);width:18px;height:18px;margin-right:8px;
}
.woocommerce #payment div.payment_box{
  background:var(--cs-paper) !important;
  border:2px solid var(--cs-black);border-radius:var(--cs-radius);
  color:var(--cs-ink-soft);font-size:14px;
  margin:10px 0 0;padding:12px 14px;
}
/* Woo draws a CSS triangle above the payment box. */
.woocommerce #payment div.payment_box::before{display:none !important}

.woocommerce #payment .place-order{padding:16px;margin:0}
.woocommerce-privacy-policy-text{font-size:14px;color:var(--cs-ink-soft)}
.woocommerce-privacy-policy-text a,
.woocommerce-terms-and-conditions-link{
  color:var(--cs-black);text-decoration:underline;
  text-underline-offset:3px;text-decoration-thickness:2px;
}
.woocommerce form .form-row.woocommerce-validated input.input-text{border-color:var(--cs-black)}
.woocommerce form .form-row.woocommerce-invalid input.input-text{border-color:var(--cs-pink)}

.woocommerce-terms-and-conditions-wrapper .woocommerce-form__label-for-checkbox{
  display:flex;align-items:flex-start;gap:10px;
  font-family:var(--cs-font);font-size:15px;
  text-transform:none;letter-spacing:0;font-weight:500;
}
.woocommerce form .form-row input[type=checkbox]{
  width:18px;height:18px;accent-color:var(--cs-pink);margin:0;
}

/* --- Place order --- */
.woocommerce #place_order,
.woocommerce #payment #place_order{
  width:100%;float:none;
  background:var(--cs-black) !important;color:var(--cs-lime) !important;
  border:var(--cs-border);border-radius:var(--cs-radius);
  padding:16px 22px;
  font-family:var(--cs-font);font-variation-settings:var(--cs-vf-ui);
  font-size:20px;text-transform:uppercase;
  box-shadow:var(--cs-shadow);
  transition:transform var(--cs-ease),box-shadow var(--cs-ease);
}
.woocommerce #place_order:hover{transform:translate(3px,3px);box-shadow:2px 2px 0 var(--cs-black)}

/* --- Cart page ---
   Woo splits .cart-collaterals into two 48% floats: cross-sells left,
   totals right. With no cross-sells the left half is dead space, so the
   totals take the full width instead. */
.woocommerce .cart-collaterals{display:block;width:100%}
.woocommerce .cart-collaterals::before,
.woocommerce .cart-collaterals::after{display:none}
.woocommerce .cart-collaterals .cross-sells{width:100%;float:none;margin-bottom:34px}
.woocommerce .cart-collaterals .cart_totals{
  width:100% !important;float:none !important;
  max-width:none;margin:0;
}
.woocommerce .cart_totals table.shop_table{width:100%}

/* Coupon row + update button */
.woocommerce table.cart td.actions{padding:14px}
.woocommerce table.cart td.actions .coupon{display:flex;gap:10px;flex-wrap:wrap;float:none}
.woocommerce table.cart td.actions .coupon input.input-text{
  max-width:220px;padding:10px 12px;
  border:var(--cs-border);border-radius:var(--cs-radius);
  font-family:var(--cs-mono);font-size:13px;
}
.woocommerce table.cart td.actions .button,
.woocommerce table.cart td.actions .button:disabled,
.woocommerce table.cart td.actions .button[disabled]{
  background:var(--cs-black) !important;color:var(--cs-lime) !important;
  border:var(--cs-border);border-radius:var(--cs-radius);
  padding:10px 14px;min-width:0;
  font-family:var(--cs-font);font-variation-settings:var(--cs-vf-ui);
  font-size:14px;text-transform:uppercase;box-shadow:none;opacity:1;
}
.woocommerce table.cart td.actions .button:disabled{opacity:.35}

/* Proceed to checkout */
.woocommerce .wc-proceed-to-checkout{padding:18px 0 0}
.woocommerce .wc-proceed-to-checkout a.checkout-button{
  display:block;width:100%;text-align:center;
  background:var(--cs-black) !important;color:var(--cs-lime) !important;
  border:var(--cs-border);border-radius:var(--cs-radius);
  padding:16px 22px;
  font-family:var(--cs-font);font-variation-settings:var(--cs-vf-ui);
  font-size:18px;text-transform:uppercase;
  box-shadow:var(--cs-shadow);
  transition:transform var(--cs-ease),box-shadow var(--cs-ease);
}
.woocommerce .wc-proceed-to-checkout a.checkout-button:hover{
  transform:translate(3px,3px);box-shadow:2px 2px 0 var(--cs-black);
}

/* --- Cart page --- */
.woocommerce table.cart img{width:64px;border:var(--cs-border);border-radius:var(--cs-radius)}
.woocommerce table.cart td.product-remove a.remove{
  color:var(--cs-black) !important;font-size:22px;
}
.woocommerce table.cart td.product-remove a.remove:hover{background:var(--cs-pink);color:var(--cs-white) !important}
.woocommerce .cart-collaterals .cart_totals table.shop_table{width:100%}

@media (max-width:760px){
  .woocommerce table.cart td.actions .coupon input.input-text{max-width:none;flex:1 1 100%}
  .woocommerce #payment .place-order{padding:14px}
  .woocommerce table.shop_table td{padding:10px}
}


/* ============================================================================
   27  PROMO POPUP + SALE PRICING
   ========================================================================= */

/* --- Sale price on cards --- */
.cs-card__price del,
.woocommerce div.product p.price del{
  opacity:.7;font-size:.9em;margin-right:6px;text-decoration:line-through;
}
.cs-card__price ins,
.woocommerce div.product p.price ins{text-decoration:none;background:none}

/* The discount badge. Woo prints "Sale!"; the theme replaces it with the
   actual percentage, which is far more persuasive than the word.
   Top-RIGHT so it never collides with the collection tag, and large enough
   to read at card size — a discount nobody notices isn't a discount. */
.cs-card__sale,
.woocommerce span.onsale,
.wc-block-grid__product-onsale{
  position:absolute;
  right:-6px;top:10px;
  left:auto !important;
  z-index:4;
  margin:0;padding:6px 12px;
  min-width:0;min-height:0;line-height:1.15;
  background:var(--cs-pink) !important;
  color:var(--cs-white) !important;
  border:var(--cs-border) !important;
  border-radius:var(--cs-radius) !important;
  font-family:var(--cs-font) !important;
  font-variation-settings:'wdth' 86,'wght' 900;
  font-size:17px !important;
  letter-spacing:-.01em;
  text-transform:uppercase;
  transform:rotate(-5deg);
  box-shadow:3px 3px 0 var(--cs-black);
  white-space:nowrap;
}

/* Bigger still on the product page, where there's room. */
.woocommerce div.product > .woocommerce-product-gallery span.onsale{
  right:-8px;top:14px;
  padding:8px 16px;
  font-size:22px !important;
  box-shadow:4px 4px 0 var(--cs-black);
}

@media (max-width:560px){
  .cs-card__sale,
  .woocommerce span.onsale{
    font-size:14px !important;padding:5px 9px;right:-4px;top:8px;
  }
}

/* --- Popup --- */
.cs-promo{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;padding:20px}
.cs-promo[hidden]{display:none}
.cs-promo__backdrop{position:absolute;inset:0;background:rgba(14,14,16,.72)}
.cs-promo__confetti{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}

.cs-promo__card{
  position:relative;z-index:2;
  width:100%;max-width:440px;
  padding:34px 30px 30px;
  background:var(--cs-pink);color:var(--cs-black);
  border:var(--cs-border);border-radius:var(--cs-radius);
  box-shadow:10px 10px 0 var(--cs-black);
  text-align:left;
}
.cs-promo__x{
  position:absolute;top:10px;right:12px;
  width:34px;height:34px;cursor:pointer;
  background:transparent;border:0;
  font-size:28px;line-height:1;color:var(--cs-black);
}
.cs-promo__x:hover{background:var(--cs-black);color:var(--cs-lime)}
.cs-promo__x:focus-visible{outline:3px solid var(--cs-blue);outline-offset:2px}

.cs-promo__kicker{
  display:inline-block;margin-bottom:12px;padding:3px 7px;
  background:var(--cs-black);color:var(--cs-lime);
  font-family:var(--cs-mono);font-size:10px;font-weight:700;
  letter-spacing:.09em;text-transform:uppercase;
}
.cs-promo__title{
  font-variation-settings:'wdth' 74,'wght' 900;
  font-size:clamp(34px,7vw,46px);line-height:.94;letter-spacing:-.03em;
  text-transform:uppercase;margin:0 0 12px;
}
.cs-promo__text{margin:0 0 20px;font-size:16px;font-weight:500;max-width:32ch}

.cs-promo__code{
  display:block;width:100%;margin:0 0 18px;padding:12px 14px;cursor:pointer;
  background:var(--cs-white);
  border:var(--cs-border);border-radius:var(--cs-radius);
  text-align:left;font-family:var(--cs-font);
  transition:transform .12s ease,box-shadow .12s ease;
}
.cs-promo__code:hover{transform:translate(-2px,-2px);box-shadow:4px 4px 0 var(--cs-black)}
.cs-promo__code:focus-visible{outline:3px solid var(--cs-blue);outline-offset:3px}
.cs-promo__code-label,
.cs-promo__code-hint{
  display:block;
  font-family:var(--cs-mono);font-size:10px;font-weight:700;
  letter-spacing:.09em;text-transform:uppercase;color:var(--cs-ink-soft);
}
.cs-promo__code-val{
  display:block;margin:4px 0;
  font-variation-settings:'wdth' 86,'wght' 900;
  font-size:26px;letter-spacing:.02em;
}
.cs-promo__code.is-copied .cs-promo__code-hint::after{content:" ✓ kopirano"}

.cs-promo__cta{display:block;text-align:center;box-shadow:5px 5px 0 var(--cs-white)}
.cs-promo__cta:hover{box-shadow:2px 2px 0 var(--cs-white)}

@media (max-width:520px){
  .cs-promo{padding:14px}
  .cs-promo__card{padding:28px 20px 22px;box-shadow:6px 6px 0 var(--cs-black)}
}
@media (prefers-reduced-motion:reduce){
  .cs-promo__confetti{display:none}
  .cs-promo__code:hover{transform:none}
}


/* ============================================================================
   28  CONTACT — [cs_kontakt]
   ========================================================================= */
.cs-ways{display:flex;flex-wrap:wrap;gap:var(--cs-gap)}

.cs-way{
  flex:1 1 260px;min-width:0;max-width:100%;
  display:flex;flex-direction:column;
  padding:22px 20px 24px;text-decoration:none;
  background:var(--cs-paper);
  border:var(--cs-border);border-radius:var(--cs-radius);
  transition:transform var(--cs-ease),box-shadow var(--cs-ease);
}
.cs-way:hover{transform:translate(-3px,-3px);box-shadow:6px 6px 0 var(--cs-black)}
.cs-way:focus-visible{outline:3px solid var(--cs-blue);outline-offset:3px}

/* Instagram is the preferred route, so it gets the lime card. */
.cs-way--first{background:var(--cs-lime)}
.cs-way--first .cs-way__tag{background:var(--cs-black);color:var(--cs-lime)}

.cs-way__tag{
  align-self:flex-start;margin-bottom:14px;padding:3px 7px;
  background:var(--cs-lime);color:var(--cs-black);
  border:2px solid var(--cs-black);
  font-family:var(--cs-mono);font-size:10px;font-weight:700;
  letter-spacing:.08em;text-transform:uppercase;
}
.cs-way h3{margin:0 0 6px;font-size:21px}
.cs-way__val{
  font-variation-settings:'wdth' 86,'wght' 900;
  font-size:19px;word-break:break-word;
}
.cs-way p{margin:8px 0 0;font-size:14px;color:var(--cs-ink-soft)}
.cs-way--first p{color:#2A2A32}
.cs-way__go{
  align-self:flex-start;margin-top:auto;padding-top:14px;
  font-family:var(--cs-mono);font-size:11px;font-weight:700;
  letter-spacing:.08em;text-transform:uppercase;
  border-bottom:3px solid currentColor;
}
.cs-way:hover .cs-way__go{background:var(--cs-black);color:var(--cs-lime)}
.cs-way--first:hover .cs-way__go{background:var(--cs-black);color:var(--cs-lime)}

/* Info cards don't hover — they aren't links. */
.cs-way--static{background:var(--cs-white);cursor:default}
.cs-way--static:hover{transform:none;box-shadow:none}
.cs-way--static address{font-style:normal;font-size:15px;line-height:1.8}
.cs-way--static ul{list-style:none;margin:0;padding:0;font-size:15px;line-height:2}
.cs-way--static a{
  text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:2px;
}
.cs-way--static a:hover{background:var(--cs-lime)}

/* Response-time strip. Same black band as the marquee, but it holds still —
   a promise is not something to scroll past. */
.cs-marq--static{
  padding:20px var(--cs-pad);text-align:center;
  background:var(--cs-black);color:var(--cs-lime);
}
.cs-marq--static p{
  margin:0;
  font-variation-settings:'wdth' 80,'wght' 800;
  font-size:clamp(18px,2.6vw,26px);text-transform:uppercase;letter-spacing:-.01em;
}
.cs-marq--static small{
  display:block;margin-top:8px;
  font-family:var(--cs-mono);font-size:11px;letter-spacing:.08em;
  text-transform:uppercase;color:#8A8A96;
}

/* One per row: two columns meant opening a card shoved its neighbour. */
.cs-kontakt-faq{max-width:820px}
.cs-kontakt-faq .cs-q{margin-bottom:12px}
.cs-kontakt-faq .cs-q:last-child{margin-bottom:0}

@media (max-width:700px){
  .cs-way:hover{transform:none;box-shadow:none}
}


/* ============================================================================
   29  SHAPE FILTER — pills above the shop grid

   Multi-select. Each pill carries the cheapest current price in that group,
   computed live rather than banded so it follows sales instead of going
   stale. Deliberately compact: this is a control, not a section — it sits
   above the grid without competing with the products.
   ========================================================================= */
/* Each row is a <details>: the heading is the summary, the pills are the
   content. Flex on the <details> keeps heading and pills on one line at
   desktop widths, exactly as before it became collapsible. */
.cs-filters__row{
  display:flex;flex-wrap:wrap;align-items:center;gap:8px;
  width:100%;margin:0 0 12px;padding:0;
  background:none;border:0;
}
.cs-filters__row:last-of-type{margin-bottom:20px}

.cs-filters__sum{
  display:inline-flex;align-items:center;gap:7px;
  list-style:none;cursor:pointer;
  font-family:var(--cs-mono);font-size:10px;font-weight:700;
  letter-spacing:.09em;text-transform:uppercase;color:var(--cs-ink-soft);
}
.cs-filters__sum::-webkit-details-marker{display:none}
.cs-filters__sum::after{
  content:"+";font-family:var(--cs-mono);font-weight:700;font-size:15px;
  line-height:1;color:var(--cs-black);
}
.cs-filters__row[open] .cs-filters__sum::after{content:"\2013"}
.cs-filters__sum:focus-visible{outline:3px solid var(--cs-blue);outline-offset:3px}

/* What the row is filtering by, so a folded row can never hide the fact that
   the grid is narrowed. */
.cs-filters__state{
  color:var(--cs-black);text-transform:none;letter-spacing:.02em;
}

/* Desktop: not a control. No marker, and it cannot be folded. */
@media (min-width:701px){
  .cs-filters__sum{cursor:default}
  .cs-filters__sum::after{display:none}
}

.cs-shapes__pills{display:flex;flex-wrap:wrap;gap:6px}

.cs-shape{
  display:inline-flex;align-items:baseline;gap:7px;
  padding:6px 11px;text-decoration:none;
  background:var(--cs-white);color:var(--cs-black);
  border:2px solid var(--cs-black);border-radius:var(--cs-radius);
  line-height:1.2;
  transition:background-color .12s ease,color .12s ease;
}
.cs-shape:hover{background:var(--cs-lime)}
.cs-shape:focus-visible{outline:3px solid var(--cs-blue);outline-offset:2px}
.cs-shape.is-on{background:var(--cs-black);color:var(--cs-lime);border-color:var(--cs-black)}

.cs-shape__name{
  font-variation-settings:'wdth' 88,'wght' 800;
  font-size:13px;text-transform:uppercase;letter-spacing:-.005em;
}
.cs-shape__from{
  font-family:var(--cs-mono);font-size:10px;font-weight:500;
  letter-spacing:.02em;color:var(--cs-ink-soft);white-space:nowrap;
}
.cs-shape:hover .cs-shape__from{color:var(--cs-black)}
.cs-shape.is-on .cs-shape__from{color:var(--cs-lime);opacity:.75}

@media (max-width:700px){
  .cs-filters__row{gap:6px;margin-bottom:8px}
  .cs-filters__row:last-of-type{margin-bottom:16px}
  /* A real tap target, and wide enough that the pills sit under it rather
     than beside it. */
  .cs-filters__sum{
    width:100%;justify-content:space-between;
    padding:9px 11px;font-size:11px;color:var(--cs-black);
    background:var(--cs-white);
    border:2px solid var(--cs-black);border-radius:var(--cs-radius);
  }
  .cs-filters__row[open] .cs-filters__sum{background:var(--cs-lime)}
  .cs-shapes__pills{width:100%}
  .cs-shape{padding:6px 9px}
  .cs-shape__name{font-size:12px}
  .cs-shape__from{font-size:9px}
}


/* ============================================================================
   30  PRICE

   The theme renders ONE price element (#cs-price) in inc/single-product.php,
   built from raw numbers, and hides WooCommerce's two — the summary range and
   the variation price. Earlier versions tried to style Woo's markup from CSS,
   but omnibus plugins inject their sentence inside whichever element they can
   reach, so there was no selector that reliably meant "the number".
   ========================================================================= */
.woocommerce div.product > .summary > p.price,
.woocommerce div.product .woocommerce-variation-price{display:none !important}

.cs-price{
  display:block;margin:18px 0 0;
  font-variation-settings:'wdth' 86,'wght' 900;
  font-size:34px;line-height:1.1;letter-spacing:-.01em;
  color:var(--cs-black);
}
.cs-price__pre{
  font-family:var(--cs-mono);font-size:13px;font-weight:700;
  font-variation-settings:normal;letter-spacing:.06em;text-transform:uppercase;
  color:var(--cs-ink-soft);vertical-align:middle;
}
.cs-price del,
.cs-price del *{
  color:var(--cs-ink-soft);opacity:.55;
  font-size:.62em;text-decoration:line-through;margin-right:6px;
}
.cs-price__now{white-space:nowrap}
.cs-price bdi{white-space:nowrap}

.cs-price__omnibus{
  margin:6px 0 0;
  font-family:var(--cs-mono);font-size:11px;font-weight:400;
  line-height:1.4;letter-spacing:.02em;color:var(--cs-ink-soft);
}

/* Cards: hide anything a plugin adds inside the price. */
.cs-card__price .wc-price-history,
.cs-card__price .woocommerce-price-history,
.cs-card__price .wc-gzd-additional-info,
.cs-card__price .omnibus-price,
.cs-card__price .wc-omnibus-price,
.cs-card__price small,
.cs-card__price > *:not(bdi):not(del):not(ins):not(.woocommerce-Price-amount):not(.woocommerce-Price-currencySymbol){
  display:none !important;
}
.cs-card__price .screen-reader-text,
.woocommerce .price .screen-reader-text{
  position:absolute !important;width:1px !important;height:1px !important;
  overflow:hidden !important;clip:rect(0 0 0 0) !important;white-space:nowrap !important;
}

/* ============================================================================
   30b  PRODUCT DESCRIPTION

   Mono throughout, at a readable size. Previously the description inherited
   whatever the price rules had done to its neighbours, so one product read in
   mono and the next in Archivo.
   ========================================================================= */
.woocommerce-product-details__short-description,
.woocommerce-product-details__short-description p,
.woocommerce-product-details__short-description li,
.cs-q__in,
.cs-q__in p,
.cs-q__in li{
  font-family:var(--cs-mono) !important;
  font-size:13.5px;
  line-height:1.65;
  letter-spacing:.01em;
  color:var(--cs-ink-soft);
}
.woocommerce-product-details__short-description{margin-top:18px;max-width:62ch}
.woocommerce-product-details__short-description p{margin:0 0 .9em}
.woocommerce-product-details__short-description p:last-child{margin:0}
.cs-q__in strong,
.woocommerce-product-details__short-description strong{font-weight:700;color:var(--cs-black)}


/* ============================================================================
   31  SCENT QUIZ — [cs_kviz]
   ========================================================================= */
.cs-kviz{max-width:780px;margin:0 auto;padding:72px var(--cs-pad) 96px}

.cs-kviz__intro{text-align:center;margin-bottom:40px}
.cs-kviz__title{
  font-variation-settings:'wdth' 72,'wght' 900;
  font-size:clamp(34px,7vw,68px);line-height:.92;letter-spacing:-.03em;
  text-transform:uppercase;
}
.cs-kviz__lede{
  max-width:44ch;margin:18px auto 0;padding:14px 16px;
  background:var(--cs-white);border:var(--cs-border);border-radius:var(--cs-radius);
  font-size:17px;font-weight:500;text-align:left;transform:rotate(-.4deg);
}
.cs-kviz__dots{display:flex;gap:6px;justify-content:center;margin-top:28px}
.cs-kviz__dots i{width:38px;height:8px;display:block;background:var(--cs-white);border:2px solid var(--cs-black)}
.cs-kviz__dots i.is-on{background:var(--cs-black)}
.cs-kviz.is-spinning .cs-kviz__lede,
.cs-kviz.is-spinning .cs-kviz__dots{display:none}

.cs-kviz__q{
  display:none;
  background:var(--cs-white);border:var(--cs-border);border-radius:var(--cs-radius);
  padding:32px 28px 30px;box-shadow:var(--cs-shadow);
}
.cs-kviz__q.is-on{display:block}
.cs-kviz__kicker{
  font-family:var(--cs-mono);font-size:11px;font-weight:700;
  letter-spacing:.09em;text-transform:uppercase;color:var(--cs-ink-soft);
}
.cs-kviz__q h3{
  font-variation-settings:'wdth' 76,'wght' 900;
  font-size:clamp(24px,4.4vw,36px);line-height:.98;letter-spacing:-.03em;
  margin:8px 0 6px;text-transform:uppercase;
}
.cs-kviz__hint{color:var(--cs-ink-soft);font-size:15px;margin-bottom:20px}

.cs-kviz__opts{display:flex;flex-wrap:wrap;gap:10px}
.cs-kviz__opt{
  flex:1 1 190px;min-width:0;text-align:left;cursor:pointer;
  padding:14px;font-family:var(--cs-font);
  background:var(--cs-paper);color:var(--cs-black);
  border:var(--cs-border);border-radius:var(--cs-radius);
  transition:transform .12s ease,box-shadow .12s ease;
}
.cs-kviz__opt:hover{transform:translate(-2px,-2px);box-shadow:4px 4px 0 var(--cs-black)}
.cs-kviz__opt:focus-visible{outline:3px solid var(--cs-blue);outline-offset:3px}
.cs-kviz__opt[aria-pressed="true"]{background:var(--cs-black);color:var(--cs-lime)}
.cs-kviz__opt .t{
  display:block;font-variation-settings:'wdth' 86,'wght' 800;
  font-size:17px;text-transform:uppercase;letter-spacing:-.01em;
}
.cs-kviz__opt .s{display:block;margin-top:3px;font-size:13px;color:var(--cs-ink-soft)}
.cs-kviz__opt[aria-pressed="true"] .s{color:#C9C9D2}

.cs-kviz__foot{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin-top:22px}
.cs-kviz__skip{
  background:none;border:0;cursor:pointer;
  font-family:var(--cs-mono);font-size:11px;font-weight:700;
  letter-spacing:.08em;text-transform:uppercase;
  text-decoration:underline;text-underline-offset:3px;
}
.cs-kviz .cs-btn:disabled{opacity:.35;cursor:not-allowed;transform:none;box-shadow:none}

.cs-kviz__wheelwrap{display:none;text-align:center}
.cs-kviz__wheelwrap.is-on{display:block}
.cs-kviz__wheelbox{position:relative;width:min(320px,78vw);aspect-ratio:1;margin:0 auto}
.cs-kviz__wheel{
  width:100%;height:100%;border-radius:50%;
  border:var(--cs-border);will-change:transform;
  transition:transform 4s cubic-bezier(.15,.9,.2,1);
}
.cs-kviz__wheelbox::after{
  content:"";position:absolute;left:50%;top:50%;z-index:2;
  width:54px;height:54px;margin:-27px 0 0 -27px;
  background:var(--cs-white);border:var(--cs-border);border-radius:50%;
}
.cs-kviz__pointer{
  position:absolute;top:-14px;left:50%;transform:translateX(-50%);z-index:3;
  width:0;height:0;
  border-left:14px solid transparent;border-right:14px solid transparent;
  border-top:24px solid var(--cs-black);
}
.cs-kviz__spinmsg{
  margin-top:20px;
  font-family:var(--cs-mono);font-size:12px;letter-spacing:.08em;
  text-transform:uppercase;color:var(--cs-black);
}

.cs-kviz__res{display:none}
.cs-kviz__res[hidden]{display:none !important}
.cs-kviz__res.is-on{display:block}
.cs-kviz__reshead{text-align:center;margin-bottom:22px}
.cs-kviz__reshead h3{
  font-variation-settings:'wdth' 74,'wght' 900;
  font-size:clamp(26px,5vw,44px);line-height:.96;text-transform:uppercase;
}
.cs-kviz__reshead p{margin-top:10px;font-size:16px}

.cs-kviz__picks{display:flex;flex-direction:column;gap:10px}
.cs-kviz__pick{
  display:flex;align-items:center;gap:14px;padding:12px 14px;
  background:var(--cs-white);border:var(--cs-border);border-radius:var(--cs-radius);
  opacity:0;transform:translateY(8px);
  animation:cs-kviz-in .35s ease forwards;
}
@keyframes cs-kviz-in{to{opacity:1;transform:none}}

.cs-kviz__img{
  width:56px;height:56px;flex:0 0 auto;object-fit:cover;
  background:var(--cs-paper);
  border:2px solid var(--cs-black);border-radius:var(--cs-radius);
}
.cs-kviz__nm{flex:1 1 auto;min-width:0}
.cs-kviz__nm b{
  display:block;font-variation-settings:'wdth' 86,'wght' 800;
  font-size:17px;text-transform:uppercase;letter-spacing:-.01em;
}
.cs-kviz__nm span{display:block;font-size:13px;font-style:italic;color:var(--cs-ink-soft)}
.cs-kviz__kol{
  flex:0 0 auto;padding:2px 6px;
  background:var(--cs-black);color:var(--cs-white);
  font-family:var(--cs-mono);font-size:9px;font-weight:700;
  letter-spacing:.09em;text-transform:uppercase;
}
.cs-kviz__swap{
  flex:0 0 auto;background:none;border:0;cursor:pointer;
  font-family:var(--cs-mono);font-size:10px;font-weight:700;
  letter-spacing:.08em;text-transform:uppercase;
  text-decoration:underline;text-underline-offset:3px;
}

.cs-kviz__total{
  display:flex;flex-wrap:wrap;gap:14px;align-items:center;justify-content:space-between;
  margin-top:18px;padding:18px 20px;
  background:var(--cs-lime);border:var(--cs-border);border-radius:var(--cs-radius);
}
.cs-kviz__sum small{
  display:block;font-family:var(--cs-mono);font-size:10px;font-weight:700;
  letter-spacing:.08em;text-transform:uppercase;
}
.cs-kviz__sum b{display:block;font-variation-settings:'wdth' 86,'wght' 900;font-size:30px}
.cs-kviz__sum del{opacity:.5;font-size:17px;margin-right:8px}

.cs-kviz__err{
  margin-top:14px;padding:12px 14px;
  background:var(--cs-pink);color:var(--cs-white);
  border:var(--cs-border);border-radius:var(--cs-radius);font-size:15px;
}
.cs-kviz__again{margin-top:16px;text-align:center}

@media (max-width:600px){
  .cs-kviz{padding:44px var(--cs-pad) 64px}
  .cs-kviz__q{padding:24px 18px 22px;box-shadow:4px 4px 0 var(--cs-black)}
  .cs-kviz__intro{margin-bottom:28px}
  .cs-kviz__opt{flex:1 1 100%}
  .cs-kviz__opt:hover{transform:none;box-shadow:none}
  .cs-kviz__swap{display:none}
  .cs-kviz__total{flex-direction:column;align-items:stretch}
  .cs-kviz__total .cs-btn{width:100%}
}
@media (prefers-reduced-motion:reduce){
  .cs-kviz__wheel{transition:none}
  .cs-kviz__pick{animation:none;opacity:1;transform:none}
}


/* ============================================================================
   32  QUIZ TEASER — [cs_kviz_promo]
   ========================================================================= */
.cs-kvizpromo{
  background:var(--cs-violet);color:var(--cs-white);
  border-bottom:var(--cs-border);
  padding:56px var(--cs-pad) 60px;
  max-width:100vw;overflow-x:clip;
}
.cs-kvizpromo__inner{
  max-width:var(--cs-max);margin:0 auto;
  display:flex;flex-wrap:wrap;gap:40px;
  align-items:center;justify-content:space-between;
}
.cs-kvizpromo__text{flex:1 1 380px;min-width:0}
.cs-kvizpromo__kicker{
  display:inline-block;margin-bottom:14px;padding:3px 8px;
  background:var(--cs-black);color:var(--cs-lime);
  font-family:var(--cs-mono);font-size:10px;font-weight:700;
  letter-spacing:.09em;text-transform:uppercase;
}
.cs-kvizpromo h2{
  font-variation-settings:'wdth' 72,'wght' 900;
  font-size:clamp(32px,5.4vw,60px);line-height:.94;letter-spacing:-.03em;
  text-transform:uppercase;max-width:14ch;
}
.cs-kvizpromo p{margin:16px 0 0;max-width:42ch;font-size:17px;font-weight:500}
.cs-kvizpromo__chips{display:flex;flex-wrap:wrap;gap:8px;list-style:none;margin:22px 0 0;padding:0}
.cs-kvizpromo__chips li{
  padding:5px 10px;
  background:var(--cs-lime);color:var(--cs-black);
  border:2px solid var(--cs-black);border-radius:var(--cs-radius);
  font-family:var(--cs-mono);font-size:11px;font-weight:700;
  letter-spacing:.06em;text-transform:uppercase;
}
.cs-kvizpromo__chips li:nth-child(2){background:var(--cs-white)}
.cs-kvizpromo__chips li:nth-child(3){background:var(--cs-pink);color:var(--cs-white)}
.cs-kvizpromo__cta{margin-top:26px;box-shadow:5px 5px 0 var(--cs-black)}
.cs-kvizpromo__cta:hover{box-shadow:2px 2px 0 var(--cs-black)}

.cs-kvizpromo__wheel{
  position:relative;flex:0 0 auto;
  width:min(240px,58vw);aspect-ratio:1;display:block;text-decoration:none;
}
.cs-kvizpromo__disc{
  position:absolute;inset:0;border-radius:50%;border:var(--cs-border);
  background:conic-gradient(
    var(--cs-pink)   0deg  30deg, var(--cs-lime)  30deg  60deg,
    var(--cs-blue)  60deg  90deg, var(--cs-white) 90deg 120deg,
    var(--cs-orange)120deg 150deg,var(--cs-pink) 150deg 180deg,
    var(--cs-lime) 180deg 210deg, var(--cs-blue) 210deg 240deg,
    var(--cs-white)240deg 270deg, var(--cs-orange)270deg 300deg,
    var(--cs-pink) 300deg 330deg, var(--cs-lime) 330deg 360deg
  );
  animation:cs-idle 18s linear infinite;
}
.cs-kvizpromo__wheel:hover .cs-kvizpromo__disc{animation-duration:2.4s}
@keyframes cs-idle{to{transform:rotate(360deg)}}

.cs-kvizpromo__hub{
  position:absolute;left:50%;top:50%;z-index:2;
  width:38%;aspect-ratio:1;transform:translate(-50%,-50%);
  display:flex;align-items:center;justify-content:center;
  background:var(--cs-white);color:var(--cs-black);
  border:var(--cs-border);border-radius:50%;
  font-variation-settings:'wdth' 84,'wght' 900;
  font-size:clamp(13px,2.4vw,17px);text-transform:uppercase;letter-spacing:-.01em;
}
.cs-kvizpromo__wheel:hover .cs-kvizpromo__hub{background:var(--cs-lime)}
.cs-kvizpromo__wheel:focus-visible{outline:3px solid var(--cs-lime);outline-offset:6px}
.cs-kvizpromo__pointer{
  position:absolute;top:-12px;left:50%;transform:translateX(-50%);z-index:3;
  width:0;height:0;
  border-left:13px solid transparent;border-right:13px solid transparent;
  border-top:22px solid var(--cs-black);
}

@media (max-width:820px){
  .cs-kvizpromo__inner{flex-direction:column-reverse;gap:30px}
  .cs-kvizpromo__wheel{align-self:center}
}
@media (prefers-reduced-motion:reduce){
  .cs-kvizpromo__disc{animation:none}
}


/* ============================================================================
   33  SNAPBAR TOY

   Parked in a gutter reserved on the right of the formats heading. The gutter
   is real padding, not a guess — so the toy can float free and overlap the
   cards below without ever landing on a word, at any width.
   ========================================================================= */
.cs-band__inner--toy{position:relative}
.cs-band__inner--toy > .cs-band__title,
.cs-band__inner--toy > .cs-band__lead{padding-right:170px}

.cs-snap{
  position:absolute;right:0;top:-4px;z-index:6;
  width:136px;max-width:44vw;
  transform:rotate(-5deg) scale(.82);
  opacity:0;
  transition:opacity .4s ease,transform .5s cubic-bezier(.2,.9,.3,1.2);
}
.cs-snap.is-in{opacity:1;transform:rotate(-5deg) scale(1)}

/* Not a card: the bar sits on the section background with a small shadow. */
/* Fixed slot: whatever is showing, the footprint never changes. */
.cs-snap__slot{position:relative;aspect-ratio:3/2}

.cs-snap__bar{
  position:absolute;inset:0;
  display:grid;
  grid-template-columns:repeat(3,1fr);
  grid-template-rows:repeat(2,1fr);
  gap:3px;padding:5px;
  background:var(--cs-pink);
  border:2px solid var(--cs-black);border-radius:var(--cs-radius);
  box-shadow:2px 2px 0 var(--cs-black);
  cursor:pointer;user-select:none;
  transition:transform .12s ease,box-shadow .12s ease;
}
.cs-snap__bar:hover{transform:translate(-1px,-1px);box-shadow:4px 4px 0 var(--cs-black)}
.cs-snap__bar:focus-visible{outline:3px solid var(--cs-blue);outline-offset:3px}
.cs-snap.is-empty .cs-snap__bar{cursor:default;opacity:0;pointer-events:none;transition:opacity .3s ease}

.cs-snap__cube{
  background:var(--cs-white);
  border:1.5px solid var(--cs-black);border-radius:1px;
  transition:transform .45s cubic-bezier(.2,.8,.3,1),opacity .45s ease;
  will-change:transform;
}
.cs-snap__cube.is-gone{
  transform:translateY(var(--dy,-46px)) rotate(var(--rot,25deg)) scale(.8);
  opacity:0;
}

/* Click cue, same sticker language as the hero. Goes after the first break. */
.cs-snap__poke{
  position:absolute;left:50%;top:-30px;
  padding:4px 7px;
  background:var(--cs-lime);
  /* Explicit, not inherited. Inside the violet CTA the surrounding colour is
     white, so lime-on-white was unreadable; on the homepage the inherited
     colour happened to be black and it looked fine. */
  color:var(--cs-black);
  border:2px solid var(--cs-black);border-radius:var(--cs-radius);
  font-family:var(--cs-mono);font-size:9px;font-weight:700;
  letter-spacing:.07em;text-transform:uppercase;white-space:nowrap;
  transform:translateX(-50%) rotate(-6deg);
  animation:cs-snap-nudge 2.4s ease-in-out infinite;
}
@keyframes cs-snap-nudge{
  0%,100%{transform:translateX(-50%) rotate(-6deg) translateY(0)}
  50%    {transform:translateX(-50%) rotate(-6deg) translateY(3px)}
}
.cs-snap.is-touched .cs-snap__poke{opacity:0;pointer-events:none;transition:opacity .3s ease}

.cs-snap__count{
  display:block;margin-top:7px;text-align:center;
  font-family:var(--cs-mono);font-size:9px;font-weight:700;
  letter-spacing:.08em;text-transform:uppercase;color:var(--cs-ink-soft);
}

/* Same box, new contents: the prize covers the bar rather than appearing
   beneath it, so finishing never opens a gap in the layout. */
/* [hidden] sets display:none, but a display:flex rule beats it on
   specificity, so the prize was visible from page load. */
.cs-snap__prize[hidden]{display:none !important}

.cs-snap__prize{
  position:absolute;inset:0;z-index:2;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;
  background:var(--cs-black);color:var(--cs-lime);
  border:2px solid var(--cs-black);border-radius:var(--cs-radius);
  box-shadow:2px 2px 0 var(--cs-lime);
  animation:cs-snap-prize .4s cubic-bezier(.2,.9,.3,1.3) both;
}
@keyframes cs-snap-prize{from{opacity:0;transform:scale(.86)}to{opacity:1;transform:scale(1)}}
.cs-snap__prize .v{font-variation-settings:'wdth' 86,'wght' 900;font-size:22px;line-height:1}
.cs-snap__prize .h{
  font-family:var(--cs-mono);font-size:8px;font-weight:700;
  letter-spacing:.03em;text-transform:uppercase;color:#8A8A96;
  text-align:center;line-height:1.25;
  /* The panel is only ~118px wide. Wrap rather than run off the edge, which
     on a phone meant the text left the viewport entirely. */
  max-width:100%;padding:0 3px;
  overflow-wrap:anywhere;word-break:break-word;
}
.cs-snap__prize.is-on .h{color:var(--cs-lime)}

/* In the CTA the count sits on violet. */
.cs-snap--cta{position:relative;right:auto;top:auto;width:118px;max-width:100%;margin:0}
.cs-snap--cta .cs-snap__count{color:rgba(255,255,255,.75)}

.cs-confetti,
.cs-snap__pop{position:fixed;inset:0;pointer-events:none;z-index:9998}
.cs-snap__flyer{
  position:fixed;z-index:9999;width:18px;height:18px;
  background:var(--cs-white);
  border:2px solid var(--cs-black);border-radius:var(--cs-radius);
  pointer-events:none;
  transition:transform .7s cubic-bezier(.4,0,.6,1),opacity .7s ease;
}

/* Inline variant: used by [cs_snapbar] in page content, where there's no
   reserved gutter to sit in. */
.cs-snap--inline{
  position:relative;right:auto;top:auto;
  width:130px;margin:6px 0 0;
}
.cs-snap--inline .cs-snap__prize{right:auto;left:0}

/* Same place at every width; the gutter shrinks with the toy. */
@media (max-width:900px){
  .cs-band__inner--toy > .cs-band__title,
  .cs-band__inner--toy > .cs-band__lead{padding-right:132px}
  .cs-snap{width:106px}
}
@media (max-width:560px){
  .cs-band__inner--toy > .cs-band__title,
  .cs-band__inner--toy > .cs-band__lead{padding-right:104px}
  .cs-snap{width:86px;top:0}
  .cs-snap__poke{font-size:8px;padding:3px 5px;top:-26px}
  .cs-snap__prize .v{font-size:17px}
  .cs-snap__prize .h{font-size:7px}
}
@media (prefers-reduced-motion:reduce){
  .cs-snap,.cs-snap__cube,.cs-snap__flyer{transition:none}
  .cs-snap__poke,.cs-snap__prize{animation:none}
}


/* ============================================================================
   34  USAGE PAGE - [cs_uporaba]

   Deliberately denser than the theme's other long-form pages: this one sits
   next to the shop, and the shop runs colour blocks edge to edge. Earlier
   drafts breathed twice as much as everything around them and read as a
   different site.
   ========================================================================= */
/* Vertical spacing is tighter than the homepage bands on purpose; the side
   padding is NOT. Writing `padding:34px 0 38px` dropped the horizontal value
   and the text ran to the screen edge on a phone. */
.cs-up-band{padding:34px var(--cs-pad) 38px}
.cs-up__lead{max-width:64ch;font-size:16px;margin:9px 0 0;color:var(--cs-ink-soft)}
.cs-up__kicker{
  font-family:var(--cs-mono);font-size:10px;font-weight:700;
  letter-spacing:.1em;text-transform:uppercase;margin:0 0 6px;
}

/* --- hero: text left, live diagram right --- */
.cs-up-hero{
  background:var(--cs-pink);border-bottom:var(--cs-border);
  padding:30px var(--cs-pad) 34px;max-width:100vw;
}
.cs-up-hero__in{
  max-width:var(--cs-max);margin:0 auto;
  display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);
  gap:28px;align-items:center;
}
.cs-up__h1{
  font-variation-settings:'wdth' 72,'wght' 900;
  font-size:clamp(34px,5.6vw,64px);line-height:.9;letter-spacing:-.03em;
  text-transform:uppercase;max-width:15ch;margin:0;
}
.cs-up__sub{
  margin:14px 0 0;padding:12px 14px;max-width:44ch;
  background:var(--cs-white);border:var(--cs-border);border-radius:var(--cs-radius);
  font-size:16px;font-weight:500;transform:rotate(-.4deg);
}
.cs-up__cta{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin:16px 0 0}
.cs-up__nudge{
  font-family:var(--cs-mono);font-size:10px;font-weight:700;
  letter-spacing:.08em;text-transform:uppercase;
}

.cs-up-burner{width:100%;max-width:280px;margin:0 auto;display:block}
.cs-up-wax{transition:opacity .35s ease}
.cs-up-flame{transform-origin:center bottom;animation:cs-up-flick 1.6s ease-in-out infinite;transition:opacity .3s ease}
@keyframes cs-up-flick{0%,100%{transform:scaleY(1)}50%{transform:scaleY(1.14) scaleX(.94)}}
.cs-up-fig [data-trails]{transition:opacity .3s ease}
.cs-up-scent{opacity:0;animation:cs-up-rise 4s ease-in-out infinite}
.cs-up-scent:nth-child(2){animation-delay:1.1s}
.cs-up-scent:nth-child(3){animation-delay:2.2s}
@keyframes cs-up-rise{
  0%{opacity:0;transform:translateY(0) scale(.8)}
  25%{opacity:.9}
  100%{opacity:0;transform:translateY(-54px) scale(1.25)}
}
.cs-up-switch{display:flex;gap:6px;justify-content:center;margin-top:8px}
.cs-up-switch button{
  padding:5px 10px;cursor:pointer;
  background:var(--cs-white);border:2px solid var(--cs-black);border-radius:var(--cs-radius);
  font-family:var(--cs-mono);font-size:9px;font-weight:700;
  letter-spacing:.07em;text-transform:uppercase;
}
.cs-up-switch button[aria-pressed="true"]{background:var(--cs-black);color:var(--cs-lime)}
/* Stacked, the hero becomes one tall pink slab. Splitting it so the diagram
   sits on lime turns that into two colour blocks, which is how the rest of
   the site behaves anyway. Desktop keeps the single pink field, where the
   two columns already break it up. */
@media (max-width:860px){
  .cs-up-hero{padding-bottom:0}
  .cs-up-hero__in{grid-template-columns:minmax(0,1fr);gap:22px}
  .cs-up-burner{max-width:210px}

  .cs-up-fig{
    background:var(--cs-lime);
    border-top:var(--cs-border);
    margin:0 calc(var(--cs-pad) * -1);      /* out to the screen edges */
    padding:22px var(--cs-pad) 20px;
  }
  .cs-up-switch button{background:var(--cs-white)}
}

/* --- steps with connecting arrows --- */
.cs-up-steps{display:flex;flex-wrap:wrap;align-items:stretch;gap:0;margin-top:20px}
.cs-up-step{
  flex:1 1 210px;min-width:0;position:relative;
  padding:18px 16px 20px;
  background:var(--cs-white);border:var(--cs-border);border-radius:var(--cs-radius);
  opacity:0;transform:translateY(12px);
  transition:opacity .45s ease,transform .45s ease;
}
.cs-up-step.is-in{opacity:1;transform:none}
.cs-up-step__n{
  position:absolute;top:-14px;left:14px;padding:1px 8px;
  background:var(--cs-pink);border:var(--cs-border);
  font-variation-settings:'wdth' 88,'wght' 900;font-size:15px;
  transform:rotate(-4deg);
}
.cs-up-step h3{font-variation-settings:var(--cs-vf-head);font-size:18px;margin:8px 0 6px;text-transform:uppercase}
.cs-up-step p{font-size:14px;color:var(--cs-ink-soft)}
.cs-up-step__pic{width:100%;height:76px;margin-bottom:6px;display:block}

.cs-up-arrow{
  flex:0 0 42px;align-self:center;
  display:flex;align-items:center;justify-content:center;
  opacity:0;transition:opacity .45s ease .2s;
}
.cs-up-arrow.is-in{opacity:1}
.cs-up-arrow svg{width:36px;height:22px;overflow:visible}
.cs-up-arrow path{
  stroke:var(--cs-black);stroke-width:3;fill:none;
  stroke-dasharray:6 6;animation:cs-up-march 1.4s linear infinite;
}
@keyframes cs-up-march{to{stroke-dashoffset:-24}}
@media (max-width:900px){
  .cs-up-steps{flex-direction:column}
  .cs-up-step{flex:1 1 auto}
  .cs-up-arrow{flex:0 0 34px;transform:rotate(90deg)}
}

/* --- calculator + comparison, equal height --- */
.cs-up-duo{
  display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  gap:18px;margin-top:20px;align-items:stretch;
}
@media (max-width:900px){ .cs-up-duo{grid-template-columns:minmax(0,1fr)} }

.cs-up-box{
  background:var(--cs-white);border:var(--cs-border);border-radius:var(--cs-radius);
  padding:18px 18px 20px;height:100%;display:flex;flex-direction:column;
}
.cs-up-box h3{font-variation-settings:var(--cs-vf-head);font-size:19px;text-transform:uppercase;margin-bottom:4px}
.cs-up-box__hint{font-size:14px;color:var(--cs-ink-soft);margin-bottom:14px}

.cs-up-rooms{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-bottom:14px}
.cs-up-rooms button{
  padding:9px 10px;cursor:pointer;text-align:left;
  background:var(--cs-paper);border:2px solid var(--cs-black);border-radius:var(--cs-radius);
  font-family:var(--cs-font);
}
.cs-up-rooms button[aria-pressed="true"]{background:var(--cs-black);color:var(--cs-lime)}
.cs-up-rooms .t{display:block;font-variation-settings:'wdth' 86,'wght' 800;font-size:14px;text-transform:uppercase}
.cs-up-rooms .s{display:block;margin-top:1px;font-family:var(--cs-mono);font-size:9px;letter-spacing:.05em;color:var(--cs-ink-soft)}
.cs-up-rooms button[aria-pressed="true"] .s{color:#C9C9D2}

/* margin-top:auto so both boxes end on the same line */
.cs-up-out{
  margin-top:auto;padding:12px 14px;
  background:var(--cs-lime);border:2px solid var(--cs-black);border-radius:var(--cs-radius);
}
.cs-up-out__top{display:flex;gap:14px;align-items:center}
.cs-up-cubes{display:flex;gap:4px}
.cs-up-cubes i{
  width:22px;height:22px;display:block;
  background:var(--cs-white);border:2px solid var(--cs-black);border-radius:1px;
  transform:scale(.4);opacity:0;
  transition:transform .3s cubic-bezier(.2,.9,.3,1.4),opacity .3s ease;
}
.cs-up-cubes i.is-on{transform:scale(1);opacity:1}
.cs-up-res b{display:block;font-variation-settings:'wdth' 86,'wght' 900;font-size:20px;line-height:1.1}
.cs-up-res span{display:block;font-family:var(--cs-mono);font-size:9px;letter-spacing:.06em;text-transform:uppercase;margin-top:1px}

/* "Isto količino dobiš z:" - the label matters. Without it, four bullets
   with icons read as a list of things to add rather than one amount
   expressed in different shapes. */
.cs-up-eq__lead{
  margin:12px 0 8px;padding-top:11px;
  border-top:2px solid var(--cs-black);
  font-family:var(--cs-mono);font-size:10px;font-weight:700;
  letter-spacing:.08em;text-transform:uppercase;
}

.cs-up-eq{
  list-style:none;margin:0;padding:0;
  display:grid;grid-template-columns:1fr 1fr;gap:7px 12px;
}
.cs-up-eq li{display:flex;align-items:center;gap:8px;min-width:0}
.cs-up-eq b{
  font-family:var(--cs-mono);font-size:11px;font-weight:700;
  letter-spacing:.02em;text-transform:uppercase;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}

/* Drawn as SVG rather than CSS shapes. A rotated square with a rounded
   corner was meant to be a heart and read as neither. */
.cs-up-ico{flex:0 0 auto;width:22px;height:22px;display:block}

/* The duration line sits apart from the shapes: it answers "how long",
   not "what do I use". */
.cs-up-eq__time{
  display:flex;align-items:center;gap:8px;
  margin:11px 0 0;padding-top:10px;
  border-top:2px dashed var(--cs-black);
  font-family:var(--cs-mono);font-size:10.5px;font-weight:700;
  letter-spacing:.02em;line-height:1.35;
}

@media (max-width:420px){ .cs-up-eq{grid-template-columns:1fr} }

.cs-up-vs{
  display:grid;grid-template-columns:1fr 1fr;height:100%;
  border:var(--cs-border);border-radius:var(--cs-radius);overflow:hidden;
}
.cs-up-vs__col{padding:16px 15px 18px;display:flex;flex-direction:column}
.cs-up-vs__col--wax{background:var(--cs-pink);color:var(--cs-white);border-right:var(--cs-border)}
.cs-up-vs__col--candle{background:var(--cs-white)}
.cs-up-vs h4{font-variation-settings:'wdth' 84,'wght' 900;font-size:17px;text-transform:uppercase;margin-bottom:10px}
.cs-up-vs ul{list-style:none;margin:0;padding:0}
.cs-up-vs li{display:flex;gap:7px;align-items:flex-start;margin-bottom:7px;font-size:13.5px;line-height:1.4}
.cs-up-vs li::before{content:"✓";font-weight:700;flex:0 0 auto}
.cs-up-vs__col--candle li::before{content:"-";opacity:.45}

/* --- faq: two independent stacks --- */
.cs-up-faq{display:flex;gap:10px;margin-top:18px;align-items:flex-start}
.cs-up-faq__col{flex:1 1 0;min-width:0;display:flex;flex-direction:column;gap:10px}
.cs-up-faq .cs-q{margin:0}
@media (max-width:820px){
  .cs-up-faq{flex-direction:column}
  .cs-up-faq__col{width:100%}
}

/* --- cta with the toy beside the button --- */
.cs-up-cta{background:var(--cs-violet);color:var(--cs-white)}
.cs-up-cta .cs-band__title{color:var(--cs-white)}
.cs-up-cta .cs-up__lead{color:rgba(255,255,255,.85)}
.cs-up-cta__in{display:flex;flex-wrap:wrap;gap:26px;align-items:center;justify-content:space-between}
.cs-up-cta__txt{flex:1 1 340px;min-width:0}
.cs-up-cta__do{display:flex;align-items:center;gap:18px;flex:0 0 auto}
@media (max-width:700px){
  .cs-up-cta__do{width:100%;justify-content:space-between}
}

@media (prefers-reduced-motion:reduce){
  .cs-up-flame,.cs-up-scent,.cs-up-arrow path{animation:none}
  .cs-up-step,.cs-up-arrow{opacity:1;transform:none}
}


/* ============================================================================
   35  HANGING SIGN

   Drops from the top, swings, settles. The swing decays over three passes
   rather than looping: permanent motion is a distraction, motion that stops
   reads as something that just landed.
   ========================================================================= */
/* top is set in JS from the header's measured bottom edge; this is only a
   fallback for the moment before that runs. */
.cs-sign{
  position:fixed;left:50%;top:64px;z-index:70;
  display:flex;flex-direction:column;align-items:center;
  transform:translateX(-50%);transform-origin:50% 0;
  animation:cs-sign-drop .9s cubic-bezier(.3,1.4,.5,1) both,
            cs-sign-sway 3.4s ease-in-out .9s 3;
}
.cs-sign[hidden]{display:none !important}

@keyframes cs-sign-drop{
  from{transform:translateX(-50%) translateY(-130%) rotate(-8deg)}
  to  {transform:translateX(-50%) translateY(0) rotate(0deg)}
}
@keyframes cs-sign-sway{
  0%,100%{transform:translateX(-50%) rotate(0deg)}
  25%    {transform:translateX(-50%) rotate(2.4deg)}
  60%    {transform:translateX(-50%) rotate(-1.6deg)}
  85%    {transform:translateX(-50%) rotate(.7deg)}
}
.cs-sign.is-going{
  animation:none;
  transform:translateX(-50%) translateY(-130%) rotate(6deg);
  transition:transform .5s cubic-bezier(.6,0,.8,.2);
}

/* The strings start above the sign and run up to the header edge, so it
   reads as hanging from the bar rather than floating near it. */
.cs-sign__string{position:absolute;top:-2px;width:3px;height:28px;background:var(--cs-black)}
.cs-sign__string--l{left:34px}
.cs-sign__string--r{right:34px}

.cs-sign__board{
  margin-top:26px;padding:12px 20px 13px;
  background:var(--cs-lime);color:var(--cs-black);
  border:var(--cs-border);border-radius:var(--cs-radius);
  box-shadow:4px 4px 0 var(--cs-black);
  text-decoration:none;text-align:center;display:block;
}
.cs-sign__board:hover{background:var(--cs-white)}
.cs-sign__k{
  display:block;
  font-family:var(--cs-mono);font-size:9px;font-weight:700;
  letter-spacing:.1em;text-transform:uppercase;color:var(--cs-ink-soft);
}
.cs-sign__t{
  display:block;margin:2px 0 3px;
  font-variation-settings:'wdth' 80,'wght' 900;
  font-size:22px;line-height:1;letter-spacing:-.02em;text-transform:uppercase;
}
.cs-sign__go{
  display:block;
  font-family:var(--cs-mono);font-size:9px;font-weight:700;
  letter-spacing:.07em;text-transform:uppercase;
}

.cs-sign__x{
  position:absolute;right:-10px;top:20px;
  width:26px;height:26px;cursor:pointer;
  background:var(--cs-black);color:var(--cs-lime);
  border:2px solid var(--cs-black);border-radius:50%;
  font-size:15px;line-height:1;
}
.cs-sign__x:hover{background:var(--cs-pink);color:var(--cs-black)}
.cs-sign__x:focus-visible{outline:3px solid var(--cs-blue);outline-offset:2px}

@media (max-width:700px){
  .cs-sign__board{padding:10px 14px 11px}
  .cs-sign__t{font-size:17px}
  .cs-sign__string--l{left:22px}
  .cs-sign__string--r{right:22px}
}
@media (prefers-reduced-motion:reduce){
  .cs-sign{animation:none;transform:translateX(-50%)}
  .cs-sign.is-going{transition:none}
}


/* ============================================================================
   36  SIDE CART
   ========================================================================= */
.cs-drawer{position:fixed;inset:0;z-index:120}
.cs-drawer[hidden]{display:none !important}
body.cs-drawer-open{overflow:hidden}
.cs-drawer__scrim{position:absolute;inset:0;background:rgba(14,14,16,.6);opacity:0;transition:opacity .3s ease}
.cs-drawer.is-open .cs-drawer__scrim{opacity:1}
.cs-drawer__panel{
  position:absolute;right:0;top:0;bottom:0;width:min(420px,100%);
  display:flex;flex-direction:column;
  background:var(--cs-paper);border-left:var(--cs-border);
  transform:translateX(100%);transition:transform .32s cubic-bezier(.3,.9,.3,1);
}
.cs-drawer.is-open .cs-drawer__panel{transform:none}
.cs-drawer__head{
  flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:16px 18px;background:var(--cs-lime);border-bottom:var(--cs-border);
}
.cs-drawer__head h2{margin:0;font-variation-settings:'wdth' 80,'wght' 900;font-size:24px;text-transform:uppercase;letter-spacing:-.02em}
.cs-drawer__close{
  width:34px;height:34px;cursor:pointer;flex:0 0 auto;
  background:var(--cs-black);color:var(--cs-lime);
  border:var(--cs-border);border-radius:var(--cs-radius);font-size:20px;line-height:1;
}
.cs-drawer__close:hover{background:var(--cs-pink);color:var(--cs-black)}
.cs-drawer__contents{flex:1 1 auto;min-height:0;display:flex;flex-direction:column}

.cs-drawer__ship{flex:0 0 auto;padding:12px 18px;background:var(--cs-white);border-bottom:var(--cs-border)}
.cs-drawer__ship p{margin:0 0 8px;font-size:14px}
.cs-drawer__ship b{background:var(--cs-lime);padding:1px 5px;font-weight:700}
.cs-drawer__track{height:10px;background:var(--cs-paper);border:2px solid var(--cs-black);border-radius:var(--cs-radius);overflow:hidden}
.cs-drawer__track span{display:block;height:100%;background:var(--cs-pink);transition:width .3s ease}
.cs-drawer__ship.is-done .cs-drawer__track span{background:var(--cs-lime)}

.cs-drawer__list{flex:1 1 auto;min-height:0;overflow-y:auto;list-style:none;margin:0;padding:14px 18px}
.cs-drawer__item{
  position:relative;display:flex;gap:12px;align-items:flex-start;
  padding:12px;margin-bottom:10px;background:var(--cs-white);
  border:var(--cs-border);border-radius:var(--cs-radius);transition:opacity .2s ease;
}
.cs-drawer__item.is-busy{opacity:.45;pointer-events:none}
.cs-drawer__thumb{flex:0 0 auto;width:64px;display:block}
.cs-drawer__thumb img{width:64px;height:64px;object-fit:cover;display:block;border:2px solid var(--cs-black);border-radius:var(--cs-radius)}
.cs-drawer__info{flex:1 1 auto;min-width:0;padding-right:18px}
.cs-drawer__name{display:block;text-decoration:none;font-variation-settings:var(--cs-vf-head);font-size:15px;text-transform:uppercase;letter-spacing:-.01em;line-height:1.15}
.cs-drawer__name:hover{background:var(--cs-lime)}
.cs-drawer__meta{display:block;margin-top:2px;font-family:var(--cs-mono);font-size:10px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--cs-ink-soft)}
.cs-drawer__row{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:9px}
.cs-drawer__qty{display:flex;align-items:center;border:2px solid var(--cs-black);border-radius:var(--cs-radius);background:var(--cs-paper)}
.cs-drawer__qty button{width:26px;height:26px;cursor:pointer;background:none;border:0;font-family:var(--cs-mono);font-size:14px;font-weight:700;line-height:1}
.cs-drawer__qty button:hover{background:var(--cs-black);color:var(--cs-lime)}
.cs-drawer__qty span{min-width:24px;text-align:center;font-family:var(--cs-mono);font-size:12px;font-weight:700;border-left:2px solid var(--cs-black);border-right:2px solid var(--cs-black);padding:4px 0}
.cs-drawer__price{
  display:flex;align-items:baseline;gap:5px;flex-wrap:wrap;justify-content:flex-end;
  font-variation-settings:'wdth' 86,'wght' 900;font-size:15px;
}
.cs-drawer__price del,
.cs-drawer__price del *{
  /* Was .78em on top of an already-small price, which made the original
     almost unreadable. It only does its job if you can read it. */
  font-size:.92em;
  color:var(--cs-ink-soft);opacity:.75;
  text-decoration:line-through;
  font-weight:400;
}
.cs-drawer__now{white-space:nowrap}

/* The saving, called out in lime above the total. */
.cs-drawer__saved{
  display:flex;align-items:baseline;justify-content:space-between;gap:12px;
  margin:0 0 8px;padding:7px 10px;
  background:var(--cs-lime);
  border:2px solid var(--cs-black);border-radius:var(--cs-radius);
}
.cs-drawer__saved span{
  font-family:var(--cs-mono);font-size:10px;font-weight:700;
  letter-spacing:.08em;text-transform:uppercase;
}
.cs-drawer__saved b{font-variation-settings:'wdth' 86,'wght' 900;font-size:17px}
.cs-drawer__x{position:absolute;right:8px;top:8px;width:22px;height:22px;cursor:pointer;background:none;border:0;font-size:17px;line-height:1;color:var(--cs-ink-soft)}
.cs-drawer__x:hover{background:var(--cs-pink);color:var(--cs-white)}

.cs-drawer__foot{flex:0 0 auto;padding:14px 18px 18px;background:var(--cs-white);border-top:var(--cs-border)}
.cs-drawer__total{display:flex;align-items:baseline;justify-content:space-between;gap:12px;font-variation-settings:var(--cs-vf-head);text-transform:uppercase}
.cs-drawer__total span{font-size:14px}
.cs-drawer__total b{font-variation-settings:'wdth' 86,'wght' 900;font-size:24px}
.cs-drawer__note{margin:4px 0 12px;font-family:var(--cs-mono);font-size:9px;letter-spacing:.05em;text-transform:uppercase;color:var(--cs-ink-soft)}
.cs-drawer__checkout{display:block;width:100%;text-align:center}
.cs-drawer__full{display:block;margin-top:10px;text-align:center;font-family:var(--cs-mono);font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;text-decoration:underline;text-underline-offset:3px}

.cs-drawer__empty{flex:1 1 auto;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:6px;padding:28px 18px}
.cs-drawer__empty-t{margin:0;font-variation-settings:'wdth' 78,'wght' 900;font-size:26px;text-transform:uppercase;letter-spacing:-.02em}
.cs-drawer__empty-s{margin:0 0 14px;font-size:15px;color:var(--cs-ink-soft)}

@media (prefers-reduced-motion:reduce){ .cs-drawer__panel,.cs-drawer__scrim{transition:none} }


/* --- floating cart button --- */
.cs-fab{
  position:fixed;right:18px;bottom:18px;z-index:110;
  width:58px;height:58px;cursor:pointer;
  display:none;align-items:center;justify-content:center;
  background:var(--cs-black);color:var(--cs-lime);
  border:var(--cs-border);border-radius:50%;
  box-shadow:4px 4px 0 var(--cs-pink);
  transition:transform .14s ease,box-shadow .14s ease;
}
/* Only once there is something in it. A button that opens an empty drawer is
   clutter, and its arrival on the first add is a small reward. */
.cs-fab.is-on{display:flex}
.cs-fab:hover{transform:translate(-2px,-2px);box-shadow:6px 6px 0 var(--cs-pink)}
.cs-fab:focus-visible{outline:3px solid var(--cs-blue);outline-offset:3px}
.cs-fab svg{width:26px;height:26px}

.cs-fab__n{
  position:absolute;right:-6px;top:-6px;
  min-width:24px;height:24px;padding:0 5px;
  display:flex;align-items:center;justify-content:center;
  background:var(--cs-pink);color:var(--cs-white);
  border:2px solid var(--cs-black);border-radius:50%;
  font-family:var(--cs-mono);font-size:11px;font-weight:700;line-height:1;
}

/* Out of the way while the drawer itself is open. */
body.cs-drawer-open .cs-fab{opacity:0;pointer-events:none;transition:opacity .2s ease}

@media (max-width:700px){
  .cs-fab{right:14px;bottom:14px;width:52px;height:52px}
  .cs-fab svg{width:23px;height:23px}
}
@media (prefers-reduced-motion:reduce){ .cs-fab{transition:none} }


/* ============================================================================
   37  SCENT FAMILY BAR

   What a scent smells OF, as colour. The collection blocks say how it makes
   you feel; this is a different axis, which is why it looks nothing like
   them.
   ========================================================================= */
.cs-scent{margin:18px 0 0}
.cs-scent__label{
  display:block;margin-bottom:7px;
  font-family:var(--cs-mono);font-size:10px;font-weight:700;
  letter-spacing:.09em;text-transform:uppercase;color:var(--cs-ink-soft);
}
.cs-scent__bar{
  display:flex;height:16px;overflow:hidden;
  border:var(--cs-border);border-radius:var(--cs-radius);
  background:var(--cs-white);
}
.cs-scent__bar span{
  display:block;height:100%;
  border-right:2px solid var(--cs-black);
}
.cs-scent__bar span:last-child{border-right:0}

.cs-scent__keys{
  list-style:none;display:flex;flex-wrap:wrap;gap:6px 14px;
  margin:9px 0 0;padding:0;
}
.cs-scent__keys li{
  display:flex;align-items:center;gap:6px;
  font-family:var(--cs-mono);font-size:10px;font-weight:700;
  letter-spacing:.05em;text-transform:uppercase;
}
.cs-scent__keys i{
  width:11px;height:11px;flex:0 0 auto;
  border:2px solid var(--cs-black);
}

/* Compact version for cards, no legend: at that size the colours are a
   glanceable signal, not a key to read. */
.cs-card .cs-scent{margin:9px 0 0}
.cs-card .cs-scent__label,
.cs-card .cs-scent__keys{display:none}
.cs-card .cs-scent__bar{height:9px;border-width:2px}


/* ============================================================================
   20  RESPONSIVE

   Card rows and grids resize themselves — see the grid-sizing note at the
   top of the file. These breakpoints only cover what auto-fill can't: the
   product layout collapsing, the mobile nav, and the tilts.
   ========================================================================= */

/* Tilts only where there's room for them to read as deliberate rather than
   as a rendering fault. */
@media (min-width:900px){
  .cs-tiles .cs-tile:nth-child(2){transform:rotate(-.6deg)}
  .cs-tiles .cs-tile:nth-child(4){transform:rotate(.6deg)}
  .cs-tiles--steps .cs-tile:nth-child(2){transform:rotate(-.8deg)}
  .cs-tiles--steps .cs-tile:nth-child(3){transform:rotate(.7deg)}
  .cs-grid > .cs-card:nth-child(4n+1){transform:rotate(-.8deg)}
  .cs-grid > .cs-card:nth-child(4n+3){transform:rotate(.7deg)}
  .cs-grid > .cs-card:hover{transform:rotate(0) translateY(-5px)}
}

@media (max-width:1000px){
  .cs-col{border-right:0;border-bottom:var(--cs-border);min-height:0;padding:34px 22px 32px}
  .cs-col:last-child{border-bottom:0}

  /* Desktop pins the list and link to the bottom of a 340px block, which
     reads as deliberate. Stacked, the content is short and that same
     `margin-top:auto` just leaves a hole — so let it sit under the text. */
  .cs-col__list{margin-top:18px;padding-top:0}
  .cs-col__go{margin-top:14px}
}

@media (max-width:980px){
  .woocommerce div.product{grid-template-columns:minmax(0,1fr)}
  .woocommerce div.product > .woocommerce-product-gallery,
  .woocommerce div.product > .summary{grid-column:1;grid-row:auto}
}

@media (max-width:820px){
  .cs-notes__rows{grid-template-columns:minmax(0,1fr)}
  .cs-notes__r{border-right:0;border-bottom:var(--cs-border)}
  .cs-notes__r:last-child{border-bottom:0}
}

@media (max-width:700px){
  :root{--cs-pad:16px}

  .cs-bar{flex-wrap:nowrap}
  .cs-mark{font-size:13px;padding:10px 12px;gap:6px}
  .cs-burger{display:flex}
  .cs-nav{
    position:absolute;top:100%;left:0;right:0;display:none;
    background:var(--cs-lime);border-bottom:var(--cs-border);
  }
  .cs-nav.is-open{display:block}
  .cs-nav ul{flex-direction:column}
  .cs-nav li{display:block}
  .cs-nav a{align-self:auto;border-left:0;border-top:var(--cs-border);padding:14px var(--cs-pad)}
  .cs-ship{padding:7px 10px}
  .cs-ship span{font-size:9.5px;letter-spacing:.04em}

  .cs-marq__set{gap:20px;padding-right:20px}
  .cs-marq__set span{font-size:14px}
  .cs-marq__in{animation-duration:34s}

  /* Sub-degree tilts read as breakage at phone width, not as personality. */
  .cs-hero > .cs-hero__sub,
  .cs-hero mark,
  .cs-tile,
  .cs-card,
  .cs-kol{transform:none !important}

  .woocommerce div.product form.cart button.single_add_to_cart_button{width:100%;min-width:0}
}

/* Two products per row on phones. The cards carry a photo, a name and a
   price, all of which survive at ~170px — and two-up means people see four
   products per screen instead of two, which matters a lot more on a phone
   than a slightly larger image does. */
@media (max-width:560px){
  .cs-grid,
  .woocommerce ul.products,
  .wc-block-grid__products,
  .wc-block-product-template{
    grid-template-columns:repeat(2,minmax(0,1fr)) !important;
    gap:12px !important;
  }

  .cs-card__body{padding:10px 10px 12px}
  .cs-card__body h3{font-size:14px;line-height:1.1}
  .cs-card__joke{display:none}          /* no room; it lives on the product page */
  .cs-card__foot{
    flex-direction:column;align-items:flex-start;
    gap:8px;padding-top:9px;
  }
  .cs-card__price{font-size:14px}
  .cs-add{width:100%;text-align:center;padding:8px 6px;font-size:10px}
  .cs-card__tag{font-size:9px;padding:2px 5px;left:6px;top:6px}
  .cs-card__flag{font-size:9px;padding:2px 5px}

  .wc-block-grid__product-title{font-size:14px;padding:10px 10px 0 !important}
  .wc-block-grid__product-price{font-size:14px;padding:6px 10px 0 !important}
  .wc-block-grid__product-add-to-cart{padding:10px !important}

  .woocommerce-account .woocommerce{grid-template-columns:minmax(0,1fr)}
}

/* Below ~360px two columns stop being readable. */
@media (max-width:340px){
  .cs-grid,
  .woocommerce ul.products,
  .wc-block-grid__products,
  .wc-block-product-template{grid-template-columns:minmax(0,1fr) !important}
}


/* ============================================================================
   21  MOTION & PRINT
   ========================================================================= */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.01ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.01ms !important;
  }
  .cs-marq__in{animation:none}
  .cs-tile,.cs-card,.cs-stk,.cs-kol,.cs-hero__sub{transform:none !important}
}

@media print{
  .cs-header,.cs-ship,.cs-marq,.cs-cross,.cs-news{display:none}
  body{background:#fff;color:#000}
}


/* ============================================================================
   22  LEGACY CLASSES

   The formats and steps sections used to be built from nested group blocks
   with these classes. They're now shortcodes (§10), but a page saved before
   that change would still use the old markup — these rules keep it looking
   right rather than unstyled.

   Safe to delete once no page uses .cs-four or .cs-steps.
   ========================================================================= */
.cs-four,
.cs-steps{
  display:flex !important;                                  /* over WP flex/grid layout classes */
  flex-wrap:wrap !important;
  gap:var(--cs-gap) !important;
  grid-template-columns:none !important;
  margin-top:28px;
}
.cs-four > *,
.cs-steps > *{
  flex:1 1 210px !important;
  min-width:0 !important;max-width:100% !important;width:auto !important;
  padding:20px 18px 22px;
  background:var(--cs-paper);
  border:var(--cs-border);border-radius:var(--cs-radius);
}
.cs-steps > *{flex-basis:240px !important;background:var(--cs-white);position:relative}
.cs-four > * > h3,
.cs-steps > * > h3{margin:0 0 8px}
.cs-four > * > p,
.cs-steps > * > p{font-size:15px;color:var(--cs-ink-soft)}

.cs-step__num{
  display:inline-block;margin:0 0 10px;padding:2px 8px;
  background:var(--cs-pink);border:var(--cs-border);
  font-variation-settings:'wdth' 88,'wght' 900;font-size:16px;
  transform:rotate(-3deg);
}

.cs-acc__inner{width:100%}

.cs-dots{display:flex;gap:3px}
.cs-dots i{width:7px;height:7px;display:block}


/* ============================================================================
   38  SCENT FAMILY FILTER

   Deliberately the same pill as Oblika — two rows of one control, not two
   different controls. The only addition is the colour chip, which is the same
   swatch as the product-page legend: filter by the yellow one, land on a
   product whose bar opens yellow.
   ========================================================================= */
.cs-scent-pill{align-items:center}
.cs-scent-pill i{
  width:11px;height:11px;flex:0 0 auto;display:block;
  border:2px solid var(--cs-black);
}
/* On a selected pill the border is black-on-black, so the chip needs its own
   edge to stay readable against the inverted background. */
.cs-scent-pill.is-on i{border-color:var(--cs-lime)}

/* --- No results for the current combination --- */
.cs-nores{
  grid-column:1 / -1;
  margin:6px 0 28px;padding:20px;
  background:var(--cs-white);
  border:var(--cs-border);border-radius:var(--cs-radius);
}
.cs-nores__msg{
  margin:0 0 12px;
  font-variation-settings:'wdth' 88,'wght' 800;
  font-size:16px;text-transform:uppercase;letter-spacing:-.005em;
}
.cs-nores__acts{display:flex;flex-wrap:wrap;gap:8px;margin:0}
.cs-nores__acts a{
  display:inline-flex;padding:6px 11px;text-decoration:none;
  background:var(--cs-white);color:var(--cs-black);
  border:2px solid var(--cs-black);border-radius:var(--cs-radius);
  font-family:var(--cs-mono);font-size:11px;font-weight:700;
  letter-spacing:.05em;text-transform:uppercase;
}
.cs-nores__acts a:hover{background:var(--cs-lime)}
.cs-nores__acts a:focus-visible{outline:3px solid var(--cs-blue);outline-offset:2px}

@media (max-width:700px){
  .cs-nores{padding:16px}
  .cs-nores__msg{font-size:14px}
}
