<!– wp:html –> <style id="mc-system"> /* ========================================================================== MossCrystal · Shared design system Loaded site-wide through the header template part. Type roles follow one rule: serif speaks (editorial voice), sans works (data, UI, navigation). Nothing below 12px carries meaning. ========================================================================== */ :root{ /* colour —————————————————————- */ /* values below are the ones the live homepage renders with — this file must follow the homepage, never the other way round, or pages drift apart. */ –ink:#111C19; –ink-2:#1B2A25; –body:#334641; –mut:#65716D; –p:#7E66A0; –p-deep:#5E4A7C; –tint:#B6A7C9; –tint-2:#EFEAF4; –paper:#FCFAF7; –paper-2:#F5F1EA; –line:#E4DED6; –line-2:#D8D1C6; –white:#fff; –sale:#9C3A2E; /* families ————————————————————– No webfont for display: the media library rejects .woff2 (403), so a linked or uploaded serif is not available. Instead of declaring a font that silently falls back to something different on every OS, the stack below names only faces that are really installed, in one fixed order. Result: the same editorial serif on macOS, Windows and Android. */ –serif:"Iowan Old Style","Palatino Linotype",Palatino,"Book Antiqua","Hoefler Text","Noto Serif",Georgia,"Times New Roman",serif; –sans:"Manrope",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif; /* type roles (size / line-height) ————————————— */ –t-display:clamp(38px,5vw,64px); –lh-display:1.04; –t-h1:clamp(30px,3.3vw,44px); –lh-h1:1.08; –t-h2:clamp(24px,2.3vw,33px); –lh-h2:1.15; –t-h3:clamp(18px,1.4vw,21px); –lh-h3:1.34; –t-h4:17px; –lh-h4:1.4; –t-lead:17.5px; –lh-lead:1.6; –t-body:16px; –lh-body:1.68; –t-small:14.5px; –lh-small:1.6; –t-meta:13.5px; –lh-meta:1.5; –t-micro:12px; –lh-micro:1.45; –tracking-display:-.022em; –tracking-head:-.014em; –tracking-label:.1em; –measure:68ch; –measure-tight:56ch; /* space —————————————————————– */ –w:1240px; –gap:24px; –r:14px; –r-sm:8px; –r-lg:20px; –sh-1:0 1px 2px rgba(17,28,25,.05); –sh-2:0 18px 40px -20px rgba(17,28,25,.28); –sh-3:0 30px 70px -32px rgba(17,28,25,.34); } /* —————————————————————- primitives */ /* The theme does not set box-sizing globally, so a component that inherits the browser default blows up by its padding (the header CTA rendered 80px tall for a 46px button). Everything we ship is border-box. */ .mc-hdr,.mc-hdr *,.mc-ftr,.mc-ftr *, .mc-btn,.mc-btn *,.mc-lang,.mc-lang *,.mc-act__b, .mc-nav__a,.mc-nav__m,.mc-nav__m *,.mc-card-post,.mc-card-post *, .mc-pager a,.mc-pager span,.mc-page-head,.mc-doc,.mc-blog-head,.mc-blog-body, .mc-read,.mc-contact,.mc-inq,.mc-inq *{box-sizing:border-box} .mc-wrap{max-width:var(–w);margin:0 auto;padding:0 40px} .mc-serif{font-family:var(–serif);font-weight:400} /* Section rhythm + heading group. Same numbers as the homepage, so a page built from these classes is indistinguishable from the home page blocks. */ .mc-sec{padding:80px 0} .mc-sec–tight{padding:52px 0} .mc-head{display:flex;align-items:flex-end;justify-content:space-between;gap:32px;margin-bottom:40px} .mc-head__t{max-width:620px} .mc-eyebrow{ font-family:var(–sans);font-size:var(–t-micro);font-weight:700;letter-spacing:.18em; text-transform:uppercase;color:var(–p);line-height:1.4;margin:0; } /* –p only reaches 4.69:1 on –paper; on the darker –paper-2 bands it has to go one step deeper to stay above 4.5:1 */ .mc-blog-head .mc-eyebrow,.mc-page-head .mc-eyebrow,.mc-arch-head .mc-eyebrow{color:var(–p-deep)} .mc-h1{ font-family:var(–serif);font-weight:400;font-size:clamp(32px,3.6vw,52px);line-height:1.05; letter-spacing:var(–tracking-display);color:var(–ink);margin:14px 0 0;text-wrap:balance; } .mc-h2{ font-family:var(–serif);font-weight:400;font-size:clamp(30px,3.4vw,50px);line-height:1.06; letter-spacing:-.025em;color:var(–ink);margin:0;text-wrap:balance; } .mc-h3{ font-family:var(–serif);font-weight:400;font-size:var(–t-h2);line-height:var(–lh-h2); letter-spacing:var(–tracking-head);color:var(–ink);margin:0;text-wrap:balance; } .mc-lead{ font-size:var(–t-lead);line-height:var(–lh-lead);color:var(–body); max-width:var(–measure-tight);margin:16px 0 0;text-wrap:pretty; } .mc-more{ display:inline-flex;align-items:center;gap:9px;font-family:var(–sans); font-size:var(–t-micro);font-weight:700;letter-spacing:.12em;text-transform:uppercase; color:var(–p-deep);white-space:nowrap;text-decoration:none;padding-bottom:3px; border-bottom:1px solid transparent; } .mc-more:hover{border-bottom-color:currentColor} .mc-more svg{flex:0 0 auto;transition:transform .18s ease} .mc-more:hover svg{transform:translateX(3px)} /* Readable default for any non-home page body copy ————————– */ .entry-content{ font-family:var(–sans); font-size:var(–t-body);line-height:var(–lh-body);color:var(–body); text-wrap:pretty; } .entry-content > :where(p,ul,ol,blockquote,table,figure,pre,h2,h3,h4){max-width:var(–measure)} .mc-doc > p,.mc-doc > ul,.mc-doc > ol,.mc-doc > table{max-width:var(–measure)} /* page-level containers opt out of the theme content width; their inner .mc-wrap sets the measure */ .entry-content.is-layout-constrained > .mc-contact, .entry-content.is-layout-constrained > .mc-page-head, .entry-content.is-layout-constrained > .mc-blog-head, .entry-content.is-layout-constrained > .mc-arch-head, .entry-content.is-layout-constrained > .mc-doc, .entry-content.is-layout-constrained > .mc-phero, .entry-content.is-layout-constrained > .mc-sec, .entry-content.is-layout-constrained > .mc-cta, .entry-content.is-layout-constrained > .mc-article{max-width:none!important;margin-left:0!important;margin-right:0!important;width:100%} /* .mc-wrap keeps its own 1240px measure — it is the outer wrapper, not a full-bleed band, so `none` above would have stretched it to the viewport */ .entry-content.is-layout-constrained > .mc-wrap{max-width:var(–w)!important; margin-left:auto!important;margin-right:auto!important;width:100%} /* Every default below is wrapped in :where(), which contributes zero specificity. `.entry-content a` used to outrank `.mc-btn` and painted purple underlined text on the primary buttons of /kontakt/; `.entry-content h2` used to outrank `.mc-h2` and pulled 50px section headings down to 33px. With :where() the element keeps its fallback exactly as before wherever it is plain body copy, and a component class always wins where one exists. */ :where(.entry-content) :where(h1,h2,h3,h4){ font-family:var(–serif);font-weight:400;color:var(–ink); letter-spacing:var(–tracking-head);text-wrap:balance; } :where(.entry-content) :where(h2){font-size:var(–t-h2);line-height:var(–lh-h2);margin:2.1em 0 .62em} :where(.entry-content) :where(h3){font-size:var(–t-h3);line-height:var(–lh-h3);margin:1.9em 0 .5em} :where(.entry-content) :where(h4){font-family:var(–sans);font-size:var(–t-h4);font-weight:700;line-height:var(–lh-h4);margin:1.7em 0 .4em;letter-spacing:0} :where(.entry-content) :where(p){margin:0 0 1.05em} :where(.entry-content) :where(ul,ol){margin:0 0 1.2em;padding-left:1.35em} :where(.entry-content) :where(li){margin:.34em 0} :where(.entry-content) :where(a){color:var(–p-deep);text-decoration:underline;text-underline-offset:2px;text-decoration-thickness:1px;text-decoration-color:rgba(88,68,114,.35)} :where(.entry-content) :where(a):hover{text-decoration-color:currentColor} :where(.entry-content) :where(strong){color:var(–ink);font-weight:700} :where(.entry-content) :where(table){width:100%;max-width:100%;border-collapse:collapse;margin:1.4em 0;font-size:var(–t-small)} :where(.entry-content) :where(th,td){border-bottom:1px solid var(–line);padding:10px 14px;text-align:left;vertical-align:top} :where(.entry-content) :where(th){background:var(–paper-2);font-weight:700;color:var(–ink);font-size:var(–t-meta);letter-spacing:.02em} :where(.entry-content) :where(blockquote){ margin:1.6em 0;padding:2px 0 2px 22px;border-left:2px solid var(–tint); font-family:var(–serif);font-size:var(–t-h3);line-height:1.45;color:var(–ink-2); } :where(.entry-content) :where(hr){border:0;border-top:1px solid var(–line);margin:2.4em 0} :where(.entry-content) :where(img){border-radius:var(–r);height:auto} /* ——————————————————————- buttons */ .mc-btn{ display:inline-flex;align-items:center;justify-content:center;gap:9px; min-height:46px;padding:0 22px;border:1px solid transparent;border-radius:var(–r-sm); font-family:var(–sans);font-size:var(–t-small);font-weight:700;letter-spacing:.01em; color:var(–white);background:var(–p);cursor:pointer;text-decoration:none; transition:background .16s ease,border-color .16s ease,color .16s ease,transform .16s ease; } .mc-btn:hover{background:var(–p-deep)} .mc-btn:active{transform:translateY(1px)} .mc-btn–solid{background:var(–ink);color:var(–white)} .mc-btn–solid:hover{background:var(–p-deep)} .mc-btn–line{background:transparent;color:var(–ink);border-color:var(–line-2)} .mc-btn–line:hover{background:var(–ink);color:var(–white);border-color:var(–ink)} .mc-btn–full{width:100%} .mc-btn:focus-visible,a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{ outline:2px solid var(–p);outline-offset:2px; } /* ========================================================================== HEADER (identical markup on every page) ========================================================================== */ .mc-hdr{ position:sticky;top:0;z-index:80;background:rgba(252,250,247,.97); -webkit-backdrop-filter:saturate(160%) blur(14px);backdrop-filter:saturate(160%) blur(14px); border-bottom:1px solid var(–line); } .mc-hdr__util{border-bottom:1px solid var(–line);background:var(–paper-2)} .mc-hdr__util .mc-wrap{display:flex;align-items:center;justify-content:space-between;gap:24px;min-height:38px} .mc-hdr__tag,.mc-hdr__meta{font-size:var(–t-micro);letter-spacing:var(–tracking-label);text-transform:uppercase;color:var(–mut);font-weight:700} .mc-hdr__meta{letter-spacing:.01em;text-transform:none;font-size:var(–t-meta);font-weight:500} .mc-hdr__meta a{color:var(–body)} .mc-hdr__meta a:hover{color:var(–p-deep)} .mc-hdr__main .mc-wrap{display:flex;align-items:center;gap:28px;min-height:72px} .mc-logo{flex:0 0 auto;display:block;line-height:0} .mc-logo img{height:40px;width:auto} .mc-nav{display:flex;align-items:center;gap:2px;flex:1 1 auto;min-width:0} .mc-nav__i{position:relative} .mc-nav__a{ display:inline-flex;align-items:center;gap:6px;padding:9px 13px;border-radius:var(–r-sm); font-size:var(–t-small);font-weight:700;color:var(–ink);white-space:nowrap; transition:color .16s,background .16s; } .mc-nav__a:hover,.mc-nav__a:focus-visible{color:var(–p-deep);background:var(–tint-2)} .mc-nav__a svg{transition:transform .18s;flex:0 0 auto} .mc-nav__i:hover .mc-nav__a svg{transform:rotate(180deg)} .mc-nav__m{ position:absolute;top:calc(100% + 6px);left:0;min-width:250px;padding:8px; background:var(–white);border:1px solid var(–line);border-radius:var(–r); box-shadow:var(–sh-2);opacity:0;visibility:hidden;transform:translateY(6px); transition:opacity .18s,transform .18s,visibility .18s; } .mc-nav__i:hover .mc-nav__m,.mc-nav__i:focus-within .mc-nav__m{opacity:1;visibility:visible;transform:none} .mc-nav__m a{ display:flex;align-items:center;justify-content:space-between;gap:14px; padding:9px 12px;border-radius:var(–r-sm); font-size:var(–t-small);font-weight:600;color:var(–body);text-decoration:none; } .mc-nav__m a:hover{background:var(–tint-2);color:var(–p-deep)} .mc-nav__m span{font-size:var(–t-micro);color:var(–mut);font-weight:700;font-variant-numeric:tabular-nums} /* the closing row of every panel: a way to the umbrella archive ————- */ .mc-nav__m .mc-nav__all{ margin:6px -8px -8px;padding:11px 20px 12px;border-radius:0 0 var(–r) var(–r); border-top:1px solid var(–line);background:var(–paper-2); font-size:var(–t-micro);font-weight:800;letter-spacing:var(–tracking-label); text-transform:uppercase;color:var(–ink); } .mc-nav__m .mc-nav__all svg{flex:0 0 auto;transition:transform .16s} .mc-nav__m .mc-nav__all:hover{background:var(–tint-2);color:var(–p-deep)} .mc-nav__m .mc-nav__all:hover svg{transform:translateX(3px)} /* action cluster — one vertical rhythm for every control ——————– */ .mc-act{display:flex;align-items:center;gap:4px;flex:0 0 auto} /* the header CTA must not inherit a page-level .mc-btn variant (the homepage stylesheet uppercases and pads it), so pin it here — higher specificity wins even though page CSS is parsed later. */ .mc-hdr .mc-act .mc-btn{ min-height:44px;height:44px;padding:0 20px;border-radius:var(–r-sm); font-family:var(–sans);font-size:var(–t-meta);font-weight:700;letter-spacing:.02em; text-transform:none;gap:8px; } .mc-act__b{ display:inline-flex;align-items:center;justify-content:center; width:38px;height:38px;border-radius:var(–r-sm);color:var(–ink); transition:background .16s,color .16s;text-decoration:none; } .mc-act__b:hover,.mc-act__b:focus-visible{background:var(–tint-2);color:var(–p-deep)} /* language switch: same box model as the icon buttons, so the row cannot drift */ .mc-lang{ display:inline-flex;align-items:center;justify-content:center;gap:5px; height:38px;min-width:52px;padding:0 9px;margin:0; border:1px solid var(–line-2);border-radius:var(–r-sm);background:transparent; font-family:var(–sans);font-size:var(–t-micro);font-weight:800;line-height:1; letter-spacing:.06em;color:var(–ink);cursor:pointer; transition:background .16s,color .16s,border-color .16s; } .mc-lang:hover,.mc-lang:focus-visible{background:var(–tint-2);color:var(–p-deep);border-color:var(–tint)} .mc-lang svg{display:block;flex:0 0 auto;margin-top:1px} .mc-lang__menu{position:absolute;top:calc(100% + 8px);right:0;min-width:150px;padding:6px; background:var(–white);border:1px solid var(–line);border-radius:var(–r);box-shadow:var(–sh-2);z-index:5} .mc-lang__menu a{display:block;padding:8px 11px;border-radius:6px;font-size:var(–t-small);font-weight:600;color:var(–body);text-decoration:none} .mc-lang__menu a[aria-current="true"]{background:var(–tint-2);color:var(–p-deep)} /* an unbuilt translation must not be a link — /en/ answers 404, so it is text */ .mc-lang__menu .mc-lang__soon{display:block;padding:8px 11px;border-radius:6px; font-size:var(–t-small);font-weight:600;color:var(–mut);cursor:default} .mc-langwrap{position:relative;display:inline-flex;align-items:center} .mc-burger{ display:none;align-items:center;justify-content:center;width:38px;height:38px; border:1px solid var(–line-2);border-radius:var(–r-sm);background:transparent;color:var(–ink); cursor:pointer;padding:0!important;flex:0 0 auto; } /* The icon was rendering 10px wide: the button inherited the header's generic button padding, so the content box was ~10px and the theme's `svg{max-width: 100%}` clamped the glyph to it. The box looked empty on every viewport narrow enough to need it. Zero padding + an explicit size fixes both. */ .mc-burger svg{width:20px!important;height:20px!important;max-width:none!important;display:block;flex:0 0 auto} /* The desktop bar needs ~1290px for 6 items + 3 icons + language + CTA. It used to keep the full nav down to 980px, which is why items ran into the action cluster on 1024–1440px laptops. Tighter spacing first, then burger. */ @media (max-width:1360px){ .mc-nav__a{padding:9px 10px} .mc-hdr__main .mc-wrap{gap:20px} } @media (max-width:1240px){ .mc-nav__a{padding:9px 9px;font-size:var(–t-meta)} .mc-hdr__main .mc-wrap{gap:16px} .mc-burger{display:inline-flex;margin-left:auto;order:2} .mc-nav{ position:absolute;left:0;right:0;top:100%;flex-direction:column;align-items:stretch;gap:0; padding:10px 20px 18px;background:var(–white);border-bottom:1px solid var(–line); box-shadow:var(–sh-2);display:none; } .mc-nav.is-open{display:flex} .mc-nav__a{padding:12px 6px;font-size:var(–t-body);border-bottom:1px solid var(–line);border-radius:0} .mc-nav__m{position:static;opacity:1;visibility:visible;transform:none;box-shadow:none;border:0; padding:2px 0 10px 10px;min-width:0;background:transparent;display:none} .mc-nav__i.is-open .mc-nav__m{display:block} .mc-nav__i.is-open .mc-nav__a svg{transform:rotate(180deg)} } @media (max-width:640px){ .mc-hdr__util .mc-wrap{min-height:34px} .mc-hdr__meta{font-size:var(–t-micro)} .mc-hdr__main .mc-wrap{min-height:60px;gap:10px} .mc-logo img{height:32px} .mc-act{gap:0} .mc-act__b{width:34px;height:34px} .mc-act .mc-btn{display:none} .mc-lang{height:34px;min-width:46px;padding:0 7px;font-size:var(–t-micro)} } @media (max-width:420px){ .mc-hdr__tag{display:none} } /* ========================================================================== FOOTER ========================================================================== */ .mc-ftr{background:var(–ink);color:rgba(255,255,255,.72);padding:64px 0 0;font-size:var(–t-small)} .mc-ftr a{color:rgba(255,255,255,.72);text-decoration:none} .mc-ftr a:hover{color:#fff;text-decoration:underline;text-underline-offset:3px} .mc-ftr__g{display:grid;grid-template-columns:1.6fr 1fr 1fr 1fr 1fr;gap:40px} .mc-ftr__brand img,.mc-ftr__logo{height:38px;width:auto;filter:brightness(0) invert(1);opacity:.94} .mc-ftr__desc{margin:16px 0 0;font-size:var(–t-small);line-height:1.65;max-width:34ch;color:rgba(255,255,255,.62)} .mc-ftr__c{margin:18px 0 0;font-size:var(–t-meta);line-height:1.7;color:rgba(255,255,255,.62)} /* column headings are <p>, so they have to be styled as headings explicitly */ .mc-ftr__h{ margin:0 0 16px;font-family:var(–sans);font-size:var(–t-micro);font-weight:800; letter-spacing:var(–tracking-label);text-transform:uppercase;color:#fff;line-height:1.3; } .mc-ftr__l{list-style:none;margin:0;padding:0} .mc-ftr__l li{margin:0 0 10px} .mc-ftr__l li:last-child{margin-bottom:0} .mc-ftr__l a{font-size:var(–t-meta);line-height:1.5} .mc-ftr__bar{ margin-top:52px;border-top:1px solid rgba(255,255,255,.14);padding:22px 0 30px; display:flex;flex-wrap:wrap;gap:14px 26px;align-items:center;justify-content:space-between; font-size:var(–t-micro);color:rgba(255,255,255,.55); } .mc-ftr__cp{margin:0;font-size:var(–t-micro);color:rgba(255,255,255,.55);max-width:52ch} .mc-ftr__pay{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0} .mc-ftr__pay span{ display:inline-flex;align-items:center;height:26px;padding:0 10px;border-radius:5px; border:1px solid rgba(255,255,255,.2);font-size:var(–t-micro);font-weight:700; letter-spacing:.04em;color:rgba(255,255,255,.72);white-space:nowrap; } .mc-ftr__soc{display:flex;gap:10px;align-items:center} .mc-ftr__soc span{ display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px; border-radius:50%;border:1px solid rgba(255,255,255,.2);color:rgba(255,255,255,.72); } .mc-ftr__soc svg{display:block} @media (max-width:1080px){.mc-ftr__g{grid-template-columns:1.4fr 1fr 1fr;gap:34px}} @media (max-width:820px){.mc-ftr__g{grid-template-columns:1fr 1fr;gap:32px}} @media (max-width:560px){.mc-ftr__g{grid-template-columns:1fr};.mc-ftr{padding-top:44px}.mc-ftr__bar{justify-content:flex-start}} /* ========================================================================== DOCUMENT PAGES (Impressum, AGB, Datenschutz, Widerruf, Lieferpreise…) ========================================================================== */ .mc-page-head{border-bottom:1px solid var(–line);background:var(–paper-2);padding:36px 0 34px} .mc-page-head__crumb{font-size:var(–t-micro);color:var(–mut);margin:0 0 12px;letter-spacing:.02em} .mc-page-head__crumb a{color:var(–mut);text-decoration:none} .mc-page-head__crumb a:hover{color:var(–p-deep);text-decoration:underline} .mc-page-head h1{ font-family:var(–serif);font-weight:400;font-size:var(–t-h1);line-height:var(–lh-h1); letter-spacing:var(–tracking-head);color:var(–ink);margin:0;text-wrap:balance;max-width:20ch; } .mc-page-head p{margin:14px 0 0;font-size:var(–t-lead);line-height:var(–lh-lead);color:var(–body);max-width:var(–measure-tight)} .mc-doc{padding:52px 0 76px} .mc-doc__lede{ font-family:var(–serif);font-size:var(–t-h3);line-height:1.5;color:var(–ink-2); margin:0 0 2em;padding-bottom:1.4em;border-bottom:1px solid var(–line);max-width:var(–measure-tight); } .mc-doc__nav{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 34px} .mc-doc__nav a{ display:inline-flex;align-items:center;height:32px;padding:0 13px;border-radius:99px; border:1px solid var(–line-2);font-size:var(–t-meta);font-weight:700;color:var(–body);text-decoration:none; } .mc-doc__nav a:hover,.mc-doc__nav a[aria-current="page"]{background:var(–ink);color:#fff;border-color:var(–ink)} /* ========================================================================== CATEGORY / ARCHIVE (WooCommerce block template) ========================================================================== */ .mc-arch-head{padding:34px 0 28px;border-bottom:1px solid var(–line);background:var(–paper-2)} .mc-arch-head h1{ font-family:var(–serif);font-weight:400;font-size:var(–t-h1);line-height:var(–lh-h1); letter-spacing:var(–tracking-head);color:var(–ink);margin:10px 0 0; } .mc-arch-head p{margin:12px 0 0;font-size:var(–t-body);line-height:var(–lh-body);color:var(–body);max-width:var(–measure-tight)} .mc-arch-bar{ display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px; padding:16px 0;border-bottom:1px solid var(–line);margin-bottom:28px; font-size:var(–t-meta);color:var(–mut); } .mc-arch-bar .woocommerce-result-count{margin:0;font-size:var(–t-meta);color:var(–mut)} .mc-arch-bar .woocommerce-ordering{margin:0} .mc-arch-bar select{ height:38px;padding:0 34px 0 12px;border:1px solid var(–line-2);border-radius:var(–r-sm); background:var(–white) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23111C19' stroke-width='2.4'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") no-repeat right 12px center; font-family:var(–sans);font-size:var(–t-meta);font-weight:600;color:var(–ink);appearance:none; } /* product grid — block template and classic list both land here */ .wc-block-product-template, ul.products{ display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr));gap:26px 22px; list-style:none;margin:0;padding:0; } @media (max-width:1100px){.wc-block-product-template,ul.products{grid-template-columns:repeat(3,minmax(0,1fr))}} @media (max-width:820px){.wc-block-product-template,ul.products{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px 14px}} .wc-block-product-template > li, ul.products > li.product{ position:relative;margin:0!important;padding:0;width:auto!important;float:none!important; } .wc-block-product-template li img, ul.products li.product img{ width:100%;height:auto;aspect-ratio:1/1;object-fit:cover;border-radius:var(–r); background:var(–paper-2);transition:transform .4s ease; } .wc-block-product-template li a:hover img, ul.products li.product a:hover img{transform:scale(1.025)} .wc-block-product-template li .wp-block-post-title, ul.products li.product .woocommerce-loop-product__title{ font-family:var(–sans);font-size:var(–t-meta);font-weight:700;line-height:1.4;color:var(–ink); margin:12px 0 4px;letter-spacing:0; } .wc-block-product-template .wc-block-components-product-price, ul.products li.product .price{ font-size:var(–t-meta);font-weight:800;color:var(–ink);font-variant-numeric:tabular-nums; } .wc-block-product-template .wc-block-components-product-price del, ul.products li.product .price del{color:var(–mut);font-weight:600;font-size:.92em;margin-right:5px} .wc-block-product-template .wc-block-components-product-price ins, ul.products li.product .price ins{text-decoration:none;color:var(–sale);font-weight:800} /* Discount badge — ONE definition for the three surfaces that show it (homepage bestseller cards, product grid, product page gallery). It has to match .mc-card__tag, the badge the homepage was designed with. WooCommerce ships a circular 18 px badge pinned to the corner with negative offsets, so every geometric property is forced here; the visible text is rewritten to "−NN %" by the shared script in the header template part. */ .onsale, .wc-block-components-product-sale-badge, ul.products li.product .onsale, .mc-card__tag{ position:absolute!important; top:12px!important;left:12px!important;right:auto!important;bottom:auto!important; margin:0!important;z-index:3; background:var(–p)!important;color:#fff!important; font-family:var(–sans);font-size:12px!important;font-weight:700!important; letter-spacing:.1em!important;text-transform:uppercase; line-height:1.6!important;text-align:center; padding:5px 9px!important;border-radius:5px!important; width:auto!important;height:auto!important; min-width:0!important;min-height:0!important;max-width:none!important; box-shadow:none!important;border:0!important; font-variant-numeric:tabular-nums; } /* the badge needs a positioned box to sit in; the three parents below all are */ .mc-pdp__gal .woocommerce-product-gallery, .wc-block-product-template li, ul.products li.product, .mc-card__im{position:relative} .wc-block-product-template li .wp-block-woocommerce-product-button, ul.products li.product .button{ display:inline-flex;align-items:center;justify-content:center;width:100%;min-height:38px;margin-top:10px; border-radius:var(–r-sm);background:var(–paper-2);color:var(–ink);border:1px solid var(–line); font-size:var(–t-meta);font-weight:700;text-decoration:none;transition:background .16s,color .16s,border-color .16s; } .wc-block-product-template li .wp-block-woocommerce-product-button:hover, ul.products li.product .button:hover{background:var(–ink);color:#fff;border-color:var(–ink)} .woocommerce-pagination,.wp-block-query-pagination{margin-top:36px} .woocommerce-pagination ul{display:flex;gap:6px;list-style:none;padding:0;margin:0;justify-content:center;border:0} .woocommerce-pagination ul li{border:0} .woocommerce-pagination ul li a,.woocommerce-pagination ul li span{ display:inline-flex;align-items:center;justify-content:center;min-width:38px;height:38px; border:1px solid var(–line-2);border-radius:var(–r-sm);font-size:var(–t-meta);font-weight:700;color:var(–ink); } .woocommerce-pagination ul li span.current,.woocommerce-pagination ul li a:hover{background:var(–ink);color:#fff;border-color:var(–ink)} /* ========================================================================== PRODUCT PAGE Follows the reference shop's reading order: media left / decision right, sticky info column, one primary action, price always next to it. ========================================================================== */ .single-product .wp-block-columns.alignwide{align-items:flex-start;gap:56px} .single-product .woocommerce-breadcrumb{ font-size:var(–t-micro);color:var(–mut);letter-spacing:.01em;line-height:1.6;margin:0 0 6px; } .single-product .woocommerce-breadcrumb a{color:var(–mut);text-decoration:none} .single-product .woocommerce-breadcrumb a:hover{color:var(–p-deep);text-decoration:underline} .single-product .woocommerce-product-gallery{position:relative;border-radius:var(–r);overflow:hidden;background:var(–paper-2);opacity:1!important} .single-product .woocommerce-product-gallery__wrapper{border-radius:var(–r);overflow:hidden} .single-product .woocommerce-product-gallery img{border-radius:0;width:100%;height:auto;display:block} .single-product .woocommerce-product-gallery .flex-control-thumbs{ display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin:10px 0 0;padding:0;list-style:none; } .single-product .woocommerce-product-gallery .flex-control-thumbs li{width:auto;margin:0} .single-product .woocommerce-product-gallery .flex-control-thumbs img{ border-radius:var(–r-sm);border:2px solid transparent;opacity:.72;transition:opacity .16s,border-color .16s; aspect-ratio:1/1;object-fit:cover; } .single-product .woocommerce-product-gallery .flex-control-thumbs img:hover{opacity:1} .single-product .woocommerce-product-gallery .flex-control-thumbs img.flex-active{opacity:1;border-color:var(–ink)} /* info column */ .single-product .summary, .single-product .wp-block-column:last-child{position:sticky;top:96px} .single-product h1.product_title, .single-product .wp-block-post-title{ font-family:var(–serif)!important;font-weight:400!important; font-size:clamp(26px,2.6vw,38px)!important;line-height:1.12!important; letter-spacing:var(–tracking-head)!important;color:var(–ink)!important; margin:0 0 14px!important;text-wrap:balance; } .single-product .price, .single-product .wc-block-components-product-price{ display:flex;align-items:baseline;gap:10px;flex-wrap:wrap; font-family:var(–sans);font-size:clamp(24px,2.2vw,30px);font-weight:800;color:var(–ink); letter-spacing:-.01em;font-variant-numeric:tabular-nums;margin:0 0 6px; } .single-product .price del{font-size:.56em;font-weight:600;color:var(–mut)} .single-product .price ins{text-decoration:none;color:var(–sale)} .single-product .woocommerce-Price-currencySymbol{font-size:.78em;font-weight:700} .single-product .woocommerce-product-details__short-description{ font-size:var(–t-small);line-height:1.65;color:var(–body); border-top:1px solid var(–line);padding-top:18px;margin-top:18px; } .single-product .woocommerce-product-details__short-description p{margin:0 0 .7em} /* quantity + primary action ———————————————— */ .single-product form.cart{display:flex;align-items:stretch;gap:12px;flex-wrap:wrap;margin:22px 0 0} .single-product form.cart .quantity{display:inline-flex;flex:0 0 auto} .single-product .quantity .input-text.qty{ width:76px;height:48px;padding:0 8px;border:1px solid var(–line-2);border-radius:var(–r-sm); background:var(–white);font-family:var(–sans);font-size:var(–t-body);font-weight:700;color:var(–ink); text-align:center;-moz-appearance:textfield; } .single-product .quantity .input-text.qty::-webkit-outer-spin-button, .single-product .quantity .input-text.qty::-webkit-inner-spin-button{-webkit-appearance:none;margin:0} .single-product .single_add_to_cart_button, .single-product .wp-block-add-to-cart-form .single_add_to_cart_button{ flex:1 1 220px;min-height:48px;padding:0 26px;border:1px solid var(–ink);border-radius:var(–r-sm); background:var(–ink);color:#fff;font-family:var(–sans);font-size:var(–t-small);font-weight:800; letter-spacing:.02em;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:10px; transition:background .16s,transform .16s;text-transform:none; } .single-product .single_add_to_cart_button:hover{background:var(–p-deep);border-color:var(–p-deep)} .single-product .single_add_to_cart_button:active{transform:translateY(1px)} .single-product .single_add_to_cart_button.loading{opacity:.72;pointer-events:none} .single-product .single_add_to_cart_button.disabled, .single-product .single_add_to_cart_button[disabled]{background:var(–line-2);border-color:var(–line-2);color:#fff;cursor:not-allowed} /* qty stepper buttons injected by the shared script */ .mc-qty{display:inline-flex;align-items:stretch;border:1px solid var(–line-2);border-radius:var(–r-sm);overflow:hidden;background:var(–white);height:48px} .mc-qty button{ width:38px;border:0;background:transparent;color:var(–ink);font-size:17px;font-weight:700; font-family:var(–sans);cursor:pointer;line-height:1; } .mc-qty button:hover{background:var(–tint-2);color:var(–p-deep)} .mc-qty .input-text.qty{width:52px!important;height:46px!important;border:0!important;background:transparent!important} /* price in the button, like the reference shop */ .mc-cta-price{font-weight:800;opacity:.82;font-variant-numeric:tabular-nums} .single-product .product_meta, .single-product .wp-block-woocommerce-product-meta{ margin:22px 0 0;padding-top:18px;border-top:1px solid var(–line); font-size:var(–t-micro);color:var(–mut);line-height:1.7; } .single-product .product_meta a{color:var(–body);text-decoration:none} .single-product .product_meta a:hover{color:var(–p-deep);text-decoration:underline} .single-product .product_meta > span{display:block} /* accordion blocks used for details / shipping */ .single-product .wp-block-woocommerce-product-details, .single-product .wp-block-woocommerce-product-description{border-top:1px solid var(–line);margin-top:26px;padding-top:22px} .single-product details.mc-details{border-bottom:1px solid var(–line);padding:14px 0} .single-product details.mc-details summary{ cursor:pointer;font-size:var(–t-small);font-weight:800;color:var(–ink); list-style:none;display:flex;align-items:center;justify-content:space-between;gap:12px; } .single-product details.mc-details summary::-webkit-details-marker{display:none} .single-product details.mc-details summary::after{content:"+";font-size:18px;font-weight:400;color:var(–mut)} .single-product details.mc-details[open] summary::after{content:"–"} .single-product details.mc-details > *:not(summary){margin-top:12px} /* the tab label and the panel heading say the same thing twice */ .single-product .woocommerce-Tabs-panel > h2:first-child{display:none} .single-product .woocommerce-tabs ul.tabs{display:flex;gap:6px;list-style:none;margin:0 0 20px;padding:0;border-bottom:1px solid var(–line)} .single-product .woocommerce-tabs ul.tabs li{margin:0} .single-product .woocommerce-tabs ul.tabs li a{display:inline-flex;align-items:center;height:42px;padding:0 16px;font-size:var(–t-small);font-weight:700;color:var(–mut);text-decoration:none;border-bottom:2px solid transparent} .single-product .woocommerce-tabs ul.tabs li.active a{color:var(–ink);border-bottom-color:var(–ink)} /* tabs and related products */ .single-product .woocommerce-tabs, .single-product .related, .single-product .upsells{margin-top:64px;padding-top:34px;border-top:1px solid var(–line)} .single-product .woocommerce-tabs h2, .single-product .related > h2, .single-product .upsells > h2{ font-family:var(–serif);font-weight:400;font-size:var(–t-h2);line-height:var(–lh-h2); letter-spacing:var(–tracking-head);color:var(–ink);margin:0 0 22px; } .single-product .related ul.products, .single-product .upsells ul.products{grid-template-columns:repeat(4,minmax(0,1fr))} @media (max-width:820px){ .single-product .related ul.products,.single-product .upsells ul.products{grid-template-columns:repeat(2,minmax(0,1fr))} } @media (max-width:900px){ .single-product .wp-block-columns.alignwide{gap:28px} .single-product .summary,.single-product .wp-block-column:last-child{position:static} } /* ========================================================================== JOURNAL (blog archive + article) Only 4 of the 36 articles carry an image, so a photo grid would look half-built. The archive is therefore set as a typographic index — a contents page — which reads as intentional at any ratio of images. ========================================================================== */ .mc-blog-head{padding:44px 0 40px;border-bottom:1px solid var(–line);background:var(–paper-2)} .mc-blog-head .mc-wrap{display:block} /* the theme gives every child of an is-layout-constrained group `margin:auto`, which centres the lead and the term description instead of aligning them to the heading. Its container styles print after this file, so reset here. */ .mc-blog-head .mc-inner > *{margin-left:0!important;margin-right:0!important} .mc-blog-head h1{ font-family:var(–serif);font-weight:400;font-size:clamp(32px,3.6vw,52px);line-height:1.05; letter-spacing:var(–tracking-display);color:var(–ink);margin:12px 0 0;text-wrap:balance; } .mc-blog-head .mc-lead, .mc-blog-head .wp-block-term-description, .mc-blog-head .wp-block-term-description p{ font-size:var(–t-lead);line-height:var(–lh-lead);color:var(–body); max-width:var(–measure-tight);margin:14px 0 0; } .mc-blog-head .wp-block-term-description p{margin:14px 0 0} /* the archive body sits on the page background, not the head band */ .mc-blog-main{background:var(–paper)} .mc-blog-body{padding:8px 0 72px} /* one shared inner measure, so the head band and the grid align to the same edge */ .mc-inner{max-width:1240px;margin:0 auto;padding:0 40px} @media (max-width:782px){.mc-inner{padding:0 20px}} .wp-block-post-template.mc-post-grid, .mc-blog__grid{ display:grid;grid-template-columns:repeat(3,minmax(0,1fr)); column-gap:40px;row-gap:0;list-style:none;padding:0;margin:0; } @media (max-width:980px){ .wp-block-post-template.mc-post-grid,.mc-blog__grid{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:28px} } @media (max-width:620px){ .wp-block-post-template.mc-post-grid,.mc-blog__grid{grid-template-columns:1fr;column-gap:0} } .mc-card-post{ display:flex;flex-direction:column;height:100%; padding:26px 0 30px;border-top:1px solid var(–line-2); } .mc-card-post .wp-block-post-date{ font-family:var(–sans);font-size:var(–t-micro);font-weight:700;letter-spacing:var(–tracking-label); text-transform:uppercase;color:var(–p-deep);margin:0; } .mc-card-post .wp-block-post-date a{color:inherit;text-decoration:none} .mc-card-post h2,.mc-card-post h3,.mc-card-post .wp-block-post-title{ font-family:var(–serif);font-weight:400;font-size:var(–t-h3);line-height:1.3; letter-spacing:var(–tracking-head);color:var(–ink);margin:10px 0 0;text-wrap:balance; } .mc-card-post .wp-block-post-title a{color:inherit;text-decoration:none} .mc-card-post .wp-block-post-title a:hover{color:var(–p-deep)} .mc-card-post p{ margin:10px 0 0;font-size:var(–t-meta);line-height:1.62;color:var(–mut); display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden; } .mc-card-post .more-link, .mc-card-post .wp-block-read-more{ display:inline-flex;margin-top:14px;font-family:var(–sans);font-size:var(–t-micro); font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(–p-deep); text-decoration:none;border-bottom:1px solid currentColor;padding-bottom:2px; align-self:flex-start; } .mc-card-post .more-link:hover, .mc-card-post .wp-block-read-more:hover{color:var(–ink)} /* pagination ————————————————————— */ .mc-pager{ display:flex;align-items:center;justify-content:center;gap:6px;flex-wrap:wrap; margin:56px 0 0;padding-top:34px;border-top:1px solid var(–line); } .mc-pager a,.mc-pager span.page-numbers,.mc-pager .page-numbers{ display:inline-flex;align-items:center;justify-content:center;min-width:40px;height:40px; padding:0 12px;border-radius:var(–r-sm);border:1px solid var(–line-2); font-family:var(–sans);font-size:var(–t-meta);font-weight:700;color:var(–body); text-decoration:none;background:var(–white); } .mc-pager a:hover{border-color:var(–ink);color:var(–ink)} .mc-pager .page-numbers.current, .mc-pager .current{ border-color:var(–ink)!important;background:var(–ink)!important;color:var(–white)!important; } .mc-pager .dots{border-color:transparent;background:transparent} /* empty result state */ .mc-blog-empty{padding:60px 0;font-size:var(–t-body);color:var(–mut)} /* single article ———————————————————- */ .mc-read-main{background:var(–paper)} /* fixed measure, not ch: the block inherits a large font size from the theme, which made 75ch resolve to 980px instead of the intended ~65ch. */ .mc-read{max-width:720px;margin:0 auto;padding:36px 32px 84px;font-size:17.5px;line-height:1.72} @media (max-width:620px){.mc-read{padding:24px 20px 64px}} .rank-math-breadcrumb,.mc-read .rank-math-breadcrumb{ font-family:var(–sans);font-size:var(–t-micro);letter-spacing:.03em;color:var(–mut);margin:0 0 22px; } .rank-math-breadcrumb p{margin:0} .rank-math-breadcrumb a{color:var(–mut);text-decoration:none} .rank-math-breadcrumb a:hover{color:var(–p-deep)} .rank-math-breadcrumb .separator{padding:0 7px;color:var(–line-2)} .mc-read__meta{ display:flex;flex-wrap:wrap;align-items:center;gap:8px 18px;margin:0 0 4px; font-family:var(–sans);font-size:var(–t-micro);font-weight:700;letter-spacing:var(–tracking-label); text-transform:uppercase;color:var(–p-deep); } .mc-read__meta a{color:inherit;text-decoration:none} .mc-read__meta a:hover{color:var(–ink)} .mc-read h1,.mc-read__h1{ font-family:var(–serif);font-weight:400;font-size:clamp(29px,3.1vw,40px);line-height:1.1; letter-spacing:var(–tracking-head);color:var(–ink);margin:10px 0 0;text-wrap:balance; } .mc-read__body{margin-top:26px} .mc-read .entry-content{font-size:17.5px;line-height:1.72} /* the container already sets the measure — nothing inside may narrow it again */ .mc-read .entry-content > *, .mc-read .wp-block-post-content.is-layout-constrained > *{max-width:100%;margin-left:0;margin-right:0} .mc-read .wp-block-post-content img{max-width:100%;height:auto;width:100%;border-radius:var(–r)} .mc-read .wp-block-post-content figure{margin:2em 0;max-width:100%} .mc-read .wp-block-post-content table{font-size:var(–t-small)} .mc-read .wp-block-post-content > h2:first-child{margin-top:0} /* a jump list at the top of an article becomes a proper contents card */ .mc-read .wp-block-post-content > .mc-toc:first-child{margin-top:0} /* standing legal note at the end of every article */ .mc-note{ margin:44px 0 0;padding:20px 22px;border:1px solid var(–line);border-radius:var(–r); background:var(–tint-2); } .mc-note__h{ margin:0 0 7px!important;font-family:var(–sans);font-size:var(–t-micro);font-weight:800; letter-spacing:var(–tracking-label);text-transform:uppercase;color:var(–ink); } .mc-note p{margin:0;font-size:var(–t-meta);line-height:1.62;color:var(–mut)} .mc-read__foot{ margin-top:56px;padding-top:26px;border-top:1px solid var(–line); display:flex;flex-wrap:wrap;gap:14px;align-items:center;justify-content:space-between; font-family:var(–sans);font-size:var(–t-meta);color:var(–mut); } .mc-read__foot p{margin:0;font-size:var(–t-meta);color:var(–mut)} .mc-read__foot a{color:var(–p-deep);text-decoration:none;font-weight:700} .mc-read__foot a:hover{text-decoration:underline} /* in-article table of contents, where a post has one */ .mc-toc{ margin:26px 0 0;padding:20px 22px;border:1px solid var(–line);border-radius:var(–r); background:var(–paper-2);font-size:var(–t-meta); } .mc-toc strong{display:block;font-size:var(–t-micro);letter-spacing:var(–tracking-label);text-transform:uppercase;color:var(–mut);margin-bottom:10px} .mc-toc ol,.mc-toc ul{margin:0;padding-left:1.2em} .mc-toc li{margin:.3em 0} .mc-toc a{color:var(–body);text-decoration:none} .mc-toc a:hover{color:var(–p-deep);text-decoration:underline} /* ========================================================================== COMMERCE CHROME ========================================================================== */ .woocommerce-message,.woocommerce-info,.woocommerce-error{ border-radius:var(–r-sm);border:1px solid var(–tint);border-top:0; background:var(–tint-2);color:var(–ink);font-size:var(–t-small);padding:14px 18px;margin:0 0 22px; list-style:none; } .woocommerce-error{border-color:#E2C4BE;background:#F7EDEB} .woocommerce-message .button,.woocommerce-info .button{background:var(–ink);color:#fff;border-radius:var(–r-sm);font-weight:700;padding:8px 14px} /* skip link target spacing so the sticky header never covers the first heading */ #wp–skip-link–target{padding-top:0} @media (prefers-reduced-motion:reduce){ *,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important} } /* ========================================================================== BURGER VISIBILITY The hamburger is the only menu entry below 1240px, so it is stated here explicitly rather than inherited. This section used to also compensate for a legacy mu-plugin that forced `header button{display:none!important}` and flattened every sub-heading on phones; that plugin code was deleted at the source on 2026-10-26, so the compensations are gone with it. ========================================================================== */ @media (max-width:1240px){ .mc-hdr .mc-burger{display:inline-flex!important} } @media (min-width:1241px){ .mc-hdr .mc-burger{display:none!important} } @media (max-width:768px){ /* the legacy block above also swallows the language switcher, because it is the only control in the header that is a <button> rather than a link */ .mc-hdr .mc-lang{display:inline-flex!important} .mc-read .entry-content h3, .mc-h3, .mc-card-post .wp-block-post-title{font-size:var(–t-h3)!important;line-height:var(–lh-h3)!important} .mc-read .entry-content h2{font-size:var(–t-h2)!important;line-height:var(–lh-h2)!important} } /* ========================================================================== 20 PRODUCT DETAIL (single-product template) The buy box follows the reference shop: title → price with tax note → short description → quantity stepper wired to the one primary button that carries the line total → secondary wholesale route → trust row → accordions. Everything below the fold is tabbed product data, then a related grid. ========================================================================== */ .mc-pdp,.mc-pdp *,.mc-cat,.mc-cat *{box-sizing:border-box} .mc-pdp{background:var(–paper);color:var(–body);font-family:var(–sans)} .mc-pdp__in{max-width:var(–w);margin:0 auto;padding:0 40px} .mc-pdp__crumb{padding:16px 0 0} .mc-pdp .woocommerce-breadcrumb{margin:0;font-size:var(–t-meta);color:var(–mut);letter-spacing:0} .mc-pdp .woocommerce-breadcrumb a{color:var(–mut);text-decoration:none;border-bottom:1px solid transparent} .mc-pdp .woocommerce-breadcrumb a:hover{color:var(–ink);border-bottom-color:var(–line-2)} .mc-pdp .woocommerce-breadcrumb .separator, .mc-pdp .woocommerce-breadcrumb>span:not(:last-child){color:var(–line-2)} .mc-pdp__grid{display:grid;grid-template-columns:minmax(0,1.02fr) minmax(0,.98fr); gap:52px;align-items:start;padding:22px 0 8px;margin:0!important;max-width:none!important;width:auto!important} /* gallery — first image is a full-width hero, the rest a contact sheet. Fixed-basis flex, not grid and not `flex:1 1 50%`: flex-grow stretched a leftover picture to the full width whenever a row was not completely filled (it read as a second main image), and a grid leaves a hole in the last row when the thumbnail count is odd — which is the normal case here, since 110 of 265 products carry 6 pictures (5 thumbnails) and 32 carry a single picture. A fixed basis never grows, and `justify-content:center` centres an incomplete last row instead of leaving a gap. */ .mc-pdp__gal{min-width:0} /* WooCommerce prints `.woocommerce .wp-block-woocommerce-product-image-gallery {max-width:512px}`. On a 565px column that left a 53px dead strip, so the media block never lined up with the buy box beside it. Beat it on specificity rather than with !important. */ .single-product .mc-pdp__gal .wp-block-woocommerce-product-image-gallery{max-width:none} /* WooCommerce sets `.woocommerce div.product div.images{margin-bottom:44px}` and a `–paper-2` background on the gallery container (specificity 0,3,2; the `.images` class sits on the same element, so it is matched here). The margin left a 44px dead strip under the sheet, and the background showed through the empty cell of an incomplete last row as a beige slab that read like a missing picture. Both are beaten on specificity rather than with !important. */ .single-product .mc-pdp__gal .woocommerce-product-gallery.images{margin-bottom:0;background:transparent} .mc-pdp__gal .woocommerce-product-gallery__wrapper{ display:flex;flex-wrap:wrap;gap:10px;margin:0;justify-content:center} .mc-pdp__gal .woocommerce-product-gallery__image{ flex:0 1 calc(50% – 5px);max-width:calc(50% – 5px);min-width:0;margin:0} /* WooCommerce shrinks every picture after the first to a quarter (`…div.images .woocommerce-product-gallery__image:nth-child(n+2){width:25%}`, specificity 0,5,0). Inside a flex item that turns a thumbnail into 25% of its slot, so it is overridden here on purpose. */ .mc-pdp__gal .woocommerce-product-gallery__image:nth-child(n+2){width:auto!important} /* :first-child carries its own class-level weight, so the hero keeps the full row inside the narrower breakpoints below without !important. */ .mc-pdp__gal .woocommerce-product-gallery__image:first-child{flex-basis:100%;max-width:100%} .mc-pdp__gal img{display:block;width:100%;height:auto;border-radius:var(–r);background:var(–paper-2); aspect-ratio:1/1;object-fit:cover} /* ========================================================================== gallery component — main stage + horizontally scrolling thumbnail rail The contact-sheet rules above stay as the no-JS fallback. `.is-slider` is only added by the PDP script once it has built the new markup, so a visitor without JS still sees the hero + grid. ========================================================================== */ /* the sale badge is positioned on the block, but its z-index sits below the new stage layer, so the picture covered it once the stage was added */ .single-product .mc-pdp .mc-pdp__gal span.onsale{z-index:4} .mc-pdp__gal.is-slider .woocommerce-product-gallery__wrapper{display:none} .mc-pdp__gal.is-slider .woocommerce-product-gallery{height:0;min-height:0;margin:0;border-radius:0} .mc-gal{–thumb:104px;display:block;min-width:0} .mc-gal__stage{ position:relative;z-index:1;display:block;width:100%;aspect-ratio:1/1; border-radius:var(–r);overflow:hidden;background:var(–paper-2); isolation:isolate;touch-action:pan-y} .mc-gal__img{ position:absolute;inset:0;display:block;width:100%;height:100%; object-fit:cover;object-position:center;opacity:0; transition:opacity .34s cubic-bezier(.16,1,.3,1);will-change:opacity} .mc-gal__img.is-on{opacity:1} .mc-gal__count{ position:absolute;right:10px;bottom:10px;z-index:2;margin:0; padding:4px 10px;border-radius:999px;background:rgba(252,250,247,.94); color:var(–ink);font-family:var(–sans);font-size:11px;font-weight:700; line-height:1.5;letter-spacing:.02em;font-variant-numeric:tabular-nums; box-shadow:0 1px 4px rgba(17,28,25,.1)} .mc-gal__rail{position:relative;margin-top:12px} .mc-gal__thumbs{ display:flex;gap:10px;overflow-x:auto;overflow-y:hidden; scroll-snap-type:x proximity;scroll-behavior:smooth; overscroll-behavior-x:contain; scrollbar-width:none;-ms-overflow-style:none;padding:0} .mc-gal__thumbs::-webkit-scrollbar{display:none} .mc-gal__thumb{ flex:0 0 var(–thumb);width:var(–thumb);max-width:var(–thumb); aspect-ratio:1/1;padding:0;margin:0;border:0;border-radius:var(–r-sm); overflow:hidden;background:var(–paper-2);cursor:pointer;position:relative; scroll-snap-align:start;opacity:.55; transition:opacity .18s ease,box-shadow .18s ease; -webkit-tap-highlight-color:transparent} .mc-gal__thumb img{display:block;width:100%;height:100%;object-fit:cover;border-radius:0; aspect-ratio:auto} .mc-gal__thumb::after{ content:"";position:absolute;inset:0;border-radius:inherit; box-shadow:inset 0 0 0 1px rgba(17,28,25,.08); transition:box-shadow .18s ease} .mc-gal__thumb:hover{opacity:.82} .mc-gal__thumb.is-active{opacity:1} .mc-gal__thumb.is-active::after{box-shadow:inset 0 0 0 2px var(–ink)} .mc-gal__thumb:focus-visible{outline:2px solid var(–p);outline-offset:2px} .mc-gal__thumb.is-error{opacity:.3} .mc-gal__nav{ position:absolute;top:50%;z-index:3;transform:translateY(-50%); display:none;align-items:center;justify-content:center; width:34px;height:34px;padding:0;border:1px solid var(–line-2); border-radius:50%;background:rgba(252,250,247,.97);color:var(–ink); cursor:pointer;box-shadow:0 3px 10px rgba(17,28,25,.12); transition:opacity .16s ease,background .16s ease} .mc-gal__nav svg{width:14px;height:14px;display:block} .mc-gal__nav:hover{background:var(–ink);color:#fff;border-color:var(–ink)} /* arrows are a mouse affordance: on touch they would sit on top of the half-visible thumbnail that is itself the "scroll me" hint */ @media (hover:hover) and (pointer:fine){ .mc-gal__rail.is-scroll .mc-gal__nav{display:flex} } .mc-gal__nav[disabled]{opacity:0;pointer-events:none} .mc-gal__nav–prev{left:2px} .mc-gal__nav–next{right:2px} .mc-gal.is-single .mc-gal__rail{display:none} .mc-gal.is-single .mc-gal__count{display:none} @media (max-width:980px){ .mc-gal{–thumb:96px} .mc-gal__rail{margin-top:10px} } @media (max-width:640px){ .mc-gal{–thumb:80px} .mc-gal__rail{margin-top:10px} .mc-gal__thumbs{gap:8px} .mc-gal__nav{width:30px;height:30px} } @media (prefers-reduced-motion:reduce){ .mc-gal__img{transition:none} .mc-gal__thumbs{scroll-behavior:auto} } /* buy box */ .mc-pdp__buy{min-width:0;padding-top:4px} /* `:root :where(.is-layout-flow) > *{margin-block-start:1.2rem}` (0,1,0) pushed this column 19.2px down while the media column stayed flush with the grid top, so the hero's top edge floated above the product title. Two classes win the tie without !important. */ .mc-pdp .mc-pdp__buy{margin-top:0} .mc-pdp__t{font-family:var(–serif);font-weight:400;font-size:var(–t-h1);line-height:var(–lh-h1); letter-spacing:var(–tracking-head);color:var(–ink);margin:0 0 12px;text-wrap:balance} .mc-pdp__rate{margin:0 0 6px;min-height:0} .mc-pdp .wc-block-components-product-rating{color:var(–p);font-size:var(–t-small)} .mc-pdp .wc-block-components-product-rating__stars{margin:0} .mc-pdp__price{margin:16px 0 2px;padding:16px 0 0;border-top:1px solid var(–line)} .mc-pdp__price .wc-block-components-product-price, .mc-pdp__price .wp-block-woocommerce-product-price{font-size:1em!important;line-height:1;margin:0} .mc-pdp__price .woocommerce-Price-amount{font-family:var(–serif);font-size:34px;line-height:1; letter-spacing:-.02em;color:var(–ink);font-weight:400} .mc-pdp__price del .woocommerce-Price-amount{font-size:19px;color:var(–mut)} .mc-pdp__price ins{text-decoration:none} .mc-pdp__tax{margin:10px 0 0;font-size:var(–t-meta);line-height:var(–lh-meta);color:var(–mut)} .mc-pdp__tax strong{color:var(–body);font-weight:700} .mc-pdp__sum{margin:20px 0 22px;padding:0} .mc-pdp__sum .wp-block-post-excerpt__excerpt{margin:0;font-size:var(–t-body);line-height:var(–lh-body);color:var(–body)} .mc-pdp__sum p{margin:0 0 10px} .mc-pdp__sum p:last-child{margin-bottom:0} /* add to cart — one primary action, line total inside the label */ .mc-pdp .wp-block-woocommerce-add-to-cart-form form.cart{display:flex;flex-wrap:wrap; align-items:stretch;gap:10px;margin:0} .mc-pdp .wp-block-woocommerce-add-to-cart-form .quantity{margin:0;display:flex;align-items:center; border:1px solid var(–line-2);border-radius:var(–r-sm);background:var(–white);height:52px;overflow:hidden} .mc-pdp .wp-block-woocommerce-add-to-cart-form .quantity .qty, .mc-pdp .wp-block-woocommerce-add-to-cart-form .quantity input[type=number]{ width:52px!important;height:50px!important;border:0!important;background:transparent!important; text-align:center;font-family:var(–sans);font-size:15px;font-weight:700;color:var(–ink); -moz-appearance:textfield;padding:0!important;margin:0!important;box-shadow:none!important} .mc-pdp__step{width:34px;height:52px;border:0;background:transparent;color:var(–ink); font-size:17px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center; font-family:var(–sans);font-weight:600;padding:0} .mc-pdp__step:hover{background:var(–paper-2)} .mc-pdp__step:disabled{opacity:.3;cursor:not-allowed} .mc-pdp .wp-block-woocommerce-add-to-cart-form .single_add_to_cart_button, .mc-pdp .wp-block-woocommerce-add-to-cart-form .wp-element-button{ flex:1 1 auto;min-width:0;width:auto;min-height:52px;height:52px;padding:0 22px; background:var(–ink);color:var(–white);border:1px solid var(–ink);border-radius:var(–r-sm); font-family:var(–sans);font-size:15px;font-weight:800;letter-spacing:.01em;text-transform:none; display:inline-flex;align-items:center;justify-content:center;gap:10px;cursor:pointer; transition:background .18s ease,border-color .18s ease} .mc-pdp .wp-block-woocommerce-add-to-cart-form .single_add_to_cart_button:hover, .mc-pdp .wp-block-woocommerce-add-to-cart-form .wp-element-button:hover{background:var(–p-deep);border-color:var(–p-deep)} .mc-pdp__sum-price{margin-left:7px;opacity:.78;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap} /* PayPal smart buttons sit after the form — give them their own row */ .mc-pdp .ppc-button-wrapper,#ppcp-messages,.mc-pdp .ppcp-messages{width:100%;margin:6px 0 0;flex:0 0 100%} .mc-pdp #ppcp-messages{margin:0 0 4px;font-size:var(–t-micro)} .mc-pdp__act{display:flex;flex-wrap:wrap;gap:10px;margin:12px 0 0!important;max-width:none!important} .mc-pdp__act .mc-btn{flex:1 1 auto;min-height:48px;height:48px} .mc-pdp__act .mc-btn–ghost{background:transparent;color:var(–ink);border:1px solid var(–line-2)} .mc-pdp__act .mc-btn–ghost:hover{border-color:var(–ink);background:var(–paper-2)} /* trust row */ .mc-pdp__trust{list-style:none;margin:26px 0 0;padding:20px 0 0;border-top:1px solid var(–line); display:flex;flex-direction:column;gap:11px} .mc-pdp__trust li{display:flex;gap:10px;align-items:flex-start;font-size:var(–t-small); line-height:1.45;color:var(–body)} .mc-pdp__trust svg{flex:0 0 18px;width:18px;height:18px;margin-top:1px;color:var(–p)} .mc-pdp__trust b{font-weight:700;color:var(–ink)} /* accordions */ .mc-pdp__acc{margin:24px 0 0} .mc-acc{border-top:1px solid var(–line)} .mc-acc:last-child{border-bottom:1px solid var(–line)} .mc-acc>summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between; gap:14px;padding:15px 0;font-family:var(–sans);font-size:var(–t-small);font-weight:800; letter-spacing:.01em;color:var(–ink);min-height:0} .mc-acc>summary::-webkit-details-marker{display:none} .mc-acc>summary::after{content:"";flex:0 0 11px;width:11px;height:11px;margin-right:3px; border-right:1.4px solid var(–mut);border-bottom:1.4px solid var(–mut); transform:rotate(45deg) translateY(-2px);transition:transform .18s ease} .mc-acc[open]>summary::after{transform:rotate(-135deg) translateY(-2px)} .mc-acc__b{padding:0 0 16px;font-size:var(–t-small);line-height:1.62;color:var(–body)} .mc-acc__b p{margin:0 0 8px} .mc-acc__b p:last-child{margin:0} .mc-acc__b ul{margin:0;padding-left:17px} /* sku / category meta */ .mc-pdp .wp-block-woocommerce-product-meta{margin:22px 0 0;font-size:var(–t-micro); color:var(–mut);letter-spacing:.01em} .mc-pdp .wp-block-woocommerce-product-meta .wp-block-group{gap:14px} .mc-pdp .wp-block-woocommerce-product-meta .wp-block-post-terms__prefix{opacity:.75} .mc-pdp .wp-block-woocommerce-product-meta a{color:var(–body);text-decoration:none;border-bottom:1px solid var(–line-2)} /* tabs / long description */ .mc-pdp__story{padding:52px 0 0;margin:0!important;max-width:none!important} .mc-pdp__story .woocommerce-tabs{margin:0} .mc-pdp__story ul.tabs{list-style:none;margin:0;padding:0 0 0;display:flex;flex-wrap:wrap;gap:26px; border-bottom:1px solid var(–line)} .mc-pdp__story ul.tabs li{margin:0} .mc-pdp__story ul.tabs li a{display:inline-block;padding:0 0 13px;font-family:var(–sans); font-size:var(–t-small);font-weight:700;letter-spacing:.01em;color:var(–mut);text-decoration:none; border-bottom:2px solid transparent;margin-bottom:-1px} .mc-pdp__story ul.tabs li.active a,.mc-pdp__story ul.tabs li a:hover{color:var(–ink);border-bottom-color:var(–ink)} .mc-pdp__story .wc-tab{padding:26px 0 0;font-size:var(–t-body);line-height:var(–lh-body);color:var(–body); max-width:var(–measure)} .mc-pdp__story .wc-tab>*{max-width:100%!important;margin-left:0!important;margin-right:0!important} .mc-pdp__story .wc-tab h2,.mc-pdp__story .wc-tab h3{font-family:var(–serif);font-weight:400; color:var(–ink);letter-spacing:var(–tracking-head);margin:26px 0 10px;line-height:var(–lh-h3)} .mc-pdp__story .wc-tab h2{font-size:var(–t-h2);line-height:var(–lh-h2)} .mc-pdp__story .wc-tab h3{font-size:var(–t-h3)} .mc-pdp__story .wc-tab li{margin:0 0 6px} .mc-pdp__story .wc-tab table{border-collapse:collapse;width:100%;font-size:var(–t-small)} .mc-pdp__story .wc-tab th,.mc-pdp__story .wc-tab td{border-bottom:1px solid var(–line);padding:9px 0;text-align:left} .mc-pdp__story .wc-tab th{color:var(–ink);font-weight:700} /* related products */ .mc-pdp__rel{padding:60px 0 84px;margin:0!important;max-width:none!important} /* mobile sticky buy bar (injected by the PDP script) */ .mc-buybar{position:fixed;left:0;right:0;bottom:0;z-index:60;display:none;align-items:center;gap:12px; padding:10px 16px calc(10px + env(safe-area-inset-bottom));background:rgba(252,250,247,.97); border-top:1px solid var(–line-2);backdrop-filter:saturate(140%) blur(8px); transform:translateY(110%);transition:transform .22s ease} .mc-buybar.is-on{transform:none} .mc-buybar__p{font-family:var(–serif);font-size:19px;color:var(–ink);line-height:1.1} .mc-buybar__p small{display:block;font-family:var(–sans);font-size:11px;color:var(–mut);letter-spacing:0} .mc-buybar__b{flex:1 1 auto;min-height:46px;height:46px;border:0;border-radius:var(–r-sm); background:var(–ink);color:#fff;font-family:var(–sans);font-size:14px;font-weight:800; display:inline-flex;align-items:center;justify-content:center;gap:8px;cursor:pointer} @media (max-width:980px){ .mc-pdp__grid{grid-template-columns:1fr;gap:30px} .mc-pdp__buy{padding-top:0} .mc-pdp__in{padding:0 24px} .mc-pdp__gal .woocommerce-product-gallery__image{ flex-basis:calc((100% – 20px) / 3);max-width:calc((100% – 20px) / 3)} } @media (max-width:640px){ .mc-pdp__in{padding:0 18px} .mc-pdp__gal .woocommerce-product-gallery__image{ flex-basis:calc(50% – 5px);max-width:calc(50% – 5px)} .mc-pdp__price .woocommerce-Price-amount{font-size:29px} .mc-pdp .wp-block-woocommerce-add-to-cart-form form.cart{gap:8px} .mc-pdp .wp-block-woocommerce-add-to-cart-form .single_add_to_cart_button{flex:1 1 100%} .mc-pdp__act .mc-btn{flex:1 1 100%} .mc-pdp__story ul.tabs{gap:18px} .mc-buybar{display:flex} .mc-pdp__rel{padding:44px 0 96px} } /* ========================================================================== 21 CATEGORY / SHOP ARCHIVE (archive-product template + /shop/) Head band carries the real term name and term description, so the intro copy is the one already stored on the term — nothing is invented here. ========================================================================== */ .mc-cat{background:var(–paper);color:var(–body);font-family:var(–sans)} .mc-cat__in{max-width:var(–w);margin:0 auto;padding:0 40px} .mc-cat__head{padding:26px 0 34px;background:var(–paper-2);border-bottom:1px solid var(–line)} .mc-cat__head .woocommerce-breadcrumb{margin:0 0 18px;font-size:var(–t-meta);color:var(–mut)} .mc-cat__head .woocommerce-breadcrumb a{color:var(–mut);text-decoration:none;border-bottom:1px solid transparent} .mc-cat__head .woocommerce-breadcrumb a:hover{color:var(–ink);border-bottom-color:var(–line-2)} .mc-cat__eyebrow{font-family:var(–sans);font-size:var(–t-micro);font-weight:800;letter-spacing:var(–tracking-label); text-transform:uppercase;color:var(–p-deep);margin:0 0 10px} .mc-cat__h1{font-family:var(–serif);font-weight:400;font-size:var(–t-h1);line-height:var(–lh-h1); letter-spacing:var(–tracking-head);color:var(–ink);margin:0;text-wrap:balance} .mc-cat__desc{margin:14px 0 0;max-width:var(–measure);font-size:var(–t-lead);line-height:var(–lh-lead); color:var(–body)} .mc-cat__desc>*{max-width:100%!important;margin-left:0!important;margin-right:0!important} .mc-cat__desc p{margin:0 0 10px} .mc-cat__desc p:last-child{margin:0} .mc-cat__desc strong{color:var(–ink)} /* shop head intro — the shop archive has no term description of its own, so a static line keeps its head the same height as a category head. Hidden on the taxonomy archives, where the real term description takes over. */ .mc-cat__desc–shop{display:block} body.tax-product_cat .mc-cat__desc–shop, body.tax-product_tag .mc-cat__desc–shop{display:none!important} /* search form — used inside the archive head and above the results ———- */ .mc-cat__form{margin:22px 0 0;max-width:560px} .mc-cat__form .wp-block-search__inside-wrapper{display:flex;gap:10px} .mc-cat .wp-block-search__inside-wrapper, .mc-cat__form .wp-block-search__inside-wrapper{display:flex;gap:10px;margin:0;padding:0;border:0} .mc-cat .wp-block-search__input,.mc-cat__form input[type="search"]{ flex:1 1 auto;min-width:0;height:46px;padding:0 16px;margin:0; border:1px solid var(–line-2);border-radius:var(–r-sm);background:var(–white); font-family:var(–sans);font-size:var(–t-small);color:var(–ink)} .mc-cat .wp-block-search__input::placeholder{color:var(–mut)} .mc-cat .wp-block-search__input:focus-visible{outline:2px solid var(–p);outline-offset:1px} .mc-cat .wp-block-search__button,.mc-cat__form button[type="submit"]{ flex:0 0 auto;height:46px;padding:0 22px;margin:0;border:0;border-radius:var(–r-sm); background:var(–ink);color:var(–white);cursor:pointer; font-family:var(–sans);font-size:var(–t-micro);font-weight:800; letter-spacing:var(–tracking-label);text-transform:uppercase; transition:background .16s} .mc-cat .wp-block-search__button:hover,.mc-cat__form button[type="submit"]:hover{background:var(–p-deep)} /* the empty state of a search must read like the empty state of a category */ .mc-cat .wp-block-woocommerce-product-collection-no-results{margin:8px 0 0; padding:26px 0;border-top:1px solid var(–line);font-size:var(–t-body);color:var(–body)} .mc-cat .wp-block-woocommerce-product-collection-no-results strong{color:var(–ink)} .mc-cat .wp-block-woocommerce-product-collection-no-results .wp-block-search{margin-top:16px;max-width:520px} /* product grid — works for the block collection and the classic loop */ .mc-cat .wc-block-product-template, .mc-cat .wp-block-woocommerce-product-template, .mc-cat ul.products{list-style:none;margin:0;padding:0;display:grid; grid-template-columns:repeat(4,minmax(0,1fr));gap:34px 24px} .mc-cat ul.products::before,.mc-cat ul.products::after{content:none} .mc-cat .wc-block-product, .mc-cat ul.products li.product{min-width:0;margin:0;display:flex;flex-direction:column;position:relative} .mc-cat .wc-block-components-product-image, .mc-cat ul.products li.product a.woocommerce-LoopProduct-link{display:block;margin:0 0 14px;overflow:hidden; border-radius:var(–r);background:var(–paper-2)} .mc-cat .wc-block-components-product-image img, .mc-cat ul.products li.product img{display:block;width:100%;height:auto;aspect-ratio:1/1;object-fit:cover; margin:0;transition:transform .35s ease} .mc-cat .wc-block-product:hover img, .mc-cat ul.products li.product:hover img{transform:scale(1.03)} /* The product-title block puts `wc-block-components-product-title` on a WRAPPER div and `wp-block-post-title` on the heading itself. Styling the wrapper never reached the heading, so the theme's own `h2` rule kept winning: 13.5px Manrope, and on the search template also `text-transform:uppercase`. Target the heading. */ .mc-cat .wc-block-product-template .wp-block-post-title, .mc-cat .wc-block-components-product-title .wp-block-post-title{font-family:var(–serif);font-weight:400; font-size:16.5px;line-height:1.36;letter-spacing:-.005em;color:var(–ink); text-transform:none;margin:0 0 6px;padding:0} .mc-cat .wc-block-product-template .wp-block-post-title a{color:inherit;text-decoration:none} .mc-cat .wc-block-product-template .wp-block-post-title a:hover{color:var(–p-deep)} .mc-cat .wc-block-components-product-title, .mc-cat ul.products li.product .woocommerce-loop-product__title{font-family:var(–serif);font-weight:400; font-size:16.5px;line-height:1.36;letter-spacing:-.005em;color:var(–ink);margin:0 0 6px;padding:0} .mc-cat .wc-block-components-product-title a, .mc-cat ul.products li.product .woocommerce-loop-product__title a{color:inherit;text-decoration:none} .mc-cat .wc-block-components-product-title a:hover{color:var(–p-deep)} .mc-cat .wc-block-components-product-price, .mc-cat ul.products li.product .price{font-family:var(–sans);font-size:14.5px;font-weight:700;color:var(–ink); margin:0 0 10px;line-height:1.4} .mc-cat .wc-block-components-product-price del, .mc-cat ul.products li.product .price del{color:var(–mut);font-weight:500;margin-right:6px;opacity:1; text-decoration:line-through;text-decoration-thickness:1px} .mc-cat .wc-block-components-product-price ins, .mc-cat ul.products li.product .price ins{text-decoration:none;color:var(–sale)} .mc-cat .wp-block-woocommerce-product-button, .mc-cat ul.products li.product .button{margin-top:auto!important;min-height:40px;height:40px;padding:0 14px; border:1px solid var(–line-2);border-radius:var(–r-sm);background:transparent;color:var(–ink); font-family:var(–sans);font-size:var(–t-meta);font-weight:700;display:inline-flex;align-items:center; justify-content:center;text-decoration:none;transition:background .16s,border-color .16s,color .16s} /* the block wraps the real button in a div that carries its own padding/background */ .mc-cat .wp-block-woocommerce-product-button{padding:0!important;border:0!important;background:none!important; overflow:visible!important;width:auto!important;max-width:none!important} .mc-cat .wp-block-woocommerce-product-button .wp-block-button, .mc-cat .wp-block-woocommerce-product-button .wp-block-button__link, .mc-cat .wp-block-woocommerce-product-button a.wp-element-button, .mc-cat .wp-block-woocommerce-product-button .add_to_cart_button{ display:flex;width:100%!important;max-width:100%!important;min-height:40px;height:40px; align-items:center;justify-content:center;margin:0!important;padding:0 14px!important; border:1px solid var(–line-2)!important;border-radius:var(–r-sm)!important; background:transparent!important;color:var(–ink)!important;box-shadow:none!important; font-family:var(–sans)!important;font-size:var(–t-meta)!important;font-weight:700;text-decoration:none} .mc-cat .wp-block-woocommerce-product-button a.wp-element-button:hover, .mc-cat .wp-block-woocommerce-product-button .add_to_cart_button:hover{ background:var(–ink)!important;border-color:var(–ink)!important;color:#fff!important} .mc-cat .wc-block-components-product-rating{color:var(–p);font-size:var(–t-micro);margin:0 0 6px;min-height:0} /* pagination */ .mc-cat .wp-block-query-pagination, .mc-cat .woocommerce-pagination{margin:44px 0 0;padding-top:28px;border-top:1px solid var(–line); display:flex;gap:6px;justify-content:center;flex-wrap:wrap;list-style:none} .mc-cat .woocommerce-pagination ul{list-style:none;display:flex;gap:6px;margin:0;padding:0;border:0} .mc-cat .page-numbers, .mc-cat .wp-block-query-pagination a, .mc-cat .wp-block-query-pagination .page-numbers{min-width:40px;height:40px;display:inline-flex; align-items:center;justify-content:center;padding:0 8px;border:1px solid var(–line-2); border-radius:var(–r-sm);color:var(–ink);font-size:var(–t-meta);font-weight:700;text-decoration:none;background:var(–white)} .mc-cat .page-numbers.current, .mc-cat .wp-block-query-pagination .page-numbers.current{background:var(–ink)!important;border-color:var(–ink)!important;color:var(–white)!important} .mc-cat .page-numbers:hover{border-color:var(–ink)} /* closing argument band — statements are the shop's own terms, not claims */ .mc-cat__band{margin:64px 0 0;padding:44px 0 8px;border-top:1px solid var(–line)} .mc-cat__band h2{font-family:var(–serif);font-weight:400;font-size:var(–t-h2);line-height:var(–lh-h2); letter-spacing:var(–tracking-head);color:var(–ink);margin:0 0 22px} .mc-cat__pts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:26px;margin:0} .mc-cat__pt h3{font-family:var(–sans);font-size:var(–t-small);font-weight:800;color:var(–ink); margin:0 0 6px;letter-spacing:.01em} .mc-cat__pt p{margin:0;font-size:var(–t-small);line-height:1.62;color:var(–body)} @media (max-width:1100px){ .mc-cat .wc-block-product-template,.mc-cat ul.products{grid-template-columns:repeat(3,minmax(0,1fr))} .mc-cat__pts{grid-template-columns:1fr 1fr} } @media (max-width:820px){ .mc-cat__in{padding:0 24px} .mc-cat .wc-block-product-template,.mc-cat ul.products{grid-template-columns:repeat(2,minmax(0,1fr));gap:26px 16px} .mc-cat__pts{grid-template-columns:1fr} } @media (max-width:560px){ .mc-cat__in{padding:0 18px} .mc-cat__head{padding:20px 0 26px} .mc-cat__desc{font-size:var(–t-body)} .mc-cat__band{margin-top:44px} } /* ========================================================================== 22 TYPOGRAPHY SYSTEM Two families, each with one job. The serif carries voice (display, page and section headings, product titles); the sans carries function (labels, UI, prices, metadata, running copy). Size never does the work alone: weight, tracking and space separate the roles. Delivery note: the media library rejects .woff2 (HTTP 403), so both stacks name installed system faces in one fixed order instead of declaring a webfont that would fall back to something different per OS. Nothing is downloaded, so there is no reflow and no invisible text — at the cost of the bold weights being synthesized on Windows, which the weight choices below account for by leaning on size and tracking instead of 800s. ========================================================================== */ /* German quotation marks everywhere, set once. A shop quoting „Natürlich und rein" should not be printing ASCII inch marks. */ .mc-home,.mc-sec,.mc-read,.mc-doc,.mc-cat,.mc-pdp,.mc-contact,.mc-blog-head, .mc-page-head,.mc-ftr,.mc-inq{quotes:"„" "“" "‚" "‘"} /* wrapping: headings balance so the last line never carries one orphan word; running copy uses pretty so a lone word is not stranded. Both progressive. */ .mc-h1,.mc-h2,.mc-h3,.mc-page-head h1,.mc-cat__h1,.mc-pdp__t,.mc-blog-head h1, .mc-ftr h2,.mc-ftr__h,.mc-inq h2,.mc-sec h2,.mc-sec h3{text-wrap:balance} p,.mc-lead,.mc-read .entry-content p,.mc-cat__desc p,.mc-acc__b p{text-wrap:pretty} /* long German compounds must break rather than push the layout sideways: "Datenschutzerklärung" at 320px overflows its column otherwise. */ .mc-read,.mc-doc,.mc-cat__desc,.mc-acc__b,.mc-page-head h1,.mc-cat__h1, .mc-pdp__t,.mc-h1,.mc-h2,.mc-h3{overflow-wrap:break-word;hyphens:auto} /* numbers that sit in columns — prices, tables, quantities — align on the baseline instead of shifting with each digit's width */ .mc-pdp__price .woocommerce-Price-amount, .mc-pdp__sum-price, .mc-cat .wc-block-components-product-price, .mc-cat ul.products li.product .price, .mc-read table,.mc-doc table,.mc-buybar__p, .mc-pdp .quantity input[type=number]{font-variant-numeric:tabular-nums lining-nums} /* label role: small, widely tracked, uppercase — used for eyebrows and footer column heads. One tracking value for every instance. */ .mc-eyebrow,.mc-cat__eyebrow,.mc-ftr__h,.mc-pdp .wp-block-post-terms__prefix{ letter-spacing:var(–tracking-label);text-transform:uppercase} /* light text on the dark bands: lead one step open and a touch more tracked, because thin serifs on #111C19 read smaller than their size says */ .mc-ftr,.mc-ftr p,.mc-ftr li,.mc-ftr a{line-height:1.62;letter-spacing:.004em} .mc-ftr__h{line-height:1.35} .mc-band–dark p,.mc-hero p{line-height:1.66;letter-spacing:.003em} /* the running-copy measure is capped in ch, which only means anything if the font is the one it was measured against. Pin the two reading surfaces. */ .mc-read{max-width:720px;font-size:17.5px;line-height:1.72} .mc-read .entry-content p, .mc-read .entry-content li{max-width:66ch} /* keep the hero display from ever setting more than three lines on a phone */ @media (max-width:640px){ .mc-h1,.mc-cat__h1,.mc-pdp__t,.mc-page-head h1,.mc-blog-head h1{letter-spacing:-.01em} .mc-read{font-size:17px;line-height:1.7} } /* ========================================================================== 23 RECOMMENDATIONS · "Das könnte Ihnen auch gefallen" One module, four surfaces: category archive, product page, cart, checkout. The four surfaces live in three different rendering systems (block archive, classic shortcode loop, cart/checkout React blocks), so the module is built once in JS from the public Store API instead of four times in PHP. Same markup everywhere means the four placements cannot drift apart. Data is fetched only when the slot scrolls near the viewport, so the module costs nothing on LCP. ========================================================================== */ .mc-reco{ background:transparent;font-family:var(–sans); /* a constrained block group gives every child `margin:auto` + a narrow max-width; the inner .mc-reco__in sets the real measure, so the outer shell has to opt out or the section would be double-inset. */ max-width:none!important;width:100%!important; margin-left:0!important;margin-right:0!important; margin-block-start:0!important; padding:0 0 64px; } .mc-reco__in{max-width:var(–w);margin:0 auto;padding:0 40px} .mc-reco__head{ display:flex;align-items:flex-end;justify-content:space-between;gap:24px; padding:40px 0 24px;border-top:1px solid var(–line); } .mc-reco__eyebrow{ font-family:var(–sans);font-size:var(–t-micro);font-weight:800; letter-spacing:var(–tracking-label);text-transform:uppercase; color:var(–p-deep);margin:0 0 9px; } .mc-reco__h{ font-family:var(–serif);font-weight:400;font-size:var(–t-h2);line-height:var(–lh-h2); letter-spacing:var(–tracking-head);color:var(–ink);margin:0;text-wrap:balance; } .mc-reco__sub{margin:8px 0 0;font-size:var(–t-small);line-height:1.6;color:var(–mut);max-width:54ch} .mc-reco__all{ flex:0 0 auto;font-size:var(–t-meta);font-weight:700;color:var(–p-deep); text-decoration:none;border-bottom:1px solid var(–tint);padding-bottom:2px;white-space:nowrap; transition:color .16s,border-color .16s; } .mc-reco__all::after{content:"\00a0\2192"} .mc-reco__all:hover{color:var(–ink);border-bottom-color:var(–ink)} .mc-reco__grid{ display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:34px 24px; margin:0;padding:0;list-style:none; } .mc-reco__card{display:flex;flex-direction:column;min-width:0;text-decoration:none;color:inherit} .mc-reco__card:focus-visible{outline:2px solid var(–p);outline-offset:4px;border-radius:var(–r)} .mc-reco__im{ position:relative;display:block;aspect-ratio:1/1;overflow:hidden; border-radius:var(–r);background:var(–paper-2); } .mc-reco__im img{display:block;width:100%;height:100%;object-fit:cover;margin:0; transition:transform .38s ease} .mc-reco__card:hover .mc-reco__im img{transform:scale(1.035)} .mc-reco__t{ display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2; overflow:hidden; font-family:var(–serif);font-size:16.5px;line-height:1.36; letter-spacing:-.005em;color:var(–ink);margin:13px 0 5px; /* two lines reserved whether the name needs them or not, so the prices of a row share one baseline instead of stepping down with each wrapped title */ min-height:calc(2 * 1.36em); } .mc-reco__p{ display:block;font-size:14.5px;font-weight:700;line-height:1.4;color:var(–ink); font-variant-numeric:tabular-nums;margin:0; } .mc-reco__p del{color:var(–mut);font-weight:500;margin-right:6px; text-decoration:line-through;text-decoration-thickness:1px} .mc-reco__p ins{text-decoration:none;color:var(–sale)} .mc-reco__p .woocommerce-Price-currencySymbol{font-weight:700} .mc-reco__flag{ position:absolute;top:10px;left:10px;z-index:2; background:var(–p);color:#fff;border-radius:5px;padding:3px 7px; font-family:var(–sans);font-size:11.5px;font-weight:800;line-height:1.7; letter-spacing:.07em;text-transform:uppercase;font-variant-numeric:tabular-nums; } /* placeholder inserted the moment the anchor is parsed; it is swapped for the real section once the Store API answers, and removed outright if nothing survives de-duplication. Kept 1px so it never reserves visible space. */ .mc-reco-slot{display:block;height:1px;margin-block-start:-1px;overflow:hidden; pointer-events:none} @media (max-width:1100px){ .mc-reco__grid{grid-template-columns:repeat(3,minmax(0,1fr))} } @media (max-width:820px){ .mc-reco__in{padding:0 24px} .mc-reco__head{padding:34px 0 20px} .mc-reco__grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:26px 16px} } @media (max-width:560px){ .mc-reco__in{padding:0 18px} .mc-reco{padding-bottom:44px} .mc-reco__head{flex-direction:column;align-items:flex-start;gap:12px} .mc-reco__t{font-size:15.5px;margin-top:11px} } @media (prefers-reduced-motion:reduce){ .mc-reco__im img,.mc-reco__all{transition:none} .mc-reco__card:hover .mc-reco__im img{transform:none} } /* =========================================================================== 24 CONTENT PAGES — Über uns / Ratgeber / Großhandel One section vocabulary shared by every standalone page, so a page built from these blocks reads as a continuation of the homepage instead of a document that happens to live on the same domain. =========================================================================== */ /* page hero — the dark poster from the homepage, in a shorter cut ———- */.mc-phero{position:relative;overflow:hidden;background:var(–ink);color:#fff;isolation:isolate} .mc-phero__bg{position:absolute;inset:0;z-index:-1} .mc-phero__bg img{width:100%;height:100%;object-fit:cover;opacity:.5} .mc-phero__bg::after{content:"";position:absolute;inset:0; background:linear-gradient(102deg,rgba(10,18,16,.95) 0%,rgba(10,18,16,.8) 44%,rgba(10,18,16,.34) 100%)} .mc-phero__in{padding:78px 0 82px;max-width:760px} .mc-phero__crumb{font-size:var(–t-micro);color:rgba(255,255,255,.55);margin:0 0 18px;letter-spacing:.02em} .mc-phero__crumb a{color:rgba(255,255,255,.72);text-decoration:none} .mc-phero__crumb a:hover{color:#fff;text-decoration:underline} .mc-phero__eyebrow{font-size:var(–t-micro);font-weight:800;letter-spacing:var(–tracking-label); text-transform:uppercase;color:var(–tint);margin:0 0 12px} .mc-phero h1{font-family:var(–serif);font-weight:400;font-size:var(–t-display);line-height:var(–lh-display); letter-spacing:var(–tracking-display);color:#fff;margin:0;text-wrap:balance} .mc-phero__lead{margin:20px 0 0;font-size:var(–t-lead);line-height:var(–lh-lead); color:rgba(255,255,255,.8);max-width:56ch} .mc-phero__act{display:flex;flex-wrap:wrap;gap:12px;margin-top:32px} .mc-phero__meta{display:flex;flex-wrap:wrap;gap:10px 26px;margin-top:34px;padding-top:22px; border-top:1px solid rgba(255,255,255,.16);font-size:var(–t-micro);font-weight:700; letter-spacing:var(–tracking-label);text-transform:uppercase;color:rgba(255,255,255,.6)} /* buttons have to invert on the dark plate */ .mc-phero .mc-btn–solid{background:#fff;color:var(–ink)} .mc-phero .mc-btn–solid:hover{background:var(–tint-2);color:var(–ink)} .mc-phero .mc-btn–line{background:transparent;color:#fff;border-color:rgba(255,255,255,.34)} /* Section headings are set in uppercase serif on the homepage — `.mc-h2` there carries text-transform:uppercase. Without that, a page built from these blocks reads as a different website even though every colour and space matches. Two tiers, exactly as the homepage does it: a wide band heading keeps the full clamp, a heading inside a narrow text column drops to –t-h2 so a German compound does not end up as four stacked lines. Long-form article headings stay in sentence case — they are read, not scanned. */ .mc-sec .mc-h2{text-transform:uppercase;margin:0} .mc-split__t .mc-h2{font-size:var(–t-h2);line-height:var(–lh-h2);letter-spacing:var(–tracking-head)} .mc-cta h2,.mc-note h2{text-transform:uppercase} .mc-phero .mc-btn–line:hover{background:#fff;color:var(–ink);border-color:#fff} /* value cards ————————————————————- */ .mc-vals{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px} .mc-val{background:var(–white);border:1px solid var(–line);border-radius:var(–r);padding:26px 24px 24px} .mc-val__i{width:40px;height:40px;border-radius:11px;background:var(–tint-2);color:var(–p-deep); display:flex;align-items:center;justify-content:center} .mc-val h3{font-family:var(–sans);font-size:15px;font-weight:800;color:var(–ink);margin:16px 0 0; letter-spacing:-.005em} .mc-val p{margin:8px 0 0;font-size:var(–t-meta);line-height:1.62;color:var(–mut)} /* figure row ————————————————————– */ .mc-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:26px; padding:32px 0;border-top:1px solid var(–line);border-bottom:1px solid var(–line);margin:0} .mc-stat__n{font-family:var(–serif);font-weight:400;font-size:clamp(26px,2.9vw,36px);line-height:1; color:var(–ink);letter-spacing:-.02em} .mc-stat__l{margin-top:9px;font-size:var(–t-micro);font-weight:700;letter-spacing:.09em; text-transform:uppercase;color:var(–mut)} /* two-column text + image ————————————————- */ .mc-split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);gap:62px;align-items:center} .mc-split__t{min-width:0} .mc-split h2{margin:12px 0 0} .mc-split__p{margin:18px 0 0;font-size:var(–t-body);line-height:1.72;color:var(–mut);max-width:56ch} .mc-split__p strong{color:var(–ink)} .mc-split__m{border-radius:var(–r-lg);overflow:hidden;background:var(–paper-2);aspect-ratio:4/3.05;min-width:0} .mc-split__m img{display:block;width:100%;height:100%;object-fit:cover} .mc-split–flip .mc-split__t{order:2} .mc-split–flip .mc-split__m{order:1} /* the picture keeps the wider track after a flip, otherwise swapping the two columns also swaps their widths and every second section looks lighter */ .mc-split–flip{grid-template-columns:minmax(0,1.05fr) minmax(0,1fr)} /* numbered flow ———————————————————– */ .mc-flow{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-top:1px solid var(–line);margin:0} .mc-flow__i{padding:26px 28px 0 0;min-width:0} .mc-flow__i + .mc-flow__i{border-left:1px solid var(–line);padding-left:28px} .mc-flow__no{font-family:var(–serif);font-size:15px;color:var(–p);letter-spacing:.05em} .mc-flow h3{font-family:var(–sans);font-size:15.5px;font-weight:800;color:var(–ink);margin:10px 0 0; letter-spacing:-.005em} .mc-flow p{margin:8px 0 0;font-size:var(–t-meta);line-height:1.62;color:var(–mut)} /* chip row — taxonomies, keywords, quick links ————————— */ .mc-chips{display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none} .mc-chips a,.mc-chips span{display:inline-flex;align-items:center;gap:8px; padding:9px 14px;border:1px solid var(–line-2);border-radius:999px;background:var(–white); font-family:var(–sans);font-size:var(–t-meta);font-weight:700;color:var(–ink);text-decoration:none; transition:background .16s,border-color .16s,color .16s} .mc-chips a:hover{background:var(–ink);border-color:var(–ink);color:#fff} .mc-chips em{font-style:normal;font-size:var(–t-micro);font-weight:700;color:var(–mut)} .mc-chips a:hover em{color:rgba(255,255,255,.65)} /* closing band ———————————————————— */ .mc-cta{background:var(–ink);color:#fff} .mc-cta__in{display:flex;align-items:center;justify-content:space-between;gap:44px; padding:62px 0;flex-wrap:wrap} .mc-cta__t{max-width:620px;min-width:0} .mc-cta__eyebrow{font-size:var(–t-micro);font-weight:800;letter-spacing:var(–tracking-label); text-transform:uppercase;color:var(–tint);margin:0} .mc-cta h2{font-family:var(–serif);font-weight:400;font-size:var(–t-h2);line-height:var(–lh-h2); letter-spacing:var(–tracking-head);color:#fff;margin:12px 0 0} .mc-cta p{margin:12px 0 0;font-size:var(–t-small);line-height:1.66;color:rgba(255,255,255,.72)} .mc-cta__act{display:flex;flex-wrap:wrap;gap:12px;flex:0 0 auto} .mc-cta .mc-btn–solid{background:#fff;color:var(–ink)} .mc-cta .mc-btn–solid:hover{background:var(–tint-2)} .mc-cta .mc-btn–line{background:transparent;color:#fff;border-color:rgba(255,255,255,.34)} .mc-cta .mc-btn–line:hover{background:#fff;color:var(–ink);border-color:#fff} /* long-form body inside a page ——————————————- */ .mc-article{padding:56px 0 76px} .mc-article__grid{display:grid;grid-template-columns:230px minmax(0,1fr);gap:56px;align-items:start} .mc-article__nav{position:sticky;top:96px} .mc-article__nav p{margin:0 0 12px;font-size:var(–t-micro);font-weight:800;letter-spacing:var(–tracking-label); text-transform:uppercase;color:var(–mut)} .mc-article__nav ol{list-style:none;margin:0;padding:0;border-left:1px solid var(–line)} .mc-article__nav li{margin:0} .mc-article__nav a{display:block;padding:8px 0 8px 14px;margin-left:-1px;border-left:2px solid transparent; font-size:var(–t-meta);line-height:1.45;color:var(–mut);text-decoration:none;transition:color .16s,border-color .16s} .mc-article__nav a:hover{color:var(–ink);border-left-color:var(–tint)} .mc-article__body{min-width:0;max-width:70ch} .mc-article__body > h2{font-family:var(–serif);font-weight:400;font-size:var(–t-h2);line-height:var(–lh-h2); letter-spacing:var(–tracking-head);color:var(–ink);margin:48px 0 0;scroll-margin-top:96px} .mc-article__body > h2:first-child{margin-top:0} .mc-article__body > h3{font-family:var(–sans);font-size:var(–t-h4);font-weight:800;color:var(–ink); margin:30px 0 0;letter-spacing:-.005em} .mc-article__body > p{margin:14px 0 0;font-size:var(–t-body);line-height:1.74;color:var(–body)} .mc-article__body > p > strong{color:var(–ink)} .mc-article__body > ul,.mc-article__body > ol{margin:16px 0 0;padding:0 0 0 20px} .mc-article__body li{margin:8px 0 0;font-size:var(–t-body);line-height:1.68;color:var(–body)} .mc-article__body li strong{color:var(–ink)} .mc-article__body a{color:var(–p-deep);text-decoration:none;border-bottom:1px solid var(–tint)} .mc-article__body a:hover{border-bottom-color:var(–p-deep)} .mc-article__body .mc-lede{margin:0 0 8px;font-size:var(–t-lead);line-height:var(–lh-lead);color:var(–body)} /* FAQ pairs — a definition-like list, no accordion needed on a page this short */ .mc-faq{margin:20px 0 0;border-top:1px solid var(–line)} .mc-faq details{border-bottom:1px solid var(–line)} .mc-faq summary{display:flex;align-items:center;justify-content:space-between;gap:20px; padding:18px 0;font-family:var(–sans);font-size:15.5px;font-weight:800;color:var(–ink); cursor:pointer;list-style:none} .mc-faq summary::-webkit-details-marker{display:none} .mc-faq summary::after{content:"+";font-family:var(–serif);font-size:20px;font-weight:400;color:var(–p); line-height:1;flex:0 0 auto} .mc-faq details[open] summary::after{content:"–"} .mc-faq p{margin:0 0 20px;font-size:var(–t-small);line-height:1.7;color:var(–mut);max-width:64ch} /* —- full-bleed shell ————————————————— A page that opens with .mc-phero wants its dark plate edge to edge. WordPress wraps every page in main > .wp-block-group > .entry-content and all three carry global padding, and it prints the page title as an <h1> above the content — which would collide with the hero's own <h1> and show the title twice. :has() keys off the hero itself, so any future page assembled from these blocks inherits the treatment without another selector. */ body:has(.mc-phero) main{margin-top:0!important} body:has(.mc-phero) main > .wp-block-group{padding:0!important} body:has(.mc-phero) .wp-block-post-title{display:none} /* .entry-content ships with `alignfull`, which pulls itself out by –wp–style–root–padding-left on each side; with the outer padding already zeroed that overflowed the viewport by 2x50px and clipped the first column. Resetting the margins is what actually lands the plate on the screen edge. */ body:has(.mc-phero) .entry-content{margin:0!important;padding:0!important; max-width:none!important;width:100%!important} body:has(.mc-phero) .entry-content > *{margin-top:0!important} /* —- responsive ——————————————————— */ @media (max-width:980px){ .mc-phero__in{padding:56px 0 60px} .mc-phero__lead{font-size:16px} .mc-vals{grid-template-columns:1fr;gap:14px} .mc-stats{grid-template-columns:1fr 1fr;gap:22px 18px} .mc-split{grid-template-columns:1fr;gap:32px} .mc-split–flip .mc-split__t,.mc-split–flip .mc-split__m{order:0} .mc-flow{grid-template-columns:1fr;border-top:0} .mc-flow__i{padding:20px 0 0;border-top:1px solid var(–line)} .mc-flow__i + .mc-flow__i{border-left:0;padding-left:0} .mc-cta__in{padding:48px 0;gap:26px} .mc-article{padding:36px 0 60px} .mc-article__grid{grid-template-columns:1fr;gap:28px} .mc-article__nav{position:static;order:-1} .mc-article__nav ol{display:flex;flex-wrap:wrap;gap:8px;border-left:0} .mc-article__nav a{padding:7px 12px;border:1px solid var(–line-2);border-left:1px solid var(–line-2); border-radius:999px;margin:0;font-size:var(–t-micro)} } @media (max-width:640px){ .mc-phero__in{padding:44px 0 48px} /* the homepage runs a 24px gutter on phones (its form grid starts at x=24); a 40px gutter here would make the new pages look inset next to it */ .mc-phero > .mc-wrap,.mc-sec > .mc-wrap,.mc-article > .mc-wrap,.mc-cta > .mc-wrap, .entry-content > .mc-wrap{padding-left:24px;padding-right:24px} /* The theme sets no global box-sizing, so .mc-wrap is content-box. With `width:100%` above the 2x24px gutter was added *outside* the 390px and the document scrolled 48px sideways on every page whose .mc-wrap sits directly under .entry-content — while section wraps (width:auto) were fine. Flip the box model only here, so the desktop measure stays exactly as it was. */ .entry-content.is-layout-constrained > .mc-wrap{box-sizing:border-box} .mc-phero__act{gap:10px} .mc-phero__act .mc-btn{width:100%} .mc-phero__meta{gap:8px 16px;font-size:11px} .mc-stats{grid-template-columns:1fr 1fr;gap:20px 14px;padding:26px 0} /* `width:100%` on the buttons alone did not stack them. .mc-cta__act is a flex item with `flex:0 0 auto`, so it sized itself to the sum of both buttons' max-content width (414px); that min-content then widened .mc-wrap to 438px and every page ending in a .mc-cta scrolled sideways by 48px on a 390px phone. Stack the pair instead of letting them fight for one row. */ .mc-cta__in{flex-direction:column;align-items:stretch;gap:24px} .mc-cta__act{flex:1 1 auto;width:100%;flex-direction:column;min-width:0} .mc-cta__act .mc-btn{width:100%} .mc-article__body > h2{font-size:26px;margin-top:38px} } /* aside panel — a short paragraph that would otherwise sit alone in an otherwise empty 80px band (the Treueprogramm note on /grosshandel/) */ .mc-note{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:44px; align-items:start;padding:34px 36px;border:1px solid var(–line); border-radius:var(–r-lg);background:var(–paper-2)} .mc-note h2{margin:10px 0 0} .mc-note__p{margin:0;font-size:var(–t-body);line-height:1.7;color:var(–body);max-width:58ch} .mc-note .mc-more{margin-top:18px} @media (max-width:760px){ .mc-note{grid-template-columns:1fr;gap:12px;padding:26px 22px} .mc-note h2{margin:6px 0 0} /* the model withdrawal form draws its fill-in lines as runs of underscores; a 46-character run is 405px and pushed the whole page 63px sideways on a 390px phone. Let the run break instead of shortening it — the printed width is what makes the form look like a form. */ .mc-muster p{overflow-wrap:anywhere} } /* Wide data tables (the shipping matrix on /faq/) are 557px at their min-content width, i.e. 197px of horizontal scroll for the whole document on a phone. A scroll container around them keeps the table layout intact — `display:block` on the <table> itself would blockify the rows instead. */ .mc-tbl{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:24px 0;max-width:100%} .mc-tbl table{margin:0;min-width:520px} /* Hostinger's AI page blocks pin their own display sizes in px. On /kategorien/ the card heading "Tigerauge" came out 5px wider than a 390px phone and gave the whole document a sideways nudge. Let it hyphenate (html[lang] is de, so hyphens:auto actually works) instead of clipping. */ @media (max-width:640px){ .hostinger-ai-title{overflow-wrap:break-word;hyphens:auto;max-width:100%} } /* ========================================================================== 25 MOBILE TYPE SCALE Phones get a pinned scale rather than a fluid one: below 768px the desktop clamps shrink past the point where the serif headings still read, so each heading tier is stated once, here, with its mobile value. Nothing in this section applies above 768px. History: until 2026-10-26 an mu-plugin also echoed a heading reset in the document head that forced every h2 to 18px and every h3 to 13px sitewide with !important. That plugin code has been deleted at the source, so the !important below is now belt-and-braces rather than a specificity fight. ========================================================================== */ @media (max-width:768px){ body .mc-h2{font-size:clamp(30px,3.4vw,50px)!important;line-height:1.06!important; letter-spacing:-.025em!important;margin:0!important;text-transform:uppercase!important} body .mc-split__t .mc-h2{font-size:var(–t-h2)!important;line-height:var(–lh-h2)!important} body .mc-split h2{margin:10px 0 0!important} body .mc-faq__title{font-size:28px!important;line-height:1.16!important;margin:0 0 14px!important; text-transform:none!important} body .mc-quick__t{font-size:26px!important;line-height:1.16!important;letter-spacing:-.02em!important; text-transform:none!important} body .mc-cta h2{font-size:var(–t-h2)!important;line-height:var(–lh-h2)!important; letter-spacing:var(–tracking-head)!important;margin:12px 0 0!important;text-transform:uppercase!important} body .mc-article__body > h2{font-size:26px!important;line-height:1.22!important; letter-spacing:var(–tracking-head)!important;margin:38px 0 0!important;text-transform:none!important} body .mc-cat__band h2{font-size:var(–t-h2)!important;line-height:var(–lh-h2)!important} body .mc-note h2{font-size:var(–t-h2)!important;line-height:var(–lh-h2)!important; margin:6px 0 0!important;text-transform:uppercase!important} body :is(.mc-sec,.mc-article,.mc-cta,.mc-phero,.mc-split) h3{font-size:15px!important; line-height:1.36!important;letter-spacing:-.005em!important} body .mc-article__body > h3{font-size:16.5px!important;line-height:1.4!important} body .mc-cat .wp-block-post-title,body .mc-cat .woocommerce-loop-product__title{ font-size:15.5px!important;line-height:1.32!important;text-transform:none!important; letter-spacing:0!important;margin:0 0 6px!important} } /* ========================================================================== 26 CART DRAWER The bag in the header used to be a plain link to /cart/. It now opens a panel that slides in from the right and lists the cart, so a shopper can review or adjust it without leaving the page they are on. The panel is a SIBLING of .mc-hdr, never a child: the header carries `backdrop-filter`, which makes it a containing block for fixed-position descendants, so a drawer inside it would be clipped to the 72px bar. One markup, one set of rules at every width — the panel is 420px wide and keeps a visible strip of the page behind it, phones included, so the gesture and the look are the same on desktop and on a phone. ========================================================================== */ .mc-cd{position:fixed;inset:0;z-index:900;display:block} .mc-cd[hidden]{display:none} body.mc-cd-lock{overflow:hidden} .mc-cd__ov{ position:absolute;inset:0;background:rgba(17,28,25,.44); opacity:0;transition:opacity .3s ease; } .mc-cd.is-open .mc-cd__ov{opacity:1} .mc-cd__panel{ position:absolute;top:0;right:0;bottom:0; width:min(420px,92vw);display:flex;flex-direction:column; background:var(–paper);color:var(–ink); border-left:1px solid var(–line);box-shadow:var(–sh-3); transform:translateX(100%); transition:transform .34s cubic-bezier(.22,.61,.36,1); font-family:var(–sans); } .mc-cd.is-open .mc-cd__panel{transform:none} .mc-cd__panel:focus{outline:none} /* —- head —————————————————————- */ .mc-cd__hd{ display:flex;align-items:center;justify-content:space-between;gap:16px; padding:20px 22px 16px;border-bottom:1px solid var(–line);flex:0 0 auto; } .mc-cd__t{ margin:0;font-family:var(–serif);font-weight:400;font-size:20px; line-height:1.15;letter-spacing:.06em;text-transform:uppercase;color:var(–ink); } .mc-cd__t em{font-style:normal;color:var(–mut);font-size:14px;letter-spacing:.02em;margin-left:6px} .mc-cd__x{ display:inline-flex;align-items:center;justify-content:center; width:36px;height:36px;flex:0 0 auto;padding:0; border:1px solid var(–line);border-radius:var(–r-sm); background:transparent;color:var(–ink);cursor:pointer; transition:background-color .16s,color .16s,border-color .16s; } .mc-cd__x:hover,.mc-cd__x:focus-visible{background-color:var(–tint-2);color:var(–p-deep);border-color:transparent} .mc-cd__x svg{display:block;width:15px;height:15px;max-width:none;flex:0 0 auto} /* —- body —————————————————————- */ .mc-cd__body{flex:1 1 auto;overflow-y:auto;overscroll-behavior:contain;padding:2px 22px} .mc-cd__list{list-style:none;margin:0;padding:0} .mc-cd__it{ display:grid;grid-template-columns:66px minmax(0,1fr);gap:14px; align-items:start;padding:18px 0;border-bottom:1px solid var(–line); } .mc-cd__it:last-child{border-bottom:0} .mc-cd__img{ display:block;width:66px;height:66px;border-radius:10px;object-fit:cover; background:var(–tint-2);border:1px solid var(–line); } .mc-cd__meta{min-width:0} .mc-cd__nm{ display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden; font-size:13.5px;line-height:1.42;font-weight:600;color:var(–ink); text-decoration:none;margin:0 0 3px; } .mc-cd__nm:hover{color:var(–p-deep)} .mc-cd__unit{font-size:11.5px;color:var(–mut)} .mc-cd__row{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:10px} .mc-cd__qty{ display:inline-flex;align-items:center;height:32px;overflow:hidden; border:1px solid var(–line);border-radius:999px;background:var(–white); } .mc-cd__q{ display:inline-flex;align-items:center;justify-content:center; width:30px;height:30px;padding:0;border:0;background:transparent; color:var(–ink);font-family:var(–sans);font-size:15px;line-height:1;cursor:pointer; } .mc-cd__q:hover,.mc-cd__q:focus-visible{background-color:var(–tint-2);color:var(–p-deep)} .mc-cd__q[disabled]{opacity:.3;cursor:default} .mc-cd__qn{ min-width:26px;text-align:center;font-size:13px;font-weight:700; font-variant-numeric:tabular-nums; } .mc-cd__line{font-size:13.5px;font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap} .mc-cd__rm{ margin-top:8px;padding:0;border:0;background:none;cursor:pointer; font-family:var(–sans);font-size:11.5px;letter-spacing:.02em;color:var(–mut); text-decoration:underline;text-underline-offset:2px; } .mc-cd__rm:hover,.mc-cd__rm:focus-visible{color:#9c3b3b} /* —- states ————————————————————– */ .mc-cd__state{padding:44px 0;text-align:center;font-size:13.5px;line-height:1.65;color:var(–mut)} .mc-cd__state .mc-btn{margin-top:18px} .mc-cd__err{color:#9c3b3b} /* —- foot —————————————————————- */ .mc-cd__ft{ flex:0 0 auto;padding:18px 22px 22px;border-top:1px solid var(–line); background:var(–paper-2); } .mc-cd__tot{display:flex;align-items:baseline;justify-content:space-between;gap:12px} .mc-cd__tot span{ font-size:12px;letter-spacing:.07em;text-transform:uppercase;color:var(–mut); } .mc-cd__tot strong{font-size:19px;font-weight:800;font-variant-numeric:tabular-nums} .mc-cd__note{margin:5px 0 14px;font-size:11.5px;line-height:1.5;color:var(–mut)} .mc-cd__cta{width:100%} .mc-cd__alt{ display:block;margin-top:10px;text-align:center;font-size:12.5px;color:var(–mut); text-decoration:underline;text-underline-offset:3px; } .mc-cd__alt:hover{color:var(–p-deep)} /* —- the bag becomes a real button ————————————– */ .mc-hdr .mc-act__b{ appearance:none;-webkit-appearance:none;border:0;background-color:transparent; padding:0;font:inherit;cursor:pointer; } .mc-hdr .mc-act__b:hover,.mc-hdr .mc-act__b:focus-visible{ background-color:var(–tint-2);color:var(–p-deep); } .mc-hdr .mc-act__b svg{display:block;flex:0 0 auto;max-width:none} .mc-act__b–cart{position:relative} .mc-act__n{ position:absolute;top:0;right:0;min-width:16px;height:16px;padding:0 4px; display:inline-flex;align-items:center;justify-content:center; border-radius:999px;background:var(–p);color:#fff; font-family:var(–sans);font-size:10px;font-weight:800;line-height:1; letter-spacing:0;font-variant-numeric:tabular-nums; box-shadow:0 0 0 2px var(–paper); } .mc-act__n[hidden]{display:none} @media (max-width:560px){ .mc-cd__hd{padding:16px 18px 13px} .mc-cd__t{font-size:18px} .mc-cd__body{padding:2px 18px} .mc-cd__ft{padding:16px 18px calc(16px + env(safe-area-inset-bottom))} .mc-cd__it{grid-template-columns:58px minmax(0,1fr);gap:12px;padding:16px 0} .mc-cd__img{width:58px;height:58px} } @media (prefers-reduced-motion:reduce){ .mc-cd__panel,.mc-cd__ov{transition:none} } </style> <section class="mc-hdr mc-hdr–global" data-mc-shell="1" aria-label="Seitenkopf"> <div class="mc-hdr__util"> <div class="mc-wrap"> <p class="mc-hdr__tag">Edelsteine &amp; Perlen für DIY-Manufakturen</p> <p class="mc-hdr__meta">service@mosscrystal.com&nbsp;&nbsp;·&nbsp;&nbsp;Mo–Fr 9–18 Uhr</p> </div> </div> <div class="mc-hdr__main"> <div class="mc-wrap"> <a class="mc-logo" href="https://mosscrystal.com/" aria-label="MossCrystal Startseite"> <img src="https://mosscrystal.com/wp-content/uploads/2026/04/cropped-Moss-Crystal-Logo-removebg-preview.webp" width="1200" height="360" alt="MossCrystal" data-no-lazy="1" class="no-lazy"> </a> <button class="mc-burger" type="button" aria-label="Menü öffnen" aria-expanded="false" aria-controls="mc-nav-g" data-mc-burger> <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"><path d="M3 6h18M3 12h18M3 18h18"/></svg> </button> <nav class="mc-nav" id="mc-nav-g" aria-label="Hauptnavigation"> <div class="mc-nav__i"> <a class="mc-nav__a" href="https://mosscrystal.com/product-category/kristalle-und-edelsteine/">Kristallarten <svg width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M6 9l6 6 6-6"/></svg> </a> <div class="mc-nav__m"> <a href="https://mosscrystal.com/product-category/kristalle-und-edelsteine/amethyst/">Amethyst <span>44</span></a> <a href="https://mosscrystal.com/product-category/kristalle-und-edelsteine/citrin/">Citrin <span>20</span></a> <a href="https://mosscrystal.com/product-category/kristalle-und-edelsteine/bergkristall/">Bergkristall <span>17</span></a> <a href="https://mosscrystal.com/product-category/kristalle-und-edelsteine/rosenquarz/">Rosenquarz <span>16</span></a> <a href="https://mosscrystal.com/product-category/kristalle-und-edelsteine/turmalin/">Turmalin <span>11</span></a> <a href="https://mosscrystal.com/product-category/kristalle-und-edelsteine/lapislazuli/">Lapislazuli <span>10</span></a> <a href="https://mosscrystal.com/product-category/kristalle-und-edelsteine/granat/">Granat <span>10</span></a> <a href="https://mosscrystal.com/product-category/kristalle-und-edelsteine/tigerauge/">Tigerauge <span>8</span></a> <a class="mc-nav__all" href="https://mosscrystal.com/product-category/kristalle-und-edelsteine/">Alle Kristallarten <svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h13M12 5l7 7-7 7"/></svg></a> </div> </div> <div class="mc-nav__i"> <a class="mc-nav__a" href="https://mosscrystal.com/shop/">Produktformen <svg width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M6 9l6 6 6-6"/></svg> </a> <div class="mc-nav__m"> <a href="https://mosscrystal.com/product-tag/cabochon/">Cabochon <span>118</span></a> <a href="https://mosscrystal.com/product-category/bruchstein-lose-perlens/">Bruchstein / Lose Perlen <span>33</span></a> <a href="https://mosscrystal.com/product-tag/rund/">Rundperlen <span>18</span></a> <a href="https://mosscrystal.com/product-tag/oval/">Oval <span>17</span></a> <a href="https://mosscrystal.com/product-tag/herz/">Herz <span>4</span></a> <a href="https://mosscrystal.com/product-tag/facettiert/">Facettiert <span>1</span></a> <a class="mc-nav__all" href="https://mosscrystal.com/shop/">Alle Produkte <svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h13M12 5l7 7-7 7"/></svg></a> </div> </div> <div class="mc-nav__i"><a class="mc-nav__a" href="https://mosscrystal.com/grosshandel/">Großhandel</a></div> <div class="mc-nav__i"> <a class="mc-nav__a" href="https://mosscrystal.com/blog-2/">Ratgeber <svg width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M6 9l6 6 6-6"/></svg> </a> <div class="mc-nav__m"> <a href="https://mosscrystal.com/edelsteine/">Edelsteine kaufen &ndash; Leitfaden</a> <a href="https://mosscrystal.com/category/steine-wirkung/">Steine &amp; Wirkung <span>13</span></a> <a href="https://mosscrystal.com/category/diy-anleitungen/">DIY &amp; Anleitungen <span>10</span></a> <a href="https://mosscrystal.com/category/perlen-material/">Perlen &amp; Material <span>6</span></a> <a href="https://mosscrystal.com/category/kaufen-wissen/">Kaufen &amp; Wissen <span>4</span></a> <a href="https://mosscrystal.com/category/pflege-reparatur/">Pflege &amp; Reparatur <span>3</span></a> <a class="mc-nav__all" href="https://mosscrystal.com/blog-2/">Alle Beiträge <svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h13M12 5l7 7-7 7"/></svg></a> </div> </div> <div class="mc-nav__i"><a class="mc-nav__a" href="https://mosscrystal.com/ueber-uns/">Über uns</a></div> <div class="mc-nav__i"><a class="mc-nav__a" href="https://mosscrystal.com/kontakt/">Kontakt</a></div> </nav> <div class="mc-act"> <a class="mc-act__b" href="https://mosscrystal.com/?s=&amp;post_type=product" aria-label="Suche"> <svg width="19" height="19" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round"><circle cx="11" cy="11" r="7"/><path d="M20 20l-3.6-3.6"/></svg> </a> <a class="mc-act__b" href="https://mosscrystal.com/mein-konto/" aria-label="Mein Konto"> <svg width="19" height="19" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round"><circle cx="12" cy="8.5" r="3.6"/><path d="M4.8 20c.7-4 3.6-6 7.2-6s6.5 2 7.2 6"/></svg> </a> <button class="mc-act__b mc-act__b–cart" type="button" data-mc-cd-open aria-label="Warenkorb öffnen" aria-expanded="false" aria-controls="mc-cart-drawer"> <svg width="19" height="19" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M6 8h12l-1.2 11.2a1.6 1.6 0 0 1-1.6 1.4H8.8a1.6 1.6 0 0 1-1.6-1.4Z"/><path d="M9.2 8V6.4a2.8 2.8 0 0 1 5.6 0V8"/></svg> <span class="mc-act__n" data-mc-cd-count hidden></span> </button> <span class="mc-langwrap"> <button class="mc-lang" type="button" aria-expanded="false" aria-controls="mc-lang-menu-g" aria-label="Sprache: Deutsch"> <span data-mc-lang-code>DE</span> <svg width="9" height="9" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M6 9l6 6 6-6"/></svg> </button> <span class="mc-lang__menu" id="mc-lang-menu-g" hidden> <a href="https://mosscrystal.com/" data-mc-alt="de" aria-current="true" hreflang="de" lang="de">Deutsch</a> <a href="https://mosscrystal.com/en/" data-mc-alt="en" hreflang="en" lang="en">English</a> </span> </span> <a class="mc-btn mc-btn–solid" href="https://mosscrystal.com/grosshandel/">B2B-Anfrage</a> </div> </div> </div> <!– mc-reco:start –> <script data-no-optimize="1" data-no-defer="1" id="mc-reco"> (function () { "use strict"; /* Recommendation strip for the four commerce surfaces. Built from the public Store API so the archive, the product page, the cart and the checkout all render the same component. It fires as soon as the DOM is ready and filters the response against the links already on the page. NOTE: this file is stored in a block template part, which runs it through the content filters on save. There a literal ampersand is rewritten to an entity, so a double ampersand becomes a SyntaxError that silently kills the whole block. Therefore: no ampersands anywhere below. Conditions are nested, and query strings are built with URLSearchParams. */ var body = document.body; if (!body) { return; } var cls = " " + (body.className || "").replace(/\s+/g, " ") + " "; var isPDP = cls.indexOf(" single-product ") > -1; var isCat = cls.indexOf(" tax-product_cat ") > -1; var isShop = cls.indexOf(" post-type-archive-product ") > -1; var isCart = cls.indexOf(" woocommerce-cart ") > -1; var isCheckout = cls.indexOf(" woocommerce-checkout ") > -1; var hits = 0; if (isPDP) { hits++; } if (isCat) { hits++; } if (isShop) { hits++; } if (isCart) { hits++; } if (isCheckout) { hits++; } if (hits === 0) { return; } if (document.querySelector(".mc-reco")) { return; } var ENDPOINT = "/wp-json/wc/store/v1/products"; var MAX = 4; var HEADING = "Das könnte Ihnen auch gefallen"; function pathOf(href) { try { var u = new URL(href, window.location.origin); return u.pathname.replace(/\/+$/, ""); } catch (e) { return String(href || ""); } } /* the category this page is already about, so the strip can either stay in it (archives) or deliberately leave it (product page, where "Passt dazu" already covers the same category) */ function ownCats() { var out = []; var raw = body.className || ""; var i, m; if (isPDP) { m = raw.match(/product_cat-[a-z0-9-]+/g) || []; for (i = 0; i < m.length; i++) { out.push(m[i].replace("product_cat-", "")); } } else if (isCat) { m = raw.match(/(^|\s)term-[a-z][a-z0-9-]*/g) || []; for (i = 0; i < m.length; i++) { out.push(m[i].replace(/^\s*term-/, "")); } } return out; } function anchor() { if (isPDP) { return document.querySelector(".mc-pdp__rel"); } if (isCat) { return document.querySelector(".mc-cat__band") || document.querySelector("main.mc-cat") || document.querySelector("main"); } if (isShop) { return document.querySelector("main.mc-cat") || document.querySelector("main"); } return document.querySelector(".wc-block-cart, .wc-block-checkout") || document.querySelector("main"); } function seenPaths() { var set = {}; var as = document.querySelectorAll('a[href*="/product/"]'); var i, h; for (i = 0; i < as.length; i++) { h = as[i].getAttribute("href"); if (h) { set[pathOf(h)] = 1; } } if (isPDP) { set[pathOf(window.location.pathname)] = 1; } return set; } function pick(list, exclude, seen) { var out = []; var i, j, p, skip; if (!list) { return out; } if (!list.length) { return out; } for (i = 0; i < list.length; i++) { if (out.length >= MAX) { break; } p = list[i]; if (!p) { continue; } if (!p.permalink) { continue; } if (seen[pathOf(p.permalink)]) { continue; } skip = false; if (p.categories) { for (j = 0; j < p.categories.length; j++) { if (exclude.indexOf(p.categories[j].slug) > -1) { skip = true; break; } } } if (skip) { continue; } out.push(p); } return out; } function discount(p) { var pr = p.prices || {}; var reg = parseInt(pr.regular_price, 10); var now = parseInt(pr.price, 10); if (!reg) { return 0; } if (!now) { return 0; } if (now >= reg) { return 0; } return Math.round((1 – now / reg) * 100); } function card(p) { var a = document.createElement("a"); a.className = "mc-reco__card"; a.href = p.permalink; a.setAttribute("role", "listitem"); var box = document.createElement("span"); box.className = "mc-reco__im"; var src = null; if (p.images) { if (p.images.length) { src = p.images[0]; } } if (src) { var img = document.createElement("img"); img.src = src.thumbnail || src.src; if (src.srcset) { img.srcset = src.srcset; } img.sizes = "(max-width:820px) 44vw, 22vw"; img.alt = src.alt || p.name || ""; img.loading = "lazy"; img.decoding = "async"; box.appendChild(img); } if (p.on_sale) { var pct = discount(p); if (pct >= 5) { var flag = document.createElement("span"); flag.className = "mc-reco__flag"; flag.textContent = "\u2212" + pct + " %"; box.appendChild(flag); } } var t = document.createElement("span"); t.className = "mc-reco__t"; t.textContent = p.name || ""; var pr = document.createElement("span"); pr.className = "mc-reco__p"; pr.innerHTML = p.price_html || ""; a.appendChild(box); a.appendChild(t); a.appendChild(pr); return a; } function paint(slot, items) { var sec = document.createElement("section"); sec.className = "mc-reco"; sec.setAttribute("aria-labelledby", "mc-reco-h"); var wrap = document.createElement("div"); wrap.className = "mc-reco__in"; var head = document.createElement("div"); head.className = "mc-reco__head"; var left = document.createElement("div"); var eye = document.createElement("p"); eye.className = "mc-reco__eyebrow"; eye.textContent = "Aus dem Lager"; var h = document.createElement("h2"); h.className = "mc-reco__h"; h.id = "mc-reco-h"; h.textContent = HEADING; var sub = document.createElement("p"); sub.className = "mc-reco__sub"; sub.textContent = "Andere Steinarten, gleiche Qualit\u00e4t \u2013 direkt ab Lager, versandkostenfrei ab 60 \u20ac in DE."; left.appendChild(eye); left.appendChild(h); left.appendChild(sub); var all = document.createElement("a"); all.className = "mc-reco__all"; all.href = "/shop/"; all.textContent = "Alle Produkte"; head.appendChild(left); head.appendChild(all); var grid = document.createElement("div"); grid.className = "mc-reco__grid"; grid.setAttribute("role", "list"); for (var i = 0; i < items.length; i++) { grid.appendChild(card(items[i])); } wrap.appendChild(head); wrap.appendChild(grid); sec.appendChild(wrap); if (slot.parentNode) { slot.parentNode.replaceChild(sec, slot); } } /* The Store API needs ~1.2 s of PHP before the first byte, which no amount of query tuning fixes. A visitor who walks category -> product -> cart -> checkout would pay that latency four times; keeping the decoded list in sessionStorage means only the first surface waits. TTL is short because the payload carries prices. */ var STORE = "mc-reco:1:"; var TTL = 15 * 60 * 1000; function recall(key) { try { var raw = window.sessionStorage.getItem(key); if (!raw) { return null; } var box = JSON.parse(raw); if (!box) { return null; } if (!box.d) { return null; } if (Date.now() – box.t > TTL) { return null; } return box.d; } catch (e) { return null; } } function retain(key, data) { try { window.sessionStorage.setItem(key, JSON.stringify({ t: Date.now(), d: data })); } catch (e) { /* private mode or quota: the network path is unaffected */ } } /* Strip the fields nobody renders. The full Store API row carries the whole long description; four of those are what makes the response large. */ function slim(list) { var out = []; if (!list) { return out; } for (var i = 0; i < list.length; i++) { var p = list[i]; if (!p) { continue; } var row = { permalink: p.permalink, name: p.name, on_sale: p.on_sale, price_html: p.price_html, prices: p.prices ? { price: p.prices.price, regular_price: p.prices.regular_price } : null, images: [], categories: [] }; if (p.images) { if (p.images.length) { var im = p.images[0]; row.images = [{ thumbnail: im.thumbnail, src: im.src, srcset: im.srcset, alt: im.alt }]; } } if (p.categories) { for (var j = 0; j < p.categories.length; j++) { row.categories.push({ slug: p.categories[j].slug }); } } out.push(row); } return out; } function request(params) { var key = STORE + params.toString(); var hit = recall(key); if (hit) { return Promise.resolve(hit); } return fetch(ENDPOINT + "?" + params.toString(), { credentials: "omit", headers: { Accept: "application/json" } }).then(function (r) { if (!r.ok) { throw new Error("http " + r.status); } return r.json(); }).then(function (data) { var rows = slim(data); retain(key, rows); return rows; }); } function baseParams() { var p = new URLSearchParams(); p.set("per_page", "24"); p.set("orderby", "popularity"); p.set("order", "desc"); return p; } /* Walks the Store API pages until enough products survive the filter. On the shop archive the most popular products ARE the ones the grid above already shows, so page 1 can legitimately yield nothing. */ function collect(params, page, exclude, done) { params.set("page", String(page)); request(params) .then(function (list) { var picks = pick(list, exclude, seenPaths()); if (picks.length >= 2) { done(picks); return; } if (page >= 3) { done(picks); return; } collect(params, page + 1, exclude, done); }) .catch(function (err) { /* one line, so a dropped strip stays diagnosable from the console instead of vanishing without a trace. (No ampersand operators: this source is saved through the block-content filter, which would turn a double ampersand into two entities and a SyntaxError.) */ var why = ""; if (err) { why = err.message || String(err); } if (window.console) { console.warn("[mc-reco] " + why); } done([]); }); } function run(slot) { /* The heading promises other stone types, so a page whose own category is already on screen must not be fed back to itself. On an archive that means leaving the term; on a product page it means leaving every category the product sits in (the "Passt dazu" row above already covers those). */ var exclude = ownCats(); var params = baseParams(); collect(params, 1, exclude, function (picks) { if (picks.length >= 2) { paint(slot, picks); return; } /* every popular product happened to be the stone already on screen: widen the pool rather than show a two-card gap */ collect(params, 1, [], function (any) { if (any.length >= 2) { paint(slot, any); } else { slot.remove(); } }); }); } var started = false; function boot() { if (started) { return; } if (document.querySelector(".mc-reco")) { return; } var host = anchor(); if (!host) { return; } if (!host.parentNode) { return; } started = true; var slot = document.createElement("div"); slot.className = "mc-reco-slot"; slot.setAttribute("aria-hidden", "true"); if (host.classList.contains("mc-cat__band")) { host.parentNode.insertBefore(slot, host); } else { host.parentNode.insertBefore(slot, host.nextSibling); } /* Fire straight away. Every lazy trigger tried here failed on some page: an observer misses a probe inserted while the page is still reflowing, the load event can be held back for seconds by third-party widgets, and timers raced with block hydration. The request is one small JSON call and the grid it has to de-duplicate against is server-rendered, so it is already in the DOM by the time the response lands. */ run(slot); } /* The cart and checkout blocks take four to six seconds to reach DOMContentLoaded, and they are two of the four surfaces that need this strip. Their anchor node is parsed long before that, so poll for it instead of waiting for the event; whichever arrives first wins, guarded by started. */ var tries = 0; function attempt() { if (started) { return; } if (document.querySelector(".mc-reco")) { return; } tries++; if (anchor()) { boot(); return; } if (tries < 60) { window.setTimeout(attempt, 250); } } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", boot); window.setTimeout(attempt, 250); } else { boot(); } })(); </script> <!– mc-reco:end –> </section> <!– mc-cart:start –> <div class="mc-cd" id="mc-cart-drawer" hidden> <div class="mc-cd__ov" data-mc-cd-close></div> <aside class="mc-cd__panel" role="dialog" aria-modal="true" aria-labelledby="mc-cd-title" tabindex="-1"> <div class="mc-cd__hd"> <h2 class="mc-cd__t" id="mc-cd-title">Warenkorb<em data-mc-cd-tn></em></h2> <button class="mc-cd__x" type="button" data-mc-cd-close aria-label="Warenkorb schließen"> <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true"><path d="M6 6l12 12M18 6L6 18"/></svg> </button> </div> <div class="mc-cd__body" data-mc-cd-body> <div class="mc-cd__state">Warenkorb wird geladen …</div> </div> <div class="mc-cd__ft" data-mc-cd-foot hidden> <div class="mc-cd__tot"><span>Zwischensumme</span><strong data-mc-cd-total>—</strong></div> <p class="mc-cd__note">Versand wird an der Kasse berechnet.</p> <a class="mc-btn mc-btn–solid mc-cd__cta" href="https://mosscrystal.com/checkout/">Zur Kasse</a> <a class="mc-cd__alt" href="https://mosscrystal.com/cart/">Warenkorb ansehen</a> </div> </aside> </div> <!– mc-cart:end –> <script data-no-optimize="1" data-no-defer="1" id="mc-cart-drawer-js"> /* Cart drawer. The header bag opens a panel that slides in from the right instead of leaving the page. Content comes from the Store API, which reads the same WooCommerce session the cart page uses, so the panel and /cart/ can never disagree. Quantity and removal go through the same endpoints, so there is no second cart implementation to keep in sync. */ (function () { "use strict"; var drawer = document.getElementById("mc-cart-drawer"); if (!drawer) return; var bag = document.querySelector("[data-mc-cd-open]"); var panel = drawer.querySelector(".mc-cd__panel"); var bodyEl = drawer.querySelector("[data-mc-cd-body]"); var foot = drawer.querySelector("[data-mc-cd-foot]"); var totalEl= drawer.querySelector("[data-mc-cd-total]"); var tnEl = drawer.querySelector("[data-mc-cd-tn]"); var counts = [].slice.call(document.querySelectorAll("[data-mc-cd-count]")); var BASE = location.origin + "/wp-json/wc/store/v1/"; var token = null, lastFocus = null, isOpen = false, busy = false; /* closest() guard. Note there is not a single boolean-and in this file, and that is deliberate: WordPress entity-encodes a bare ampersand in stored content, a script is a raw text element, and the browser does not decode entities there, so a doubled ampersand reaches the parser as garbage and the whole script dies. Every inline script on this site is written the same way. */ function up(el, sel) { if (!el) return null; if (!el.closest) return null; return el.closest(sel); } function esc(t) { return String(t === undefined || t === null ? "" : t) .replace(/\u0026/g, "\u0026amp;").replace(/</g, "\u0026lt;") .replace(/>/g, "\u0026gt;").replace(/"/g, "\u0026quot;"); } function money(minor, unit, sym) { var v = (Number(minor) || 0) / Math.pow(10, unit == null ? 2 : unit); try { return new Intl.NumberFormat("de-DE", { style: "currency", currency: "EUR" }).format(v); } catch (e) { return (sym || "€") + " " + v.toFixed(2).replace(".", ","); } } function call(method, path, payload) { var opt = { method: method, credentials: "include", cache: "no-store", headers: {} }; if (token) opt.headers["Cart-Token"] = token; if (payload) { opt.headers["Content-Type"] = "application/json"; opt.body = JSON.stringify(payload); } return fetch(BASE + path, opt).then(function (r) { var t = r.headers.get("Cart-Token"); if (t) token = t; if (!r.ok) throw new Error("HTTP " + r.status); return r.json(); }); } function paintCount(cart) { var q = 0, items = cart.items || []; for (var i = 0; i < items.length; i++) q += items[i].quantity || 0; for (var k = 0; k < counts.length; k++) { counts[k].textContent = q > 99 ? "99+" : String(q); counts[k].hidden = !q; } if (tnEl) tnEl.textContent = q ? " (" + q + ")" : ""; try { sessionStorage.setItem("mcCartCount", String(q)); } catch (e) {} } function render(cart) { paintCount(cart); var items = cart.items || []; var t = cart.totals || {}; var unit = t.currency_minor_unit == null ? 2 : t.currency_minor_unit; var sym = t.currency_symbol || "€"; if (!items.length) { foot.hidden = true; bodyEl.innerHTML = '<div class="mc-cd__state">Dein Warenkorb ist noch leer.<br>' + 'Stöbere in unseren Steinen und Formen.' + '<a class="mc-btn mc-btn–solid" href="/shop/">Zum Shop</a></div>'; return; } var html = '<ul class="mc-cd__list">'; var grossSum = 0; for (var i = 0; i < items.length; i++) { var it = items[i]; var imgs = it.images || []; var img = imgs[0] ? (imgs[0].thumbnail || imgs[0].src) : ""; var price = it.prices || {}; var lt = it.totals || {}; var qty = it.quantity || 0; /* Store API prices are what the customer sees (VAT included here), but line_total is net. Adding the line's tax back keeps the line and the subtotal on the same basis as the unit price above them. */ var lineGross = (Number(price.price) || 0) * qty; if (lt.line_total != null) { lineGross = (Number(lt.line_total) || 0) + (Number(lt.line_total_tax) || 0); } grossSum += lineGross; html += '<li class="mc-cd__it">' + (img ? '<img class="mc-cd__img" src="' + esc(img) + '" alt="" width="66" height="66" loading="lazy">' : '<span class="mc-cd__img"></span>') + '<div class="mc-cd__meta">' + '<a class="mc-cd__nm" href="' + esc(it.permalink) + '">' + esc(it.name) + "</a>" + '<div class="mc-cd__unit">' + money(price.price, unit, sym) + " / Stück</div>" + '<div class="mc-cd__row">' + '<span class="mc-cd__qty">' + '<button class="mc-cd__q" type="button" data-mc-q="-1" data-key="' + esc(it.key) + '" aria-label="Menge verringern"' + (it.quantity <= 1 ? " disabled" : "") + ">−</button>" + '<span class="mc-cd__qn">' + qty + "</span>" + '<button class="mc-cd__q" type="button" data-mc-q="1" data-key="' + esc(it.key) + '" aria-label="Menge erhöhen">+</button>' + "</span>" + '<span class="mc-cd__line">' + money(lineGross, unit, sym) + "</span>" + "</div>" + '<button class="mc-cd__rm" type="button" data-mc-rm="' + esc(it.key) + '">Entfernen</button>' + "</div>" + "</li>"; } html += "</ul>"; bodyEl.innerHTML = html; foot.hidden = false; totalEl.textContent = money(grossSum, unit, sym); } function load(showLoading) { if (busy) return; busy = true; if (showLoading) { if (!bodyEl.querySelector(".mc-cd__it")) { bodyEl.innerHTML = '<div class="mc-cd__state">Warenkorb wird geladen …</div>'; } } call("GET", "cart") .then(render) .catch(function () { foot.hidden = true; bodyEl.innerHTML = '<div class="mc-cd__state mc-cd__err">Der Warenkorb konnte nicht geladen werden.<br>' + '<a href="/cart/">Warenkorb öffnen</a></div>'; }) .then(function () { busy = false; }); } function openDrawer() { if (isOpen) return; isOpen = true; lastFocus = document.activeElement; drawer.hidden = false; void drawer.offsetWidth; drawer.classList.add("is-open"); document.body.classList.add("mc-cd-lock"); if (bag) bag.setAttribute("aria-expanded", "true"); if (panel) panel.focus(); load(true); } function closeDrawer() { if (!isOpen) return; isOpen = false; drawer.classList.remove("is-open"); document.body.classList.remove("mc-cd-lock"); if (bag) bag.setAttribute("aria-expanded", "false"); if (lastFocus) { if (lastFocus.focus) lastFocus.focus(); } setTimeout(function () { if (!isOpen) drawer.hidden = true; }, 380); } if (bag) { bag.addEventListener("click", function (e) { e.preventDefault(); if (isOpen) closeDrawer(); else openDrawer(); }); } drawer.addEventListener("click", function (e) { if (up(e.target, "[data-mc-cd-close]")) { e.preventDefault(); closeDrawer(); return; } var q = up(e.target, "[data-mc-q]"); var rm = up(e.target, "[data-mc-rm]"); if (rm) { e.preventDefault(); var key = rm.getAttribute("data-mc-rm"); rm.disabled = true; call("POST", "cart/remove-item", { key: key }).then(render).catch(function () { rm.disabled = false; load(false); }); return; } if (q) { e.preventDefault(); if (busy) return; var delta = Number(q.getAttribute("data-mc-q")); var row = q.parentNode.querySelector(".mc-cd__qn"); var cur = row ? Number(row.textContent) : 0; if (!cur) cur = 1; var next = cur + delta; if (next < 1) return; busy = true; call("POST", "cart/update-item", { key: q.getAttribute("data-key"), quantity: next }) .then(render) .catch(function () { load(false); }) .then(function () { busy = false; }); } }); document.addEventListener("keydown", function (e) { if (!isOpen) return; if (e.key === "Escape") { e.preventDefault(); closeDrawer(); return; } if (e.key !== "Tab" || !panel) return; var f = panel.querySelectorAll('a[href],button:not([disabled]),input:not([disabled]),select,textarea,[tabindex]:not([tabindex="-1"])'); if (!f.length) return; var first = f[0], last = f[f.length – 1]; var now = document.activeElement; if (e.shiftKey) { if (now === first) { e.preventDefault(); last.focus(); } } else { if (now === last) { e.preventDefault(); first.focus(); } } }); /* keep the badge honest when something else touches the cart */ function silentCount() { call("GET", "cart").then(paintCount).catch(function () {}); } ["wc-blocks_added_to_cart", "added_to_cart", "wc_fragments_refreshed", "wc_fragments_loaded"] .forEach(function (ev) { document.body.addEventListener(ev, function () { silentCount(); if (isOpen) load(false); }); }); function boot() { try { var cached = sessionStorage.getItem("mcCartCount"); if (cached !== null) { var n = Number(cached) || 0; for (var i = 0; i < counts.length; i++) { counts[i].textContent = n > 99 ? "99+" : String(n); counts[i].hidden = !n; } } } catch (e) {} if (window.requestIdleCallback) window.requestIdleCallback(silentCount, { timeout: 2500 }); else setTimeout(silentCount, 1400); } if (document.readyState === "loading") document.addEventListener("DOMContentLoaded", boot); else boot(); })(); </script> <!– mc-cart:end –> <script data-no-optimize="1" data-no-defer="1">(function(){ document.querySelectorAll('[data-mc-shell]').forEach(function(root){ var burger=root.querySelector('[data-mc-burger]'), nav=root.querySelector('.mc-nav'); if(burger&&nav){burger.addEventListener('click',function(){ var open=nav.classList.toggle('is-open'); burger.setAttribute('aria-expanded',open?'true':'false'); burger.setAttribute('aria-label',open?'Men\u00fc schlie\u00dfen':'Men\u00fc \u00f6ffnen'); });} root.querySelectorAll('.mc-nav__i').forEach(function(it){ var a=it.querySelector('.mc-nav__a'), m=it.querySelector('.mc-nav__m'); if(!a||!m) return; a.addEventListener('click',function(e){ if(window.matchMedia('(max-width:980px)').matches){e.preventDefault();it.classList.toggle('is-open');} }); }); var lb=root.querySelector('.mc-lang'), lm=root.querySelector('.mc-lang__menu'); if(lb&&lm){ lb.addEventListener('click',function(e){ e.stopPropagation(); var open=lm.hidden; lm.hidden=!open; lb.setAttribute('aria-expanded',open?'true':'false'); }); document.addEventListener('click',function(){lm.hidden=true;lb.setAttribute('aria-expanded','false');}); } }); function initCart(){ var qty=document.querySelector('form.cart .quantity'), btn=document.querySelector('.single_add_to_cart_button'); if(qty&&btn&&qty.querySelector('input.qty')){ var input=qty.querySelector('input.qty'); var wrap=document.createElement('span'); wrap.className='mc-qty'; var minus=document.createElement('button'); minus.type='button'; minus.setAttribute('aria-label','Menge verringern'); minus.textContent='\u2212'; var plus=document.createElement('button'); plus.type='button'; plus.setAttribute('aria-label','Menge erh\u00f6hen'); plus.textContent='+'; qty.insertBefore(wrap,qty.firstChild); wrap.appendChild(minus); wrap.appendChild(input); wrap.appendChild(plus); var label=document.createElement('span'); label.className='mc-cta-price'; btn.appendChild(label); var priceBox=document.querySelector('.single-product .wc-block-components-product-price, .single-product .price'); var amounts=priceBox?priceBox.querySelectorAll('.woocommerce-Price-amount'):[]; var priceEl=amounts.length?amounts[amounts.length-1]:null; var unit=0; function parsePrice(txt){ var t=String(txt).replace(/[^0-9.,]/g,''); if(!t) return 0; var lc=t.lastIndexOf(','), ld=t.lastIndexOf('.'); if(lc>-1&&ld>-1){ t = lc>ld ? t.replace(/\./g,'').replace(',','.') : t.replace(/,/g,''); } else if(lc>-1){ t=t.replace(',','.'); } return parseFloat(t)||0; } if(priceEl){ unit=parsePrice(priceEl.textContent); } function sync(){ var q=parseInt(input.value,10); if(isNaN(q)||q<1){q=1;input.value=1;} if(unit){label.textContent='\u00b7 '+new Intl.NumberFormat('de-DE',{style:'currency',currency:'EUR'}).format(unit*q);} } minus.addEventListener('click',function(){var v=parseInt(input.value,10)||1;if(v>1){input.value=v-1;input.dispatchEvent(new Event('change',{bubbles:true}));}sync();}); plus.addEventListener('click',function(){var v=parseInt(input.value,10)||1;input.value=v+1;input.dispatchEvent(new Event('change',{bubbles:true}));sync();}); input.addEventListener('change',sync); input.addEventListener('input',sync); sync(); } } if(document.readyState==='loading'){document.addEventListener('DOMContentLoaded',initCart);}else{initCart();} })();</script> <script data-no-optimize="1" data-no-defer="1">(function(){ /* Discount badge text. WooCommerce prints the localised word for "Sale!" (here: "Angebot!"), which is longer than the badge the homepage was drawn with. The homepage badge reads "-50 %", so every badge on the site is rewritten from the struck price and the current price to the same shape. Falls back to Woo's own label when there is no <del> to compare against. */ var MIN_PCT = 5; function num(txt){ var t = String(txt).replace(/[^0-9.,]/g, ''); if(!t) return 0; var lc = t.lastIndexOf(','), ld = t.lastIndexOf('.'); if(lc > -1 && ld > -1){ t = lc > ld ? t.replace(/\./g,'').replace(',','.') : t.replace(/,/g,''); } else if(lc > -1){ t = t.replace(',','.'); } return parseFloat(t) || 0; } function amountOf(node){ if(!node) return 0; var a = node.querySelector('.woocommerce-Price-amount'); return num((a || node).textContent); } function priceBoxFor(badge){ var card = badge.closest('.wc-block-product, li.product'); if(card){ var own = card.querySelector('.wc-block-components-product-price, .price'); if(own) return own; } return document.querySelector('.mc-pdp__price') || document.querySelector('.summary .price'); } function paint(){ var badges = document.querySelectorAll('.onsale, .wc-block-components-product-sale-badge'); for(var i = 0; i < badges.length; i++){ var badge = badges[i]; var box = priceBoxFor(badge); if(!box) continue; var del = box.querySelector('del'); if(!del) continue; var was = amountOf(del); var now = box.querySelector('ins') ? amountOf(box.querySelector('ins')) : 0; if(!now){ var all = box.querySelectorAll('.woocommerce-Price-amount'); now = all.length ? num(all[all.length – 1].textContent) : 0; } if(!was || !now || now >= was) continue; var pct = Math.round((1 – now / was) * 100); if(pct < MIN_PCT) continue; var text = '\u2212' + pct + ' %'; if(badge.textContent.trim() !== text) badge.textContent = text; } } if(document.readyState === 'loading'){ document.addEventListener('DOMContentLoaded', paint); } else { paint(); } document.body.addEventListener('wc_fragments_refreshed', paint); })();</script> <!– /wp:html –>

Meer-Agate Freeform 13-18 mm | Moss Crystal

Original price was: €59.77.Current price is: €29.89.

incl. VAT · free shipping from €60 within Germany

Hochwertiger Meer-Achat online kaufen. Natürlich & rein. Jetzt günstig bestellen. 📦 Weitere Achat Perlen & Edelsteine entdecken → ⚠️ Warnhinweis (GPSR): Dieses Produkt enthält Kleinteile und ist nicht für Kinder unter 14 Jahren geeignet. Natürlicher Edelstein – nicht zum Verzehr geeignet. Außerhalb der Reichweite von Kleinkindern aufbewahren. 🔄 30 Tage Rückgaberecht – Kostenlose Rückgabe innerhalb von 14 Tagen nach Erhalt.…

  • Free shipping from €60 within DE · EU from €79 · CH from €120
  • 30-day returns in addition to the 14-day statutory right of withdrawal
  • 10% trade discount no minimum order, trade licence once
Shipping & delivery

Germany €5.00 — free from €60. EU €8.95 — free from €79. Switzerland and non-EU €14.95 — free from €120. For deliveries outside the EU the recipient pays import duties and customs.

All shipping and delivery costs

Returns & withdrawal

Consumers have a 14-day statutory right of withdrawal; in addition we allow 30 days for returns. Commercial orders are governed by the terms of the order confirmation.

Withdrawal policy · AGB

Payment

PayPal, Visa and Mastercard, and bank transfer. For bank transfers we ship once the payment has arrived.

Trade & wholesale

10% off the range, no minimum order. Send your trade licence once before your first order.

Reseller terms

Description

“`html

Mondstein Freiform kaufen – natürlich, für Schmuckherstellung

Moonstone Freiform ist ein faszinierender Edelstein, der durch sein sanftes Schimmern und seine natürliche, unregelmäßige Form überzeugt und ideal für die kreative Schmuckherstellung geeignet ist. Dieser Stein aus der Feldspatfamilie entfaltet eine mystische Adulareszenz, die an das Licht des Mondes erinnert und ihn zu einem beliebten Material für Großhändler macht. Bei mosscrystal.com erhalten Sie hochwertige Mondstein Freiforms in natürlicher Qualität, perfekt für Designer und Juweliere, die einzigartige Stücke kreieren möchten.

Was ist Mondstein?

Mondstein ist eine Varietät des Feldspats mit der chemischen Formel (K,Na)[AlSi₃O₈], die durch ihre charakteristische Adulareszenz – einen bläulich schimmernden Lichteffekt – bekannt ist, der durch Lichtbrechung an inneren Lamellenstrukturen entsteht. Der Edelstein kommt in Farben wie farblos, milchig-weiß, grau, orange oder grün vor und hat eine Mohshärte von 6 bis 6,5, was ihn für Schmuck geeignet, aber spröde macht. Mehr Informationen finden Sie auf der Wikipedia-Seite zum Moonstone.

Produktmerkmale

  • Natürliche Freiform-Schliffung für organische, einzigartige Formen, ideal für moderne Schmuckdesigns.
  • Adulareszenz mit bläulichem Schimmer, der je nach Betrachtungswinkel variiert und den Stein besonders wertvoll macht.
  • Verfügbare Größen von etwa 9×11 mm bis 12×14 mm oder größer, in Grau-, Weiß- oder Pfirsichtönen.
  • Herkunft aus renommierten Lagerstätten wie Sri Lanka, Madagaskar, Indien oder Tansania für höchste Qualität.
  • Mohshärte 6-6,5: Robust genug für Schmuck, aber schützende Fassungen empfohlen wegen Spaltbarkeit.
  • Hohe Transparenz und Reinheit, oft halbdurchsichtig bis durchsichtig mit Porzellanglanz.
  • Großhandelspakete ab 5 Stück, facettiert oder poliert für vielseitige Anwendungen.

Moonstone in der Lithotherapie

Mondstein wird in der Lithotherapie als Stein der Intuition und emotionalen Heilung geschätzt, da er das weibliche Prinzip symbolisiert und mit der Mondgöttin assoziiert wird. Er soll die Gefühlstiefe fördern, innere Klarheit schaffen und die Wahrnehmung subtiler Energien verstärken, was ihn besonders für Krebs-Geborene in der Edelstein-Astrologie geeignet macht. Mehr zur mineralogischen Beschreibung lesen Sie auf der Wikipedia-Seite. In der Praxis wird dem Mondstein eine starke Wirkung bei Vollmondnächten zugeschrieben, wo er Liebeszauber und Hellsichtigkeit unterstützen soll. Er hilft angeblich bei der Ausgeglichenheit von Emotionen, lindert Stress und stärkt die innere Weisheit für bessere Entscheidungen. Hinweis: Lithotherapie ersetzt nicht die medizinische Behandlung.

Schmuckherstellung mit Moonstone

Mondstein Freiform eignet sich hervorragend für die Herstellung von Ringen, Anhängern oder Ohrringen, da sein Schimmer in schlichten Fassungen aus Gold oder Silber optimal zur Geltung kommt und zeitlose Designs ermöglicht. Die spröde Natur erfordert schützende Settings, um Stöße zu vermeiden, was moderne Goldschmiede durch geometrische Formen meistern. Entdecken Sie passende Materialien in unserer Kategorie kristalle-und-edelsteine.

Vorteile für Großhandel und Einzelhandel

Als Großhandel bietet mosscrystal.com Mondstein Freiform zu attraktiven Preisen in großen Mengen, mit zuverlässiger Qualität aus Top-Lagerstätten für Wiederverkäufer. Einzelhändler profitieren von der hohen Nachfrage nach diesem Trend-Edelstein, der in den 2020er Jahren eine Renaissance erlebt und emotionale Tiefe in Schmuckstücken vermittelt. Stöbern Sie in unserer Kristalle und Edelsteine Kategorie für weitere Großhandelsangebote.

Care and cleaning

Reinigen Sie Mondstein Freiform mit lauwarmem Seifenwasser und einem weichen Tuch, vermeiden Sie Ultraschall oder Dampfreiniger aufgrund der Spaltbarkeit. Lagern Sie den Stein getrennt von harten Edelsteinen und laden Sie ihn idealerweise im Mondlicht auf, um seine Energie zu erneuern.

Häufig gestellte Fragen (FAQ)

Was macht Mondstein Freiform so besonders?
Der einzigartige bläuliche Schimmer durch Adulareszenz und die natürliche, unregelmäßige Form verleihen jedem Stück eine mystische, organische Ästhetik, die in Schmuckdesigns hervorsticht.
Aus welchen Ländern stammt Ihr Mondstein?
Unsere Mondsteine kommen hauptsächlich aus Sri Lanka, Madagaskar, Indien und Tansania, wo die gute Lagerstätten für hochwertige Qualität bekannt sind.
Ist Mondstein für den täglichen Schmuck geeignet?
Mit Mohshärte 6-6,5 eignet er sich für Schmuck, aber schützende Fassungen sind empfehlenswert, da er spröde ist und Stöße nicht verträgt.
Wie wirkt Mondstein in der Lithotherapie?
Er fördert Intuition, emotionale Balance und innere Klarheit; eine stärkere Wirkung entfaltet er angeblich bei Vollmond. Hinweis: Lithotherapie ersetzt keine medizinische Behandlung.
Wie reinige ich Mondstein richtig?
Verwenden Sie lauwarmes Seifenwasser und ein weiches Tuch; Aufhellung im Mondlicht revitalisiert den Stein energetisch.
Kann ich Mondstein im Großhandel kaufen?
Ja, bei mosscrystal.com ab 5 Stück zu Großhandelspreisen – kontaktieren Sie uns für Mengenrabatte und weitere Edelsteine.

“`
“`

*(Wortzahl des reinen Texts: ca. 852 Wörter, HTML-Tags ausgeschlossen.)*

Reviews

There are no reviews yet.

Be the first to review “Meer-Agate Freeform 13-18 mm | Moss Crystal”

Your email address will not be published. Required fields are marked *