@charset "UTF-8";
/*!
 * plase.net — design system, compiled for the Storefront child theme.
 *
 * Source of truth: the "plase.net Design System" project (Claude Design).
 * Tokens below are copied verbatim from tokens/*.css; the component layer maps them
 * onto the DOM WooCommerce and Storefront actually emit.
 *
 * Mobile-first. ONE breakpoint at 769px — the 2013 theme had exactly one and
 * resisting the urge to add more is part of the discipline.
 *
 * Contents — numbered in the order the layers were added; the lettered
 * sections were inserted later, against the real markup.
 *   1  Tokens                          19a Page rhythm
 *   2  Base                            19b Footer widget region
 *   3  Layout                          19c Single product, tabs, reviews
 *   4  Header, search, cart            19d Page layout — sidebar or not
 *   5  Navigation                      19e Sticky add-to-cart
 *   6  Buttons                         19f Notices
 *   7  Product cards (7a lockup,       20  Form fields
 *      7b button, 7c heading + panel)  21  Cart
 *   8  Trust strip, category tiles     22  Checkout
 *      (8b testimonial)                23  Header search
 *   9  Category / archive              24  Header — Superstore arrangement
 *   10 Single product + buy panel      25  Badge
 *   11 Reviews + testimonials          26  Account
 *   12 Footer                          27  Social login
 *   13 Motion                          28  Content pages, legacy shortcodes
 *   14 Existing theme markup           29  Contact
 *   15 Dropping Font Awesome           30  Blog
 *   16 The board                       31  Search + 404
 *   17 Fixes against the real markup   32  Footer payment marks
 *   18 Measured fixes
 *   19 Navigation contrast
 */

/* ============================================================
   1  TOKENS
   ============================================================ */
:root{
  /* Blue. Set by hand 44x in custom.css over the theme's stock cyan. Prices, links, nav. */
  --blue-050:#e6f0f6; --blue-100:#cfe2ed; --blue-500:#1a7bb0; --blue-600:#006599; --blue-700:#004f78;
  /* Orange. Reserved for offers, cart and stars. Never the default action colour. */
  --orange-050:#fdf1e9; --orange-100:#fbdcc7; --orange-500:#f37324; --orange-600:#e26213; --orange-700:#d15102;
  /* Slate. Nav, footer, buttons — and the darkest text. */
  --slate-200:#adb9bc; --slate-300:#9ca8ab; --slate-400:#697578; --slate-500:#586467;
  --slate-600:#4d5e61; --slate-800:#364245; --slate-900:#253134;
  /* Neutrals. Exact values from the theme, not rounded. */
  --white:#fff; --paper:#f8f8f8; --grey-025:#f3f3f3; --grey-050:#efefef; --grey-100:#e7e7e7;
  --grey-150:#e9e9e9; --grey-300:#c5c5c5; --ink:#3e3e3e; --ink-strong:#253134; --ink-struck:#3d3d3d;
  --green-600:#89b93f; --red-600:#e01c1f; --red-700:#cf0b0e;
  /* Logo-only red. Never use it on an interface. */
  --brand-red:#db1414;

  --surface-page:var(--paper); --surface-card:var(--white); --surface-sunken:var(--grey-025);
  --surface-band:var(--grey-050); --surface-dark:var(--slate-800); --surface-darker:var(--slate-900);
  --text-body:var(--ink); --text-strong:var(--ink-strong); --text-heading:var(--slate-900);
  --text-muted:var(--slate-400); --text-quiet:var(--slate-500); --text-inverse:var(--paper);
  --text-link:var(--blue-600); --text-link-hover:var(--blue-700); --text-struck:var(--ink-struck);
  --border-rule:var(--grey-150); --border-input:var(--grey-100); --border-input-hover:#d6d6d6;
  --border-strong:rgba(0,0,0,.075);

  /* THE 2018 SPLIT: blue carries ordinary prices, orange is held back for real offers. */
  --price-bg:var(--blue-600); --price-fold:var(--blue-700);
  --price-sale-bg:var(--orange-500); --price-sale-fold:var(--orange-700);
  --sale-badge:var(--orange-600);

  --action-bg:var(--slate-800); --action-fg:var(--paper);
  --action-bg-hover:var(--orange-500); --action-bg-active:var(--orange-700);
  --action-quiet-bg:var(--blue-600); --action-quiet-bg-hover:var(--blue-500);
  --focus-ring:var(--blue-600); --star-fill:var(--orange-500); --star-empty:var(--slate-200);
  --stock-ok:var(--green-600); --stock-out:var(--red-600);
  --field-valid-border:#a1c962; --field-valid-bg:#f5f9ee;
  --field-error-border:#e84749; --field-error-bg:#fceaea;

  /* Type. One family for language, one for numbers. */
  --font-core:"IBM Plex Sans","Helvetica Neue",Helvetica,sans-serif;
  --font-spec:"IBM Plex Mono",ui-monospace,Menlo,monospace;
  /* Body stays at 16 px; the steps above it are a gentle major-third ladder
     (18 / 20 / 24 / 28 / 34 / 40). The golden-ratio ladder that preceded it put
     a 42 px h1 on "Rezultatele căutării" and a 33 px h2 on every section —
     Mihai, 2026-09-16: "title of pages font is waaay too big". */
  --text-xs:.764rem; --text-sm:.857rem; --text-base:1rem; --text-md:1.125rem; --text-lg:1.25rem;
  --text-xl:1.5rem; --text-2xl:1.75rem; --text-3xl:2.125rem; --text-4xl:2.5rem;
  --weight-body:300; --weight-normal:400; --weight-medium:500; --weight-semi:600; --weight-strong:700;
  --leading-body:1.618; --leading-snug:1.35; --leading-tight:1.15; --leading-none:1;
  --tracking-tight:-.02em; --tracking-normal:0; --tracking-spec:.14em;
  --numeric-tabular:tabular-nums;
  --type-body:var(--weight-body) var(--text-base)/var(--leading-body) var(--font-core);
  --type-lede:var(--weight-body) var(--text-md)/var(--leading-body) var(--font-core);
  --type-small:var(--weight-body) var(--text-sm)/var(--leading-body) var(--font-core);
  /* h1 28 px, h2 24 px, h3 20 px on desktop; h1 drops to 24 px on phones (end of file). */
  --type-h1:var(--weight-body) var(--text-2xl)/var(--leading-tight) var(--font-core);
  --type-h2:var(--weight-body) var(--text-xl)/var(--leading-tight) var(--font-core);
  --type-h3:var(--weight-strong) var(--text-lg)/var(--leading-snug) var(--font-core);
  --type-h4:var(--weight-strong) var(--text-base)/var(--leading-snug) var(--font-core);
  --type-link:var(--weight-strong) var(--text-base)/var(--leading-body) var(--font-core);
  --type-button:var(--weight-strong) var(--text-sm)/var(--leading-body) var(--font-core);
  --type-spec:var(--weight-medium) var(--text-xs)/var(--leading-none) var(--font-spec);
  --type-price:var(--weight-strong) var(--text-base)/var(--leading-body) var(--font-core);

  /* Space. Every measure is a power of the golden ratio. */
  --space-1:.236rem; --space-2:.382rem; --space-3:.618rem; --space-4:1rem;
  --space-5:1.618rem; --space-6:2.618rem; --space-7:3.631rem; --space-8:5.874rem;
  --radius-xs:.236rem; --radius-sm:.3rem; --radius-md:.382rem; --radius-round:100%;
  --border-hair:1px; --border-rule-w:.202em; --border-accent-w:3px; --container:66.5rem; --gutter:var(--space-4);

  /* One elevation, applied without exception. */
  --shadow-card:0 1px 2px rgba(0,0,0,.075),0 1px 7px rgba(0,0,0,.15);
  --shadow-lift:0 3px 10px rgba(0,0,0,.18);
  --shadow-ribbon:0 1px 3px rgba(0,0,0,.25);
  --focus-ring-width:2px; --focus-ring-offset:3px;

  /* The ground is a net. Gradients, never a PNG. */
  --net-line:var(--grey-050); --net-pitch:6px; --net-hair:1px;
  --net-lattice:
    repeating-linear-gradient(45deg,var(--net-line) 0 var(--net-hair),transparent var(--net-hair) var(--net-pitch)),
    repeating-linear-gradient(-45deg,var(--net-line) 0 var(--net-hair),transparent var(--net-hair) var(--net-pitch));
  --net-lattice-coarse:
    repeating-linear-gradient(45deg,var(--border-rule) 0 1px,transparent 1px 9px),
    repeating-linear-gradient(-45deg,var(--border-rule) 0 1px,transparent 1px 9px);

  /* Alive on interaction, calm when idle. */
  --ease-overshoot:cubic-bezier(.34,1.56,.64,1); --ease-out:cubic-bezier(.22,.61,.36,1); --ease-in-out:ease-in-out;
  --dur-instant:80ms; --dur-fast:150ms; --dur-base:250ms; --dur-enter:320ms; --dur-image:350ms;
  --stagger:45ms; --lift-y:-1px;
}

/* ============================================================
   2  BASE
   ============================================================ */
body.plasenet{
  background-color:var(--surface-page);
  background-image:var(--net-lattice);
  color:var(--text-body);
  font:var(--type-body);
  text-wrap:pretty;
}
/* NO global -webkit-font-smoothing:antialiased.
   typography.css is explicit that the light body weight is the character and
   must not be normalised up to 400 — so the body stays at 300. But `antialiased`
   turns off macOS subpixel rendering, which thins every glyph, and at 300 on a
   near-white ground that reads as washed out. Grayscale smoothing belongs on
   light text over DARK panels, not on the body copy; it is kept on the buttons
   and the dark bands where it earns its keep. */
.plasenet h1,.plasenet h2,.plasenet h3,.plasenet h4,.plasenet h5,.plasenet h6{
  color:var(--text-heading);font-family:var(--font-core);text-wrap:balance;margin:0 0 var(--space-3);
}
/* Light headings against heavy links — the owner overrode h1 to 300 on purpose. */
.plasenet h1{font:var(--type-h1);letter-spacing:var(--tracking-tight)}
.plasenet h2{font:var(--type-h2);letter-spacing:var(--tracking-tight)}
.plasenet h3{font:var(--type-h3)}
.plasenet h4{font:var(--type-h4)}
.plasenet a{color:var(--text-link);font-weight:var(--weight-strong);text-decoration:none}
.plasenet a:hover{color:var(--text-link-hover);text-decoration:underline;text-underline-offset:2px}
.plasenet h1 a,.plasenet h2 a,.plasenet h3 a,.plasenet h4 a{color:inherit}
.plasenet h1 a:hover,.plasenet h2 a:hover,.plasenet h3 a:hover,.plasenet h4 a:hover{color:var(--text-link)}
.plasenet del{color:var(--text-struck);text-decoration:line-through;opacity:1}
.plasenet ins{text-decoration:none;background:transparent}
.plasenet img{max-width:100%;height:auto}
.plasenet :focus-visible{outline:var(--focus-ring-width) solid var(--focus-ring);outline-offset:var(--focus-ring-offset)}

/* The spec voice: units, dimensions, codes, eyebrows. Never running prose. */
.plasenet .spec,.psn-spec{
  font:var(--type-spec);letter-spacing:var(--tracking-spec);
  text-transform:uppercase;font-variant-numeric:var(--numeric-tabular);
}
.plasenet .tnum,.plasenet .price,.plasenet .amount,.plasenet .woocommerce-Price-amount{
  font-variant-numeric:var(--numeric-tabular);
}

/* ============================================================
   3  LAYOUT
   ============================================================ */
.plasenet .col-full{max-width:var(--container);padding:0 var(--gutter)}
/* Storefront also gives .col-full a 1.42em side MARGIN on phones, which on
   top of the gutter left 38px of paper each side of a 390px screen — more
   than a tenth of the width. The gutter alone is the page edge. */
@media (max-width:768px){.plasenet .col-full{margin-left:0;margin-right:0}}
.plasenet .site-content{padding-top:var(--space-5)}
.plasenet .site-main{margin-bottom:var(--space-5)}
/* WooCommerce gives the product grid a 2.6 em bottom margin; inside the
   up-sells/related section it only pushed the footer away. */
.plasenet .up-sells ul.products,.plasenet .related ul.products{margin-bottom:0}
/* At most two background colours on a page: the paper ground and one band. */
.plasenet .psn-band{background:var(--surface-band);padding:var(--space-6) 0;margin:var(--space-6) 0}

/* Surfaces are opaque so the net ground stays behind them. No blur, no glass. */
.plasenet .psn-card,
.plasenet .site-header,
.plasenet ul.products li.product,
.plasenet .widget{
  background:var(--surface-card);
  border-radius:var(--radius-md);
  box-shadow:var(--shadow-card);
  border:0;
}
/* Sub-sections inside a card are divided by a chunky .202em rule, not a 1px grey line. */
.plasenet .psn-rule{border-bottom:var(--border-rule-w) solid var(--border-strong)}

/* ============================================================
   4  HEADER, SEARCH, CART
   The header is a white card; the slate nav sits INSIDE it at its foot.
   ============================================================ */
.plasenet .site-header{
  background-color:var(--surface-card);
  border-bottom:0;
  margin:var(--space-4) auto var(--space-5);
  max-width:var(--container);
  padding:var(--space-4) 0 0;
}
.plasenet .site-header .col-full{padding:0 var(--space-4)}
.plasenet .site-branding{margin-bottom:var(--space-3);float:none;width:auto}
.plasenet .site-branding .custom-logo-link img,
.plasenet .site-branding img{max-width:200px;height:auto}
.plasenet .site-title,.plasenet .site-description{margin:0}

/* Tagline lockup: uppercase, letterspaced, spec voice, behind a hairline rule. */
.plasenet .psn-tagline{
  display:none;font:var(--type-spec);letter-spacing:.16em;text-transform:uppercase;
  color:var(--slate-600);line-height:1.5;
  border-left:var(--border-hair) solid var(--border-rule);padding-left:var(--space-4);
}
.plasenet .psn-brand{display:flex;align-items:center;gap:var(--space-4)}

/* Phone, live and tappable — out of the logo PNG at last. Trade buyers phone. */
.plasenet .psn-phone{
  display:inline-flex;align-items:center;gap:.4em;
  font:var(--type-spec);letter-spacing:var(--tracking-spec);text-transform:uppercase;
  color:var(--slate-600);white-space:nowrap;
}
.plasenet .psn-phone:hover{color:var(--blue-600);text-decoration:none}
.plasenet .psn-phone strong{font-size:1.15em;letter-spacing:.06em}

.plasenet .site-search{margin:0 0 var(--space-3);width:auto;float:none}
.plasenet .site-search .widget_product_search form,
.plasenet .site-search form{margin:0}
.plasenet .site-search input[type=search],
.plasenet .site-search input[type=text]{
  background:rgba(0,0,0,.025);border:var(--border-hair) solid var(--border-input);
  border-radius:var(--radius-xs);box-shadow:none;
  padding:.53em .857em;font:var(--type-body);color:var(--text-body);width:100%;
}
.plasenet .site-search input[type=search]:hover{border-color:var(--border-input-hover)}

.plasenet .site-header-cart{margin:0 0 var(--space-4);float:none;width:auto;list-style:none;padding:0}
.plasenet .site-header-cart .cart-contents{
  display:inline-flex;align-items:center;gap:.5em;
  background:var(--slate-800);color:var(--paper);
  padding:.53em 1.1em;border-radius:var(--radius-sm);
  font:var(--type-button);text-decoration:none;
  transition:background-color var(--dur-fast) var(--ease-out);
}
.plasenet .site-header-cart .cart-contents:hover{background:var(--orange-500);color:#fff;text-decoration:none}
/* The cart count chip is one of the few things orange is allowed to carry. */
.plasenet .site-header-cart .count,
.plasenet .site-header-cart .cart-contents .count{
  background:var(--orange-500);color:#fff;border-radius:var(--radius-round);
  min-width:1.7em;height:1.7em;display:inline-flex;align-items:center;justify-content:center;
  font:var(--type-spec);letter-spacing:0;padding:0 .35em;
}
.plasenet .site-header-cart .cart-contents:hover .count{background:var(--orange-600)}

@media (min-width:769px){
  .plasenet .site-header{padding:var(--space-5) 0 0}
  .plasenet .site-header .col-full{padding:0 var(--space-5)}
  .plasenet .psn-header-grid{
    display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:var(--space-5);
  }
  .plasenet .psn-tagline{display:block}
  .plasenet .site-branding,.plasenet .site-search,.plasenet .site-header-cart{margin-bottom:0}
}

/* ============================================================
   5  NAVIGATION — slate bar inside the header card
   ============================================================ */
.plasenet .storefront-primary-navigation{
  background:var(--slate-800);border-radius:var(--radius-md);
  margin:var(--space-4) 0 0;clear:both;
}
.plasenet .site-header .storefront-primary-navigation{margin-bottom:var(--space-4)}
.plasenet .main-navigation ul.menu,.plasenet .main-navigation ul.nav-menu{margin:0;padding:0}
.plasenet .main-navigation ul li a{
  color:var(--paper);font-weight:var(--weight-strong);font-size:var(--text-sm);
  padding:.75em var(--space-4);
  transition:background-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out);
}
.plasenet .main-navigation ul li:hover>a,
.plasenet .main-navigation ul li.current-menu-item>a,
.plasenet .main-navigation ul li.current_page_item>a{
  background:var(--blue-600);color:#fff;text-decoration:none;
}
.plasenet .main-navigation ul.menu ul.sub-menu,
.plasenet .main-navigation ul.nav-menu ul{
  background:var(--surface-card);box-shadow:var(--shadow-card);border-radius:var(--radius-md);
  border:0;padding:var(--space-2) 0;
}
.plasenet .main-navigation ul ul li a{color:var(--text-body);font-weight:var(--weight-normal);padding:.5em var(--space-4)}
.plasenet .main-navigation ul ul li:hover>a{background:var(--blue-050);color:var(--blue-600)}

/* Mobile: the handheld toggle. Storefront shows this below 769px. */
.plasenet .menu-toggle{
  background:transparent;color:var(--paper);border:0;border-radius:var(--radius-sm);
  font:var(--type-button);padding:.75em var(--space-4);width:100%;text-align:left;
}
.plasenet .menu-toggle:hover{background:var(--blue-600);color:#fff}
.plasenet .handheld-navigation ul li a{color:var(--paper);padding:.6em var(--space-4)}

/* ============================================================
   6  BUTTONS — slate at rest, orange on hover. Never orange at rest.
   ============================================================ */
.plasenet .button,
.plasenet button,
.plasenet input[type=submit],
.plasenet .woocommerce a.button,
.plasenet .woocommerce button.button,
.plasenet .woocommerce input.button,
.plasenet .woocommerce #respond input#submit{
  display:inline-flex;align-items:center;justify-content:center;gap:.618em;
  background:var(--action-bg);color:var(--action-fg);
  border:0;border-radius:var(--radius-sm);
  font:var(--type-button);padding:.53em 1.1em;line-height:var(--leading-body);
  text-align:center;text-decoration:none;white-space:nowrap;cursor:pointer;
  text-transform:none;letter-spacing:0;
  transition:background-color var(--dur-fast) var(--ease-out),
             transform var(--dur-fast) var(--ease-out),
             box-shadow var(--dur-fast) var(--ease-out);
}
.plasenet .button:hover,
.plasenet button:hover,
.plasenet input[type=submit]:hover,
.plasenet .woocommerce a.button:hover,
.plasenet .woocommerce button.button:hover,
.plasenet .woocommerce input.button:hover,
.plasenet .woocommerce #respond input#submit:hover{
  background:var(--action-bg-hover);color:#fff;
  transform:translateY(var(--lift-y));box-shadow:var(--shadow-lift);text-decoration:none;
}
.plasenet .button:active,.plasenet .woocommerce a.button:active,.plasenet .woocommerce button.button:active{
  background:var(--action-bg-active);transform:none;box-shadow:none;
  transition-duration:var(--dur-instant);
}
/* alt = the single most important action on the page (add to cart, place order). */
.plasenet .woocommerce a.button.alt,
.plasenet .woocommerce button.button.alt,
.plasenet .woocommerce input.button.alt,
.plasenet .woocommerce .single_add_to_cart_button{background:var(--blue-600)}
.plasenet .woocommerce a.button.alt:hover,
.plasenet .woocommerce button.button.alt:hover,
.plasenet .woocommerce .single_add_to_cart_button:hover{background:var(--orange-500)}
.plasenet .button:disabled,.plasenet .button.disabled{background:var(--slate-200);cursor:not-allowed}

/* Nothing uses opacity as a hover state; hovers are always a colour change. */
.plasenet .psn-btn-ghost{
  background:transparent;color:var(--text-link);border:1px solid var(--blue-600);
}
.plasenet .psn-btn-ghost:hover{background:var(--blue-050);color:var(--blue-700)}

/* ============================================================
   7  PRODUCT CARDS — ProductCard.jsx, as markup we own

   These rules used to target Storefront's and WooCommerce's own class
   names (.woocommerce-loop-product__title, ul.products li.product .price).
   That made the stylesheet a running commentary on somebody else's markup:
   every rule needed a !important or a descendant chain to out-specify the
   parent theme, and the structure it described was not the board's.

   The card is now woocommerce/content-product.php, so the classes below
   are the component's own. The `.product` class stays on the <li> because
   WooCommerce's scripts need it — it is a hook, not a style.
   ============================================================ */
.plasenet ul.products{
  display:grid;grid-template-columns:1fr;gap:var(--space-4);
  margin:0 0 var(--space-6);padding:0;list-style:none;
}
.plasenet ul.products::before,.plasenet ul.products::after{display:none}

.plasenet .psn-card{
  position:relative;display:flex;flex-direction:column;
  background:var(--surface-card);border-radius:var(--radius-md);box-shadow:var(--shadow-card);
  width:auto!important;float:none!important;margin:0!important;padding:0;clear:none!important;
  transition:box-shadow var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-out);
  /* `backwards`, NOT `both`. With `both` the animation keeps applying its own
     `to{transform:none}` after it finishes, and an animation outranks normal
     declarations — so the hover lift below could never take effect. */
  animation:psn-enter var(--dur-enter) var(--ease-overshoot) calc(var(--psn-i,0) * var(--stagger)) backwards;
}
/* Storefront sets the card shadow from `.site-main ul.products li.product`
   (0,3,2). A plain `.plasenet .psn-card:hover` is (0,3,0) and loses, so the
   loop selector is carried here purely to win the tie. */
/* WooCommerce centres `ul.products li.product` (0,2,2). The component is
   left-aligned; the heading above it is what carries the centring. */
/* WooCommerce centres `ul.products li.product` (0,2,2) and clips it, which cut
   off the sale badge's deliberate overhang. The component is left-aligned and
   must not clip; the heading above the grid is what carries the centring. */
.plasenet ul.products li.psn-card{text-align:left;overflow:visible}

/* Subcategory tiles share the products grid with the cards, so they need the
   same escape from Storefront's float/width rules. */
.plasenet ul.products li.psn-tile-item{
  width:auto!important;float:none!important;margin:0!important;padding:0;
  clear:none!important;text-align:left;list-style:none;
}
.plasenet ul.products li.psn-tile-item::before{display:none}
/* Keep the tile at its designed height. Stretching it to match a taller
   product card in the same row drags the label bar to the bottom of an empty
   white box, away from the photograph it belongs to. */
.plasenet ul.products li.psn-tile-item{align-self:start}

.plasenet .psn-card:hover,
.plasenet ul.products li.psn-card:hover{
  box-shadow:var(--shadow-lift);transform:translateY(var(--lift-y));
}

@keyframes psn-enter{
  from{opacity:0;transform:translateY(8px) scale(.98)}
  to{opacity:1;transform:none}
}
@media (prefers-reduced-motion:reduce){
  .plasenet .psn-card{animation:none}
}

/* --- thumbnail ---------------------------------------------------------- */
/* The clip lives on the IMAGE, not the thumb. The ribbon hangs .58em past the
   card's left edge with its fold beneath — put overflow:hidden on the thumb and
   both the overhang and the fold are cut off, which is what was shipping. */
.plasenet .psn-card-thumb{
  position:relative;
  border-radius:var(--radius-md) var(--radius-md) 0 0;
  background-color:var(--surface-page);background-image:var(--net-lattice-coarse);
}
.plasenet .psn-card-image{
  display:block;overflow:hidden;
  border-radius:var(--radius-md) var(--radius-md) 0 0;
}
.plasenet .psn-card .psn-card-image img{
  display:block;margin:0;width:100%;aspect-ratio:4/3;object-fit:cover;
  transition:transform var(--dur-image) ease-in-out;
}
.plasenet .psn-card:hover .psn-card-image img{transform:scale(1.04)}

/* --- title and categories ----------------------------------------------- */
.plasenet .psn-card-title{
  font:var(--type-h4);color:var(--text-heading);
  padding:var(--space-4) var(--space-4) 0;margin:0;
}
.plasenet .psn-card-title a{color:inherit;text-decoration:none}
.plasenet .psn-card-title a:hover{color:var(--text-link)}
.plasenet .psn-card-cats{
  list-style:none;margin:0;padding:.5em var(--space-4) var(--space-4);
  border-bottom:var(--border-rule-w) solid var(--border-strong);
  font:var(--type-small);color:var(--text-quiet);
}
.plasenet .psn-card-cats a{color:var(--text-quiet);font-weight:var(--weight-normal)}

/* --- foot: action left, rating right ------------------------------------ */
.plasenet .psn-card-foot{
  display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);
  padding:var(--space-4);margin-top:auto;
}
.plasenet .psn-card-foot .psn-btn{margin:0}

/* --- PriceRibbon.jsx ----------------------------------------------------
   Hung .58em off the card's left edge with a folded corner behind it: a
   paper tag pinned to the product, not a label floating on it.
   THE 2018 SPLIT — blue for ordinary prices, orange only for genuine
   reductions, slate for "we will quote you".                              */
.plasenet .psn-ribbon{
  display:inline-block;margin:0;z-index:2;
  background:var(--price-bg);color:#fff;
  padding:.327em .857em;font:var(--type-price);
  border-radius:var(--radius-md) var(--radius-md) var(--radius-md) 0;
  box-shadow:var(--shadow-ribbon);white-space:nowrap;
}
.plasenet .psn-ribbon--floating{position:absolute;bottom:var(--space-5);left:-.58em}
.plasenet .psn-ribbon--sale{background:var(--price-sale-bg)}
.plasenet .psn-ribbon--quote{background:var(--slate-600)}
.plasenet .psn-ribbon-fold{
  position:absolute;left:0;bottom:-.58em;display:block;
  border-style:solid;border-width:.618em 0 0 .618em;
  border-color:var(--price-fold) transparent transparent transparent;
}
.plasenet .psn-ribbon--sale .psn-ribbon-fold{border-top-color:var(--price-sale-fold)}
.plasenet .psn-ribbon--quote .psn-ribbon-fold{border-top-color:var(--slate-800)}
.plasenet .psn-ribbon-from{font-weight:var(--weight-normal)}
.plasenet .psn-ribbon-unit{
  font-family:var(--font-spec);font-weight:var(--weight-normal);font-size:.82em;
  margin-left:.3em;opacity:.92;
}
/* WooCommerce's own price markup lands inside the ribbon; it must not
   bring its own box with it. */
.plasenet .psn-ribbon .amount,
.plasenet .psn-ribbon bdi{background:none;color:inherit;font:inherit}
.plasenet .psn-ribbon del{color:rgba(255,255,255,.75);font-weight:var(--weight-normal);margin-right:.35em}
.plasenet .psn-ribbon ins{color:#fff;font-weight:var(--weight-strong);text-decoration:none}

/* --- SaleBadge.jsx ------------------------------------------------------
   An eight-pointed star: a rounded square plus a 45deg copy, overhanging the
   corner. It pulses ONCE on mount, then holds still.

   The label is set in Plex SANS bold, not in spec mono — the earlier port used
   `var(--type-spec)` with uppercase and .14em tracking, which made "Ofertă!"
   54px wide inside a 44px star. It overflowed its own badge and then got cut
   off by the card, so it read "FERTĂ!".                                     */
.plasenet .psn-sale-badge,.plasenet .onsale{
  position:absolute;top:.618em;left:-1em;z-index:99;
  min-height:auto;min-width:auto;
  display:grid;place-items:center;
  width:3.631em;height:3.631em;padding:0;margin:0;
  background:none;color:#fff;
  font-family:var(--font-core);font-weight:var(--weight-strong);
  font-size:var(--text-xs);line-height:1;letter-spacing:0;text-transform:none;
  text-align:center;
  animation:psn-salepulse 500ms var(--ease-overshoot) 1;
}
.plasenet .psn-sale-badge::before,.plasenet .onsale::before,
.plasenet .psn-sale-badge::after,.plasenet .onsale::after{
  content:"";position:absolute;inset:0;z-index:-1;
  background:var(--sale-badge);border-radius:var(--radius-md);
}
.plasenet .psn-sale-badge::after,.plasenet .onsale::after{transform:rotate(45deg)}

@keyframes psn-salepulse{
  from{transform:scale(.85)}70%{transform:scale(1.1)}to{transform:scale(1)}
}

/* --- StarRating.jsx — orange, one of its few permitted homes ------------ */
.plasenet .psn-stars{display:inline-flex;align-items:center;gap:.2em}
.plasenet .star-rating{color:var(--star-fill);font-size:.85em;margin:0}
.plasenet .star-rating::before{color:var(--star-empty)}
.plasenet .psn-review-count{font:var(--type-spec);color:var(--text-muted)}

/* Acasa-atelier.dc.html sizes the product grid `repeat(auto-fit,minmax(14rem,1fr))`
   with a space-5 gap — no breakpoint, no column count. At the 66.5rem container
   that resolves to four across, and it degrades on its own below that.
   minmax(14rem,0) rather than (14rem,1fr) so a long product name cannot widen
   its own column. */
.plasenet ul.products{
  grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));
  gap:var(--space-5);
}
.plasenet ul.products>*{min-width:0}

/* ============================================================
   7a  BRAND LOCKUP

   The original mark with the phone number removed, shipped as a theme
   asset. Sized to the board's 186px.
   ============================================================ */
.plasenet .site-branding{margin:0;padding:0;width:auto}
/* Storefront's own rule is
   `.storefront-secondary-navigation.woocommerce-active .site-header .site-branding`
   — four classes, so anything shorter loses. Both of those classes live on
   <body> alongside .plasenet, hence the compound. */
.plasenet.woocommerce-active .site-header .site-branding,
.plasenet.storefront-secondary-navigation .site-header .site-branding{
  margin:0;padding:0;width:auto;max-width:none;
}
.plasenet .site-title,.plasenet .site-branding .beta{margin:0;padding:0;font-size:inherit;line-height:1}
.plasenet .site-title a,.plasenet .site-branding a{text-decoration:none;display:block}
.plasenet .site-title a:hover{text-decoration:none}
.plasenet img.psn-logo{display:block;width:186px;height:auto;max-width:100%}

/* ============================================================
   7b  BUTTON — Button.jsx

   Slate at rest, orange on hover: the old site's "orange takeover",
   re-timed to 150ms and stopped. Orange is never the resting state of an
   ordinary button.
   ============================================================ */
.plasenet .psn-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.618em;
  font:var(--type-button);
  background:var(--action-bg);color:var(--action-fg);
  border:0;border-radius:var(--radius-sm);
  line-height:var(--leading-body);text-align:center;text-decoration:none;
  white-space:nowrap;cursor:pointer;-webkit-font-smoothing:antialiased;appearance:none;
  transition:background-color var(--dur-fast) var(--ease-out),
             transform var(--dur-fast) var(--ease-out),
             box-shadow var(--dur-fast) var(--ease-out);
}
.plasenet .psn-btn--sm{font-size:var(--text-xs);padding:.45em 1em}
.plasenet .psn-btn--md{font-size:var(--text-sm);padding:.53em 1.1em}
.plasenet .psn-btn--lg{font-size:var(--text-lg);padding:.53em 1.1em}
.plasenet .psn-btn--block{display:flex;width:100%}
.plasenet .psn-btn:hover,.plasenet .psn-btn:focus{text-decoration:none}
.plasenet .psn-btn:hover{background:var(--action-bg-hover);color:var(--action-fg);transform:translateY(var(--lift-y));box-shadow:var(--shadow-lift)}
.plasenet .psn-btn:active{background:var(--action-bg-active);transform:none;box-shadow:none}
.plasenet .psn-btn[disabled]{background:var(--slate-200);color:var(--white);cursor:not-allowed;transform:none;box-shadow:none}

.plasenet .psn-btn--accent{background:var(--orange-500);color:#fff}
.plasenet .psn-btn--accent:hover{background:var(--orange-600)}
.plasenet .psn-btn--accent:active{background:var(--orange-700)}

.plasenet .psn-btn--quiet{background:var(--blue-600)}
.plasenet .psn-btn--quiet:hover{background:var(--blue-500)}
.plasenet .psn-btn--quiet:active{background:var(--blue-700)}

.plasenet .psn-btn--ghost{background:transparent;color:var(--text-link);border:1px solid var(--blue-600)}
.plasenet .psn-btn--ghost:hover{background:var(--blue-050);color:var(--text-link)}
.plasenet .psn-btn--ghost:active{background:var(--blue-100)}

/* ============================================================
   7c  SECTION HEADING + PANEL — SectionHeading.jsx, Panel.jsx
   ============================================================ */
.plasenet .psn-heading{
  display:flex;flex-direction:column;gap:var(--space-2);
  margin-bottom:var(--space-5);
}
.plasenet .psn-heading--center{align-items:center;text-align:center}
.plasenet .psn-heading--start{align-items:flex-start;text-align:left}
.plasenet .psn-heading-title{
  font:var(--type-h2);letter-spacing:var(--tracking-tight);
  color:var(--text-heading);margin:0;
}
.plasenet .psn-eyebrow{
  font:var(--type-spec);letter-spacing:var(--tracking-spec);
  text-transform:uppercase;color:var(--blue-600);
}

.plasenet .psn-panel{
  background:var(--surface-card);border-radius:var(--radius-md);
  box-shadow:var(--shadow-card);padding:var(--space-5);color:var(--text-body);
}
.plasenet .psn-panel--sunken{background:var(--surface-sunken)}
.plasenet .psn-panel--band{background:var(--surface-band)}
.plasenet .psn-panel--flush{padding:0}
.plasenet .psn-panel-head{
  display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-4);
  margin-bottom:var(--space-4);padding-bottom:var(--space-3);
  border-bottom:var(--border-rule-w) solid var(--border-strong);
}
.plasenet .psn-panel--flush .psn-panel-head{padding:var(--space-5) var(--space-5) var(--space-3)}
.plasenet .psn-panel-title{font:var(--type-h4);margin:0;color:var(--text-heading)}
.plasenet .psn-heading-action,.plasenet .psn-panel-action{font:var(--type-small);white-space:nowrap}

/* ============================================================
   8  TRUST STRIP + CATEGORY TILES — routing four unlike audiences
   ============================================================ */
/* --- TrustStrip.jsx -----------------------------------------------------
   Four claims on a band: centred icon, bold title, quiet detail. The detail
   used to be set in mono uppercase spec type, which is the voice reserved
   for measurements — it made "din Galați, din 2011" read like a part code. */
.plasenet .psn-trust{
  display:grid;grid-template-columns:1fr;gap:var(--space-5);
  background:var(--surface-band);border-radius:var(--radius-md);
  padding:var(--space-5);margin:0 0 var(--space-6);
}
.plasenet .psn-trust-item{text-align:center}
.plasenet .psn-trust-icon{display:block;line-height:0;margin-bottom:.5em}
/* These icons are mixed: the Romania outline is drawn with fill, the truck,
   star and case with stroke. Forcing both turns the stroked three into solid
   blobs, so set `color` and let each SVG's own currentColor resolve. */
.plasenet .psn-trust-icon svg{
  width:1.618rem;height:1.618rem;display:inline-block;color:var(--blue-600);
}
.plasenet .psn-trust-title{
  font-weight:var(--weight-strong);font-size:var(--text-sm);color:var(--text-strong);
}
.plasenet .psn-trust-detail{font:var(--type-small);color:var(--text-muted)}

@media (min-width:769px){
  .plasenet .psn-trust{grid-template-columns:repeat(var(--psn-trust-cols,4),1fr)}
}

/* --- CategoryTile.jsx ---------------------------------------------------
   A photograph with a BLUE label bar over its lower half.

   The first pass drew these as dark slate cards under a full-height
   gradient scrim with the title at the bottom. That is a different
   component: it buries the photograph and it spends slate where the
   system spends blue. The bar was blue in 2018 and blue is where it
   belongs — CategoryTile.jsx is explicit about it.                        */
.plasenet .psn-tiles{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(9.5rem,1fr));
  gap:var(--space-4);list-style:none;margin:0 0 var(--space-6);padding:0;
}
.plasenet .psn-tiles>*{min-width:0}
.plasenet .psn-tile{
  position:relative;display:block;overflow:hidden;text-decoration:none;
  border-radius:var(--radius-md);box-shadow:var(--shadow-card);
  background:var(--surface-card);
  transition:transform var(--dur-fast) var(--ease-out),box-shadow var(--dur-fast) var(--ease-out);
}
.plasenet .psn-tile:hover{transform:translateY(var(--lift-y));box-shadow:var(--shadow-lift);text-decoration:none}
.plasenet .psn-tile-photo{
  display:block;height:9.5rem;
  background-color:var(--surface-page);background-image:var(--net-lattice-coarse);
  background-size:cover;background-position:center;
  transition:transform var(--dur-image) ease-in-out;
}
.plasenet .psn-tile:hover .psn-tile-photo{transform:scale(1.04)}
/* The bar is anchored to the bottom, so its TOP edge moves with the length of
   the name. The board's own data is one word per tile ("Sport", "Pescuit");
   ours carries the real taxonomy — "Construcţii şi amenajări interioare" — and
   the row came out ragged, every bar starting at a different height. A minimum
   of two lines squares them up without truncating anything. */
.plasenet .psn-tile-label{
  position:absolute;left:0;right:0;bottom:0;
  display:flex;align-items:center;
  min-height:calc(2 * var(--leading-snug) * 1em + 2 * var(--space-3));
  padding:var(--space-3) var(--space-4);
  background:var(--blue-600);color:#fff;font:var(--type-h4);
  transition:background-color var(--dur-fast) var(--ease-out);
}
.plasenet .psn-tile:hover .psn-tile-label{background:var(--blue-500)}
.plasenet .psn-tile-name{display:block}
.plasenet .psn-tile-count{font-weight:var(--weight-normal);opacity:.85}
/* With a description the bar sits at the 55% line and the text runs beneath. */
.plasenet .psn-tile--described .psn-tile-label{top:55%;bottom:auto}
.plasenet .psn-tile-desc{
  display:block;margin:0;
  padding:calc(var(--space-6) + var(--space-3)) var(--space-4) var(--space-4);
  font:var(--type-small);color:var(--text-body);
}

@media (min-width:769px){
}

/* ============================================================
   8b  TESTIMONIAL — Testimonial.jsx

   A rated review, not a pull quote. The first pass rendered a bare
   <blockquote> with a portrait, which loses the two things the board
   leads with: the stars, and which product is being reviewed.
   ============================================================ */
.plasenet .psn-testimonial{
  display:grid;grid-template-columns:1fr;gap:var(--space-4);
  background:var(--surface-card);border-radius:var(--radius-md);
  box-shadow:var(--shadow-card);padding:var(--space-5);
}
.plasenet .psn-testimonial--imaged{grid-template-columns:6.5rem 1fr}
.plasenet .psn-testimonial-photo{
  height:6.5rem;border-radius:var(--radius-md);
  background-color:var(--surface-page);background-size:cover;background-position:center;
}
.plasenet .psn-testimonial-body{min-width:0}
.plasenet .psn-testimonial-product{font:var(--type-h4);margin:.382em 0 0}
.plasenet .psn-testimonial-price{font-weight:var(--weight-body);color:var(--text-quiet)}
.plasenet .psn-testimonial-author{
  margin:0 0 var(--space-3);font:var(--type-small);color:var(--text-muted);
}
.plasenet .psn-testimonial-text{margin:0;font:var(--type-small);color:var(--text-body)}
.plasenet .psn-testimonial-link{margin:var(--space-3) 0 0}

/* --- The home hero: the one full-bleed image, the only gradient --------- */
.plasenet .psn-hero{
  position:relative;border-radius:var(--radius-md);overflow:hidden;
  background:var(--slate-900);background-size:cover;background-position:center;
  min-height:23rem;display:grid;align-items:center;
  padding:var(--space-6) var(--space-4);margin-bottom:var(--space-5);
  box-shadow:var(--shadow-card);
}
/* The board's gradient has a third stop at 55% — it holds the text side dark
   for longer, then releases the photograph. Two stops washed the middle out. */
.plasenet .psn-hero::before{
  content:"";position:absolute;inset:0;
  background:linear-gradient(90deg,rgba(37,49,52,.9) 0%,rgba(37,49,52,.66) 55%,rgba(37,49,52,.25) 100%);
}
.plasenet .psn-hero>*{position:relative;color:var(--paper);max-width:36rem}
.plasenet .psn-hero h1,.plasenet .psn-hero h2{color:#fff;margin-bottom:var(--space-3)}
.plasenet .psn-hero .psn-eyebrow{
  font:var(--type-spec);letter-spacing:var(--tracking-spec);text-transform:uppercase;
  color:var(--orange-500);display:block;margin-bottom:var(--space-3);
}
@media (min-width:769px){.plasenet .psn-hero{padding:var(--space-7) var(--space-6)}}

/* ============================================================
   9  CATEGORY / ARCHIVE
   ============================================================ */
.plasenet .woocommerce-products-header{margin-bottom:var(--space-4)}
.plasenet .storefront-sorting,.plasenet .woocommerce-ordering,.plasenet .woocommerce-result-count{
  font:var(--type-small);color:var(--text-quiet);
}
.plasenet .storefront-sorting{
  background:var(--surface-card);border-radius:var(--radius-md);box-shadow:var(--shadow-card);
  padding:var(--space-3) var(--space-4);margin-bottom:var(--space-4);
}
.plasenet select,.plasenet .woocommerce-ordering select{
  background:var(--white);border:var(--border-hair) solid var(--border-input);
  border-radius:var(--radius-xs);padding:.4em .6em;font:var(--type-small);color:var(--text-body);
}
.plasenet #secondary .widget{padding:var(--space-4);margin-bottom:var(--space-4)}
.plasenet #secondary .widget-title{font:var(--type-h4);margin-bottom:var(--space-3);
  padding-bottom:var(--space-3);border-bottom:var(--border-rule-w) solid var(--border-strong)}
.plasenet #secondary .widget ul{list-style:none;margin:0;padding:0}
.plasenet #secondary .widget ul li{padding:.35em 0;border-bottom:var(--border-hair) solid var(--border-rule)}
.plasenet #secondary .widget ul li:last-child{border-bottom:0}
.plasenet .woocommerce-pagination ul{border:0;display:flex;gap:var(--space-2);justify-content:center}
.plasenet .woocommerce-pagination ul li{border:0}
.plasenet .woocommerce-pagination a,.plasenet .woocommerce-pagination span{
  background:var(--surface-card);box-shadow:var(--shadow-card);border-radius:var(--radius-md);
  padding:.4em .8em;font:var(--type-button);color:var(--text-link);
}
.plasenet .woocommerce-pagination .current{background:var(--blue-600);color:#fff}
@media (min-width:769px){
  .plasenet #secondary{width:15.5rem}
}

/* ============================================================
   10  SINGLE PRODUCT + BUY PANEL
   The calculator is the moment the business model becomes visible.
   Three real buying states: calculator, fixed price, quote-only.
   ============================================================ */
.plasenet .single-product div.product{position:relative}
.plasenet .single-product .woocommerce-product-gallery{
  background:var(--surface-card);border-radius:var(--radius-md);box-shadow:var(--shadow-card);
  padding:var(--space-3);margin-bottom:var(--space-4);
}
.plasenet .single-product .product_title{font:var(--type-h1);letter-spacing:var(--tracking-tight)}
.plasenet .single-product div.product p.price,
.plasenet .single-product div.product span.price{
  color:var(--blue-600);font:var(--weight-strong) var(--text-xl)/1.2 var(--font-core);
  font-variant-numeric:var(--numeric-tabular);
}
.plasenet .single-product div.product p.price del{color:var(--text-struck);font-size:.7em;font-weight:var(--weight-normal)}
.plasenet .single-product div.product p.price ins{color:var(--orange-600)}
.plasenet .psn-unit-note{font:var(--type-spec);letter-spacing:var(--tracking-spec);
  text-transform:uppercase;color:var(--text-muted);display:block;margin-top:.3em}

/* The buy panel — one card, whichever of the three states it is in. */
.plasenet .psn-buy{
  background:var(--surface-card);border-radius:var(--radius-md);box-shadow:var(--shadow-card);
  padding:var(--space-4);margin-bottom:var(--space-4);
}
.plasenet .stock.in-stock{color:var(--stock-ok);font-weight:var(--weight-strong)}
.plasenet .stock.out-of-stock{color:var(--stock-out)}


/* ============================================================
   11  REVIEWS + TESTIMONIALS
   Rich on fishing pages, empty on sports pages — the empty state
   must be dignified rather than a hole.
   ============================================================ */
/* The Testimonial component itself is defined in section 8b. */
.plasenet .psn-empty{
  background-color:var(--surface-sunken);background-image:var(--net-lattice-coarse);
  border-radius:var(--radius-md);padding:var(--space-5);text-align:center;
  color:var(--text-quiet);font:var(--type-small);
}
/* The product-page reviews live with the tabs, in section 19c. */

/* ============================================================
   12  FOOTER
   ============================================================ */
.plasenet .site-footer{
  background:var(--surface-dark);color:var(--slate-300);
  margin-top:var(--space-5);padding:var(--space-5) 0;
}
.plasenet .site-footer a{color:var(--slate-300);font-weight:var(--weight-normal)}
.plasenet .site-footer a:hover{color:var(--paper)}
.plasenet .site-footer h1,.plasenet .site-footer h2,.plasenet .site-footer h3,
.plasenet .site-footer h4,.plasenet .site-footer .widget-title{color:var(--paper)}
.plasenet .site-footer .widget{background:transparent;box-shadow:none;border-radius:0;padding:0}
.plasenet .site-info{
  border-top:var(--border-hair) solid var(--slate-600);
  margin-top:var(--space-5);padding-top:var(--space-4);
  font:var(--type-spec);letter-spacing:var(--tracking-spec);text-transform:uppercase;
  color:var(--slate-400);
}
.plasenet .psn-legal{font-family:var(--font-core);text-transform:none;letter-spacing:0;display:block;margin-top:.5em}

/* ============================================================
   13  MOTION — alive on interaction, calm when idle
   ============================================================ */
@keyframes psn-pulse{0%{transform:scale(1)}50%{transform:scale(1.06)}100%{transform:scale(1)}}
/* The card entrance and its stagger live in section 7, on --psn-i. */

/* The original code respected nothing. This one does. */
@media (prefers-reduced-motion:reduce){
  .plasenet *,.plasenet *::before,.plasenet *::after{
    animation-duration:.01ms!important;animation-iteration-count:1!important;
    transition-duration:.01ms!important;scroll-behavior:auto!important;
  }
  .plasenet ul.products li.product:hover{transform:none}
  .plasenet ul.products li.product:hover a img{transform:none}
}

/* ============================================================
   14  EXISTING THEME MARKUP
   The child theme already emits a trust strip and a footer badge row.
   These are styled rather than replaced.
   ============================================================ */
.plasenet .plasenet-trust-signals{margin:var(--space-5) 0}
.plasenet .trust-grid{display:grid;grid-template-columns:1fr;gap:var(--space-3)}
.plasenet .trust-item{
  display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;
  column-gap:var(--space-3);row-gap:0;align-items:center;
  background:var(--surface-card);border-radius:var(--radius-md);box-shadow:var(--shadow-card);
  padding:var(--space-3) var(--space-4);
}
.plasenet .trust-item .trust-icon{
  grid-row:1/3;width:2em;height:2em;color:var(--blue-600);
}
/* "Producător român — din Galați, din 2011": the claim in the reading voice,
   the qualifier in the spec voice. Both concrete and checkable. */
.plasenet .trust-item strong{
  font:var(--type-h4);color:var(--text-heading);align-self:end;
}
.plasenet .trust-item span{
  font:var(--type-spec);letter-spacing:var(--tracking-spec);text-transform:uppercase;
  color:var(--slate-600);align-self:start;padding-top:.35em;
}
@media (min-width:769px){
  .plasenet .trust-grid{grid-template-columns:repeat(4,1fr)}
}

/* Footer info row + legal badges. */
.plasenet .site-info-inner{
  display:flex;flex-direction:column;gap:var(--space-4);align-items:flex-start;
}
.plasenet .site-info-text{
  font-family:var(--font-core);font-size:var(--text-sm);font-weight:var(--weight-body);
  text-transform:none;letter-spacing:0;line-height:var(--leading-body);color:var(--slate-300);
}
.plasenet .site-info-badges{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-4)}
.plasenet .site-info-badges img{height:30px;width:auto}
@media (min-width:769px){
  .plasenet .site-info-inner{flex-direction:row;justify-content:space-between;align-items:center}
}

/* Made-to-measure cards say so before the click. */
.plasenet .psn-card--measured .psn-card-title::after{
  content:"pe măsură";display:block;width:fit-content;margin:.5em 0 0;
  font:var(--type-spec);letter-spacing:var(--tracking-spec);text-transform:uppercase;
  color:var(--blue-600);background:var(--blue-050);
  border-radius:var(--radius-xs);padding:.3em .5em;
}

/* ============================================================
   15  DROPPING FONT AWESOME
   Storefront enqueues Font Awesome Free 5.13 (80KB of CSS plus a
   ~78KB woff2) and its own templates use it for exactly four things:
   the star rating, the review star-picker, the notice icons and the
   password reveal. All four are redrawn here as inline SVG so
   'storefront-icons' can be dequeued — see inc/plasenet-design.php.
   Every rule below must therefore also KILL the pseudo-element the
   FA glyph lived in, or it renders as tofu once the font is gone.
   ============================================================ */

/* --- Star rating ---------------------------------------------------------
   Orange is allowed here; it is one of its few permitted homes.            */
:root{
  --star-svg-full:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 21.6 20'%3E%3Cpath fill='%23f37324' d='M10.8 1l2.23 5.93 6.33.29-4.95 3.95 1.68 6.11-5.29-3.48-5.29 3.48 1.68-6.11L2.24 7.22l6.33-.29z'/%3E%3C/svg%3E");
  --star-svg-empty:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 21.6 20'%3E%3Cpath fill='%23adb9bc' d='M10.8 1l2.23 5.93 6.33.29-4.95 3.95 1.68 6.11-5.29-3.48-5.29 3.48 1.68-6.11L2.24 7.22l6.33-.29z'/%3E%3C/svg%3E");
}
.plasenet .star-rating,
.plasenet .woocommerce .star-rating{
  position:relative;display:inline-block;overflow:hidden;
  width:5.4em;height:1em;line-height:1;font-size:.85em;
  background-image:var(--star-svg-empty);
  background-size:1.08em 1em;background-repeat:repeat-x;
  color:transparent;
}
.plasenet .star-rating::before,
.plasenet .woocommerce .star-rating::before,
.woocommerce .plasenet .star-rating::before{content:none;display:none}
.plasenet .star-rating span,
.plasenet .woocommerce .star-rating span{
  position:absolute;top:0;left:0;height:1em;overflow:hidden;padding-top:0;
  background-image:var(--star-svg-full);
  background-size:1.08em 1em;background-repeat:repeat-x;
  text-indent:-9999px;
}
.plasenet .star-rating span::before,
.plasenet .woocommerce .star-rating span::before,
.woocommerce .plasenet .star-rating span::before{content:none;display:none}

/* --- The star picker in the review form --------------------------------- */
.plasenet p.stars a{
  position:relative;width:1.2em;height:1.2em;display:inline-block;text-indent:-9999px;
  background-image:var(--star-svg-empty);background-size:contain;
  background-repeat:no-repeat;background-position:center;
}
.plasenet p.stars a::before,.plasenet p.stars a::after{content:none}
.plasenet p.stars a{transition:transform var(--dur-fast) var(--ease-overshoot)}
.plasenet p.stars a:hover{transform:scale(1.15)}
/* Chosen: everything up to the picked star is full, everything after empty. */
.plasenet p.stars.selected a{background-image:var(--star-svg-full)}
.plasenet p.stars.selected a.active~a{background-image:var(--star-svg-empty)}
/* Hovering previews a new choice and must beat the chosen state above, whose
   `a.active~a` is (0,4,3) — hence `.stars.stars`, a same-element repeat. */
.plasenet p.stars.stars:hover span a{background-image:var(--star-svg-full)}
.plasenet p.stars.stars:hover span a:hover~a{background-image:var(--star-svg-empty)}

/* --- Notices — see section 19f. The block that used to sit here drew a LEFT
   rail; Notice.jsx specifies a top edge. --------------------------------- */

/* --- Password reveal ----------------------------------------------------- */
.plasenet .show-password-input::after{content:none}
/* :hover too — `.plasenet button:hover` resets the whole background shorthand. */
.plasenet .show-password-input,.plasenet .show-password-input:hover{
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23697578'%3E%3Cpath d='M12 5c-7 0-11 7-11 7s4 7 11 7 11-7 11-7-4-7-11-7zm0 12a5 5 0 110-10 5 5 0 010 10zm0-8a3 3 0 100 6 3 3 0 000-6z'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:center;background-size:1.2em;
}

/* ============================================================
   16  THE BOARD — "Redesign plase.net — fluxul de cumpărare"
   Source: Redesign plase.net - board.dc.html (tura 1, 6 Sep 2026)
   and the three artboards it imports: Acasa-atelier, Categorie-pescuit,
   Produs (iepuri / prostovol / taliene).

   The artboards use @container queries because a canvas frame can never
   fire a viewport breakpoint. On a real site that constraint is gone, so
   these are @media at the system's single breakpoint, 769px.
   ============================================================ */

/* --- Brand red, entering the interface ----------------------------------
   The design system reserved #DB1414 for the logo. The board spends it in
   two of the three ways the "roşu de marcă" study proposes: 3a the red
   thread (a 3px edge and the rule beside the tagline) and 3c the maker's
   seal (the tricolour stamp). It never touches a button, a link or a price.
   NOTE: brand red and the destructive red (#E01C1F) are the same colour to
   the eye — see the cart remove control at the end of this section.       */
.plasenet{border-top:3px solid var(--brand-red)}

/* --- Top utility bar ---------------------------------------------------- */
/* One line everywhere. On a phone: the number and "Transport gratuit > 300 lei";
   the e-mail and the words "la comenzi" come back from tablet width up. Wraps
   to two centred lines only if a very narrow screen cannot hold it. */
.plasenet .psn-topbar{background:rgba(0,0,0,.035);font:var(--type-small);font-size:var(--text-xs)}
.plasenet .psn-topbar-inner{
  max-width:var(--container);margin:0 auto;padding:.2em var(--gutter);
  display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;column-gap:var(--space-4);
}
.plasenet .psn-topbar ul{
  display:flex;justify-content:center;flex-wrap:wrap;
  list-style:none;margin:0;padding:0;
}
.plasenet .psn-topbar li{padding:.35em 0}
.plasenet .psn-topbar a{color:var(--slate-600);font-weight:var(--weight-normal);white-space:nowrap}
.plasenet .psn-topbar a:hover{color:var(--blue-600)}
.plasenet .psn-topbar svg{width:1em;height:1em;vertical-align:-.12em;margin-right:.35em}
.plasenet .psn-topbar-mail,.plasenet .psn-topbar-long{display:none}
/* The shipping promise is the one line of running text that carries the red. */
.plasenet .psn-topbar-notice{color:var(--brand-red);font-weight:var(--weight-strong);white-space:nowrap;padding:.35em 0}
@media (min-width:769px){
  .plasenet .psn-topbar{font-size:var(--text-sm)}
  .plasenet .psn-topbar-inner{padding:.5em var(--gutter);column-gap:var(--space-5)}
  .plasenet .psn-topbar-mail{display:list-item}
  .plasenet .psn-topbar-long{display:inline}
  .plasenet .psn-topbar li{padding:0 .6em 0 0}
  .plasenet .psn-topbar-notice{padding:0}
}

/* --- Header ------------------------------------------------------------- */
.plasenet .psn-header-grid{
  display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-5);
}
.plasenet .site-branding img.psn-logo{width:186px;max-width:100%}
.plasenet .psn-tagline{
  display:none;
  border-left:2px solid var(--brand-red);
  padding-left:var(--space-4);color:var(--slate-600);line-height:1.6;
}
/* The search is Storefront's `.site-search`. A `.psn-search` selector was
   also carried here for a while and matched nothing at all. */
/* Hamburger: 44px, the minimum comfortable touch target. */
.plasenet .psn-burger{
  display:inline-flex;align-items:center;justify-content:center;
  width:44px;height:44px;flex:0 0 auto;
  background:var(--slate-800);color:var(--paper);border:0;
  border-radius:var(--radius-sm);cursor:pointer;padding:0;
  transition:background var(--dur-fast) var(--ease-out);
}
.plasenet .psn-burger:hover{background:var(--orange-500)}
.plasenet .psn-burger span{
  display:block;width:18px;height:2px;background:currentColor;
  box-shadow:0 -6px 0 currentColor,0 6px 0 currentColor;
}
@media (min-width:769px){
  .plasenet .psn-burger{display:none}
  .plasenet .psn-tagline{display:block}
  .plasenet .site-branding img,.plasenet .custom-logo{width:186px}
  .plasenet .psn-header-grid{gap:var(--space-5);padding:var(--space-5)}
}
/* The nav bar's first and last items square off against the bar's ends. */
.plasenet .main-navigation ul.menu>li:first-child>a{border-radius:var(--radius-md) 0 0 var(--radius-md)}
.plasenet .main-navigation ul.menu>li:last-child>a{border-radius:0 var(--radius-md) var(--radius-md) 0}

/* --- Hero --------------------------------------------------------------
   The one full-bleed image on the site, and the only gradient in the system:
   a three-stop slate scrim so the text side stays legible over photography. */
.plasenet .psn-hero{
  min-height:23rem;display:grid;align-items:center;
  padding:0;background-size:cover;background-position:center;
}
.plasenet .psn-hero::before{
  background:linear-gradient(90deg,rgba(37,49,52,.9) 0%,rgba(37,49,52,.66) 55%,rgba(37,49,52,.25) 100%);
}
.plasenet .psn-hero-inner{
  position:relative;padding:var(--space-6) var(--space-5);max-width:36rem;
}
.plasenet .psn-hero h1{color:var(--paper);margin:var(--space-3) 0;font-size:var(--text-2xl)}
.plasenet .psn-hero p{color:var(--slate-200);font:var(--type-lede);margin-bottom:var(--space-5);max-width:30rem}
.plasenet .psn-hero-actions{display:flex;flex-wrap:wrap;gap:var(--space-4)}
/* The hero is the one place an orange button rests, because it is the
   single most-wanted action on the page and it sits on a photograph. */
.plasenet .psn-hero .psn-btn-accent{background:var(--orange-500);color:#fff}
.plasenet .psn-hero .psn-btn-accent:hover{background:var(--orange-600)}
.plasenet .psn-hero .psn-btn-ghost{background:transparent;color:var(--paper);border:1px solid var(--paper)}
.plasenet .psn-hero .psn-btn-ghost:hover{background:rgba(248,248,248,.14);color:#fff}
@media (min-width:769px){
  .plasenet .psn-hero-inner{padding:var(--space-7) var(--space-6)}
  .plasenet .psn-hero h1{font-size:var(--text-4xl)}
}

/* --- Section headings --------------------------------------------------- */
.plasenet .psn-section{margin:var(--space-6) 0}
.plasenet .psn-heading{margin-bottom:var(--space-4)}
.plasenet .psn-heading .psn-eyebrow{
  display:block;font:var(--type-spec);letter-spacing:var(--tracking-spec);
  text-transform:uppercase;color:var(--blue-600);margin-bottom:var(--space-2);
}
.plasenet .psn-heading h2{margin:0}

/* --- The three promises: ţesute · croite · livrate ---------------------- */
.plasenet .psn-features{
  display:grid;grid-template-columns:1fr;gap:var(--space-5);
}
.plasenet .psn-feature{
  background:var(--surface-card);border-radius:var(--radius-md);
  box-shadow:var(--shadow-card);padding:var(--space-5);
  display:flex;flex-direction:column;gap:var(--space-3);
}
.plasenet .psn-feature svg{width:2.4rem;height:2.4rem;color:var(--slate-800);fill:currentColor}
.plasenet .psn-feature h3{margin:0}
.plasenet .psn-feature p{font:var(--type-small);margin:0;color:var(--text-body)}
@media (min-width:769px){
  .plasenet .psn-features{grid-template-columns:repeat(auto-fit,minmax(16rem,1fr))}
}

/* --- Category tiles ----------------------------------------------------- */

/* --- The promotions band ------------------------------------------------
   At most two background colours on a page: the paper ground and one band. */
.plasenet .psn-band{
  background:var(--surface-band);
  border-top:1px solid var(--border-rule);border-bottom:1px solid var(--border-rule);
  margin:var(--space-6) 0 0;padding:var(--space-6) 0;
}
.plasenet .psn-band .col-full{max-width:var(--container);margin:0 auto}

/* --- Testimonials ------------------------------------------------------- */
.plasenet .psn-testimonials{
  display:grid;grid-template-columns:1fr;gap:var(--space-5);
}
@media (min-width:769px){
  .plasenet .psn-testimonials{grid-template-columns:repeat(auto-fit,minmax(19rem,1fr))}
}

/* --- The maker's seal ---------------------------------------------------
   Variant 3c: one red element per page, and it carries content — origin,
   which is exactly what a buyer avoiding imports is looking for.          */
.plasenet .psn-seal{
  display:inline-flex;align-items:center;gap:.5em;
  background:var(--brand-red);border-radius:var(--radius-md);
  padding:.5em .7em;align-self:flex-start;
}
.plasenet .psn-seal .spec{color:var(--paper)}
.plasenet .psn-seal svg{border-radius:1px;flex:0 0 auto}
.plasenet .psn-seal-outline{
  background:transparent;border:2px solid var(--brand-red);
  flex-direction:column;gap:.4em;
}
.plasenet .psn-seal-outline .spec{color:var(--brand-red);line-height:1.4;text-align:center}

/* --- Footer ------------------------------------------------------------- */
.plasenet .psn-footer-legal{
  background:var(--surface-darker);color:var(--grey-050);
}
.plasenet .psn-footer-legal-inner{
  max-width:var(--container);margin:0 auto;padding:var(--space-5) var(--gutter);
  display:grid;grid-template-columns:1fr;gap:var(--space-5);
  border-top:1px solid rgba(248,248,248,.14);
}
.plasenet .psn-footer-legal a{color:var(--paper);font-weight:var(--weight-normal)}
/* «Setări cookie» is an action, so a button, dressed as its neighbouring links. */
.plasenet .psn-footer-legal .psn-footer-cookie-settings{
  font:inherit;color:var(--paper);background:none;border:0;padding:0;margin:0;text-align:left;cursor:pointer;
  text-decoration:underline;text-underline-offset:.15em;align-self:flex-start;
}
.plasenet .psn-footer-legal .psn-footer-cookie-settings:hover{color:var(--orange-500)}
.plasenet .psn-footer-legal strong{color:var(--paper)}
/* AI transparency note (EU AI Act art. 50), beside the ANPC marks. */
/* `.psn-footer-badges>div` (wrap, centred) outranks a plain class, hence the child selector here. */
.plasenet .psn-footer-badges>.psn-ai-badge{display:flex;flex-wrap:nowrap;align-items:flex-start;gap:var(--space-2);max-width:28rem;margin-top:var(--space-4);font:var(--type-small);color:var(--slate-300);line-height:1.5}
.plasenet .psn-ai-badge>span:last-child{flex:1 1 auto;min-width:0}
/* The EU icon's artwork sits inside a padded square; the negative margins let the disc, not the box, align with the text. */
.plasenet .psn-footer-badges .psn-ai-badge img{flex:0 0 auto;width:2.75rem;height:2.75rem;margin:-.55rem 0 0 -.5rem}
.plasenet .psn-footer-company{font:var(--type-small);line-height:1.7;display:flex;flex-direction:column}
.plasenet .psn-footer-links{display:flex;flex-direction:column;gap:var(--space-2);font:var(--type-small)}
.plasenet .psn-footer-badges{display:flex;flex-direction:column;gap:var(--space-4)}
.plasenet .psn-footer-badges>div{display:flex;flex-wrap:wrap;gap:var(--space-3);align-items:center}
.plasenet .psn-footer-badges img{height:34px;width:auto}
.plasenet .psn-footer-badges .psn-anpc-sal img{height:50px;width:201px;max-width:100%}
.plasenet .psn-pay{
  font:var(--type-spec);letter-spacing:var(--tracking-spec);text-transform:uppercase;
  color:var(--paper);border:1px solid rgba(248,248,248,.35);
  border-radius:var(--radius-xs);padding:.55em .75em;
}
.plasenet .psn-footer-copy{
  max-width:var(--container);margin:0 auto;
  padding:0 var(--gutter) var(--space-5);
  font:var(--type-small);color:var(--grey-100);
}
@media (min-width:769px){
  .plasenet .psn-footer-legal-inner{grid-template-columns:repeat(auto-fit,minmax(16rem,1fr))}
}

/* --- The cart remove control -------------------------------------------
   The board raises this itself: once brand red is on the page, the round
   red delete button stops reading as "danger" and starts reading as a
   brand mark. Move the control to slate and keep the red on the glyph.   */
.plasenet .woocommerce a.remove{
  background:var(--slate-800);color:var(--red-600)!important;
  border-radius:var(--radius-round);
}
.plasenet .woocommerce a.remove:hover{
  background:var(--slate-900);color:var(--red-700)!important;
}

/* ============================================================
   17  FIXES AGAINST THE REAL MARKUP
   Found by rendering the theme on staging rather than a harness.
   ============================================================ */

/* Storefront's cart is a <ul class="site-header-cart menu"> whose link holds
   BOTH an .amount and a .count, and the count reads "0 elemente", not "0".
   A fixed-size round chip was wrong for a text label — make it a pill and let
   it sit on the header row instead of wrapping to a line of its own. */
.plasenet .psn-header-grid{align-items:center}
.plasenet .site-header-cart{
  flex:0 0 auto;display:flex;align-items:center;margin:0;
}
.plasenet .site-header-cart li{list-style:none;margin:0}
.plasenet .site-header-cart .count{
  min-width:0;width:auto;height:auto;border-radius:var(--radius-sm);
  padding:.25em .6em;font:var(--type-spec);letter-spacing:.06em;
  background:var(--orange-500);color:#fff;
}
/* The cart dropdown widget must not stretch the header row. */
.plasenet .site-header-cart .widget_shopping_cart{position:absolute;z-index:20}
.plasenet .site-header-cart>li:nth-child(2){position:relative}

/* The search takes the slack so nothing else wraps. 15rem is the board's
   own basis. */
.plasenet .site-search{flex:1 1 15rem;min-width:11rem;margin:0}

/* The handheld menu toggle — Storefront's own, plus the hamburger-menu
   plugin's — belongs to narrow viewports only. The board's desktop nav is a
   full slate bar, so hide the toggle above the breakpoint. */
@media (min-width:769px){
  .plasenet .menu-toggle,
  .plasenet .storefront-primary-navigation .menu-toggle,
  .plasenet .shm-toggle,.plasenet .shm-menu-toggle{display:none!important}
  .plasenet .main-navigation ul.nav-menu,
  .plasenet .main-navigation ul.menu{display:flex!important}
}
/* Below it, the toggle is the nav bar's only control. Its appearance is
   defined once, further down, with the rest of the handheld drawer. */
@media (max-width:768px){
  .plasenet .storefront-primary-navigation{padding:var(--space-2)}
}

/* The row must not wrap above the breakpoint, and the search is the element
   that gives up space. It used to be pinned to an 8rem basis because the old
   raster lockup was 209px wide; the drawn lockup is narrower, so the board's
   15rem basis now fits — `flex-shrink:1` with `min-width:0` still lets it
   give way rather than push the cart onto a second line. */
@media (min-width:769px){
  .plasenet .psn-header-grid{flex-wrap:nowrap}
  .plasenet .site-search{min-width:0}
  .plasenet .site-branding{flex:0 0 auto}
  .plasenet .psn-tagline{flex:0 0 auto}
  .plasenet .psn-account{flex:0 0 auto}
}

/* Measured at 375px: the hero h1 at --text-2xl (33px) broke
   "Plase croite la dimensiunea ta, nod cu nod" into five lines and the eyebrow
   into two. Mobile-first means the small step is the real one — the golden
   ratio scale still governs, one rung down. */
.plasenet .psn-hero h1{font-size:var(--text-xl);line-height:1.15}
.plasenet .psn-hero-inner{padding:var(--space-5) var(--space-4)}
.plasenet .psn-hero .psn-eyebrow{font-size:.7rem;letter-spacing:.1em}
.plasenet .psn-hero p{font:var(--type-body)}
@media (min-width:769px){
  .plasenet .psn-hero h1{font-size:var(--text-4xl);line-height:var(--leading-tight)}
  .plasenet .psn-hero .psn-eyebrow{font-size:var(--text-xs);letter-spacing:var(--tracking-spec)}
  .plasenet .psn-hero p{font:var(--type-lede)}
}

/* --- FooterContact -------------------------------------------------------
   The board's four-item contact row, sitting on slate above the legal block. */
.plasenet .psn-footer-contact{background:var(--surface-dark);color:var(--paper)}
.plasenet .psn-footer-contact-inner{
  max-width:var(--container);margin:0 auto;padding:var(--space-5) var(--gutter);
  display:grid;grid-template-columns:1fr;gap:var(--space-3);
}
.plasenet .psn-footer-contact a,
.plasenet .psn-footer-contact .psn-footer-contact-item{
  display:flex;align-items:center;gap:.6em;
  color:var(--paper);font:var(--type-small);font-weight:var(--weight-normal);
}
.plasenet .psn-footer-contact a:hover{color:var(--orange-500);text-decoration:none}
.plasenet .psn-footer-contact svg{flex:0 0 auto;color:var(--slate-200)}
@media (min-width:769px){
  .plasenet .psn-footer-contact-inner{grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--space-5)}
}
/* The legal block sits directly under it, so drop the doubled rule. */
.plasenet .psn-footer-contact + .psn-footer-legal .psn-footer-legal-inner{border-top:0}

/* Storefront's Customizer emits a footer link colour (#333333 here) whose
   selector ties with ours on specificity and wins on source order, so the
   contact strip's links rendered near-black on slate — measured, not guessed.
   Qualify with .site-footer to settle it. */
.plasenet .site-footer .psn-footer-contact a,
.plasenet .site-footer .psn-footer-contact a:visited{color:var(--paper)}
.plasenet .site-footer .psn-footer-contact a:hover{color:var(--orange-500)}
.plasenet .site-footer .psn-footer-legal a,
.plasenet .site-footer .psn-footer-legal a:visited{color:var(--paper)}
.plasenet .site-footer .psn-footer-legal a:hover{color:var(--orange-500)}

/* ============================================================
   18  MEASURED FIXES — price ribbon and cart
   ============================================================ */


/* --- The cart dropdown --------------------------------------------------
   WHY THIS EXISTS

   Storefront hides the mini-cart by parking it at `left:-999em` and brings it
   back with `left:0` on hover. That works while `.site-header-cart` is a plain
   block list. The board's header puts the cart in a flex row, which turns the
   dropdown's own <li> into a flex item with NO in-flow content — the panel
   inside it is absolutely positioned — so the li computed to width:0, and the
   panel, whose containing block it is, collapsed to 0 too. The overlay was
   rendering on hover, 779px tall and 0px wide: present, and invisible.

   Two changes fix it. The li goes `position:static` so the panel is measured
   against the list instead, and the panel gets a width of its own. While we are
   here the left/right shuffle is swapped for opacity — it right-aligns under
   the button, where a cart opened from the far right of the header belongs,
   and it can fade instead of teleport.                                      */
.plasenet .site-header-cart{position:relative}
.plasenet .site-header-cart>li{position:static}

.plasenet .site-header-cart .widget_shopping_cart{
  position:absolute;left:auto;right:0;top:calc(100% + var(--space-3));
  width:min(22rem,calc(100vw - var(--space-5) * 2));
  padding:var(--space-4);margin:0;z-index:30;
  background:var(--surface-card);border-radius:var(--radius-md);
  box-shadow:var(--shadow-lift);
  visibility:hidden;opacity:0;transform:translateY(-4px);
  transition:opacity var(--dur-fast) var(--ease-out),
             transform var(--dur-fast) var(--ease-out),
             visibility 0s linear var(--dur-fast);
}
.plasenet .site-header-cart:hover .widget_shopping_cart,
.plasenet .site-header-cart:focus-within .widget_shopping_cart{
  visibility:visible;opacity:1;transform:none;transition-delay:0s;
}
.plasenet .site-header-cart .widget_shopping_cart .widgettitle{display:none}
.plasenet .site-header-cart .widget_shopping_cart ul.cart_list{
  list-style:none;margin:0;padding:0;max-height:19rem;overflow-y:auto;
}
/* WooCommerce's item is: a.remove, then ONE <a> holding both the thumbnail and
   the product name, then span.quantity. That is three children, and the middle
   one carries the image inside it — so a two-column grid puts the quantity
   beside the link instead of under it. Position the two controls and let the
   text column simply stack. */
.plasenet .site-header-cart .widget_shopping_cart ul.cart_list li{
  position:relative;min-height:3rem;
  padding:var(--space-3) 0 var(--space-3) 5.1rem;
  border-bottom:1px solid var(--border-rule);font:var(--type-small);
}
.plasenet .site-header-cart .widget_shopping_cart ul.cart_list li:last-child{border-bottom:0}
.plasenet .site-header-cart .widget_shopping_cart ul.cart_list li img{
  position:absolute;left:1.75rem;top:var(--space-3);
  width:3rem;height:3rem;object-fit:cover;border-radius:var(--radius-sm);
  float:none;margin:0;
}
.plasenet .site-header-cart .widget_shopping_cart ul.cart_list li>a:not(.remove){
  display:block;color:var(--text-heading);font-weight:var(--weight-semi);
  line-height:var(--leading-snug);
}
.plasenet .site-header-cart .widget_shopping_cart ul.cart_list li>a:not(.remove):hover{color:var(--text-link)}
.plasenet .site-header-cart .widget_shopping_cart .quantity{
  display:block;margin-top:.2em;
  color:var(--text-quiet);font-variant-numeric:var(--numeric-tabular);
}
.plasenet .site-header-cart .widget_shopping_cart .total,
.plasenet .site-header-cart .widget_shopping_cart .buttons{background:none;padding-left:0;padding-right:0}
.plasenet .site-header-cart .widget_shopping_cart .total{
  display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3);
  margin:var(--space-4) 0;padding-top:var(--space-3);
  border-top:var(--border-rule-w) solid var(--border-strong);
  font:var(--type-h4);color:var(--text-heading);
}
.plasenet .site-header-cart .widget_shopping_cart .total .amount{color:var(--blue-600)}
.plasenet .site-header-cart .widget_shopping_cart .buttons{
  display:flex;gap:var(--space-3);margin:0;
}
.plasenet .site-header-cart .widget_shopping_cart .buttons .button{
  flex:1 1 0;margin:0;text-align:center;
  font:var(--type-button);padding:.53em 1.1em;border-radius:var(--radius-sm);
  background:transparent;color:var(--text-link);border:1px solid var(--blue-600);
}
.plasenet .site-header-cart .widget_shopping_cart .buttons .button:hover{background:var(--blue-050)}
.plasenet .site-header-cart .widget_shopping_cart .buttons .checkout{
  background:var(--action-bg);color:var(--action-fg);border-color:var(--action-bg);
}
.plasenet .site-header-cart .widget_shopping_cart .buttons .checkout:hover{
  background:var(--action-bg-hover);border-color:var(--action-bg-hover);color:var(--action-fg);
}
.plasenet .site-header-cart .widget_shopping_cart .empty{
  margin:0;padding:var(--space-4) 0;text-align:center;
  font:var(--type-small);color:var(--text-quiet);
}
/* The remove control: brand red is allowed here, as the board notes. */
.plasenet .site-header-cart .widget_shopping_cart ul.cart_list li a.remove{
  position:absolute;left:0;top:var(--space-3);
  width:1.4em;height:1.4em;line-height:1.3em;text-align:center;
  border-radius:var(--radius-round);
  background:var(--grey-100);color:var(--text-quiet);font-size:1em;
}
.plasenet .site-header-cart .widget_shopping_cart ul.cart_list li a.remove:hover{
  background:var(--brand-red);color:#fff;
}

/* --- Cart: the board's two welded segments ------------------------------
   Slate bar carrying icon + total, an orange count segment flush to its right
   edge, the whole thing turning orange on hover with the chip stepping down.
   The previous rounded pill floating inside a box was neither.              */
.plasenet .site-header-cart .cart-contents{
  display:inline-flex;align-items:stretch;gap:0;padding:0;overflow:hidden;
  border-radius:var(--radius-md);background:var(--slate-800);color:var(--paper);
  font:var(--type-button);line-height:1;white-space:nowrap;
}
.plasenet .site-header-cart .cart-contents .amount,
.plasenet .site-header-cart .cart-contents>.woocommerce-Price-amount{
  display:flex;align-items:center;gap:.618em;padding:.857em 1.387em;
}
.plasenet .site-header-cart .cart-contents .amount::before{
  content:"";width:1.1em;height:1.1em;flex:0 0 auto;background:currentColor;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7 18a2 2 0 100 4 2 2 0 000-4zm10 0a2 2 0 100 4 2 2 0 000-4zM7.2 14.6l.03-.12.9-1.63h7.45c.75 0 1.4-.41 1.75-1.03l3.58-6.49L19.16 4h-.02l-1.1 2-2.76 5H8.53l-.13-.27L6.16 6l-.95-2-.94-2H1v2h2l3.6 7.59-1.35 2.44A1.99 1.99 0 007 17h12v-2H7.42a.25.25 0 01-.22-.4z'/%3E%3C/svg%3E") center/contain no-repeat;
          mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7 18a2 2 0 100 4 2 2 0 000-4zm10 0a2 2 0 100 4 2 2 0 000-4zM7.2 14.6l.03-.12.9-1.63h7.45c.75 0 1.4-.41 1.75-1.03l3.58-6.49L19.16 4h-.02l-1.1 2-2.76 5H8.53l-.13-.27L6.16 6l-.95-2-.94-2H1v2h2l3.6 7.59-1.35 2.44A1.99 1.99 0 007 17h12v-2H7.42a.25.25 0 01-.22-.4z'/%3E%3C/svg%3E") center/contain no-repeat;
}
/* woocommerce.css sets `opacity:.5` on `.site-header-cart .cart-contents
   .count` (0,3,0). At half strength the orange chip mixes with the slate bar
   behind it and reads as a muddy brown, not as orange. */
/* On /cos/ the cart's <li> gets `current-menu-item`, and Storefront colours
   `ul.menu li.current-menu-item > a` dark slate — dark text on the dark slate
   bar. The cart button is a button, not a menu item, so it keeps its colour
   whichever page you are on. */
.plasenet .site-header-cart li.current-menu-item>a.cart-contents,
.plasenet .site-header-cart li.current-menu-item>a.cart-contents .amount,
.plasenet .site-header-cart li.current-menu-item>a.cart-contents .woocommerce-Price-currencySymbol{
  color:var(--paper);
}
.plasenet .site-header-cart .cart-contents .count{
  display:grid;place-items:center;min-width:2.8em;height:auto;
  padding:.857em 1em;border-radius:0;opacity:1;
  background:var(--orange-500);color:#fff;
  font:var(--type-spec);letter-spacing:.04em;
}
.plasenet .site-header-cart .cart-contents:hover{background:var(--orange-500);color:#fff}
.plasenet .site-header-cart .cart-contents:hover .count{background:var(--orange-600)}

/* --- Mobile header ------------------------------------------------------
   Storefront hides the product search below its breakpoint; the board keeps
   it, because search is how a trade buyer finds a spec on a phone.          */
@media (max-width:768px){
  .plasenet .site-search{display:block!important;order:5;flex:1 1 100%;margin-top:var(--space-3)}
  .plasenet .psn-header-grid{gap:var(--space-3) var(--space-4)}
  .plasenet .site-branding{flex:1 1 auto}
  /* Sizing lives with the toggle's own rules; nothing to add here. */
}

/* ============================================================
   19  NAVIGATION CONTRAST
   The earlier rule painted every link inside .main-navigation paper-white,
   which is right on the slate bar and wrong everywhere a panel drops out of
   it. Storefront's Customizer gives those panels a white background (and its
   own #333 / #747474 link colours), so mega-menu links came out white on
   white and some panels dark on dark.

   Scope the paper colour to the bar itself — top-level items only — and give
   every dropped panel an explicit surface and ink of its own.
   ============================================================ */

/* The bar */
.plasenet .storefront-primary-navigation .main-navigation ul.menu>li>a,
.plasenet .storefront-primary-navigation .main-navigation ul.nav-menu>li>a{
  color:var(--paper);
}
.plasenet .storefront-primary-navigation .main-navigation ul.menu>li:hover>a,
.plasenet .storefront-primary-navigation .main-navigation ul.menu>li:focus-within>a,
.plasenet .storefront-primary-navigation .main-navigation ul.menu>li.current-menu-item>a,
.plasenet .storefront-primary-navigation .main-navigation ul.menu>li.current_page_item>a{
  background:var(--blue-600);color:#fff;
}

/* Anything that drops out of the bar: sub-menus and mega-menu panels alike. */
.plasenet .main-navigation ul.menu>li ul,
.plasenet .main-navigation ul.nav-menu>li ul,
.plasenet .main-navigation .smm-mega-menu,
.plasenet .main-navigation .sub-menu{
  background:var(--surface-card);color:var(--text-body);
  box-shadow:var(--shadow-card);border-radius:var(--radius-md);border:0;
}
.plasenet .main-navigation ul.menu>li ul a,
.plasenet .main-navigation ul.nav-menu>li ul a,
.plasenet .main-navigation .smm-mega-menu a,
.plasenet .main-navigation .smm-mega-menu,
.plasenet .main-navigation .smm-mega-menu h2,
.plasenet .main-navigation .smm-mega-menu h3,
.plasenet .main-navigation .smm-mega-menu li{
  color:var(--text-body);background-color:transparent;
}
.plasenet .main-navigation ul.menu>li ul a:hover,
.plasenet .main-navigation ul.nav-menu>li ul a:hover,
.plasenet .main-navigation .smm-mega-menu a:hover{
  background:var(--blue-050);color:var(--blue-600);
}
/* Mega-menu product titles and prices keep the page's own roles. */
.plasenet .main-navigation .smm-mega-menu .price{color:var(--blue-600);background:transparent;position:static}

/* The handheld drawer is part of the slate bar, so it stays inverted. */
.plasenet .handheld-navigation{background:var(--slate-800);border-radius:0 0 var(--radius-md) var(--radius-md)}
.plasenet .handheld-navigation ul li a{color:var(--paper);border-bottom:1px solid rgba(248,248,248,.12)}
.plasenet .handheld-navigation ul li a:hover{background:var(--blue-600);color:#fff}

/* The menu toggle drew its bars with a Font Awesome glyph in ::before, which we
   dequeued — leaving an absolutely-positioned empty pseudo sitting on top of the
   word "Meniu". Replace it with our own masked SVG, laid out in the flow. */
.plasenet .menu-toggle::after{content:none!important}
.plasenet .menu-toggle::before{
  content:""!important;
  position:static!important;top:auto!important;left:auto!important;right:auto!important;
  width:20px;height:20px;flex:0 0 auto;margin:0!important;
  background:currentColor;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M3 6h18v2H3zM3 11h18v2H3zM3 16h18v2H3z'/%3E%3C/svg%3E") center/contain no-repeat;
          mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M3 6h18v2H3zM3 11h18v2H3zM3 16h18v2H3z'/%3E%3C/svg%3E") center/contain no-repeat;
}
/* A hamburger is an icon, not a labelled button. Storefront ships 91x43 of
   transparent chrome reading "Meniu"; this is a 44x44 square — the minimum
   comfortable tap target — carrying the three bars alone, matching the
   `data-hamburger` button on every board artboard. The label stays in the
   accessibility tree; only its size is zeroed. */
.plasenet .menu-toggle{
  display:inline-flex;align-items:center;justify-content:center;
  width:44px;height:44px;min-height:44px;padding:0;margin:0;gap:0;
  background:var(--slate-800);color:var(--paper);border:0;
  border-radius:var(--radius-sm);
  font-size:0;line-height:0;
  cursor:pointer;
  transition:background-color var(--dur-fast) var(--ease-out);
}
.plasenet .menu-toggle:hover,
.plasenet .menu-toggle:focus{background:var(--orange-500);color:var(--paper)}
/* The button wraps its label in a <span> that carries its own 14x2 dark bar in
   ::before — a leftover of the toggle's old three-bar drawing. With the icon
   now on the button itself that bar is just a dash beside it. */
.plasenet .menu-toggle span::before,
.plasenet .menu-toggle span::after{content:none!important;display:none!important}
.plasenet .menu-toggle span{font-size:0;line-height:0}
/* Open state. storefront-hamburger-menu never adds a `.toggled` class — it
   flips aria-expanded — so that is what the open state keys off. */
.plasenet .menu-toggle[aria-expanded="true"]{background:var(--orange-500)}

/* With storefront-hamburger-menu gone there is one toggle again, but it still
   sat right: the alignment lives on the nav container, not the button. */
.plasenet .storefront-primary-navigation .main-navigation,
.plasenet .storefront-primary-navigation .main-navigation > div{
  text-align:left;
}
.plasenet .menu-toggle{margin-right:auto}

/* Measured: the toggle carries `float:right` from Storefront, which no amount
   of text-align or auto-margin on the container can overcome. Unfloat it. */
.plasenet .menu-toggle{float:none!important}

/* ============================================================
   19a PAGE RHYTHM — the board's column gap, not Storefront's

   Acasa-atelier.dc.html lays the page out as one flex column with
   `gap:var(--space-6)` between the header card, the hero and each section.
   Storefront instead pads `main.site-main` by 4.2338em (67.8px) and gives
   the masthead a bottom margin, which stacked up to 120px of blank paper
   under the header card.
   ============================================================ */
.plasenet #masthead{margin-bottom:0}
/* The breadcrumb sits between the header card and #content. Storefront gives it
   a 4.2338em bottom margin which, stacked on #content's own padding, put 124px
   between the trail and the page — 195px from the nav bar to the first thing
   you came to read. The board separates each block in the page column by one
   space-6, breadcrumb included. */
/* The trail lives in a .storefront-breadcrumb wrapper OUTSIDE #content, so the
   wrapper owns the space above it and #content's own padding owns the space
   below. Putting a margin on the <nav> as well simply stacked the two. */
.plasenet .storefront-breadcrumb{
  margin:0;padding:var(--space-5) 0 0;
}
.plasenet .woocommerce-breadcrumb{
  margin:0;padding:0;font:var(--type-small);color:var(--text-quiet);
}
/* 26 px above the trail, 16 below: the band from header card to title is
   64 px, not the 106 px of two --space-6 steps (Mihai, 2026-09-16). */
.plasenet #content{padding-top:var(--space-4)}
.plasenet #content .site-main{padding-top:0}
.plasenet .site-header .storefront-primary-navigation{margin-bottom:var(--space-5)}

/* ============================================================
   19b FOOTER WIDGET REGION

   Not on the board — the board goes straight from the testimonials to the
   contact strip — but it carries real content, so it stays.

   It arrived from the old child theme as a panel with NO horizontal padding:
   Storefront pads it `4.2338em 0 0`, top only, so every widget's text sat
   flush against the panel's left and right edges. It also carried its own
   off-palette colours (#2c2d33 ground, #e74c3c link hover, #f39c12 stars),
   each with !important.
   ============================================================ */
.plasenet .site-footer .footer-widgets{
  background:var(--surface-darker);
  border-top:0;border-radius:var(--radius-md);
  padding:var(--space-6) var(--space-5);
  margin-bottom:var(--space-6);
  color:var(--grey-100);
}
.plasenet .site-footer .footer-widgets .widget{
  color:var(--grey-100);font:var(--type-small);margin-bottom:0;
}
.plasenet .site-footer .footer-widgets .widget p,
.plasenet .site-footer .footer-widgets .widget li,
.plasenet .site-footer .footer-widgets .widget span{color:var(--grey-100)}
.plasenet .site-footer .footer-widgets .widget strong{color:var(--white)}

.plasenet .site-footer .footer-widgets .widget h1,
.plasenet .site-footer .footer-widgets .widget h2,
.plasenet .site-footer .footer-widgets .widget h3,
.plasenet .site-footer .footer-widgets .widget h4,
.plasenet .site-footer .footer-widgets .widget .widget-title{
  color:var(--white);font:var(--type-h4);
  margin:0 0 var(--space-3);
}

.plasenet .site-footer .footer-widgets a,
.plasenet .site-footer .footer-widgets .widget a{
  color:var(--white);font-weight:var(--weight-semi);text-decoration:none;
  transition:color var(--dur-fast) var(--ease-out);
}
/* The orange takeover, same as every other action on the site. The old rule
   hovered to #e74c3c, a red that appears nowhere else. */
.plasenet .site-footer .footer-widgets a:hover,
.plasenet .site-footer .footer-widgets .widget a:hover{color:var(--orange-500)}

.plasenet .site-footer .footer-widgets .widget .star-rating span::before,
.plasenet .site-footer .footer-widgets .widget .star-rating::before{color:var(--star-fill)}
.plasenet .site-footer .footer-widgets .widget .amount,
.plasenet .site-footer .footer-widgets .widget del,
.plasenet .site-footer .footer-widgets .widget ins{
  color:var(--grey-100);background:none;
}
.plasenet .site-footer .footer-widgets .widget ul{list-style:none;margin:0;padding:0}
.plasenet .site-footer .footer-widgets .widget li{padding:.25em 0}
/* The Produse menu has children. Flattening every ul removed their indent and
   left "Plase şi articole sportive" sitting directly under its own parent, so
   the nesting has to come back one level in. */
.plasenet .site-footer .footer-widgets .widget li ul{
  padding-left:var(--space-4);margin-top:.25em;
}
.plasenet .site-footer .footer-widgets .widget li ul a{font-weight:var(--weight-normal)}
/* WooCommerce's product-list widget item is a.(img + title), then
   .star-rating, then .amount — three children, and the image lives INSIDE the
   link. A two-column grid therefore wraps the price under the thumbnail and
   squeezes the title to a few characters per line. Leave the widget's own
   float layout alone and only size the thumbnail. */
.plasenet .site-footer .footer-widgets .widget .product_list_widget li{
  padding:var(--space-3) 0;
  border-bottom:1px solid rgba(248,248,248,.12);
}
.plasenet .site-footer .footer-widgets .widget .product_list_widget li:last-child{border-bottom:0}
.plasenet .site-footer .footer-widgets .widget .product_list_widget li img{
  width:3rem;height:3rem;object-fit:cover;border-radius:var(--radius-sm);
}

/* ============================================================
   19c SINGLE PRODUCT — Produs.dc.html

   Two columns that each want 20rem and share the slack, a media
   column on the net-lattice ground, and a summary whose order is
   fixed: title, meta row, price chip, lede, buying panel.
   ============================================================ */
/* wc_product_class() puts `.product` on this wrapper, and WooCommerce clips it
   with `.single-product div.product` (0,2,1) — one type selector more than a
   plain `.plasenet .psn-product`, so that has to be matched. It was cutting the
   sale badge's overhang off, on the gallery and again on the first related
   card, exactly as it did on the loop card. */
.plasenet .psn-product{margin:0}
.plasenet.single-product div.psn-product{overflow:visible}
.plasenet .psn-product-main{
  display:flex;flex-wrap:wrap;gap:var(--space-6);align-items:flex-start;
  margin-bottom:var(--space-6);
}
.plasenet .psn-product-media,
.plasenet .psn-product-summary{flex:1 1 20rem;min-width:0}
.plasenet .psn-product-summary{
  display:flex;flex-direction:column;gap:var(--space-4);
  float:none!important;width:auto!important;margin:0!important;
}

/* --- gallery ------------------------------------------------------------ */
.plasenet .psn-gallery{position:relative;display:flex;flex-direction:column;gap:var(--space-4)}
.plasenet .psn-gallery-main{
  border-radius:var(--radius-md);box-shadow:var(--shadow-card);overflow:hidden;
  background-color:var(--surface-card);background-image:var(--net-lattice-coarse);
  height:22rem;
}
.plasenet .psn-gallery-main img{
  display:block;width:100%;height:100%;object-fit:cover;margin:0;
}
.plasenet .psn-gallery-thumbs{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(5rem,1fr));
  gap:var(--space-3);list-style:none;margin:0;padding:0;
}
.plasenet .psn-gallery-thumbs li{margin:0;padding:0}
.plasenet .psn-gallery-thumb{
  display:block;width:100%;height:4.5rem;padding:0;overflow:hidden;cursor:pointer;
  border:0;border-radius:var(--radius-md);box-shadow:var(--shadow-card);
  background-color:var(--surface-card);background-image:var(--net-lattice-coarse);
  transition:box-shadow var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-out);
}
.plasenet .psn-gallery-thumb img{display:block;width:100%;height:100%;object-fit:cover;margin:0}
.plasenet .psn-gallery-thumb:hover{transform:translateY(var(--lift-y));box-shadow:var(--shadow-lift)}
.plasenet .psn-gallery-thumb.is-current{box-shadow:0 0 0 2px var(--blue-600),var(--shadow-card)}

/* --- title and meta row ------------------------------------------------- */
.plasenet .psn-product-summary .product_title{
  font:var(--type-h2);font-size:var(--text-2xl);
  color:var(--text-heading);letter-spacing:var(--tracking-tight);
  margin:0 0 var(--space-3);
}
.plasenet .psn-product-meta{
  display:flex;align-items:center;gap:var(--space-4);flex-wrap:wrap;
}
.plasenet .psn-product-code{color:var(--text-muted)}
.plasenet .psn-made-in{
  display:inline-flex;align-items:center;gap:.5em;flex:0 0 auto;
  border:2px solid var(--brand-red);border-radius:var(--radius-md);padding:.4em .6em;
}
.plasenet .psn-made-in svg{border-radius:1px;flex:0 0 auto}
.plasenet .psn-made-in .spec{color:var(--brand-red)}

/* --- price chip --------------------------------------------------------- */
.plasenet .psn-price-block{
  display:inline-flex;align-items:center;gap:var(--space-3);align-self:flex-start;
  background:var(--white);border:1px solid var(--border-input);
  border-radius:var(--radius-md);
  padding:var(--space-2) var(--space-4) var(--space-2) var(--space-3);
}
.plasenet .psn-price-dot{
  width:.382rem;height:.382rem;border-radius:var(--radius-round);
  background:var(--white);border:1px solid var(--grey-300);flex:0 0 auto;
}
.plasenet .psn-price-from{font:var(--type-small);color:var(--text-quiet)}
.plasenet .psn-price-now{
  color:var(--blue-600);font-weight:var(--weight-strong);
  font-size:var(--text-xl);line-height:1;
  font-variant-numeric:var(--numeric-tabular);
}
.plasenet .psn-price-now .amount,.plasenet .psn-price-now bdi{color:inherit;font:inherit}
.plasenet .psn-price-block del{
  color:var(--text-struck);font-size:var(--text-sm);font-weight:var(--weight-normal);
}
.plasenet .psn-price-block del .amount,.plasenet .psn-price-block del bdi{color:inherit;font:inherit}
/* Orange appears once on this page, and only for a real reduction. */
.plasenet .psn-product--fixed .psn-price-block del ~ .psn-price-now,
.plasenet .psn-product--measured .psn-price-block del ~ .psn-price-now{color:var(--orange-600)}
.plasenet .psn-price-unit{color:var(--text-quiet)}
.plasenet .psn-price-quote{
  color:var(--slate-800);font-weight:var(--weight-strong);
  font-size:var(--text-base);line-height:1.2;
}

.plasenet .psn-product-lede{font:var(--type-lede);color:var(--text-body)}
.plasenet .psn-product-lede p:last-child{margin-bottom:0}

/* --- the buying panel --------------------------------------------------- */
.plasenet .psn-buy{padding:var(--space-5)}
.plasenet .psn-buy form.cart{margin:0}
.plasenet .psn-buy .quantity{margin-right:var(--space-3)}
.plasenet .psn-buy .single_add_to_cart_button{
  font:var(--type-button);padding:.53em 1.4em;border-radius:var(--radius-sm);
  background:var(--action-bg);color:var(--action-fg);border:0;
  transition:background-color var(--dur-fast) var(--ease-out);
}
.plasenet .psn-buy .single_add_to_cart_button:hover{background:var(--action-bg-hover);color:var(--action-fg)}
.plasenet .psn-buy .single_add_to_cart_button.disabled{background:var(--slate-200);cursor:not-allowed}
.plasenet .psn-buy table.variations{margin:0 0 var(--space-4);border:0;width:100%}
.plasenet .psn-buy table.variations td,.plasenet .psn-buy table.variations th{
  border:0;padding:0 0 var(--space-3);display:block;text-align:left;
}
.plasenet .psn-buy table.variations label{
  font:var(--type-small);color:var(--text-quiet);margin:0 0 .3em;display:block;
}
.plasenet .psn-buy select{
  width:100%;max-width:22rem;padding:.53em .7em;
  border:1px solid var(--border-input);border-radius:var(--radius-sm);
  font:var(--type-small);background:var(--white);color:var(--text-body);
}
.plasenet .psn-buy select:hover{border-color:var(--border-input-hover)}
.plasenet .psn-buy .reset_variations{font:var(--type-small);margin-left:var(--space-3)}
.plasenet .psn-buy .woocommerce-variation-price{margin:0 0 var(--space-3)}
.plasenet .psn-buy-note{margin:var(--space-4) 0 0;font:var(--type-small);color:var(--text-muted)}
.plasenet .psn-buy-alt{margin:var(--space-3) 0 0;font:var(--type-small);color:var(--text-quiet)}

/* --- the Measurement Price Calculator ----------------------------------
   The plugin renders `table#price_calculator` with a row per dimension, then
   a total-amount row and a calculated-price row. It drives real pricing in
   production, so the markup is left exactly as it is and only dressed: the
   board's DimensionCalculator is a sunken panel with the fields on the right
   and the total set off by a rule.                                          */
.plasenet .psn-buy table#price_calculator{
  width:100%;margin:0 0 var(--space-4);border:0;border-collapse:collapse;
  background:var(--surface-sunken);border-radius:var(--radius-md);
  overflow:hidden;
}
.plasenet .psn-buy table#price_calculator tr{background:none}
.plasenet .psn-buy table#price_calculator td{
  border:0;padding:var(--space-3) var(--space-4);vertical-align:middle;
  font:var(--type-small);color:var(--text-quiet);
}
.plasenet .psn-buy table#price_calculator td:last-child{text-align:right;width:11rem}
.plasenet .psn-buy table#price_calculator label{
  font:var(--type-small);color:var(--text-quiet);margin:0;display:inline;
}
.plasenet .psn-buy table#price_calculator input[type=text]{
  width:100%;max-width:9rem;padding:.5em .7em;margin:0;
  border:1px solid var(--border-input);border-radius:var(--radius-sm);
  background:var(--white);color:var(--text-body);
  font:var(--type-small);font-variant-numeric:var(--numeric-tabular);
  text-align:right;
}
.plasenet .psn-buy table#price_calculator input[type=text]:hover{border-color:var(--border-input-hover)}
.plasenet .psn-buy table#price_calculator input[type=text]:focus{
  outline:var(--focus-ring-width) solid var(--focus-ring);outline-offset:1px;
}
/* The dashicons help bubble is a 20px glyph in a font we do not load. */
.plasenet .psn-buy table#price_calculator .wc-measurement-price-calculator-input-help{display:none}

.plasenet .psn-buy table#price_calculator tr.total-amount td{
  border-top:1px solid var(--border-rule);
  color:var(--text-body);
}
.plasenet .psn-buy table#price_calculator tr.total-amount td:last-child,
.plasenet .psn-buy table#price_calculator tr.calculated-price td:last-child{
  font-variant-numeric:var(--numeric-tabular);color:var(--text-strong);
}
.plasenet .psn-buy table#price_calculator tr.calculated-price td{
  border-top:var(--border-rule-w) solid var(--border-strong);
  font:var(--type-h4);color:var(--text-heading);
}
.plasenet .psn-buy table#price_calculator tr.calculated-price .product_price{
  color:var(--blue-600);font-variant-numeric:var(--numeric-tabular);
}

/* --- quote panel -------------------------------------------------------- */
.plasenet .psn-quote-panel h3{font:var(--type-h3);color:var(--text-heading);margin:var(--space-3) 0}
.plasenet .psn-quote-panel p{font:var(--type-small);margin:0 0 var(--space-4)}
.plasenet .psn-quote-actions{display:flex;flex-wrap:wrap;gap:var(--space-4);align-items:center}
.plasenet .psn-quote-phone{font:var(--type-small);color:var(--text-quiet)}

/* --- stock -------------------------------------------------------------- */
.plasenet .psn-product-summary .stock{
  font:var(--type-small);margin:0;display:inline-flex;align-items:center;gap:.5em;
}
.plasenet .psn-product-summary .stock::before{
  content:"";width:.5em;height:.5em;border-radius:var(--radius-round);background:currentColor;
}
.plasenet .psn-product-summary .stock.in-stock{color:var(--stock-ok)}
.plasenet .psn-product-summary .stock.out-of-stock{color:var(--stock-out)}

/* --- tabs — Tabs.jsx -----------------------------------------------------
   Folder tabs. The active tab is cut from the same card as the panel under
   it — same white, same shadow — and the panel's top-left corner is square
   where the two meet. Inactive tabs are bare labels on the paper.

   Storefront lays these out as a 29% column floated beside a 65% panel
   (woocommerce.css, min-width 768px). Both floats are cancelled here, which
   is the whole difference between "a left column" and "horizontal tabs".  */
.plasenet .woocommerce-tabs{margin:0 0 var(--space-6);padding:0}
.plasenet .woocommerce-tabs ul.tabs{
  display:flex;gap:var(--space-1);width:auto;float:none;
  list-style:none;margin:0;padding:0;
  border:0;border-bottom:var(--border-rule-w) solid var(--border-strong);
}
.plasenet .woocommerce-tabs ul.tabs::before,
.plasenet .woocommerce-tabs ul.tabs::after,
.plasenet .woocommerce-tabs ul.tabs li::before,
.plasenet .woocommerce-tabs ul.tabs li::after{display:none}
.plasenet .woocommerce-tabs ul.tabs li{
  position:relative;margin:0;padding:0;background:none;border:0;border-radius:0;
}
.plasenet .woocommerce-tabs ul.tabs li a{
  display:block;padding:.618em 1.1em;white-space:nowrap;
  font:var(--type-button);color:var(--text-quiet);text-decoration:none;
  background:transparent;border-radius:var(--radius-md) var(--radius-md) 0 0;
  transition:color var(--dur-fast) var(--ease-out),
    background-color var(--dur-fast) var(--ease-out),
    box-shadow var(--dur-fast) var(--ease-out);
}
.plasenet .woocommerce-tabs ul.tabs li:not(.active) a:hover{color:var(--blue-600)}
/* The open folder tab is one piece with its panel: it reaches down over the
   list's rule (negative margin, made up in padding so the label stays put),
   paints above the panel's own shadow, and its shadow is clipped at the
   bottom edge so nothing falls onto the panel. */
.plasenet .woocommerce-tabs ul.tabs li.active{z-index:1;margin-bottom:calc(-1 * var(--border-rule-w) - 1px)}
.plasenet .woocommerce-tabs ul.tabs li.active a{
  color:var(--text-strong);background:var(--surface-card);box-shadow:var(--shadow-card);
  /* One extra pixel into the panel: .202em rounds to a sub-pixel seam otherwise. */
  padding-bottom:calc(.618em + var(--border-rule-w) + 1px);
  clip-path:inset(-12px -12px 0 -12px);
}
.plasenet .woocommerce-tabs ul.tabs li a:focus-visible{
  outline:var(--focus-ring-width) solid var(--focus-ring);outline-offset:-2px;
}
.plasenet .woocommerce-tabs .panel{
  width:auto;float:none;margin:0;padding:var(--space-5);
  background:var(--surface-card);box-shadow:var(--shadow-card);
  border-radius:0 var(--radius-md) var(--radius-md) var(--radius-md);
  /* WooCommerce swaps panels with display:none -> block, which restarts this. */
  animation:psn-panel-in var(--dur-base) var(--ease-out) backwards;
}
@keyframes psn-panel-in{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
.plasenet .woocommerce-tabs .panel>*{max-width:66ch}
.plasenet .woocommerce-tabs .panel>:first-child{margin-top:0}
.plasenet .woocommerce-tabs .panel>:last-child{margin-bottom:0}
.plasenet .woocommerce-tabs .panel iframe{max-width:100%}
@media (max-width:768px){
  .plasenet .woocommerce-tabs ul.tabs li a{padding:.618em .8em}
  .plasenet .woocommerce-tabs .panel{padding:var(--space-4)}
}

/* Specificaţii: the numbers customers compare, set as a spec sheet. */
.plasenet .woocommerce-tabs table.shop_attributes{width:100%;max-width:52rem;border:0;margin:0}
.plasenet .woocommerce-tabs table.shop_attributes th,
.plasenet .woocommerce-tabs table.shop_attributes td{
  border:0;border-bottom:var(--border-hair) solid var(--border-rule);background:none;
  padding:var(--space-3) var(--space-5) var(--space-3) 0;
  font:var(--type-small);text-align:left;vertical-align:baseline;
}
.plasenet .woocommerce-tabs table.shop_attributes tr:last-child>*{border-bottom:0}
.plasenet .woocommerce-tabs table.shop_attributes th{
  font:var(--type-spec);letter-spacing:var(--tracking-spec);text-transform:uppercase;
  color:var(--text-muted);white-space:nowrap;width:1%;
}
.plasenet .woocommerce-tabs table.shop_attributes td{color:var(--text-strong);font-style:normal}
.plasenet .woocommerce-tabs table.shop_attributes td p{margin:0}

/* --- reviews --------------------------------------------------------------
   The list and the form side by side: reading on the left, the form in a
   sunken panel that stays in view while you scroll someone else's review. */
.plasenet .woocommerce-tabs .panel#tab-reviews>*{max-width:none}
.plasenet #reviews{display:grid;gap:var(--space-6)}
@media (min-width:769px){
  .plasenet #reviews{grid-template-columns:minmax(0,1fr) 19rem;align-items:start}
  .plasenet #review_form_wrapper{position:sticky;top:var(--space-5)}
}
.plasenet #reviews #comments{margin:0}
.plasenet #reviews .woocommerce-Reviews-title{
  font:var(--type-h4);color:var(--text-heading);margin:0;
  padding-bottom:var(--space-3);border-bottom:var(--border-rule-w) solid var(--border-strong);
}
.plasenet #reviews .woocommerce-Reviews-title span{font-weight:var(--weight-body)}
.plasenet #reviews .commentlist{list-style:none;margin:0;padding:0}
.plasenet #reviews .commentlist li{margin:0;padding:0;background:none;border:0}
.plasenet #reviews .commentlist>li+li{border-top:var(--border-hair) solid var(--border-rule)}
.plasenet #reviews .commentlist li .comment_container{
  display:flex;gap:var(--space-4);align-items:flex-start;
  padding:var(--space-4) 0;margin:0;background:none;box-shadow:none;border:0;
}
.plasenet #reviews .commentlist li img.avatar{
  position:static;float:none;flex:none;width:2.618rem;height:2.618rem;
  margin:0;padding:0;border:0;border-radius:var(--radius-round);background:var(--grey-050);
}
.plasenet #reviews .commentlist li .comment-text{
  flex:1 1 auto;min-width:0;float:none;width:auto;margin:0;padding:0;
  border:0;background:none;box-shadow:none;
}
.plasenet #reviews .comment-text .star-rating{float:none;display:block;margin:0 0 var(--space-2)}
.plasenet #reviews .comment-text p.meta{
  font:var(--type-small);color:var(--text-muted);margin:0 0 var(--space-2);
}
.plasenet #reviews .woocommerce-review__author{color:var(--text-strong);font-weight:var(--weight-strong)}
.plasenet #reviews .woocommerce-review__verified{
  font:var(--type-spec);letter-spacing:var(--tracking-spec);text-transform:uppercase;
  font-style:normal;color:var(--stock-ok);
}
.plasenet #reviews .comment-text .description p{margin:0 0 var(--space-2)}
.plasenet #reviews .comment-text .description p:last-child{margin:0}
/* Replies are the shop answering. Indented under the review, on a blue rule. */
.plasenet #reviews .commentlist ul.children{
  list-style:none;margin:0 0 var(--space-4) calc(2.618rem + var(--space-4));padding:0 0 0 var(--space-4);
  border-left:var(--border-accent-w) solid var(--blue-100);
}
.plasenet #reviews ul.children li .comment_container{padding:var(--space-2) 0}
.plasenet #reviews ul.children img.avatar{width:2rem;height:2rem}

.plasenet #reviews .commentlist.psn-reviews-collapsed>li:nth-child(n+6){display:none}
.plasenet #reviews .commentlist>li:nth-child(n+6){animation:psn-panel-in var(--dur-base) var(--ease-out) backwards}
.plasenet #reviews .psn-reviews-more{margin-top:var(--space-4)}
.plasenet #review_form_wrapper{
  background:var(--surface-sunken);border-radius:var(--radius-md);padding:var(--space-5);
}
.plasenet #review_form #respond{margin:0;padding:0;background:none;border:0}
.plasenet #review_form .comment-reply-title{
  display:block;font:var(--type-h4);color:var(--text-heading);margin:0 0 var(--space-4);
}
/* Storefront and WooCommerce put name and e-mail side by side at 29% / 47%
   under `#respond` / `#reviews` ids; in a 19rem column they stack. */
.plasenet #reviews #review_form .comment-form>p{margin:0 0 var(--space-4);width:100%;float:none}
.plasenet #review_form .comment-notes{font:var(--type-small);color:var(--text-muted)}
.plasenet #review_form .comment-form-rating{margin:0 0 var(--space-4)}
.plasenet #review_form .comment-form-rating label{display:block}
.plasenet #review_form p.stars{margin:.236em 0 0;font-size:var(--text-lg);line-height:1}
.plasenet #review_form p.stars span{display:inline-flex;gap:.15em}
.plasenet #review_form .form-submit{margin:0}
.plasenet .woocommerce-verification-required{
  font:var(--type-small);color:var(--text-quiet);margin:0;
}

/* --- related ------------------------------------------------------------ */
.plasenet .related>h2,.plasenet .upsells>h2{
  font:var(--type-h2);color:var(--text-heading);
  letter-spacing:var(--tracking-tight);margin:0 0 var(--space-5);
}
.plasenet .related ul.products,.plasenet .upsells ul.products{
  grid-template-columns:repeat(auto-fit,minmax(13.5rem,1fr));
}

/* ============================================================
   19d PAGE LAYOUT — sidebar, or not

   Storefront's shop grid is content 73.913% + a 4.34783% gutter +
   sidebar 21.739%. The sidebar actually renders at the board's 15.5rem
   (248px), so the three add up to 1080px inside a 1064px container and
   the float drops below the content — which is what left a 1200px band
   of empty paper with the widgets stranded under it.

   Sized from the board instead: a 15.5rem aside and a space-6 gap, with
   the content taking whatever is left. Deterministic, and it matches
   Categorie-pescuit.dc.html.
   ============================================================ */

/* Produs.dc.html has no sidebar at all. */
.plasenet.psn-no-sidebar .content-area{
  width:100%;float:none;margin-right:0;
}

/* Categorie-pescuit.dc.html: the aside is `flex:0 0 15.5rem` and the row is
   row-reverse, so the filters sit on the LEFT of the products. */
@media (min-width:769px){
  .plasenet.psn-filter-sidebar .content-area{
    float:right;width:calc(100% - 15.5rem - var(--space-6));margin-right:0;
  }
  .plasenet.psn-filter-sidebar .widget-area{
    float:left;width:15.5rem;margin:0;
  }
}

/* The filter widgets are Panels on the board — one per filter, each with a
   heading — rather than Storefront's bare stack. */
.plasenet .widget-area .widget{
  background:var(--surface-card);border-radius:var(--radius-md);
  box-shadow:var(--shadow-card);padding:var(--space-4);
  margin:0 0 var(--space-5);font:var(--type-small);
}
.plasenet .widget-area .widget:last-child{margin-bottom:0}
/* The quote panel closes the sidebar, one gap under the last widget. */
.plasenet .widget-area .psn-sidebar-cta{margin-top:var(--space-4)}
.plasenet .widget-area .widget .widget-title,
.plasenet .widget-area .widget h2,
.plasenet .widget-area .widget h3{
  font:var(--type-h4);color:var(--text-heading);margin:0 0 var(--space-3);
  padding-bottom:var(--space-3);
  border-bottom:var(--border-rule-w) solid var(--border-strong);
}
.plasenet .widget-area .widget ul{list-style:none;margin:0;padding:0}
.plasenet .widget-area .widget li{padding:.3em 0}
.plasenet .widget-area .widget a{color:var(--text-body);font-weight:var(--weight-normal)}
.plasenet .widget-area .widget a:hover{color:var(--text-link)}
/* A filter widget with nothing but its own title is noise — and a Blocks
   filter off a product archive renders nothing but a hidden wrapper. */
.plasenet .widget-area .widget:has(.wc-blocks-filter-wrapper[hidden]){display:none}
.plasenet .widget-area .widget:not(:has(ul)):not(:has(p)):not(:has(form)):not(:has(div)){display:none}

/* ============================================================
   19e STICKY ADD-TO-CART

   Storefront's bar reuses the FULL product thumbnail, and with no size
   of its own it rendered at 324x324 — a 356px-tall slab across the
   viewport. Production shows it about 55px. It is a summary, not a
   second product page.
   ============================================================ */
.plasenet .storefront-sticky-add-to-cart{
  background:var(--surface-card);
  border-bottom:1px solid var(--border-rule);
  box-shadow:var(--shadow-card);
  padding:var(--space-3) 0;
}
.plasenet .storefront-sticky-add-to-cart__content{
  display:flex;align-items:center;gap:var(--space-4);
  max-width:var(--container);margin:0 auto;padding:0 var(--gutter);
}
.plasenet .storefront-sticky-add-to-cart img{
  width:3rem;height:3rem;flex:0 0 auto;margin:0;
  object-fit:cover;border-radius:var(--radius-sm);
}
.plasenet .storefront-sticky-add-to-cart__content-title{
  flex:1 1 auto;min-width:0;margin:0;font:var(--type-small);color:var(--text-quiet);
}
.plasenet .storefront-sticky-add-to-cart__content-title strong{color:var(--text-heading)}
.plasenet .storefront-sticky-add-to-cart__content-price{
  flex:0 0 auto;font-variant-numeric:var(--numeric-tabular);color:var(--text-body);
}
.plasenet .storefront-sticky-add-to-cart__content-price .amount{color:var(--blue-600);font-weight:var(--weight-strong)}
.plasenet .storefront-sticky-add-to-cart__content-price del .amount{color:var(--text-struck);font-weight:var(--weight-normal)}
.plasenet .storefront-sticky-add-to-cart .single_add_to_cart_button,
.plasenet .storefront-sticky-add-to-cart__content-button .button{
  flex:0 0 auto;margin:0;
  font:var(--type-button);padding:.53em 1.4em;border-radius:var(--radius-sm);
  background:var(--action-bg);color:var(--action-fg);border:0;
}
.plasenet .storefront-sticky-add-to-cart .single_add_to_cart_button:hover,
.plasenet .storefront-sticky-add-to-cart__content-button .button:hover{
  background:var(--action-bg-hover);color:var(--action-fg);
}
.plasenet .storefront-sticky-add-to-cart .star-rating{display:none}

/* --- the price filter --------------------------------------------------
   WooCommerce paints the slider #7f54b3 from its own inline <style>, which
   is a purple that appears nowhere in this palette. */
.plasenet .widget_price_filter .ui-slider{
  background:var(--grey-100);border-radius:var(--radius-xs);height:.382rem;
}
.plasenet .widget_price_filter .ui-slider .ui-slider-range{
  background-color:var(--blue-600);border-radius:var(--radius-xs);
}
.plasenet .widget_price_filter .ui-slider .ui-slider-handle{
  background-color:var(--blue-600);border:2px solid var(--white);
  box-shadow:var(--shadow-card);width:1em;height:1em;top:-.32em;
}
.plasenet .widget_price_filter .price_slider_amount .button{
  font:var(--type-button);padding:.45em 1em;border-radius:var(--radius-sm);
  background:var(--action-bg);color:var(--action-fg);float:left;
}
.plasenet .widget_price_filter .price_slider_amount .button:hover{background:var(--action-bg-hover)}
.plasenet .widget_price_filter .price_label{font:var(--type-small);color:var(--text-quiet)}
.plasenet .widget_price_filter input[type=text]{
  border:1px solid var(--border-input);border-radius:var(--radius-sm);
  padding:.4em .6em;font-variant-numeric:var(--numeric-tabular);
}

/* The price filter here is the WooCommerce BLOCKS one, not the classic
   jQuery-UI widget: it colours its track from a `--range-color` custom
   property that defaults to #7f54b3. */
.plasenet .wc-block-price-filter__range-input-progress,
.plasenet .wc-block-components-price-slider__range-input-progress{
  --range-color:var(--blue-600);
  --track-background:linear-gradient(to right,transparent var(--low),var(--range-color) 0,var(--range-color) var(--high),transparent 0) no-repeat 0 100%/100% 100%;
}
.plasenet .wc-block-price-filter__range-input::-webkit-slider-thumb,
.plasenet .wc-block-components-price-slider__range-input::-webkit-slider-thumb{
  background-color:var(--blue-600);border-color:var(--white);
}
.plasenet .wc-block-price-filter__range-input::-moz-range-thumb,
.plasenet .wc-block-components-price-slider__range-input::-moz-range-thumb{
  background-color:var(--blue-600);border-color:var(--white);
}
.plasenet .wc-block-components-price-slider__amount{
  border:1px solid var(--border-input);border-radius:var(--radius-sm);
  font-variant-numeric:var(--numeric-tabular);font:var(--type-small);
}
.plasenet .wc-block-components-filter-submit-button{
  font:var(--type-button);border-radius:var(--radius-sm);
  background:var(--action-bg);color:var(--action-fg);border:0;padding:.45em 1em;
}
.plasenet .wc-block-components-filter-submit-button:hover{background:var(--action-bg-hover)}

/* ============================================================
   19f NOTICES — Notice.jsx

   WooCommerce paints its notices as solid blue/green/red bars. The
   component is the opposite: a card carrying only a TOP edge in the tone
   colour over a tinted ground, so a notice reads as a surface with
   something to say rather than a slab of colour.
   ============================================================ */
.plasenet .woocommerce-message,
.plasenet .woocommerce-info,
.plasenet .woocommerce-error,
.plasenet .woocommerce-noreviews,
.plasenet p.no-comments,
.plasenet .wc-block-components-notice-banner{
  display:block;
  border:0;border-top:var(--border-accent-w) solid var(--blue-600);
  border-radius:0 0 var(--radius-md) var(--radius-md);
  box-shadow:var(--shadow-card);
  /* `.woocommerce-info{background-color:#3D9CD2!important}` is injected into an
     inline stylesheet at runtime — it is not in any file to edit — so this is
     one of the few places the answer has to be !important too. */
  background:var(--blue-050)!important;color:var(--text-strong)!important;
  font:var(--type-small);padding:var(--space-4) var(--space-5);
  margin:0 0 var(--space-5);list-style:none;
}
/* Flex only when there is a button to line up. A notice is otherwise prose —
   the checkout's carries two sentences, two links and a <br>, and as a flex
   row every text node became its own column. */
.plasenet :is(.woocommerce-message,.woocommerce-info,.woocommerce-error):has(>.button){
  display:flex;align-items:center;gap:var(--space-3);
}
.plasenet .wc-block-components-notice-banner{display:flex;align-items:center;gap:var(--space-3)}
@media (max-width:768px){
  /* A notice with a button: the message gets the full width, the button
     goes under it. */
  .plasenet :is(.woocommerce-message,.woocommerce-info,.woocommerce-error):has(.button){flex-wrap:wrap}
  .plasenet :is(.woocommerce-message,.woocommerce-info,.woocommerce-error) a.button{margin:0}
}
.plasenet .woocommerce-message::before,
.plasenet .woocommerce-info::before,
.plasenet .woocommerce-error::before,
.plasenet .woocommerce-noreviews::before{content:none;display:none}
.plasenet .woocommerce-message{border-top-color:var(--green-600);background:var(--field-valid-bg)!important}
.plasenet .woocommerce-error{border-top-color:var(--red-600);background:var(--field-error-bg)!important}
.plasenet .woocommerce-error li{margin:0;padding:0;list-style:none}
.plasenet .woocommerce-message a,
.plasenet .woocommerce-info a,
.plasenet .woocommerce-error a{
  font-weight:var(--weight-semi);color:var(--text-link)!important;
}
.plasenet .woocommerce-message .button,
.plasenet .woocommerce-info .button{
  margin:0 0 0 auto;font:var(--type-button);padding:.45em 1em;
  border-radius:var(--radius-sm);background:var(--action-bg);color:var(--action-fg);
}
.plasenet .woocommerce-message .button:hover,
.plasenet .woocommerce-info .button:hover{background:var(--action-bg-hover)}
/* The notice link colour above has to be !important (see the runtime rule it
   answers), so a button inside a notice needs the same to keep its white. */
.plasenet .woocommerce-message a.button,
.plasenet .woocommerce-info a.button,
.plasenet .woocommerce-error a.button{color:var(--action-fg)!important;text-decoration:none;order:2}

/* ============================================================
   20  FORM FIELDS — FormRow.jsx, Checkbox.jsx, Radio.jsx

   One treatment for every field on the site: WooCommerce's forms, the
   account pages, Contact Form 7, the review form, blog comments, search.
   FormRow: heavy label, field at .382em .5em on a hairline with a
   .236em radius, body type. Body type is also 16px, which is what keeps
   iOS Safari from zooming the page every time a field takes focus.
   ============================================================ */
.plasenet input[type=text],.plasenet input[type=email],.plasenet input[type=tel],
.plasenet input[type=url],.plasenet input[type=password],.plasenet input[type=number],
.plasenet input[type=search],.plasenet input[type=date],
.plasenet textarea,.plasenet select{
  width:100%;max-width:100%;box-sizing:border-box;margin:0;
  padding:.382em .5em;font:var(--type-body);color:var(--text-body);
  background:var(--white);border:var(--border-hair) solid var(--border-input);
  border-radius:var(--radius-xs);box-shadow:none;
  font-variant-numeric:var(--numeric-tabular);
  transition:border-color var(--dur-fast) var(--ease-out),background-color var(--dur-fast) var(--ease-out);
}
.plasenet textarea{min-height:8em;resize:vertical}
.plasenet select{
  -webkit-appearance:none;appearance:none;padding-right:2em;height:2.6em;cursor:pointer;
  background:var(--white) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23586467'%3E%3Cpath d='M7 10l5 5 5-5z'/%3E%3C/svg%3E") no-repeat right .4em center/1.2em;
}
.plasenet input::placeholder,.plasenet textarea::placeholder{color:var(--text-muted);opacity:1}
.plasenet input[type=text]:hover,.plasenet input[type=email]:hover,.plasenet input[type=tel]:hover,
.plasenet input[type=url]:hover,.plasenet input[type=password]:hover,.plasenet input[type=number]:hover,
.plasenet input[type=search]:hover,.plasenet textarea:hover,.plasenet select:hover{
  border-color:var(--border-input-hover);
}
.plasenet input[type=text]:focus,.plasenet input[type=email]:focus,.plasenet input[type=tel]:focus,
.plasenet input[type=url]:focus,.plasenet input[type=password]:focus,.plasenet input[type=number]:focus,
.plasenet input[type=search]:focus,.plasenet textarea:focus,.plasenet select:focus{
  outline:var(--focus-ring-width) solid var(--focus-ring);outline-offset:0;
  border-color:var(--focus-ring);background-color:var(--white);
}

/* Labels — WooCommerce's, the comment form's, and Contact Form 7's, whose
   form markup on this site sets each label as an <h5>. */
.plasenet .woocommerce form .form-row label,
.plasenet .comment-form label,
.plasenet .wpcf7-form label,
.plasenet .wpcf7-form h5{
  display:block;margin:0;padding:.236em 0;
  font:var(--weight-strong) var(--text-sm)/var(--leading-body) var(--font-core);
  color:var(--text-strong);letter-spacing:0;text-transform:none;
}
.plasenet .woocommerce form .form-row label .required,
.plasenet .comment-form .required{color:var(--red-600);text-decoration:none;border:0}
.plasenet .woocommerce form .form-row{margin:0 0 var(--space-4);padding:0}
.plasenet .woocommerce form .form-row .description,
.plasenet .woocommerce form .form-row em{
  display:block;margin:.382em 0 0;font:var(--type-small);color:var(--text-muted);font-style:normal;
}
.plasenet .woocommerce form .form-row.woocommerce-validated input.input-text,
.plasenet .wpcf7-form .wpcf7-not-valid:not(.wpcf7-form-control-wrap){
  border-color:var(--field-valid-border);background:var(--field-valid-bg);
}
.plasenet .woocommerce form .form-row.woocommerce-invalid input.input-text,
.plasenet .wpcf7-form input.wpcf7-not-valid,.plasenet .wpcf7-form textarea.wpcf7-not-valid{
  border-color:var(--field-error-border);background:var(--field-error-bg);
}
.plasenet .woocommerce form .form-row-first,
.plasenet .woocommerce form .form-row-last{width:calc(50% - var(--space-3) / 2)}
.plasenet .woocommerce form .form-row-first{float:left}
.plasenet .woocommerce form .form-row-last{float:right}
@media (max-width:768px){
  .plasenet .woocommerce form .form-row-first,
  .plasenet .woocommerce form .form-row-last{width:100%;float:none}
}
.plasenet .woocommerce .select2-container .select2-selection--single{
  height:auto;padding:.382em .5em;
  border:var(--border-hair) solid var(--border-input);border-radius:var(--radius-xs);
  background:var(--white);font:var(--type-body);
  transition:border-color var(--dur-fast) var(--ease-out);
}
.plasenet .woocommerce .select2-container .select2-selection--single .select2-selection__rendered{
  padding:0;line-height:var(--leading-body);color:var(--text-body);
}
.plasenet .woocommerce .select2-container .select2-selection--single .select2-selection__arrow{height:100%}
.plasenet .woocommerce .select2-container--open .select2-selection--single{border-color:var(--focus-ring)}

/* Checkbox.jsx — a 1.618em square, grey until checked, then green.
   WooCommerce Blocks draws its own checkbox mark over its input, so that
   one is left alone. */
.plasenet input[type=checkbox]:not(.wc-block-components-checkbox__input){
  -webkit-appearance:none;appearance:none;flex:none;
  width:1.375rem;height:1.375rem;margin:0 .5em 0 0;padding:0;vertical-align:-.3em;
  border:0;border-radius:var(--radius-md);cursor:pointer;
  background:var(--grey-300) no-repeat center/.85rem;
  transition:background-color var(--dur-fast) var(--ease-out);
}
.plasenet input[type=checkbox]:not(.wc-block-components-checkbox__input):hover{background-color:var(--slate-300)}
.plasenet input[type=checkbox]:not(.wc-block-components-checkbox__input):checked{
  background-color:var(--green-600);
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23fff'%3E%3Cpath d='M9 16.2 4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4z'/%3E%3C/svg%3E");
}
/* Radio.jsx — a grey ring that fills with a thick blue border when chosen. */
.plasenet input[type=radio]:not(.wc-block-components-radio-control__input){
  -webkit-appearance:none;appearance:none;flex:none;box-sizing:border-box;
  width:1.375rem;height:1.375rem;margin:0 .5em 0 0;padding:0;vertical-align:-.3em;
  border:2px solid var(--grey-300);border-radius:var(--radius-round);background:var(--white);cursor:pointer;
  transition:border-color var(--dur-fast) var(--ease-out),border-width var(--dur-fast) var(--ease-out);
}
.plasenet input[type=radio]:not(.wc-block-components-radio-control__input):hover{border-color:var(--slate-300)}
.plasenet input[type=radio]:not(.wc-block-components-radio-control__input):checked{
  border:.4rem solid var(--blue-600);
}
.plasenet input[type=checkbox]:focus-visible,.plasenet input[type=radio]:focus-visible{
  outline:var(--focus-ring-width) solid var(--focus-ring);outline-offset:2px;
}

/* The password reveal sits inside its field. It is a <button>, so it also
   picks up every button rule on the site — the slate fill and the lift. */
.plasenet .password-input{display:block;position:relative}
.plasenet .password-input input{padding-right:2.6em}
.plasenet .woocommerce .show-password-input,
.plasenet .show-password-input,
.plasenet .show-password-input:hover{
  position:absolute;top:0;right:0;bottom:0;width:2.4em;height:auto;margin:0;padding:0;
  background-color:transparent;border:0;border-radius:0;box-shadow:none;transform:none;
  opacity:.7;transition:opacity var(--dur-fast) var(--ease-out);
}
.plasenet .show-password-input:hover,.plasenet .show-password-input.display-password{opacity:1}

/* ============================================================
   21  CART

   Storefront floats the totals right at 48% and leaves the other half of
   the page empty. Items and totals are a two-column job: the list is the
   long thing, the totals are the thing you want to keep seeing.
   ============================================================ */
.plasenet .woocommerce-cart-form{
  background:var(--surface-card);border-radius:var(--radius-md);
  box-shadow:var(--shadow-card);padding:var(--space-5);margin:0 0 var(--space-5);
}
.plasenet .woocommerce table.shop_table{
  width:100%;border:0;border-collapse:collapse;border-radius:0;margin:0;
}
.plasenet .woocommerce table.shop_table thead th{
  background:none;border:0;border-bottom:var(--border-rule-w) solid var(--border-strong);
  padding:0 var(--space-3) var(--space-3);text-align:left;
  font:var(--type-spec);letter-spacing:var(--tracking-spec);text-transform:uppercase;
  color:var(--text-muted);
}
.plasenet .woocommerce table.shop_table td{
  border:0;border-bottom:1px solid var(--border-rule);
  padding:var(--space-4) var(--space-3);vertical-align:middle;font:var(--type-small);
}
.plasenet .woocommerce table.shop_table tbody tr:last-child td{border-bottom:0}
.plasenet .woocommerce table.shop_table .product-thumbnail img{
  width:4rem;height:4rem;object-fit:cover;border-radius:var(--radius-sm);margin:0;
}
.plasenet .woocommerce table.shop_table .product-name a{
  color:var(--text-heading);font-weight:var(--weight-semi);
}
.plasenet .woocommerce table.shop_table .product-name a:hover{color:var(--text-link)}
.plasenet .woocommerce table.shop_table .product-price,
.plasenet .woocommerce table.shop_table .product-subtotal,
.plasenet .woocommerce table.shop_table .product-total{
  font-variant-numeric:var(--numeric-tabular);color:var(--text-strong);
}
.plasenet .woocommerce table.shop_table .quantity .qty{
  width:4.5rem;padding:.45em .5em;text-align:center;
  border:1px solid var(--border-input);border-radius:var(--radius-sm);
  font-variant-numeric:var(--numeric-tabular);background:var(--white);
}
/* RemoveButton.jsx — brand red is allowed on this one control. */
.plasenet .woocommerce table.shop_table td.product-remove a.remove{
  display:inline-flex;align-items:center;justify-content:center;
  width:1.6em;height:1.6em;font-size:1.1em;line-height:1;
  border-radius:var(--radius-round);
  background:var(--grey-100);color:var(--text-quiet);text-decoration:none;
  transition:background-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out);
}
.plasenet .woocommerce table.shop_table td.product-remove a.remove:hover{
  background:var(--brand-red);color:#fff;
}
.plasenet .woocommerce .cart .actions{padding:var(--space-4) 0 0;border:0}
.plasenet .woocommerce .cart .actions .coupon{
  display:flex;gap:var(--space-3);align-items:center;float:none;
}
.plasenet .woocommerce .cart .actions .coupon input.input-text{
  width:auto;flex:1 1 12rem;max-width:16rem;padding:.6em .8em;
  border:1px solid var(--border-input);border-radius:var(--radius-sm);font:var(--type-small);
}
.plasenet .woocommerce .cart .actions .button{
  font:var(--type-button);padding:.53em 1.1em;border-radius:var(--radius-sm);
  background:var(--action-bg);color:var(--action-fg);border:0;float:none;
}
.plasenet .woocommerce .cart .actions .button:hover{background:var(--action-bg-hover)}
.plasenet .woocommerce .cart .actions .button:disabled{background:var(--slate-200);cursor:not-allowed}

.plasenet .cart-collaterals{width:100%;float:none;display:block}
.plasenet .cart_totals{
  float:none;width:100%;
  background:var(--surface-card);border-radius:var(--radius-md);
  box-shadow:var(--shadow-card);padding:var(--space-5);
}
.plasenet .cart_totals h2{
  font:var(--type-h4);color:var(--text-heading);margin:0 0 var(--space-4);
  padding-bottom:var(--space-3);
  border-bottom:var(--border-rule-w) solid var(--border-strong);
}
.plasenet .cart_totals table.shop_table th{
  background:none;border:0;padding:var(--space-3) var(--space-3) var(--space-3) 0;
  font:var(--type-small);color:var(--text-quiet);text-align:left;width:40%;
}
.plasenet .cart_totals table.shop_table td{
  background:none;border:0;padding:var(--space-3) 0;
  font-variant-numeric:var(--numeric-tabular);color:var(--text-strong);
}
.plasenet .cart_totals .order-total th,
.plasenet .cart_totals .order-total td{
  border-top:var(--border-rule-w) solid var(--border-strong);
  font:var(--type-h4);color:var(--text-heading);
}
.plasenet .cart_totals .order-total td small{
  display:block;font:var(--type-small);color:var(--text-quiet);font-weight:var(--weight-normal);
}
.plasenet .woocommerce-shipping-methods{list-style:none;margin:0;padding:0}
.plasenet .woocommerce-shipping-methods li{padding:.2em 0;display:flex;align-items:center;gap:.5em}
.plasenet .woocommerce-shipping-destination{font:var(--type-small);color:var(--text-quiet);margin:var(--space-2) 0 0}

/* The money button. Orange is the accent, and checkout is the one action on
   this page that deserves it. */
.plasenet .wc-proceed-to-checkout{padding:var(--space-4) 0 0}
/* Our own `.plasenet .woocommerce a.button.alt` paints every .alt button blue
   and sits later in this file, so it wins a specificity tie. Checkout is the
   one action on the page that takes the accent, hence the longer selector. */
.plasenet .woocommerce .wc-proceed-to-checkout a.checkout-button.button.alt,
.plasenet .wc-proceed-to-checkout a.checkout-button{
  display:flex;align-items:center;justify-content:center;
  width:100%;margin:0;font:var(--type-button);font-size:var(--text-base);
  padding:.75em 1.2em;border-radius:var(--radius-sm);
  background:var(--orange-500);color:#fff;
}
.plasenet .woocommerce .wc-proceed-to-checkout a.checkout-button.button.alt:hover,
.plasenet .wc-proceed-to-checkout a.checkout-button:hover{background:var(--orange-600);color:#fff}

/* Two notes on this selector.
   `.plasenet .woocommerce-cart` can never match — both classes are on <body>,
   so it has to be a compound. And `.woocommerce` is NOT unique to the cart
   wrapper: WooCommerce puts it on widget wrappers too (`div.widget.woocommerce`),
   so an unscoped `.woocommerce{display:grid}` also turned the footer's
   "Top rated products" widget into a 1fr/21rem grid and pushed its thumbnails
   out past the page edge. The cart's own wrapper is the .woocommerce div
   directly inside .entry-content, so scope it there. */
@media (min-width:769px){
  .plasenet.woocommerce-cart .entry-content>.woocommerce{
    display:grid;grid-template-columns:1fr 21rem;gap:var(--space-6);align-items:start;
  }
  .plasenet.woocommerce-cart .entry-content>.woocommerce>.woocommerce-notices-wrapper{grid-column:1 / -1}
  .plasenet.woocommerce-cart .woocommerce-cart-form{margin:0}
  .plasenet.woocommerce-cart .cart-collaterals{position:sticky;top:var(--space-5)}
}

/* ============================================================
   22  CHECKOUT
   ============================================================ */
.plasenet .woocommerce .col2-set{width:100%;float:none}
.plasenet .woocommerce .col2-set .col-1,
.plasenet .woocommerce .col2-set .col-2{float:none;width:100%}
.plasenet .woocommerce-billing-fields h3,
.plasenet .woocommerce-shipping-fields h3,
.plasenet .woocommerce-additional-fields h3,
.plasenet #order_review_heading{
  font:var(--type-h3);color:var(--text-heading);margin:0 0 var(--space-4);
}
.plasenet .woocommerce form.checkout .col2-set{
  background:var(--surface-card);border-radius:var(--radius-md);
  box-shadow:var(--shadow-card);padding:var(--space-5);
}
.plasenet #order_review .order-total td small,
.plasenet #order_review .order-total th small{
  display:block;font:var(--type-small);color:var(--text-quiet);font-weight:var(--weight-normal);
}
.plasenet #order_review table.shop_table td,
.plasenet #order_review table.shop_table th{background:none}

/* Storefront gives #order_review `width:41.1765%;float:right`. Inside the grid
   column that resolved to 176px of a 368px track. The ID means the override
   needs an id-level selector of its own. */
.plasenet #order_review,
.plasenet #order_review_heading{width:100%;float:none}
.plasenet .psn-order-panel{display:flex;flex-direction:column;gap:var(--space-4)}
.plasenet .psn-order-panel #order_review_heading{margin:0}
.plasenet #order_review{
  background:var(--surface-card);border-radius:var(--radius-md);
  box-shadow:var(--shadow-card);padding:var(--space-5);
}
.plasenet #order_review table.shop_table tfoot th{
  font:var(--type-small);color:var(--text-quiet);text-align:left;
  border:0;border-top:1px solid var(--border-rule);padding:var(--space-3) var(--space-3) var(--space-3) 0;
}
.plasenet #order_review table.shop_table tfoot td{
  border:0;border-top:1px solid var(--border-rule);padding:var(--space-3) 0;
  font-variant-numeric:var(--numeric-tabular);color:var(--text-strong);
}
.plasenet #order_review table.shop_table tfoot .order-total th,
.plasenet #order_review table.shop_table tfoot .order-total td{
  border-top:var(--border-rule-w) solid var(--border-strong);
  font:var(--type-h4);color:var(--text-heading);
}
.plasenet #payment{background:none;border-radius:0}
.plasenet #payment ul.payment_methods{
  list-style:none;margin:0 0 var(--space-4);padding:var(--space-4) 0 0;
  border:0;border-top:1px solid var(--border-rule);
}
.plasenet #payment ul.payment_methods li{
  padding:.3em 0;display:flex;flex-wrap:wrap;align-items:center;gap:.5em;
}
.plasenet #payment ul.payment_methods li label{
  font:var(--type-small);color:var(--text-body);font-weight:var(--weight-semi);margin:0;
}
.plasenet #payment ul.payment_methods li img{max-height:1.8em;width:auto;margin:0 0 0 .4em}
.plasenet #payment .payment_box{
  flex:1 1 100%;background:var(--surface-sunken);border-radius:var(--radius-md);
  padding:var(--space-3) var(--space-4);margin:var(--space-2) 0 0;
  font:var(--type-small);color:var(--text-quiet);
}
.plasenet #payment .payment_box::before{display:none}
.plasenet .woocommerce-privacy-policy-text{font:var(--type-small);color:var(--text-quiet)}
.plasenet .woocommerce-terms-and-conditions-wrapper{margin:var(--space-4) 0}
.plasenet #payment .form-row.place-order{margin:0;padding:0}
.plasenet #place_order{
  display:flex;align-items:center;justify-content:center;width:100%;
  font:var(--type-button);font-size:var(--text-base);
  padding:.8em 1.2em;border-radius:var(--radius-sm);border:0;
  background:var(--orange-500);color:#fff;
}
.plasenet #place_order:hover{background:var(--orange-600)}

@media (min-width:769px){
  /* Two columns, ONE row — the order heading and review are wrapped into a
     single item by woocommerce/checkout/form-checkout.php, so nothing spans
     and nothing inflates. */
  .plasenet .woocommerce form.checkout{
    display:grid;grid-template-columns:1fr 23rem;
    gap:var(--space-6);align-items:start;
  }
  .plasenet .woocommerce form.checkout>.col2-set{grid-column:1}
  .plasenet .woocommerce form.checkout>.psn-order-panel{
    grid-column:2;position:sticky;top:var(--space-5);
  }
}

/* ============================================================
   23  HEADER SEARCH — Cautare asistata, frames 01–02
   ShopHeader.dc.html: one bordered box, the input on a faint sunken ground,
   the "Întreabă" chip inside it while empty, the slate submit attached.
   The dropdown answers with products first, then categories.
   ============================================================ */
.plasenet .psn-search{position:relative;display:flex;flex-direction:column;gap:var(--space-2)}
.plasenet .psn-search-form{margin:0}
.plasenet .psn-search-box{
  /* The faint grey belongs to the whole field, chip included — painting it
     on the input alone left the chip standing in a white patch. */
  display:flex;align-items:stretch;
  background:linear-gradient(rgba(0,0,0,.025),rgba(0,0,0,.025)),var(--white);
  border:1px solid var(--border-input);border-radius:var(--radius-md);overflow:hidden;
  transition:border-color var(--dur-fast) var(--ease-out);
}
.plasenet .psn-search-box:hover{border-color:var(--border-input-hover)}
.plasenet .psn-search-box:focus-within{border-color:var(--blue-600)}
/* Storefront's `.site-search input[type=search]` (0,3,1) draws its own box. */
.plasenet .psn-search .psn-search-box input[type=search]{
  flex:1;min-width:0;margin:0;border:0;border-radius:0;box-shadow:none;outline:0;
  background:transparent;padding:.618em .857em;
  font:var(--type-body);color:var(--text-body);
}
.plasenet .psn-search .psn-search-box input[type=search]{text-overflow:ellipsis}
.plasenet .psn-search .psn-search-box input[type=search]::placeholder{color:var(--text-muted);opacity:1}
.plasenet .psn-search .psn-search-box input[type=search]::-webkit-search-cancel-button{display:none}
.plasenet .psn-search-ask{
  flex:0 0 auto;align-self:center;display:inline-flex;align-items:center;gap:.4em;
  margin:0 var(--space-3) 0 calc(var(--space-3) * -1);
  border:1px solid var(--border-input);background:var(--white);border-radius:var(--radius-xs);
  padding:.3em .5em;font:var(--type-spec);letter-spacing:var(--tracking-spec);
  text-transform:uppercase;color:var(--slate-600);cursor:text;
}
.plasenet .psn-search.is-filled .psn-search-ask{display:none}
.plasenet .psn-search .psn-search-submit{
  flex:0 0 auto;display:grid;place-items:center;border:0;border-radius:0;margin:0;
  padding:0 1.1em;background:var(--slate-800);color:var(--paper);cursor:pointer;
  transition:background-color var(--dur-fast) var(--ease-out);
}
.plasenet .psn-search .psn-search-submit:hover{background:var(--orange-500);color:#fff}
.plasenet .psn-search .psn-search-submit:focus-visible{outline:var(--focus-ring-width) solid var(--focus-ring);outline-offset:-4px}
.plasenet .psn-search-hint{margin:0;font:var(--type-small);color:var(--text-muted)}
/* The chip needs room beside the placeholder; below ~20rem the hint line
   carries the message on its own. */
.plasenet .psn-search{container-type:inline-size}
@container (max-width:18rem){
  .plasenet .psn-search-ask{display:none}
}
@media (min-width:769px){
  /* One line under the box that doesn't make the header row taller — it
     runs on into the empty space under the account and cart controls. */
  .plasenet .psn-search-hint{
    position:absolute;top:calc(100% + var(--space-2));left:0;
    white-space:nowrap;pointer-events:none;
  }
}
.plasenet .psn-search.is-filled .psn-search-hint{visibility:hidden}

/* --- The dropdown ------------------------------------------------------ */
.plasenet .psn-suggest{
  position:absolute;top:calc(100% + var(--space-2));left:0;z-index:30;
  width:40rem;max-width:calc(100vw - 2 * var(--space-4));
  background:var(--surface-card);border-radius:var(--radius-md);
  box-shadow:var(--shadow-lift);overflow:hidden;
}
.plasenet .psn-suggest[hidden]{display:none}
.plasenet .psn-suggest a{text-decoration:none}
.plasenet .psn-suggest kbd{
  flex:0 0 auto;margin-left:auto;background:none;border:0;padding:0;
  color:var(--slate-400);font:var(--type-spec);letter-spacing:var(--tracking-spec);
}
.plasenet .psn-suggest-ask{
  display:flex;align-items:center;gap:var(--space-3);
  padding:var(--space-4) var(--space-5);background:var(--blue-050);
  border-bottom:var(--border-hair) solid var(--border-rule);color:var(--blue-600);
}
.plasenet .psn-suggest-ask svg{flex:0 0 auto}
.plasenet .psn-suggest-ask-text{flex:1;min-width:0;font:var(--type-link);color:var(--blue-600)}
.plasenet .psn-suggest-ask:hover,.plasenet .psn-suggest-ask.is-active{background:var(--blue-100)}
.plasenet .psn-suggest-label{padding:var(--space-4) var(--space-5) var(--space-3)}
.plasenet .psn-suggest-label .spec{color:var(--text-muted)}
.plasenet .psn-suggest-label--rule{border-top:var(--border-rule-w) solid var(--border-strong)}
.plasenet .psn-suggest-product{
  display:flex;align-items:center;gap:var(--space-4);
  padding:.618em var(--space-5);border-top:var(--border-hair) solid var(--border-rule);
}
.plasenet .psn-suggest-thumb{
  flex:0 0 auto;width:2.6rem;height:2.6rem;border-radius:var(--radius-xs);
  background-color:var(--paper);background-size:cover;background-position:center;
}
.plasenet .psn-suggest-body{flex:1;min-width:0}
.plasenet .psn-suggest-title{display:block;font:var(--type-h4);color:var(--text-heading)}
.plasenet .psn-suggest-spec{display:block;margin-top:.25em;color:var(--text-muted);line-height:1.4}
.plasenet .psn-suggest-price{flex:0 0 auto;font:var(--type-price);color:var(--blue-600);white-space:nowrap;text-align:right}
.plasenet .psn-suggest-price del{display:block;font:var(--type-small);color:var(--text-muted)}
.plasenet .psn-suggest-price ins{text-decoration:none;color:var(--orange-600)}
.plasenet .psn-suggest-unit{font-weight:var(--weight-body)}
.plasenet .psn-suggest-cat{
  display:block;padding:.5em var(--space-5);
  font:var(--type-small);font-weight:var(--weight-strong);color:var(--text-body);
}
.plasenet .psn-suggest-cat span{font-weight:var(--weight-body);color:var(--text-muted)}
.plasenet .psn-suggest-product:hover,.plasenet .psn-suggest-product.is-active,
.plasenet .psn-suggest-cat:hover,.plasenet .psn-suggest-cat.is-active{background:var(--surface-sunken)}
.plasenet .psn-suggest-product:hover .psn-suggest-title,
.plasenet .psn-suggest-product.is-active .psn-suggest-title{color:var(--blue-600)}
.plasenet .psn-suggest-empty{margin:0;padding:var(--space-4) var(--space-5);font:var(--type-small);color:var(--text-muted)}
.plasenet .psn-suggest-all{
  display:flex;align-items:center;gap:var(--space-3);margin-top:var(--space-3);
  padding:var(--space-4) var(--space-5);background:var(--surface-sunken);
  font:var(--type-small);font-weight:var(--weight-strong);color:var(--text-link);
}
.plasenet .psn-suggest-all:hover,.plasenet .psn-suggest-all.is-active{background:var(--grey-050);color:var(--text-link-hover)}

@media (max-width:768px){
  /* The phone keeps the chip and drops the hint line; the sheet in frame 12
     carries the explanation instead. */
  .plasenet .psn-search-hint{display:none}
  .plasenet .psn-suggest{top:calc(100% + var(--space-2));width:100%;max-width:none}
  /* A price column leaves the title a few letters wide at 375px: the price
     goes under the spec instead. */
  .plasenet .psn-suggest-product{display:grid;grid-template-columns:2.6rem minmax(0,1fr);column-gap:var(--space-4);row-gap:.25em;align-items:start;padding:var(--space-3) var(--space-4)}
  .plasenet .psn-suggest-thumb{grid-row:span 2}
  .plasenet .psn-suggest-price{grid-column:2;text-align:left}
  .plasenet .psn-suggest-price del{display:inline;margin-right:.4em}
  .plasenet .psn-suggest-ask,.plasenet .psn-suggest-all{padding:var(--space-4)}
  .plasenet .psn-suggest-label,.plasenet .psn-suggest-cat{padding-left:var(--space-4);padding-right:var(--space-4)}
}

/* ============================================================
   24  HEADER — the Superstore arrangement
   docs/design-assets/oldsite-2025.png: logo | a wide search | the account
   block flush against the card's right edge, and the cart at the right end
   of the slate nav bar. Same 1064px card; the row now uses all of it.
   ============================================================ */
@media (min-width:769px){
  .plasenet .psn-header-grid{padding-right:0}
  .plasenet .psn-tagline{white-space:nowrap}
  .plasenet .site-search{flex:1 1 auto;min-width:0}
  .plasenet .psn-search-hint{padding-bottom:0}
  /* The hint is out of flow on desktop, but the column gap still counted it
     and made the wrapper 6px taller than the box — so the box sat 3px above
     the row's centre line while the account block sat on it. */
  .plasenet .psn-search{gap:0}
  .plasenet .psn-header-grid{padding-bottom:calc(var(--space-5) + var(--space-3))}
}

/* --- the account block ----------------------------------------------- */
.plasenet .psn-account{
  /* Exactly the search box's height (a line of body type, .618em padding
     top and bottom, a 1px border each side), so the two share edges. */
  position:relative;display:flex;align-items:stretch;flex:0 0 auto;
  height:calc(var(--leading-body) * 1rem + 1.236rem + 2px);margin:0;padding:0;border:0;background:none;
}
.plasenet .psn-account-avatar{
  display:grid;place-items:end center;width:2.95rem;flex:0 0 auto;overflow:hidden;
  background:var(--grey-100);color:#b9c2c4;text-decoration:none;
  border-radius:var(--radius-md) 0 0 var(--radius-md);
}
.plasenet .psn-account-avatar svg{width:2.3rem;height:2.3rem;margin-bottom:-.35rem}
.plasenet .psn-account--member .psn-account-avatar{
  /* Only the guest silhouette needs cropping; the initials carry a tooltip
     that overflow would clip. */
  overflow:visible;place-items:center;background:var(--slate-800);color:var(--paper);
  font:var(--weight-strong) var(--text-sm)/1 var(--font-core);letter-spacing:.04em;
  transition:background-color var(--dur-fast) var(--ease-out);
}
.plasenet .psn-account--member .psn-account-avatar:hover{background:var(--slate-600);color:var(--paper);text-decoration:none}
.plasenet .psn-account-panel{
  position:relative;display:flex;align-items:center;gap:.15rem;
  padding:0 var(--space-3);background:var(--blue-600);box-shadow:var(--shadow-ribbon);
}
.plasenet .psn-account-action{
  position:relative;display:grid;place-items:center;width:2.35rem;height:2.35rem;
  color:#fff;border-radius:var(--radius-sm);text-decoration:none;
  transition:background-color var(--dur-fast) var(--ease-out);
}
.plasenet .psn-account-action:hover{background:var(--blue-700);color:#fff;text-decoration:none}
.plasenet .psn-account-action:focus-visible,
.plasenet .psn-account-avatar:focus-visible{outline:2px solid #fff;outline-offset:-4px}
/* The panel runs past the card's edge and folds behind it, like the ribbon. */
.plasenet .psn-account-fold{
  position:absolute;right:0;bottom:-.58em;display:block;
  border-style:solid;border-width:.618em .618em 0 0;
  border-color:var(--blue-700) transparent transparent transparent;
}

/* --- tooltips: hover and keyboard focus, never a `title` ------------- */
.plasenet [data-tip]{position:relative}
.plasenet .psn-account [data-tip]::after{
  content:attr(data-tip);position:absolute;top:calc(100% + .55rem);right:0;z-index:40;
  padding:.35em .65em;border-radius:var(--radius-sm);white-space:nowrap;pointer-events:none;
  background:var(--slate-900);color:var(--paper);font:var(--weight-strong) var(--text-xs)/1.4 var(--font-core);
  box-shadow:var(--shadow-lift);opacity:0;transform:translateY(-3px);
  transition:opacity var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-out);
}
.plasenet .psn-account [data-tip]:hover::after,
.plasenet .psn-account [data-tip]:focus-visible::after{opacity:1;transform:none;transition-delay:.12s}
.plasenet .psn-account .psn-account-avatar[data-tip]::after{right:auto;left:0}
@media (hover:none){
  .plasenet .psn-account [data-tip]::after{display:none}
}

/* --- the cart at the end of the nav bar ------------------------------ */
.plasenet .storefront-primary-navigation{display:flex;align-items:stretch}
.plasenet .storefront-primary-navigation .main-navigation{flex:1 1 auto;min-width:0}
/* Storefront sizes this list at 21.74% of the bar inside a media query
   (`.woocommerce-active .site-header .site-header-cart`), which left slate
   after the chip. Its contents decide its width here. */
.plasenet .storefront-primary-navigation .site-header-cart{
  flex:0 0 auto;display:flex;align-items:stretch;margin:0;padding:0;width:auto;float:none;
}
.plasenet .storefront-primary-navigation .site-header-cart>li:first-child{display:flex}
.plasenet .storefront-primary-navigation .site-header-cart .cart-contents{
  height:100%;border-radius:0 var(--radius-md) var(--radius-md) 0;
  background:transparent;box-shadow:inset 1px 0 0 rgba(255,255,255,.08);
}
.plasenet .storefront-primary-navigation .site-header-cart .cart-contents .amount{padding:0 var(--space-4)}
.plasenet .storefront-primary-navigation .site-header-cart .cart-contents .count{padding:0 1em;min-width:3.2em;height:100%}
.plasenet .storefront-primary-navigation .site-header-cart .cart-contents:hover{background:var(--blue-600);color:#fff}
.plasenet .storefront-primary-navigation .site-header-cart .widget_shopping_cart{top:calc(100% + var(--space-2))}

@media (min-width:769px){
  /* Past the nav bar's edge to the card's, then .58em beyond it to fold. */
  .plasenet .psn-account{margin-right:calc(-1 * var(--space-5) - .58em)}
}
/* The mini-cart's <li> only anchors the dropdown; it must take no width, or
   it leaves a slate gap after the orange chip. */
.plasenet .storefront-primary-navigation .site-header-cart>li:last-child{width:0;padding:0;margin:0}

@media (max-width:768px){
  /* Logo and account share the first row; Storefront's percentage width on
     the branding pushed the account onto a row of its own. */
  .plasenet .psn-header-grid{flex-wrap:wrap}
  .plasenet .site-branding{flex:1 1 0;min-width:0;width:auto;margin:0}
  .plasenet .psn-account{margin-left:auto}
  .plasenet .psn-account{height:2.75rem}
  .plasenet .psn-account-avatar{display:none}
  .plasenet .psn-account-panel{border-radius:var(--radius-md);box-shadow:none;padding:0 .2rem}
  .plasenet .psn-account-fold{display:none}
  .plasenet .psn-account-action{width:2.75rem;height:2.75rem}
  .plasenet .storefront-primary-navigation .site-header-cart .cart-contents .amount{padding:0 var(--space-3)}
}

/* ============================================================
   25  BADGE — Badge.jsx
   ============================================================ */
.plasenet .psn-badge{
  display:inline-flex;align-items:center;gap:.4em;white-space:nowrap;
  border-radius:var(--radius-md);padding:.236em .618em;
  font:var(--weight-strong) var(--text-xs)/var(--leading-body) var(--font-core);
  background:var(--slate-600);color:var(--paper);
}
.plasenet .psn-badge--offer{background:var(--orange-500);color:#fff}
.plasenet .psn-badge--info{background:var(--blue-600);color:#fff}
.plasenet .psn-badge--quiet{background:var(--grey-050);color:var(--text-quiet)}
/* Green text or a green fill on white both fail contrast at this size, so
   "done" is a tinted chip carrying the stock-status dot. */
.plasenet .psn-badge--ok{background:var(--field-valid-bg);color:var(--text-strong)}
.plasenet .psn-badge--ok::before{
  content:"";width:.5em;height:.5em;border-radius:var(--radius-round);background:var(--stock-ok);
}

/* ============================================================
   26  ACCOUNT — "Contul meu"

   No artboard exists for the account, so like the cart it is drawn from
   the system: the navigation is a Panel in the same 15.5rem column the
   category page gives its filters, and everything the customer edits
   sits on a card. Storefront floats the navigation right at 17.6% and
   the content left at 76.5%; both are cancelled for a grid.
   ============================================================ */
.plasenet .woocommerce-MyAccount-navigation,
.plasenet .woocommerce-MyAccount-content{width:auto;float:none;margin:0}
@media (min-width:769px){
  .plasenet.woocommerce-account.logged-in .entry-content>.woocommerce{
    display:grid;grid-template-columns:15.5rem minmax(0,1fr);gap:var(--space-6);align-items:start;
  }
  .plasenet .woocommerce-MyAccount-navigation{position:sticky;top:var(--space-5)}
}
.plasenet .woocommerce-MyAccount-content>:first-child{margin-top:0}

/* --- navigation ----------------------------------------------------------
   woocommerce.css styles these links at `.hentry .entry-content
   .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link
   a` (0,4,3) — display:block, which turns the icon pseudo-element into a
   zero-width inline box — so the link rules here repeat that chain.         */
.plasenet .woocommerce-MyAccount-navigation{
  background:var(--surface-card);border-radius:var(--radius-md);box-shadow:var(--shadow-card);
  padding:var(--space-3);margin-bottom:var(--space-5);
}
.plasenet .woocommerce-MyAccount-navigation ul{list-style:none;margin:0;padding:0;border:0}
.plasenet .entry-content .woocommerce-MyAccount-navigation ul li{margin:0;padding:0;border:0;position:relative}
.plasenet .entry-content .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link a{
  display:flex;align-items:center;gap:.75em;padding:.55em var(--space-3);
  border-radius:var(--radius-sm);font:var(--type-button);font-size:var(--text-sm);
  color:var(--text-body);text-decoration:none;
  transition:background-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out);
}
/* Storefront prints a Font Awesome glyph here; the icon is ours below. */
.plasenet .entry-content .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link a::before{
  content:"";flex:none;width:1.15rem;height:1.15rem;opacity:1;margin:0;
  background:currentColor;color:inherit;font-family:inherit;
  -webkit-mask:var(--psn-nav-icon) no-repeat center/contain;mask:var(--psn-nav-icon) no-repeat center/contain;
  float:none;position:static;line-height:1;
}
.plasenet .entry-content .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link a:hover{background:var(--blue-050);color:var(--blue-700)}
.plasenet .entry-content .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link.is-active a{
  background:var(--blue-600);color:#fff;
}
.plasenet .entry-content .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--customer-logout{
  margin-top:var(--space-2);padding-top:var(--space-2);border-top:var(--border-hair) solid var(--border-rule);
}
.plasenet .entry-content .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--customer-logout a:hover{background:var(--grey-050);color:var(--text-strong)}
.plasenet .woocommerce-MyAccount-navigation-link{--psn-nav-icon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3C/svg%3E")}
.plasenet .woocommerce-MyAccount-navigation-link--dashboard{--psn-nav-icon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M3 13h8V3H3v10zm0 8h8v-6H3v6zm10 0h8V11h-8v10zm0-18v6h8V3h-8z'/%3E%3C/svg%3E")}
.plasenet .woocommerce-MyAccount-navigation-link--orders{--psn-nav-icon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20 3H4c-1.1 0-2 .9-2 2v3.01c0 .72.43 1.34 1 1.69V19c0 1.1 1.1 2 2 2h14c.9 0 2-.9 2-2V9.7c.57-.35 1-.97 1-1.69V5c0-1.1-.9-2-2-2zm-5 12H9v-2h6v2zm5-7H4V5l16-.02V8z'/%3E%3C/svg%3E")}
.plasenet .woocommerce-MyAccount-navigation-link--downloads{--psn-nav-icon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z'/%3E%3C/svg%3E")}
.plasenet .woocommerce-MyAccount-navigation-link--edit-address{--psn-nav-icon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2a7 7 0 00-7 7c0 5.25 7 13 7 13s7-7.75 7-13a7 7 0 00-7-7zm0 9.5A2.5 2.5 0 1112 6.5a2.5 2.5 0 010 5z'/%3E%3C/svg%3E")}
.plasenet .woocommerce-MyAccount-navigation-link--payment-methods{--psn-nav-icon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20 4H4a2 2 0 00-2 2v12a2 2 0 002 2h16a2 2 0 002-2V6a2 2 0 00-2-2zm0 14H4v-6h16v6zm0-10H4V6h16v2z'/%3E%3C/svg%3E")}
.plasenet .woocommerce-MyAccount-navigation-link--edit-account{--psn-nav-icon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 12a5 5 0 100-10 5 5 0 000 10zm0 2c-5 0-9 2.5-9 5.5V22h18v-2.5c0-3-4-5.5-9-5.5z'/%3E%3C/svg%3E")}
.plasenet .woocommerce-MyAccount-navigation-link--customer-logout{--psn-nav-icon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='m17 7-1.41 1.41L18.17 11H8v2h10.17l-2.58 2.58L17 17l5-5zM4 5h8V3H4c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h8v-2H4V5z'/%3E%3C/svg%3E")}
@media (max-width:768px){
  /* On a phone the navigation is a row of chips you can swipe along. */
  .plasenet .woocommerce-MyAccount-navigation{padding:var(--space-2);overflow-x:auto;scrollbar-width:none}
  .plasenet .woocommerce-MyAccount-navigation ul{display:flex;gap:var(--space-1)}
  .plasenet .entry-content .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link a{white-space:nowrap}
  .plasenet .entry-content .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--customer-logout{margin:0 0 0 auto;padding:0;border:0}
}

/* --- dashboard ----------------------------------------------------------- */
.plasenet .psn-account-hello{display:flex;align-items:center;gap:var(--space-4);margin:0 0 var(--space-5)}
.plasenet .psn-account-hello-avatar{
  flex:none;display:grid;place-items:center;width:3.4rem;height:3.4rem;
  border-radius:var(--radius-round);background:var(--slate-800);color:var(--paper);
  font:var(--weight-strong) var(--text-md)/1 var(--font-core);letter-spacing:.04em;
}
.plasenet .psn-account-hello-text{min-width:0}
.plasenet .psn-account-hello-title{font:var(--type-h3);color:var(--text-heading);margin:0}
.plasenet .psn-account-hello-meta{font:var(--type-small);color:var(--text-muted);margin:0;overflow-wrap:break-word}
.plasenet .psn-account-hello-meta a{font-weight:var(--weight-semi)}

.plasenet .psn-account-tiles{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(12rem,1fr));gap:var(--space-4);
  margin:0 0 var(--space-5);
}
.plasenet .psn-account-tile{
  display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;column-gap:var(--space-3);
  align-items:center;padding:var(--space-4);
  background:var(--surface-card);border-radius:var(--radius-md);box-shadow:var(--shadow-card);
  color:var(--text-body);text-decoration:none;
  animation:psn-enter var(--dur-enter) var(--ease-overshoot) calc(var(--psn-i,0) * var(--stagger)) backwards;
  transition:transform var(--dur-fast) var(--ease-out),box-shadow var(--dur-fast) var(--ease-out);
}
.plasenet .psn-account-tile:hover{transform:translateY(-2px);box-shadow:var(--shadow-lift);text-decoration:none}
.plasenet .psn-account-tile-icon{
  grid-row:1 / 3;display:grid;place-items:center;width:2.6rem;height:2.6rem;
  border-radius:var(--radius-round);background:var(--blue-050);color:var(--blue-600);
  transition:background-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out);
}
.plasenet .psn-account-tile:hover .psn-account-tile-icon{background:var(--blue-600);color:#fff}
.plasenet .psn-account-tile-title{font:var(--type-h4);color:var(--text-heading)}
.plasenet .psn-account-tile-detail{
  font:var(--type-small);color:var(--text-muted);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;
}

.plasenet .psn-order-list{list-style:none;margin:0;padding:0}
.plasenet .psn-order-row{
  display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:var(--space-2) var(--space-4);
  align-items:center;padding:var(--space-3) 0;margin:0;
}
.plasenet .psn-order-row+.psn-order-row{border-top:var(--border-hair) solid var(--border-rule)}
.plasenet .psn-order-number{font:var(--type-link);font-size:var(--text-sm)}
.plasenet .psn-order-date{grid-column:1;grid-row:2;font:var(--type-small);color:var(--text-muted)}
.plasenet .psn-order-row .psn-badge{grid-column:2;grid-row:1 / 3}
.plasenet .psn-order-total{
  grid-column:3;grid-row:1 / 3;text-align:right;min-width:6em;
  font:var(--type-price);color:var(--text-strong);font-variant-numeric:var(--numeric-tabular);
}
@media (max-width:768px){
  .plasenet .psn-order-row{grid-template-columns:minmax(0,1fr) auto}
  .plasenet .psn-order-row .psn-badge{grid-column:2;grid-row:1;justify-self:end}
  .plasenet .psn-order-total{grid-column:2;grid-row:2;min-width:0}
  .plasenet .psn-account-hello{align-items:flex-start}
  .plasenet .psn-account-hello-avatar{width:2.8rem;height:2.8rem;font-size:var(--text-base)}
  .plasenet .psn-account-hello-meta span[aria-hidden]{display:none}
  .plasenet .psn-account-hello-meta a{display:block}
}
.plasenet .psn-account-recent .psn-empty{display:flex;flex-direction:column;align-items:center;gap:var(--space-4)}
.plasenet .psn-account-recent .psn-empty p{margin:0;max-width:40ch}

/* --- orders table -------------------------------------------------------- */
.plasenet .woocommerce-MyAccount-content table.shop_table,
.plasenet .woocommerce-order-details table.shop_table,
.plasenet .woocommerce-table--order-downloads{
  width:100%;margin:0 0 var(--space-5);border:0;border-collapse:separate;border-spacing:0;
  background:var(--surface-card);border-radius:var(--radius-md);box-shadow:var(--shadow-card);overflow:hidden;
}
.plasenet .woocommerce-MyAccount-content table.shop_table th,
.plasenet .woocommerce-order-details table.shop_table th{
  padding:var(--space-3) var(--space-4);background:var(--surface-sunken);text-align:left;
  font:var(--type-spec);letter-spacing:var(--tracking-spec);text-transform:uppercase;color:var(--text-muted);
  border:0;
}
.plasenet .woocommerce-MyAccount-content table.shop_table td,
.plasenet .woocommerce-order-details table.shop_table td,
.plasenet .woocommerce-order-details table.shop_table tfoot th{
  padding:var(--space-3) var(--space-4);border:0;border-top:var(--border-hair) solid var(--border-rule);
  background:none;font:var(--type-small);vertical-align:middle;
}
.plasenet .woocommerce-order-details table.shop_table tfoot th{
  font:var(--type-small);font-weight:var(--weight-strong);text-transform:none;letter-spacing:0;color:var(--text-strong);
  background:none;
}
.plasenet .woocommerce-order-details table.shop_table tfoot tr:last-child>*{font-size:var(--text-base);color:var(--text-strong)}
/* WooCommerce sets the order number as a row header, a <th> inside tbody. */
.plasenet .woocommerce-MyAccount-content table.shop_table tbody th{
  background:none;border-top:var(--border-hair) solid var(--border-rule);
  font:var(--type-small);letter-spacing:0;text-transform:none;color:var(--text-body);
}
.plasenet .woocommerce-orders-table__cell-order-number a{font-weight:var(--weight-strong);text-decoration:none}
.plasenet .woocommerce-orders-table__cell-order-total{font-variant-numeric:var(--numeric-tabular);color:var(--text-strong)}
.plasenet .woocommerce-orders-table__cell-order-actions{text-align:right}
.plasenet .woocommerce-orders-table__cell-order-actions .button{
  font-size:var(--text-xs);padding:.45em 1em;margin:0 0 0 var(--space-2);
}
/* Status as Badge.jsx. The row carries the status class; the cell does not. */
.plasenet .woocommerce-orders-table__cell-order-status{white-space:nowrap}
.plasenet .woocommerce-orders-table__row .woocommerce-orders-table__cell-order-status::before{
  content:"";display:inline-block;width:.5em;height:.5em;margin-right:.5em;vertical-align:.1em;
  border-radius:var(--radius-round);background:var(--slate-300);
}
.plasenet .woocommerce-orders-table__row--status-completed .woocommerce-orders-table__cell-order-status::before{background:var(--stock-ok)}
.plasenet .woocommerce-orders-table__row--status-processing .woocommerce-orders-table__cell-order-status::before{background:var(--blue-600)}
.plasenet .woocommerce-orders-table__row--status-on-hold .woocommerce-orders-table__cell-order-status::before,
.plasenet .woocommerce-orders-table__row--status-pending .woocommerce-orders-table__cell-order-status::before{background:var(--orange-500)}
.plasenet .woocommerce-orders-table__row--status-cancelled .woocommerce-orders-table__cell-order-status::before,
.plasenet .woocommerce-orders-table__row--status-failed .woocommerce-orders-table__cell-order-status::before{background:var(--red-600)}
@media (max-width:768px){
  /* WooCommerce's responsive table: every cell becomes "LABEL  value". */
  .plasenet .woocommerce-MyAccount-content table.shop_table_responsive thead{display:none}
  /* Block + floated label, not flex: a cell such as "96,00 lei for 1 item"
     is several text nodes, and flex would space each one out. */
  .plasenet .woocommerce-MyAccount-content table.shop_table_responsive tbody :is(th,td){
    display:block;text-align:right;
  }
  .plasenet .woocommerce-MyAccount-content table.shop_table_responsive tbody :is(th,td)::before{
    content:attr(data-title);float:left;margin:.35em var(--space-4) 0 0;
    font:var(--type-spec);letter-spacing:var(--tracking-spec);text-transform:uppercase;color:var(--text-muted);
  }
  /* The order number is the row's header: it leads each card, on a band. */
  .plasenet .woocommerce-MyAccount-content table.shop_table_responsive tbody tr th{background:var(--surface-sunken)}
  .plasenet .woocommerce-MyAccount-content table.shop_table_responsive tbody tr+tr th{
    border-top:var(--border-rule-w) solid var(--border-strong);
  }
  /* On a phone the cell's ::before is its label, so the status dot moves to
     the text's own colour instead. */
  .plasenet .woocommerce-orders-table__row .woocommerce-orders-table__cell-order-status::before{
    content:attr(data-title);display:block;width:auto;height:auto;margin:0;border-radius:0;background:none;
  }
}
.plasenet .woocommerce-MyAccount-content .woocommerce-pagination{
  display:flex;justify-content:space-between;gap:var(--space-3);margin:0 0 var(--space-5);
}

/* A viewed order: "Comanda #123 a fost plasată pe … şi este acum …". */
.plasenet .woocommerce-MyAccount-content>p:first-of-type mark,
.plasenet .woocommerce-order-overview mark{
  background:var(--blue-050);color:var(--text-strong);font-weight:var(--weight-strong);
  padding:.05em .35em;border-radius:var(--radius-xs);
}
.plasenet .woocommerce-order-details__title,
.plasenet .woocommerce-column__title,
.plasenet .woocommerce-customer-details h2{
  font:var(--type-h4);color:var(--text-heading);margin:0 0 var(--space-3);
}
.plasenet .woocommerce-customer-details address{
  background:var(--surface-card);border-radius:var(--radius-md);box-shadow:var(--shadow-card);
  padding:var(--space-4) var(--space-5);border:0;font-style:normal;font:var(--type-small);
}
.plasenet .woocommerce-customer-details .col2-set{display:grid;gap:var(--space-5)}
@media (min-width:769px){
  .plasenet .woocommerce-customer-details .col2-set{grid-template-columns:1fr 1fr}
}
.plasenet .woocommerce-customer-details .col2-set .col-1,
.plasenet .woocommerce-customer-details .col2-set .col-2{width:auto;float:none;margin:0}
.plasenet .woocommerce-customer-details .col2-set::before,
.plasenet .woocommerce-customer-details .col2-set::after{content:none}

/* --- addresses ----------------------------------------------------------- */
.plasenet .woocommerce-MyAccount-content>.woocommerce-notices-wrapper+p{color:var(--text-quiet);font:var(--type-small)}
.plasenet .woocommerce-Addresses{display:grid;gap:var(--space-5);margin:0}
@media (min-width:769px){.plasenet .woocommerce-Addresses{grid-template-columns:1fr 1fr}}
.plasenet .woocommerce-Addresses::before,.plasenet .woocommerce-Addresses::after{content:none}
.plasenet .woocommerce .woocommerce-Addresses .woocommerce-Address{
  width:auto;float:none;margin:0;
  background:var(--surface-card);border-radius:var(--radius-md);box-shadow:var(--shadow-card);padding:var(--space-5);
}
.plasenet .woocommerce-Address-title{
  display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3);
  margin:0 0 var(--space-4);padding-bottom:var(--space-3);
  border-bottom:var(--border-rule-w) solid var(--border-strong);
}
/* Storefront clears these headers with ::before/::after tables, which in a
   flex row become two empty items that the gap spaces out. */
.plasenet .woocommerce-Addresses header.woocommerce-Address-title::before,
.plasenet .woocommerce-Addresses header.woocommerce-Address-title::after{content:none;display:none}
.plasenet .woocommerce-Address-title .edit{margin-left:auto}
.plasenet .woocommerce-Address-title h2,.plasenet .woocommerce-Address-title h3{font:var(--type-h4);color:var(--text-heading);margin:0}
.plasenet .woocommerce-Address-title .edit{float:none;font:var(--type-small);font-weight:var(--weight-strong)}
.plasenet .woocommerce-Address address{margin:0;font-style:normal;font:var(--type-small);color:var(--text-body)}
.plasenet .woocommerce-Address address:has(em){color:var(--text-muted)}

/* --- forms on a card: edit address, account details, lost password -------- */
.plasenet .woocommerce-MyAccount-content>form,
.plasenet .woocommerce-MyAccount-content>.woocommerce-EditAccountForm,
.plasenet .woocommerce-ResetPassword,
.plasenet form.woocommerce-form-login.login:not(#customer_login form){
  background:var(--surface-card);border-radius:var(--radius-md);box-shadow:var(--shadow-card);
  padding:var(--space-5);margin:0 0 var(--space-5);
}
.plasenet .woocommerce-MyAccount-content form>h2,
.plasenet .woocommerce-MyAccount-content form h3{
  font:var(--type-h4);color:var(--text-heading);margin:0 0 var(--space-4);
  padding-bottom:var(--space-3);border-bottom:var(--border-rule-w) solid var(--border-strong);
}
.plasenet .woocommerce-address-fields__field-wrapper::after,
.plasenet .woocommerce-EditAccountForm::after{content:"";display:table;clear:both}
.plasenet .woocommerce-EditAccountForm fieldset{
  margin:var(--space-2) 0 var(--space-5);padding:var(--space-5) var(--space-5) var(--space-2);
  border:0;border-radius:var(--radius-md);background:var(--surface-sunken);
}
.plasenet .woocommerce-EditAccountForm fieldset legend{
  float:left;width:100%;margin:0 0 var(--space-4);padding:0;
  font:var(--type-h4);color:var(--text-heading);background:none;
}
.plasenet .woocommerce-EditAccountForm fieldset legend+*{clear:both}
.plasenet .woocommerce-MyAccount-content form p:last-of-type:has(.button){margin-bottom:0}
/* Lost and reset password: one short form, so one narrow card. */
.plasenet .woocommerce-ResetPassword{max-width:32rem}
.plasenet .woocommerce-ResetPassword>p:first-child{font:var(--type-small);color:var(--text-quiet)}
.plasenet .woocommerce form.woocommerce-ResetPassword .form-row-first{width:100%;float:none}

/* --- signed out: log in beside register ----------------------------------- */
.plasenet #customer_login{display:grid;gap:var(--space-5);margin:0}
@media (min-width:769px){.plasenet #customer_login{grid-template-columns:1fr 1fr;align-items:start}}
.plasenet #customer_login::before,.plasenet #customer_login::after{content:none}
/* woocommerce.css sizes these at `.page-template-template-fullwidth-php
   .col2-set#customer_login .col-1` (1,3,0), hence .col2-set here too. */
.plasenet #customer_login.col2-set>.u-column1,
.plasenet #customer_login.col2-set>.u-column2{
  width:auto;float:none;margin:0;padding:var(--space-5);
  background:var(--surface-card);border-radius:var(--radius-md);box-shadow:var(--shadow-card);
}
.plasenet #customer_login>div>h2{
  font:var(--type-h3);color:var(--text-heading);margin:0 0 var(--space-4);
  padding-bottom:var(--space-3);border-bottom:var(--border-rule-w) solid var(--border-strong);
}
.plasenet #customer_login form{margin:0;padding:0;border:0;background:none;box-shadow:none}
.plasenet #customer_login .woocommerce-form-login{display:flex;flex-direction:column}
.plasenet #customer_login .woocommerce-form-login>p:has(.woocommerce-form-login__submit){
  display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--space-3);
}
.plasenet #customer_login .woocommerce-form-login__rememberme{
  display:inline-flex;align-items:center;margin:0;padding:0;
  font:var(--type-small);color:var(--text-body);cursor:pointer;
}
.plasenet #customer_login .woocommerce-form-login__submit,
.plasenet #customer_login .woocommerce-form-register__submit{order:2;margin:0;float:none}
.plasenet #customer_login .lost_password{margin:0;font:var(--type-small)}
.plasenet #customer_login .woocommerce-privacy-policy-text p{font:var(--type-small);color:var(--text-muted)}
.plasenet .psn-register-perks{list-style:none;margin:0 0 var(--space-5);padding:0;display:grid;gap:var(--space-2)}
.plasenet .psn-register-perks li{display:flex;gap:.6em;align-items:baseline;margin:0;font:var(--type-small);color:var(--text-body)}
.plasenet .psn-register-perks svg{flex:none;color:var(--stock-ok);transform:translateY(.15em)}

/* ============================================================
   27  SOCIAL LOGIN — WooCommerce Social Login

   The plugin paints each provider as a solid bar in the provider's colour
   (Facebook's comes from an inline style) with the logo in a white square.
   The system has one button shape; social sign-in is that shape on white,
   carrying the provider's own mark, so two brand colours never shout
   louder than the shop's "Log in". On the log-in card it moves ABOVE the
   password form, with an "or" rule between, which is where people look.
   ============================================================ */
.plasenet .wc-social-login{
  display:flex;flex-direction:column;gap:var(--space-3);width:100%;float:none;
  margin:0 0 var(--space-4);padding:0;
}
.plasenet .wc-social-login>p{margin:0;font:var(--type-small);color:var(--text-muted)}
.plasenet #customer_login .wc-social-login{order:-1}
.plasenet #customer_login .wc-social-login::after{
  content:"sau";display:flex;align-items:center;gap:var(--space-3);margin-top:var(--space-2);
  font:var(--type-spec);letter-spacing:var(--tracking-spec);text-transform:uppercase;color:var(--text-muted);
  background:linear-gradient(var(--border-rule),var(--border-rule)) no-repeat left center/calc(50% - 1.6em) 1px,
             linear-gradient(var(--border-rule),var(--border-rule)) no-repeat right center/calc(50% - 1.6em) 1px;
  justify-content:center;
}
.plasenet a.button-social-login,
.plasenet .widget-area .widget a.button-social-login,
.plasenet a.button-social-login.button-social-login-facebook,
.plasenet a.button-social-login.button-social-login-google{
  display:flex;align-items:center;justify-content:center;gap:.618em;width:100%;height:auto;
  margin:0;padding:.53em 1.1em;box-sizing:border-box;
  background:var(--white);color:var(--text-strong);border:var(--border-hair) solid var(--border-input);
  border-radius:var(--radius-sm);font:var(--type-button);line-height:var(--leading-body);
  text-decoration:none;white-space:nowrap;box-shadow:none;
  transition:border-color var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-out),
    box-shadow var(--dur-fast) var(--ease-out);
}
.plasenet a.button-social-login:hover,
.plasenet a.button-social-login:focus-visible,
.plasenet a.button-social-login.button-social-login-facebook:hover,
.plasenet a.button-social-login.button-social-login-google:hover{
  background:var(--white);color:var(--text-strong);border-color:var(--slate-200);
  transform:translateY(var(--lift-y));box-shadow:var(--shadow-lift);text-decoration:none;
}
.plasenet a.button-social-login:active{transform:none;box-shadow:none}
.plasenet a.button-social-login .si,
.plasenet a.button-social-login:hover .si{
  width:1.25rem;height:1.25rem;margin:0;padding:0;flex:none;
  background-color:transparent;background-size:contain;border-radius:0;
}
/* On the checkout the block spans the page, and buttons that wide read as
   bars — there they sit side by side. The plugin reveals the block with
   jQuery's slideDown, i.e. an inline display:block, so this cannot lean on
   the container being flex. */
.plasenet.woocommerce-checkout .wc-social-login{margin:0}
.plasenet.woocommerce-checkout .wc-social-login>p{margin:0 0 var(--space-3)}
.plasenet.woocommerce-checkout .wc-social-login a.button-social-login{
  display:inline-flex;width:auto;min-width:15rem;margin:0 var(--space-3) var(--space-2) 0;
}
/* "Conturi sociale conectate" on the account-details page. */
.plasenet .wc-social-login-profile{margin:0 0 var(--space-5)}
.plasenet .wc-social-login-profile h2{font:var(--type-h4);color:var(--text-heading);margin:0 0 var(--space-3)}
.plasenet .wc-social-login-profile p{font:var(--type-small);color:var(--text-quiet)}
.plasenet .wc-social-login-profile .social-badge{
  display:inline-flex;align-items:center;gap:.5em;height:auto;padding:.3em .7em;
  border-radius:var(--radius-md);background:var(--grey-050);color:var(--text-strong);
}
.plasenet .wc-social-login-profile .social-badge .si{width:1rem;height:1rem;margin:0;background-size:contain;background-color:transparent}

/* ============================================================
   28  CONTENT PAGES — Despre noi, Cum cumpăr, Întrebări, legal

   No artboard; drawn from the system like the cart. The title stays on
   the paper and the page body sits on one Panel, prose held to a reading
   measure. WooCommerce's own pages (cart, checkout, account) carry their
   own panels, and the homepage is composed, so both are excluded.
   ============================================================ */
.plasenet .hentry{margin:0 0 var(--space-6);padding:0;border:0}
.plasenet .hentry .entry-header{margin:0 0 var(--space-5);padding:0;border:0}
.plasenet .hentry .entry-header .entry-title,
.plasenet .page-header .page-title{
  font:var(--type-h1);letter-spacing:var(--tracking-tight);color:var(--text-heading);margin:0;
}
.plasenet.page:not(.woocommerce-page):not(.home):not(.page-template-template-homepage) .hentry>.entry-content,
.plasenet.single-post .hentry>.entry-content{
  background:var(--surface-card);border-radius:var(--radius-md);box-shadow:var(--shadow-card);
  padding:var(--space-6);
}
@media (max-width:768px){
  .plasenet.page:not(.woocommerce-page):not(.home) .hentry>.entry-content,
  .plasenet.single-post .hentry>.entry-content{padding:var(--space-5) var(--space-4)}
}
.plasenet .entry-content::after{content:"";display:table;clear:both}
.plasenet .entry-content>:first-child{margin-top:0}
.plasenet .entry-content>:last-child{margin-bottom:0}
.plasenet .entry-content>p,
.plasenet .entry-content>ul,.plasenet .entry-content>ol,
.plasenet .entry-content>h2,.plasenet .entry-content>h3,.plasenet .entry-content>h4,
.plasenet .entry-content>blockquote,
.plasenet .entry-content>.plasenet-box,
.plasenet .entry-content>details{max-width:72ch}
/* Prose rules reach only the page body's own blocks — direct children of
   .entry-content, or the inside of a legacy box/toggle — so they never land
   on a component that happens to render inside the content (the account
   dashboard, the cart, a Contact Form 7 label). */
.plasenet .entry-content>p,
.plasenet :is(.plasenet-box,.plasenet-toggle-content,.plasenet-tab-content,.plasenet-col) p{margin:0 0 var(--space-4)}
.plasenet .entry-content>h2{
  font:var(--weight-body) var(--text-xl)/var(--leading-snug) var(--font-core);letter-spacing:var(--tracking-tight);
  margin:var(--space-6) 0 var(--space-3);
}
.plasenet .entry-content>h3{font:var(--type-h3);margin:var(--space-5) 0 var(--space-3)}
.plasenet .entry-content>h4,.plasenet .entry-content>h5{font:var(--type-h4);margin:var(--space-5) 0 var(--space-2)}
.plasenet .entry-content>:is(ul,ol),
.plasenet :is(.plasenet-toggle-content,.plasenet-tab-content,.plasenet-col,.plasenet-checklist) :is(ul,ol){margin:0 0 var(--space-4);padding-left:1.4em}
.plasenet .entry-content>:is(ul,ol) li,
.plasenet :is(.plasenet-toggle-content,.plasenet-tab-content,.plasenet-col,.plasenet-checklist) li{margin:0 0 var(--space-2)}
.plasenet .entry-content>:is(ul,ol) li::marker{color:var(--text-muted)}
.plasenet .entry-content>hr{
  height:0;margin:var(--space-6) 0;border:0;border-top:var(--border-rule-w) solid var(--border-strong);background:none;
}
.plasenet .entry-content>blockquote{
  margin:0 0 var(--space-4);padding:var(--space-4) var(--space-5);
  background:var(--surface-sunken);border:0;border-left:var(--border-accent-w) solid var(--blue-600);
  border-radius:0 var(--radius-md) var(--radius-md) 0;font-style:normal;
}
.plasenet .entry-content>blockquote p:last-child{margin:0}
.plasenet .entry-content>table{width:100%;border-collapse:collapse;margin:0 0 var(--space-5);font:var(--type-small)}
.plasenet .entry-content>table :is(th,td){
  padding:var(--space-3);border:0;border-bottom:var(--border-hair) solid var(--border-rule);text-align:left;background:none;
}
/* Prose links: underlined, because in a paragraph colour alone is not enough
   to find them. Storefront underlines EVERY link in .entry-content, which
   also underlined buttons, tiles and table links inside WooCommerce pages,
   so that is reset and the underline put back on prose only. */
.plasenet .hentry .entry-content a,
.plasenet .hentry .entry-content a:hover{text-decoration:none}
.plasenet .hentry .entry-content>:is(p,ul,ol,blockquote,h2,h3,h4,table) a:not([class]),
.plasenet .hentry :is(.plasenet-box,.plasenet-toggle-content,.plasenet-tab-content,.plasenet-col) a:not([class]){
  text-decoration:underline;text-decoration-color:var(--blue-100);
  text-decoration-thickness:.12em;text-underline-offset:.18em;
  transition:text-decoration-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out);
}
.plasenet .hentry .entry-content>:is(p,ul,ol,blockquote,h2,h3,h4,table) a:not([class]):hover,
.plasenet .hentry :is(.plasenet-box,.plasenet-toggle-content,.plasenet-tab-content,.plasenet-col) a:not([class]):hover{
  text-decoration-color:currentColor;
}
.plasenet .widget-area .widget a,.plasenet .widget-area .widget a:hover{text-decoration:none}

/* --- images and captions ------------------------------------------------- */
.plasenet .entry-content img{border-radius:var(--radius-md)}
.plasenet .entry-content img.emoji{border-radius:0}
.plasenet .entry-content .alignleft{float:left;margin:.3em var(--space-5) var(--space-4) 0}
.plasenet .entry-content .alignright{float:right;margin:.3em 0 var(--space-4) var(--space-5)}
.plasenet .entry-content .aligncenter{display:block;margin:0 auto var(--space-4)}
.plasenet .entry-content .wp-caption{max-width:100%;margin-bottom:var(--space-4)}
.plasenet .entry-content .wp-caption img{display:block}
.plasenet .entry-content .wp-caption-text{
  margin:var(--space-2) 0 0;padding:0;border:0;text-align:left;
  font:var(--type-small);font-style:normal;color:var(--text-muted);
}
@media (max-width:768px){
  .plasenet .entry-content .alignleft,.plasenet .entry-content .alignright{float:none;margin:0 0 var(--space-4)}
}
.plasenet .entry-content .gallery{
  display:grid;gap:var(--space-4);margin:0 0 var(--space-5);
  grid-template-columns:repeat(var(--psn-gallery-cols,3),minmax(0,1fr));
}
.plasenet .entry-content .gallery-columns-2{--psn-gallery-cols:2}
.plasenet .entry-content .gallery-columns-4{--psn-gallery-cols:4}
.plasenet .entry-content .gallery-columns-5{--psn-gallery-cols:5}
@media (max-width:768px){.plasenet .entry-content .gallery{--psn-gallery-cols:2}}
/* WordPress galleries carry a clearfix and a <br style="clear:both"> after
   every row; in a grid each of those is a cell. */
.plasenet .entry-content .gallery::before,.plasenet .entry-content .gallery::after{content:none}
.plasenet .entry-content .gallery>br{display:none}
.plasenet .entry-content .gallery .gallery-item{width:auto;max-width:none;margin:0;padding:0;float:none}
.plasenet .entry-content .gallery .gallery-icon{overflow:hidden;border-radius:var(--radius-md);box-shadow:var(--shadow-card)}
.plasenet .entry-content .gallery .gallery-icon img{
  display:block;width:100%;aspect-ratio:1;object-fit:cover;border:0;border-radius:0;
  transition:transform var(--dur-image) var(--ease-out);
}
.plasenet .entry-content .gallery .gallery-icon a:hover img{transform:scale(1.04)}
.plasenet .entry-content .gallery .gallery-caption{text-align:center}

/* --- legacy shortcodes, redrawn ------------------------------------------ */
/* [box] — Notice.jsx: a tinted card with a top edge in its tone. */
.plasenet .plasenet-box{
  margin:0 0 var(--space-4);padding:var(--space-4) var(--space-5);
  background:var(--blue-050);border:0;border-top:var(--border-accent-w) solid var(--blue-600);
  border-radius:0 0 var(--radius-md) var(--radius-md);color:var(--text-strong);font:var(--type-small);
}
.plasenet .plasenet-box--note{background:var(--orange-050);border-top-color:var(--orange-500)}
.plasenet .plasenet-box--tick{background:var(--field-valid-bg);border-top-color:var(--green-600)}
.plasenet .plasenet-box p{margin:0 0 var(--space-2)}
.plasenet .plasenet-box>:last-child{margin-bottom:0}
.plasenet .plasenet-box+.plasenet-box{margin-top:var(--space-4)}
/* [toggle] and [tabs] — both are <details>, drawn as one accordion row. */
.plasenet .plasenet-toggle,
.plasenet .plasenet-tab{
  margin:0 0 var(--space-3);border:var(--border-hair) solid var(--border-rule);
  border-radius:var(--radius-md);background:var(--white);overflow:hidden;
  transition:box-shadow var(--dur-fast) var(--ease-out);
}
.plasenet .plasenet-tabs{margin:0 0 var(--space-4)}
.plasenet .plasenet-tabs .plasenet-tab{margin:0 0 var(--space-2)}
.plasenet .plasenet-toggle[open],.plasenet .plasenet-tab[open]{box-shadow:var(--shadow-card);border-color:transparent}
.plasenet .plasenet-toggle summary,
.plasenet .plasenet-tab summary{
  display:flex;align-items:center;gap:var(--space-3);list-style:none;cursor:pointer;
  padding:var(--space-3) var(--space-4);background:none;border:0;
  font:var(--type-button);font-size:var(--text-sm);color:var(--text-strong);
  transition:background-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out);
}
.plasenet .plasenet-toggle summary::-webkit-details-marker,
.plasenet .plasenet-tab summary::-webkit-details-marker{display:none}
.plasenet .plasenet-toggle summary::before,
.plasenet .plasenet-tab summary::before{
  content:"";flex:none;width:1.1rem;height:1.1rem;margin:0;font-size:inherit;background:currentColor;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9 6l6 6-6 6z'/%3E%3C/svg%3E") no-repeat center/contain;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9 6l6 6-6 6z'/%3E%3C/svg%3E") no-repeat center/contain;
  color:var(--blue-600);transition:transform var(--dur-base) var(--ease-overshoot);
}
.plasenet .plasenet-toggle summary:hover,.plasenet .plasenet-tab summary:hover{background:var(--blue-050);color:var(--blue-700)}
.plasenet .plasenet-toggle[open] summary::before,.plasenet .plasenet-tab[open] summary::before{transform:rotate(90deg)}
.plasenet .plasenet-toggle[open] summary,.plasenet .plasenet-tab[open] summary{border-bottom:var(--border-hair) solid var(--border-rule)}
.plasenet .plasenet-toggle-content,
.plasenet .plasenet-tab-content{padding:var(--space-4);font:var(--type-small)}
.plasenet .plasenet-toggle[open] .plasenet-toggle-content,
.plasenet .plasenet-tab[open] .plasenet-tab-content{animation:psn-panel-in var(--dur-base) var(--ease-out)}
.plasenet .plasenet-toggle-content>:last-child,.plasenet .plasenet-tab-content>:last-child{margin-bottom:0}
.plasenet .entry-content ol>li>.plasenet-toggle{margin-top:var(--space-2)}
/* [unordered_list style="tick"] */
.plasenet .plasenet-checklist ul,.plasenet ul.plasenet-checklist{list-style:none;padding-left:0}
.plasenet .plasenet-checklist li{position:relative;padding-left:1.7em}
.plasenet .plasenet-checklist li::before{
  content:"";position:absolute;left:0;top:.3em;width:1.1em;height:1.1em;background:var(--stock-ok);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9 16.2 4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4z'/%3E%3C/svg%3E") no-repeat center/contain;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9 16.2 4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4z'/%3E%3C/svg%3E") no-repeat center/contain;
}
/* [highlight], [hr], [button color="orange"], [twocol_one] */
.plasenet .plasenet-highlight{background:var(--blue-050);color:var(--text-strong);padding:.05em .35em;border-radius:var(--radius-xs)}
.plasenet .entry-content .plasenet-hr{margin:var(--space-6) 0}
.plasenet .plasenet-btn{margin:0 0 var(--space-4)}
.plasenet .plasenet-btn--orange{background:var(--orange-500);color:#fff}
.plasenet .plasenet-btn--orange:hover{background:var(--orange-600);color:#fff}
.plasenet .plasenet-col--half{margin:0 0 var(--space-4)}
@media (min-width:769px){
  .plasenet .entry-content:has(>.plasenet-col--half){display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:var(--space-6)}
  .plasenet .entry-content:has(>.plasenet-col--half)>:not(.plasenet-col--half){grid-column:1 / -1}
}

/* --- comments, on pages and posts ----------------------------------------- */
.plasenet .comments-area{
  margin:0 0 var(--space-6);padding:var(--space-5);max-width:none;
  background:var(--surface-card);border-radius:var(--radius-md);box-shadow:var(--shadow-card);
}
.plasenet .comments-title,.plasenet .comment-reply-title{
  display:block;font:var(--type-h4);color:var(--text-heading);margin:0 0 var(--space-4);
}
.plasenet .comment-reply-title small{margin-left:var(--space-3);font:var(--type-small)}
.plasenet .comment-list{list-style:none;margin:0 0 var(--space-5);padding:0}
.plasenet .comment-list .comment-body{padding:var(--space-4) 0;border-bottom:var(--border-hair) solid var(--border-rule)}
.plasenet .comment-list .children{list-style:none;margin-left:var(--space-5);padding-left:var(--space-4);border-left:var(--border-accent-w) solid var(--blue-100)}
.plasenet .comments-area #respond{margin:0;padding:0;background:none;border:0}
.plasenet .comment-form p{margin:0 0 var(--space-4)}
.plasenet .comment-form .comment-notes{font:var(--type-small);color:var(--text-muted)}
@media (min-width:769px){
  /* Name, e-mail and website on one row. Blog and page comments only — the
     product review form is a narrow column and stacks. */
  .plasenet .comments-area .comment-form{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));column-gap:var(--space-4)}
  .plasenet .comments-area .comment-form>p{grid-column:1 / -1}
  /* Storefront sizes these at `#respond .comment-form-author` (1,1,0). */
  .plasenet .comments-area #respond .comment-form>.comment-form-author,
  .plasenet .comments-area #respond .comment-form>.comment-form-email,
  .plasenet .comments-area #respond .comment-form>.comment-form-url{grid-column:auto;width:auto;float:none;margin-right:0}
}
.plasenet .comment-form .form-submit{margin:0}

/* ============================================================
   29  CONTACT — page-contact.php

   The owner's page body (introduction, the form, company details) on
   the left; phone, e-mail and address beside it as single-tap routes.
   On a phone the routes come first — calling is quicker than a form.
   ============================================================ */
.plasenet .psn-contact-header{margin:0 0 var(--space-5)}
.plasenet .psn-contact{display:grid;gap:var(--space-5);align-items:start}
@media (min-width:769px){
  .plasenet .psn-contact{grid-template-columns:minmax(0,1fr) 20rem;gap:var(--space-6)}
  .plasenet .psn-contact>.hentry{grid-column:1;grid-row:1}
  .plasenet .psn-contact-aside{grid-column:2;grid-row:1;position:sticky;top:var(--space-5)}
}
.plasenet .psn-contact>.hentry{margin:0}
.plasenet .psn-contact-aside{display:flex;flex-direction:column;gap:var(--space-4)}
.plasenet .psn-contact-routes{list-style:none;margin:0;padding:0;display:grid;gap:var(--space-2)}
.plasenet .psn-contact-routes li{margin:0;animation:psn-enter var(--dur-enter) var(--ease-overshoot) calc(var(--psn-i,0) * var(--stagger)) backwards}
.plasenet .psn-contact-route{
  display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);margin:0 calc(-1 * var(--space-3));
  border-radius:var(--radius-md);color:var(--text-body);text-decoration:none;
  transition:background-color var(--dur-fast) var(--ease-out);
}
.plasenet .psn-contact-route:hover{background:var(--blue-050);text-decoration:none}
.plasenet .psn-contact-route-icon{
  flex:none;display:grid;place-items:center;width:2.4rem;height:2.4rem;border-radius:var(--radius-round);
  background:var(--blue-050);color:var(--blue-600);
  transition:background-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-overshoot);
}
.plasenet .psn-contact-route:hover .psn-contact-route-icon{background:var(--blue-600);color:#fff;transform:scale(1.06)}
.plasenet .psn-contact-route-text{display:flex;flex-direction:column;min-width:0}
.plasenet .psn-contact-route-label{font:var(--type-spec);letter-spacing:var(--tracking-spec);text-transform:uppercase;color:var(--text-muted)}
.plasenet .psn-contact-route-value{font:var(--type-link);font-size:var(--text-sm);color:var(--text-link);margin-top:.2em}
.plasenet .psn-contact-routes li:first-child .psn-contact-route-value{font-size:var(--text-md)}
/* The seal's spec tracking (.14em) is too wide for a 20rem column. */
.plasenet .psn-contact-company .psn-made-in{white-space:nowrap;max-width:100%}
.plasenet .psn-contact-company .psn-made-in .spec{letter-spacing:.04em}
.plasenet .psn-contact-company p{margin:var(--space-3) 0 0;font:var(--type-small);color:var(--text-body)}
.plasenet .psn-contact-company .spec{color:var(--text-muted)}
/* The IBAN in fours; the gaps are margins so a copy pastes in one piece. */
.plasenet .psn-iban{font:var(--type-spec);font-size:var(--text-sm);color:var(--text-body);white-space:nowrap}
.plasenet .psn-iban>span+span{margin-left:.35em}
/* The owner's map, lifted out of the page body to span both columns. */
.plasenet .psn-contact-map{
  margin:var(--space-6) 0 0;border-radius:var(--radius-md);overflow:hidden;
  box-shadow:var(--shadow-card);background:var(--surface-sunken);
}
.plasenet .psn-contact-map iframe{display:block;width:100%;height:clamp(18rem,40vw,28rem);border:0;margin:0}
@media (max-width:768px){.plasenet .psn-contact-map{margin-top:var(--space-5)}}

/* Contact Form 7. The form on this site sets each label as an <h5> with the
   field on the next line, so the h5 is the form row. */
.plasenet .wpcf7-form h5{margin:0 0 var(--space-4)}
.plasenet .wpcf7-form h5 br{display:none}
.plasenet .wpcf7-form .wpcf7-form-control-wrap{display:block;margin-top:.236em;font-weight:var(--weight-body)}
.plasenet .wpcf7-form textarea{min-height:10em}
.plasenet .wpcf7-form input[type=file]{
  width:100%;font:var(--type-small);color:var(--text-muted);padding:0;border:0;background:none;
}
.plasenet .wpcf7-form input[type=file]::file-selector-button{
  margin-right:var(--space-3);padding:.45em 1em;cursor:pointer;
  font:var(--weight-strong) var(--text-xs)/var(--leading-body) var(--font-core);
  color:var(--text-link);background:transparent;border:1px solid var(--blue-600);border-radius:var(--radius-sm);
  transition:background-color var(--dur-fast) var(--ease-out);
}
.plasenet .wpcf7-form input[type=file]::file-selector-button:hover{background:var(--blue-050)}
.plasenet .wpcf7-form .wpcf7-submit{margin:var(--space-2) 0 0}
.plasenet .wpcf7-form .wpcf7-spinner{vertical-align:middle;margin:0 0 0 var(--space-3)}
.plasenet .wpcf7-not-valid-tip{margin:.382em 0 0;font:var(--type-small);font-weight:var(--weight-normal);color:var(--red-600)}
.plasenet .wpcf7 form .wpcf7-response-output{
  margin:var(--space-4) 0 0;padding:var(--space-4) var(--space-5);
  border:0;border-top:var(--border-accent-w) solid var(--blue-600);border-radius:0 0 var(--radius-md) var(--radius-md);
  background:var(--blue-050);font:var(--type-small);color:var(--text-strong);
}
.plasenet .wpcf7 form.sent .wpcf7-response-output{border-top-color:var(--green-600);background:var(--field-valid-bg)}
.plasenet .wpcf7 form.invalid .wpcf7-response-output,
.plasenet .wpcf7 form.unaccepted .wpcf7-response-output,
.plasenet .wpcf7 form.failed .wpcf7-response-output{border-top-color:var(--red-600);background:var(--field-error-bg)}

/* ============================================================
   30  BLOG — the index as cards, the post on a Panel
   ============================================================ */
.plasenet.blog .hentry.type-post,
.plasenet.archive:not(.woocommerce-page) .hentry.type-post,
.plasenet.search #main>article{
  display:grid;gap:var(--space-2) var(--space-5);margin:0 0 var(--space-5);padding:var(--space-5);
  background:var(--surface-card);border-radius:var(--radius-md);box-shadow:var(--shadow-card);
  transition:box-shadow var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-out);
}
.plasenet.blog .hentry.type-post:hover,
.plasenet.archive:not(.woocommerce-page) .hentry.type-post:hover,
.plasenet.search #main>article:hover{box-shadow:var(--shadow-lift)}
/* WooCommerce strips .hentry from products, so search results are matched as
   articles; a product's entry header is just its title. */
.plasenet.search #main>article .entry-header{margin:0}
.plasenet.blog .hentry .entry-header,
.plasenet.archive:not(.woocommerce-page) .hentry .entry-header{margin:0}
.plasenet.blog .hentry .entry-title,
.plasenet.archive:not(.woocommerce-page) .hentry .entry-title,
.plasenet.search #main>article .entry-title{
  font:var(--type-h3);letter-spacing:0;margin:0;
}
.plasenet .hentry .entry-header .posted-on,
.plasenet .hentry .entry-header .post-author,
.plasenet .hentry .entry-header .post-comments{
  display:inline;margin:0 var(--space-3) 0 0;font:var(--type-small);color:var(--text-muted);
}
.plasenet .hentry .entry-header .posted-on a,.plasenet .hentry .entry-header .post-author a,
.plasenet .hentry .entry-header .post-comments a{color:var(--text-quiet);font-weight:var(--weight-normal);text-decoration:none}
/* Storefront prints date, author and comments BEFORE the title. The title
   leads; the three meta items follow on one line. */
.plasenet .hentry.type-post .entry-header{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--space-2) var(--space-4)}
.plasenet .hentry.type-post .entry-header .entry-title{order:-1;flex:1 0 100%}
.plasenet .hentry.type-post .entry-header>span{margin:0}
.plasenet .psn-post-excerpt{display:grid;gap:var(--space-4) var(--space-5);align-items:start}
/* Clearfix pseudo-elements are real grid items; left in, the first one
   takes the image's column. */
.plasenet .psn-post-excerpt::before,.plasenet .psn-post-excerpt::after,
.plasenet .entry-content:has(>.plasenet-col--half)::before,
.plasenet .entry-content:has(>.plasenet-col--half)::after,
.plasenet .comment-form::before,.plasenet .comment-form::after{content:none}
@media (min-width:769px){
  .plasenet .psn-post-excerpt:has(.psn-post-thumb){grid-template-columns:14rem minmax(0,1fr)}
}
.plasenet .psn-post-thumb{display:block;overflow:hidden;border-radius:var(--radius-md)}
.plasenet .psn-post-thumb img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:0;transition:transform var(--dur-image) var(--ease-out)}
.plasenet .hentry:hover .psn-post-thumb img{transform:scale(1.04)}
.plasenet .psn-post-summary p{margin:0 0 var(--space-3);max-width:62ch}
.plasenet .psn-post-more{display:inline-flex;align-items:center;gap:.3em;font:var(--type-link);font-size:var(--text-sm)}
.plasenet .psn-post-more svg{transition:transform var(--dur-fast) var(--ease-overshoot)}
.plasenet .psn-post-more:hover{text-decoration:none}
.plasenet .psn-post-more:hover svg{transform:translateX(3px)}
/* Storefront's post thumbnail, on the single post. */
.plasenet.single-post .hentry .wp-post-image{display:block;width:100%;height:auto;margin:0 0 var(--space-5);border-radius:var(--radius-md)}
.plasenet .entry-taxonomy{margin:var(--space-4) 0 0;font:var(--type-small);color:var(--text-muted)}
.plasenet .entry-taxonomy .cat-links::before,.plasenet .entry-taxonomy .tags-links::before{content:none}

/* Pagination.jsx — the blog's and the shop's. */
.plasenet .navigation.pagination,.plasenet .woocommerce-pagination{margin:0 0 var(--space-6);padding:0;border:0}
.plasenet .pagination .nav-links,.plasenet .woocommerce-pagination ul.page-numbers{
  display:flex;flex-wrap:wrap;gap:var(--space-3);margin:0;padding:0;border:0;list-style:none;
}
.plasenet .woocommerce-pagination ul.page-numbers li{border:0;margin:0;display:block}
.plasenet .pagination .page-numbers,
.plasenet .woocommerce-pagination .page-numbers li .page-numbers{
  display:grid;place-items:center;min-width:2.4em;height:2.4em;padding:0 .5em;
  border-radius:var(--radius-md);background:var(--surface-card);box-shadow:var(--shadow-card);
  font:var(--type-button);color:var(--text-body);text-decoration:none;border:0;
  transition:background-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-out);
}
.plasenet .pagination a.page-numbers:hover,
.plasenet .woocommerce-pagination .page-numbers li a.page-numbers:hover{background:var(--blue-050);color:var(--blue-700);transform:translateY(var(--lift-y))}
.plasenet .pagination .page-numbers.current,
.plasenet .woocommerce-pagination .page-numbers li .page-numbers.current{background:var(--blue-600);color:#fff;box-shadow:none}
.plasenet .pagination .page-numbers.dots,
.plasenet .woocommerce-pagination .page-numbers li .page-numbers.dots{background:none;box-shadow:none}
/* Previous / next post. */
.plasenet .post-navigation{margin:0 0 var(--space-6)}
.plasenet .post-navigation .nav-links{display:grid;gap:var(--space-4)}
@media (min-width:769px){.plasenet .post-navigation .nav-links{grid-template-columns:1fr 1fr}}
.plasenet .post-navigation .nav-previous,.plasenet .post-navigation .nav-next{width:auto;float:none;margin:0}
.plasenet .post-navigation .nav-next{text-align:right;grid-column:-2}
.plasenet .post-navigation a{
  display:block;padding:var(--space-4) var(--space-5);background:var(--surface-card);
  border-radius:var(--radius-md);box-shadow:var(--shadow-card);color:var(--text-heading);text-decoration:none;
  transition:box-shadow var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-out);
}
.plasenet .post-navigation a:hover{box-shadow:var(--shadow-lift);transform:translateY(-2px);text-decoration:none}
.plasenet .post-navigation a::before,.plasenet .post-navigation a::after{content:none}

/* ============================================================
   31  SEARCH + 404
   ============================================================ */
.plasenet .page-header{margin:0 0 var(--space-5);padding:0;border:0}
.plasenet .no-results .page-content,
.plasenet .error-404 .page-content>p{font:var(--type-lede);color:var(--text-quiet);max-width:62ch}
.plasenet .search-form,
.plasenet .error-404 .woocommerce-product-search,
.plasenet .widget_product_search form{
  display:flex;gap:0;max-width:34rem;margin:0 0 var(--space-5);position:relative;
}
.plasenet .search-form label{flex:1;margin:0}
.plasenet .search-form .search-field,
.plasenet .error-404 .woocommerce-product-search .search-field{
  flex:1;height:auto;border-radius:var(--radius-sm) 0 0 var(--radius-sm);padding:.53em .8em;
}
.plasenet .search-form .search-submit,
.plasenet .error-404 .woocommerce-product-search button{
  border-radius:0 var(--radius-sm) var(--radius-sm) 0;flex:none;padding:0 var(--space-5);font:var(--type-button);
}
.plasenet .search-form .search-submit:hover,
.plasenet .error-404 .woocommerce-product-search button:hover{transform:none;box-shadow:none}
.plasenet .widget_product_search form::before,.plasenet .widget_search form::before{content:none}
.plasenet .error-404{margin:0 0 var(--space-6)}
.plasenet .error-404 .page-content>section{margin:0 0 var(--space-6)}
.plasenet .error-404 .page-content h2{font:var(--type-h2);letter-spacing:var(--tracking-tight);margin:0 0 var(--space-4)}
.plasenet .error-404 .fourohfour-columns-2{display:grid;gap:var(--space-6);margin:0 0 var(--space-6)}
.plasenet .error-404 .fourohfour-columns-2::before,.plasenet .error-404 .fourohfour-columns-2::after{content:none}
/* The search sits on the paper, not on a widget card. */
.plasenet .error-404 .widget_product_search{background:none;box-shadow:none;border-radius:0;padding:0;margin:0 0 var(--space-6)}
/* Storefront hides the submit button for screen readers only; here it is the
   obvious next step, so it is shown. */
.plasenet .error-404 .woocommerce-product-search button[type=submit]{
  position:static;clip:auto;clip-path:none;width:auto;height:auto;overflow:visible;margin:0;
  padding:0 var(--space-5);text-indent:0;font:var(--type-button);
}
@media (min-width:769px){.plasenet .error-404 .fourohfour-columns-2{grid-template-columns:minmax(0,2fr) minmax(0,1fr);align-items:start}}
.plasenet .error-404 .fourohfour-columns-2 .col-1,
.plasenet .error-404 .fourohfour-columns-2 .col-2{width:auto;float:none;margin:0}
.plasenet .error-404 .fourohfour-columns-2 .col-2{
  background:var(--surface-card);border-radius:var(--radius-md);box-shadow:var(--shadow-card);padding:var(--space-5);
}
.plasenet .error-404 .fourohfour-columns-2 .col-2 .widget{background:none;box-shadow:none;padding:0;margin:0}
/* The column already carries "Product Categories"; the widget repeats it. */
.plasenet .error-404 .fourohfour-columns-2 .col-2 .widget .widgettitle{display:none}
.plasenet .error-404 .fourohfour-columns-2 .col-2 h2{font:var(--type-h4);margin:0 0 var(--space-3);padding-bottom:var(--space-3);border-bottom:var(--border-rule-w) solid var(--border-strong)}
.plasenet .error-404 .product-categories{list-style:none;margin:0;padding:0;font:var(--type-small)}
.plasenet .error-404 .product-categories li{margin:0;padding:.3em 0}
.plasenet .error-404 .product-categories ul.children{list-style:none;margin:.2em 0 0;padding-left:var(--space-4)}
.plasenet .error-404 .product-categories a{color:var(--text-body);font-weight:var(--weight-normal)}
.plasenet .error-404 .product-categories a:hover{color:var(--text-link)}
.plasenet .error-404 .product-categories .count{color:var(--text-muted)}

/* ============================================================
   32  FOOTER — payment marks beside Netopia's badge
   ============================================================ */
.plasenet .psn-pay-marks{display:flex;flex-wrap:wrap;gap:var(--space-2);margin:0;padding:0;list-style:none}
.plasenet .psn-pay-marks li{margin:0;padding:0;line-height:0}
.plasenet .psn-footer-badges .psn-pay-marks img{
  height:1.9rem;width:auto;border-radius:var(--radius-xs);
  transition:transform var(--dur-fast) var(--ease-out);
}
.plasenet .psn-footer-badges .psn-pay-marks li:hover img{transform:translateY(var(--lift-y))}

/* ============================================================
   12.1  SEARCH — the empty-field panel: recent searches + category shortcuts
   ============================================================ */
.plasenet .psn-suggest-label--split{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4)}
.plasenet .psn-suggest-clear{border:0;background:transparent;padding:0;font:var(--type-small);color:var(--text-link);cursor:pointer}
.plasenet .psn-suggest-clear:hover{text-decoration:underline}
.plasenet .psn-suggest-recent{
  display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-5);
  font:var(--type-body);color:var(--text-body);
}
.plasenet .psn-suggest-recent svg{flex:0 0 auto;color:var(--slate-400)}
.plasenet .psn-suggest-recent:hover,.plasenet .psn-suggest-recent.is-active{background:var(--surface-sunken)}
.plasenet .psn-suggest-shortcuts{display:flex;flex-wrap:wrap;gap:var(--space-3);padding:0 var(--space-5) var(--space-4)}
.plasenet .psn-suggest-shortcut{
  display:inline-flex;align-items:center;gap:.3em;padding:.45em 1em;
  border:1px solid var(--blue-600);border-radius:var(--radius-sm);
  font:var(--type-button);color:var(--text-link);white-space:nowrap;
}
.plasenet .psn-suggest-shortcut span{color:var(--text-muted);font-weight:var(--weight-body)}
.plasenet .psn-suggest-shortcut:hover,.plasenet .psn-suggest-shortcut.is-active{background:var(--blue-050)}
@media (max-width:768px){
  /* Every row a thumb can hit. */
  .plasenet .psn-suggest a[role="option"]{min-height:44px}
  .plasenet .psn-suggest-shortcut{min-height:44px}
}

/* ============================================================
   33  ACHIZIȚII PUBLICE — page-achizitii-publice.php

   For procurement officers, not shoppers: the steps of a direct
   acquisition beside the data they copy into SICAP, then the record
   (trust strip, references), the categories, questions and CPV codes.
   Numbers and codes are spec type; everything copyable has a button.
   ============================================================ */
.plasenet .psn-procure-hero{min-height:20rem}
.plasenet .psn-procure-intro{max-width:44rem;margin:0 0 var(--space-5)}
.plasenet .psn-procure-grid{display:grid;gap:var(--space-6);align-items:start}
@media (min-width:900px){
  .plasenet .psn-procure-grid{grid-template-columns:minmax(0,1fr) 25rem}
  .plasenet .psn-procure-grid--even{grid-template-columns:repeat(2,minmax(0,1fr))}
  .plasenet .psn-procure-grid--single{grid-template-columns:minmax(0,48rem)}
}
.plasenet .psn-procure-grid>*{min-width:0}

/* The steps: a numbered route, the numbers joined by a hairline. */
.plasenet .psn-procure-steps{list-style:none;margin:var(--space-5) 0 0;padding:0;display:grid;gap:var(--space-5);counter-reset:none}
.plasenet .psn-procure-steps li{
  position:relative;display:grid;grid-template-columns:2.4rem minmax(0,1fr);gap:var(--space-4);margin:0;
  animation:psn-enter var(--dur-enter) var(--ease-overshoot) calc(var(--psn-i,0) * var(--stagger)) backwards;
}
.plasenet .psn-procure-steps li:not(:last-child)::before{
  content:"";position:absolute;left:1.2rem;top:2.6rem;bottom:calc(-1 * var(--space-5));width:1px;background:var(--border-rule);
}
.plasenet .psn-procure-step-n{
  display:grid;place-items:center;width:2.4rem;height:2.4rem;border-radius:var(--radius-round);
  background:var(--blue-600);color:#fff;font:var(--type-spec);font-size:var(--text-sm);
}
.plasenet .psn-procure-steps h3{font:var(--type-h4);color:var(--text-heading);margin:.45rem 0 .25rem}
.plasenet .psn-procure-steps p{font:var(--type-body);margin:0;max-width:34rem}

/* The identity card: label over value, a copy button at the end of each row. */
.plasenet .psn-procure-id{position:relative}
@media (min-width:900px){.plasenet .psn-procure-id{position:sticky;top:var(--space-5)}}
.plasenet .psn-procure-id-list{margin:0;display:grid}
.plasenet .psn-procure-id-row{padding:var(--space-3) 0;border-top:1px solid var(--grey-100)}
.plasenet .psn-procure-id-row:first-child{border-top:0;padding-top:0}
.plasenet .psn-procure-id-row dt{font:var(--type-spec);letter-spacing:var(--tracking-spec);text-transform:uppercase;color:var(--text-muted);margin:0 0 .35rem}
.plasenet .psn-procure-id-row dd{margin:0;display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-3)}
.plasenet .psn-procure-id-value{font:var(--type-small);color:var(--text-strong);overflow-wrap:anywhere}
.plasenet .psn-procure-id-note{font:var(--type-small);color:var(--green-600);margin:var(--space-3) 0 0;min-height:1.2em}
.plasenet .psn-copy{
  flex:none;font:var(--type-spec);letter-spacing:.06em;text-transform:uppercase;
  color:var(--text-link);background:transparent;border:1px solid var(--blue-100);border-radius:var(--radius-xs);
  padding:.45em .6em;cursor:pointer;
  transition:background-color var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out);
}
.plasenet .psn-copy:hover{background:var(--blue-050);border-color:var(--blue-600)}
.plasenet .psn-copy.is-copied{background:var(--blue-600);border-color:var(--blue-600);color:#fff}
@media (max-width:768px){.plasenet .psn-copy{min-height:44px;min-width:44px}}

/* The product row is the catalogue's own loop; nothing to restyle. */
/* The institutions line on product pages, under «Ai nevoie de altă măsură». */
.plasenet .psn-buy-institutions{font:var(--type-small);color:var(--text-quiet);margin:var(--space-2) 0 0}

/* References: the year in spec type, then who and what. */
.plasenet .psn-procure-refs{list-style:none;margin:0;padding:0;display:grid;gap:var(--space-4)}
@media (min-width:769px){.plasenet .psn-procure-refs{grid-template-columns:repeat(2,minmax(0,1fr))}}
.plasenet .psn-procure-refs li{
  display:grid;grid-template-columns:3.5rem minmax(0,1fr);gap:var(--space-3);margin:0;
  background:var(--surface-card);border-radius:var(--radius-md);box-shadow:var(--shadow-card);padding:var(--space-4) var(--space-5);
  animation:psn-enter var(--dur-enter) var(--ease-overshoot) calc(var(--psn-i,0) * var(--stagger)) backwards;
}
.plasenet .psn-procure-ref-year{color:var(--blue-600);padding-top:.3rem}
.plasenet .psn-procure-refs strong{font:var(--type-h4);color:var(--text-heading)}
.plasenet .psn-procure-refs p{font:var(--type-small);margin:.25rem 0 0}
.plasenet .psn-procure-ref-source{font:var(--type-small);display:inline-block;margin-top:.35rem}
.plasenet .psn-procure-note{font:var(--type-small);color:var(--text-muted);margin:var(--space-4) 0 0;text-align:center}

/* Questions: native details, a chevron that turns. */
.plasenet .psn-procure-faq{margin-top:var(--space-4);border-top:1px solid var(--grey-100)}
.plasenet .psn-procure-faq details{border-bottom:1px solid var(--grey-100)}
.plasenet .psn-procure-faq summary{
  cursor:pointer;list-style:none;display:flex;justify-content:space-between;gap:var(--space-4);
  padding:var(--space-4) 0;font:var(--type-h4);color:var(--text-heading);
}
.plasenet .psn-procure-faq summary::-webkit-details-marker{display:none}
.plasenet .psn-procure-faq summary::after{
  content:"";flex:none;width:.5rem;height:.5rem;margin-top:.45rem;
  border-right:2px solid var(--blue-600);border-bottom:2px solid var(--blue-600);transform:rotate(45deg);
  transition:transform var(--dur-fast) var(--ease-out);
}
.plasenet .psn-procure-faq details[open] summary::after{transform:rotate(-135deg)}
.plasenet .psn-procure-faq p{font:var(--type-body);margin:0 0 var(--space-4);max-width:36rem}

/* CPV codes. */
.plasenet .psn-procure-cpv table{width:100%;border-collapse:collapse;margin:0}
.plasenet .psn-procure-cpv th,.plasenet .psn-procure-cpv td{padding:var(--space-3) var(--space-2);border-top:1px solid var(--grey-150);vertical-align:top;background:none}
.plasenet .psn-procure-cpv tr:first-child th,.plasenet .psn-procure-cpv tr:first-child td{border-top:0}
.plasenet .psn-procure-cpv th{white-space:nowrap;text-align:left;color:var(--text-heading)}
.plasenet .psn-procure-cpv td{font:var(--type-small)}
.plasenet .psn-procure-cpv td:last-child{text-align:right;width:1%}

/* Home page: who has bought through SICAP (plasenet_home_procurement). Same
   card as the procurement page's references; the last cell is the route in,
   in the category tiles' blue. */
.plasenet .psn-home-procure-lede{font:var(--type-lede);color:var(--text-body);text-align:center;max-width:44rem;margin:0 auto var(--space-5)}
.plasenet .psn-home-procure-buyers{list-style:none;margin:0;padding:0;display:grid;gap:var(--space-4);grid-template-columns:1fr}
@media (min-width:600px){.plasenet .psn-home-procure-buyers{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:1000px){.plasenet .psn-home-procure-buyers{grid-template-columns:repeat(4,minmax(0,1fr))}}
.plasenet .psn-home-procure-buyers>li{
  margin:0;min-width:0;display:flex;flex-direction:column;gap:.4rem;
  background:var(--surface-card);border-radius:var(--radius-md);box-shadow:var(--shadow-card);padding:var(--space-4) var(--space-5);
  animation:psn-enter var(--dur-enter) var(--ease-overshoot) calc(var(--psn-i,0) * var(--stagger)) backwards;
}
.plasenet .psn-home-procure-buyers .psn-eyebrow{margin:0}
.plasenet .psn-home-procure-buyers strong{font:var(--type-h4);color:var(--text-heading);overflow-wrap:anywhere}
.plasenet .psn-home-procure-buyers>li.psn-home-procure-cta{padding:0;background:var(--blue-600)}
.plasenet .psn-home-procure-cta a{
  display:flex;flex-direction:column;gap:.4rem;height:100%;padding:var(--space-4) var(--space-5);border-radius:inherit;
  text-decoration:none;transition:background-color var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-out);
}
.plasenet .psn-home-procure-cta a:hover{background:var(--blue-500);text-decoration:none;transform:translateY(var(--lift-y))}
.plasenet .psn-home-procure-cta .psn-eyebrow{color:var(--blue-100)}
.plasenet .psn-home-procure-cta strong{color:#fff}

/* --- Page titles on phones: one rung down (24 px) --------------------------
   Same selectors as the desktop rules so the shorthand `font:` they set does
   not win on specificity. The hero has its own phone size above. */
@media (max-width:768px){
  .plasenet h1,
  .plasenet .hentry .entry-header .entry-title,
  .plasenet .page-header .page-title,
  .plasenet .single-product .product_title,
  .plasenet .psn-product-summary .product_title{font-size:var(--text-xl)}
}
