.elementor-kit-29{--e-global-color-primary:#6EC1E4;--e-global-color-secondary:#54595F;--e-global-color-text:#7A7A7A;--e-global-color-accent:#61CE70;--e-global-typography-primary-font-family:"Roboto";--e-global-typography-primary-font-weight:600;--e-global-typography-secondary-font-family:"Roboto Slab";--e-global-typography-secondary-font-weight:400;--e-global-typography-text-font-family:"Roboto";--e-global-typography-text-font-weight:400;--e-global-typography-accent-font-family:"Roboto";--e-global-typography-accent-font-weight:500;}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1140px;}.e-con{--container-max-width:1140px;}.elementor-widget:not(:last-child){margin-block-end:20px;}.elementor-element{--widgets-spacing:20px 20px;}{}h1.entry-title{display:var(--page-title-display);}.elementor-kit-29 e-page-transition{background-color:#FFBC7D;}@media(max-width:1024px){.elementor-section.elementor-section-boxed > .elementor-container{max-width:1024px;}.e-con{--container-max-width:1024px;}}@media(max-width:767px){.elementor-section.elementor-section-boxed > .elementor-container{max-width:767px;}.e-con{--container-max-width:767px;}}/* Start custom CSS *//* CONCEVOIR Phase 1: mockup styles scoped to .ccv sections. Generated by make_site.py from 05-design/tokens.css + 06-mockup/styles.css. Paste into Site Settings > Custom CSS. */
/* CONCEVOIR design tokens — Phase 1, palette v2
   Source: Concevoir Design System v2 (Elliot, 28 Oct 2026), https://claude.ai/artifact/3Sn8t5KfKbkc956U6bQZmM
   (project/tokens.json + components/bundle.css). Day mode only in Phase 1; the system's Dark theme is for later.
   Map to Elementor → Site Settings: Global Colors = the seven palette names; Global Fonts = the type styles. Same names. */

:root {
  /* Palette v2: the only seven colours. Berry, Pink, Dawn, Earth, Ivory and Sage are retired. */
  --linen-white:    #E5E2CF;  /* page background; text on dark grounds */
  --obsidian-black: var(--e-global-color-text, #1B1016);  /* body text (14.2:1 on Linen); Circle block */
  --sunny-yellow:   #FFE24F;  /* highlights only, one per page; always Obsidian on top */
  --jade-green:     #144D4D;  /* call-outs, alternate sections, separators, focus rings */
  --forest-shadow:  var(--e-global-color-primary, #192A28);  /* titles (11.5:1 on Linen), icon outlines, shadow tint */
  --deep-crimson:   var(--e-global-color-secondary, #9C1C48);  /* logo, links, kickers (6.0:1 on Linen) */
  --vivid-coral:    var(--e-global-color-accent, #FF5A5A);  /* main visual colour: image fields, primary CTA. Never text on Linen (2.3:1) */

  /* Linen at 50% on white: the page ground (decision 28 Oct). A tint, not one of the system's seven */
  --linen-50: #F2F1E7;

  /* Semantic roles (Day). Coloured grounds re-declare these in styles.css so text keeps passing. */
  --surface: var(--linen-50);             /* page, footer */
  --surface-card: var(--linen-white);     /* header bar, cards, tiles, panels, menus: full Linen on the lighter page */
  /* Hero panel glass over a photo (2 Nov): tint at this opacity, photo blurred behind. Solid --surface-card without backdrop-filter */
  --panel-glass-tint: var(--linen-50);
  --panel-glass-opacity: 60%;
  --panel-glass-blur: 12px;
  --ink: var(--obsidian-black);
  --title: var(--forest-shadow);
  --ink-muted: rgba(27, 16, 22, 0.72);   /* 6.5:1 on Linen */
  --accent-text: var(--deep-crimson);
  --icon-stroke: var(--forest-shadow);
  --hairline: rgba(27, 16, 22, 0.14);
  --separator: var(--jade-green);        /* 2px brand rule */
  --cta: var(--vivid-coral);
  --on-cta: var(--obsidian-black);        /* 6.1:1. Never white on Coral */
  --cta-alt: var(--deep-crimson);
  --on-cta-alt: var(--linen-white);
  --callout: var(--jade-green);
  --on-callout: var(--linen-white);       /* 7.3:1 */
  --highlight: var(--sunny-yellow);
  --on-highlight: var(--obsidian-black);  /* 14.4:1 */
  --error: var(--deep-crimson);
  --scrim: rgba(27, 16, 22, 0.55);
  --focus: var(--jade-green);
  --review-star: var(--deep-crimson);     /* review card stars, filled */
  --review-star-empty: var(--hairline);   /* review card stars, unfilled part */

  /* Type: Libre Baskerville for display and headings, Montserrat for everything else */
  --font-serif: var(--e-global-typography-primary-font-family, 'Libre Baskerville'), Georgia, serif;
  --font-sans: var(--e-global-typography-text-font-family, 'Montserrat'), system-ui, sans-serif;
  /* System sizes; the display styles and headline-lg scale down on phones so headlines hold two lines */
  --type-display: clamp(2.125rem, 1.2rem + 3.4vw, 3.75rem);  /* 34→60px, 700, lh 1.08 */
  --type-display-sm: clamp(1.625rem, 1rem + 2vw, 2.5rem);    /* 26→40px, 700, lh 1.15 */
  --type-headline-lg: clamp(1.5rem, 1rem + 1.6vw, 1.875rem); /* 24→30px, 700, lh 1.25 */
  --type-headline-md: 1.5rem;     /* 24px, 700, lh 1.3 */
  --type-headline-sm: 1.25rem;    /* 20px, 700, lh 1.35 */
  --type-body-lg: 1.1875rem;      /* 19px, lh 1.65: reading text */
  --type-body-md: 1rem;           /* 16px, lh 1.65: UI text */
  --type-body-sm: 0.875rem;       /* 14px, lh 1.55: notes, breadcrumbs */
  --type-kicker: 0.8125rem;       /* 13px, 600, +0.04em, sentence case */
  --type-label: 0.875rem;         /* 14px, 600, lh 1: buttons */
  --type-caption: 0.75rem;        /* 12px: badges, captions */

  /* Space */
  --space-2xs: 4px;
  --space-xs: 8px;
  --space-sm: 12px;
  --space-md: 20px;
  --space-lg: 32px;
  --space-xl: 50px;
  --space-2xl: 80px;
  --section-py: 96px;
  --section-py-mobile: 56px;
  --container-max: 1180px;
  --container-padding: 24px;

  /* Shape */
  --radius-sm: 6px;       /* inputs */
  --radius-md: 14px;      /* tiles, menus, accordions */
  --radius-lg: 20px;      /* cards, photos */
  --radius-xl: 28px;      /* hero images */
  --radius-pill: 9999px;  /* buttons, badges */

  /* Elevation: Forest Shadow falloff only, never black or grey */
  --elev-1: 0 1px 2px 0 rgba(25, 42, 40, 0.06), 0 1px 3px 0 rgba(25, 42, 40, 0.08);
  --elev-2: 0 6px 16px -6px rgba(25, 42, 40, 0.14), 0 2px 6px -2px rgba(25, 42, 40, 0.06);
  --elev-3: 0 16px 36px -12px rgba(25, 42, 40, 0.18), 0 4px 10px -4px rgba(25, 42, 40, 0.08);
  --elev-4: 0 28px 60px -16px rgba(25, 42, 40, 0.22), 0 8px 18px -8px rgba(25, 42, 40, 0.10);

  /* Motion: calm, gentle, smooth. Nothing under 240ms, no curve outside 0–1 */
  --dur-gentle: 240ms;
  --dur-base: 400ms;
  --dur-slow: 700ms;
  --dur-scene: 1200ms;
  --ease-calm: cubic-bezier(0.45, 0, 0.55, 1);
  --ease-settle: cubic-bezier(0.25, 0.1, 0.25, 1);
}

body{margin:0;background:var(--surface)}.ccv .elementor-widget-html,.ccv .elementor-widget-container{margin:0}.ccv.elementor-section>.elementor-container{max-width:none}.ccv.ccv-pdp>.elementor-container{max-width:calc(var(--container-max,1180px) - 2*var(--space-lg,32px) + 30px)}
/* Mockup v1.1 on the CONCEVOIR design system v2 (28 Oct). Every value comes from tokens.css. */

.ccv *,.ccv *::before,.ccv *::after{box-sizing:border-box}
.ccv{scroll-behavior:smooth}
.ccv{margin:0;background:var(--surface);color:var(--ink);font-family:var(--font-sans);font-size:var(--type-body-md);line-height:1.65;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
.ccv img{max-width:100%;display:block}
/* Links: colour and weight, never an underline (brand rule). Weight is the non-colour cue in running text */
.ccv a{color:var(--accent-text);text-decoration:none;font-weight:500;transition:color var(--dur-gentle) var(--ease-calm)}
.ccv a:hover{color:var(--title)}
.ccv p a,.ccv li a{font-weight:600}
.ccv :focus-visible{outline:2px solid var(--focus);outline-offset:3px}
.ccv h1,.ccv h2,.ccv h3,.ccv h4{font-family:var(--font-serif);font-weight:700;color:var(--title);margin:0 0 var(--space-md);text-wrap:balance}
.ccv h1{font-size:var(--type-display);line-height:1.08;letter-spacing:-.01em}
.ccv h2{font-size:var(--type-headline-lg);line-height:1.25}
.ccv h3{font-size:var(--type-headline-md);line-height:1.3}
.ccv h4{font-size:var(--type-headline-sm);line-height:1.35}
.ccv p{font-size:var(--type-body-lg);margin:0 0 1em}
.ccv em{font-style:italic}
/* Product name *folli*care: one unbreakable word, even inside flex rows such as buttons */
.ccv .pn{white-space:nowrap}
.ccv b,.ccv strong{font-weight:600}
.ccv .container{max-width:var(--container-max);margin:0 auto;padding:0 var(--container-padding)}
@media(min-width:768px){.ccv .container{padding:0 var(--space-lg)}}
.ccv .section{padding:var(--section-py-mobile) 0}
@media(min-width:768px){.ccv .section{padding:var(--section-py) 0}}
.ccv .display{font-family:var(--font-serif);font-weight:700;font-size:var(--type-display);line-height:1.08;letter-spacing:-.01em;color:var(--title);margin:0 0 var(--space-md);text-wrap:balance}
.ccv .lead,.ccv .answer{font-size:var(--type-body-lg);max-width:60ch}
.ccv .muted{color:var(--ink-muted)}
.ccv .small{font-size:var(--type-body-sm)}
.ccv .center{text-align:center}
.ccv .center .lead{margin-left:auto;margin-right:auto}
/* Grounds. Each re-declares the roles so text, links and focus rings pass on it */
.ccv .section--jade{background:var(--jade-green);color:var(--ink);--title:var(--linen-white);--ink:var(--linen-white);--ink-muted:var(--linen-white);--accent-text:var(--linen-white);--icon-stroke:var(--linen-white);--hairline:rgba(229,226,207,.24);--focus:var(--linen-white)}
.ccv .section--coral{background:var(--vivid-coral);color:var(--ink);--title:var(--obsidian-black);--ink:var(--obsidian-black);--ink-muted:var(--obsidian-black);--accent-text:var(--obsidian-black);--icon-stroke:var(--obsidian-black);--hairline:rgba(27,16,22,.2);--focus:var(--obsidian-black)}
/* Anything set on Linen inside a coloured ground goes back to the Day roles */
.ccv .card,.ccv .door,.ccv .fact,.ccv .size,.ccv .faq details,.ccv .dropdown,.ccv .frame span,.ccv table.data,.ccv .product-strip,.ccv ol.steps li,.ccv .chart,.ccv .post-card{color:var(--ink);--title:var(--forest-shadow);--ink:var(--obsidian-black);--ink-muted:rgba(27,16,22,.72);--accent-text:var(--deep-crimson);--icon-stroke:var(--forest-shadow);--hairline:rgba(27,16,22,.14);--focus:var(--jade-green)}
/* Obsidian grounds: Linen text, Coral accents (Crimson fails on Obsidian) */
.ccv .annc,.ccv .circle,.ccv .circle-card{color:var(--ink);--title:var(--linen-white);--ink:var(--linen-white);--ink-muted:rgba(229,226,207,.74);--accent-text:var(--vivid-coral);--hairline:rgba(229,226,207,.2);--focus:var(--linen-white)}
/* Buttons: pills, 50px, label style. Primary = Coral with Obsidian text, one per view */
.ccv .btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-xs);min-height:50px;padding:14px 30px;border-radius:var(--radius-pill);font:600 var(--type-label)/1 var(--font-sans);letter-spacing:.01em;border:1.5px solid transparent;cursor:pointer;text-decoration:none;transition:background-color var(--dur-base) var(--ease-calm),color var(--dur-base) var(--ease-calm),border-color var(--dur-base) var(--ease-calm)}
.ccv .btn--primary{background:var(--cta);color:var(--on-cta)}
.ccv .btn--primary:hover{background:var(--deep-crimson);color:var(--linen-white)}
.ccv .btn--accent{background:var(--cta-alt);color:var(--on-cta-alt)}
.ccv .btn--accent:hover{background:var(--jade-green);color:var(--linen-white)}
.ccv .btn--secondary{background:transparent;color:var(--title);border-color:var(--title)}
.ccv .btn--secondary:hover{background:var(--title);color:var(--surface)}
.ccv .section--jade .btn--secondary:hover{color:var(--jade-green)}
.ccv .btn--block{width:100%}
.ccv .btn-row{display:flex;flex-wrap:wrap;gap:var(--space-md);align-items:center}
.ccv .btn-row>a:not(.btn){font-weight:600}
/* Header: sticky Linen bar, the supplied Crimson logo */
.ccv .annc{background:var(--obsidian-black);text-align:center;font-size:var(--type-body-sm);padding:var(--space-xs) var(--container-padding)}
.ccv .site-header{position:sticky;top:0;z-index:50;background:var(--surface-card)}
.ccv .site-header .bar{display:flex;align-items:center;justify-content:space-between;height:64px;gap:var(--space-md)}
.ccv .logo{display:inline-flex;padding:6px 0}
.ccv .logo img{width:136px;height:auto}
.ccv .nav{display:none;gap:var(--space-lg);align-items:center}
.ccv .nav details{position:relative}
.ccv .nav summary{list-style:none;cursor:pointer;font-weight:500;color:var(--ink)}
.ccv .nav summary::-webkit-details-marker{display:none}
/* Drawn chevrons in place of ▾ and +/− glyphs (no unicode glyphs as icons) */
.ccv .nav summary::after,.ccv .faq summary::after{content:"";display:inline-block;width:.45em;height:.45em;margin-left:.55em;border-right:1.5px solid var(--accent-text);border-bottom:1.5px solid var(--accent-text);transform:translateY(-.2em) rotate(45deg);transition:transform var(--dur-base) var(--ease-calm)}
.ccv .nav details[open]>summary::after,.ccv .faq details[open]>summary::after{transform:translateY(.1em) rotate(225deg)}
.ccv .nav>a{color:var(--ink)}
/* The dropdown is a popover: elev-3 */
.ccv .dropdown{position:absolute;top:2.4rem;left:-1rem;background:var(--surface-card);border:1px solid var(--hairline);border-radius:var(--radius-md);box-shadow:var(--elev-3);padding:var(--space-xs);min-width:290px}
/* invisible bridge over the gap under the menu label, so a hover-opened menu stays open on the way down */
.ccv .dropdown::before{content:"";position:absolute;left:0;right:0;bottom:100%;height:1rem}
.ccv .dropdown a{display:block;padding:10px 14px;color:var(--ink)}
.ccv .dropdown b{display:block;font-weight:600;transition:color var(--dur-gentle) var(--ease-calm)}
/* Menu hover (4 Nov): a 2px Coral underline on desktop and mobile; the text stays ink, as Coral text on Linen is 2.3:1 */
.ccv .nav>a,.ccv .nav summary,.ccv .dropdown b,.ccv .mobile-menu a{text-decoration:underline 2px transparent;text-underline-offset:.35em;transition:text-decoration-color var(--dur-gentle) var(--ease-calm)}
.ccv .nav>a:hover,.ccv .nav>a:focus-visible,.ccv .nav summary:hover,.ccv .nav summary:focus-visible,.ccv .dropdown a:hover b,.ccv .dropdown a:focus-visible b,.ccv .mobile-menu a:hover,.ccv .mobile-menu a:focus-visible,.ccv .mobile-menu a:active{text-decoration-color:var(--vivid-coral)}
.ccv .dropdown span{font-size:var(--type-body-sm);color:var(--ink-muted)}
.ccv .header-actions{display:flex;align-items:center;gap:var(--space-md)}
.ccv .cart{color:var(--ink);font-weight:600;font-size:var(--type-body-sm)}
.ccv .cart b{display:inline-grid;place-items:center;background:var(--deep-crimson);color:var(--linen-white);border-radius:var(--radius-pill);min-width:22px;height:22px;font-size:var(--type-caption);margin-left:4px}
/* Menu button: a hamburger whose outer bars turn into an X while the menu is open. 44px target; the icon sits flush right */
.ccv .menu-btn{display:inline-grid;place-items:center;width:44px;height:44px;margin-right:-10px;padding:0;background:none;border:0;color:var(--ink);cursor:pointer}
.ccv .menu-btn svg{fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}
.ccv .menu-btn path{transition:transform var(--dur-base) var(--ease-calm),opacity var(--dur-base) var(--ease-calm)}
.ccv .menu-btn .l1{transform-origin:12px 7px}
.ccv .menu-btn .l3{transform-origin:12px 17px}
.ccv .menu-btn[aria-expanded="true"] .l1{transform:translateY(5px) rotate(45deg)}
.ccv .menu-btn[aria-expanded="true"] .l2{opacity:0}
.ccv .menu-btn[aria-expanded="true"] .l3{transform:translateY(-5px) rotate(-45deg)}
@media(prefers-reduced-motion:reduce){.ccv .menu-btn path{transition:none}}
.ccv .hide-mobile{display:none}
@media(min-width:960px){.ccv .nav{display:flex}
.ccv .menu-btn{display:none}
.ccv .hide-mobile{display:inline-flex}
.ccv .site-header .bar{height:72px}
.ccv .logo img{width:168px}}
.ccv .mobile-menu{display:none;padding:var(--space-xs) var(--container-padding) var(--space-lg);border-top:1px solid var(--hairline)}
.ccv .mobile-menu.open{display:block}
.ccv .menu-label,.ccv .footer-label{font:600 var(--type-kicker)/1.4 var(--font-sans);letter-spacing:.04em;color:var(--accent-text);margin:var(--space-md) 0 var(--space-xs)}
.ccv .mobile-menu a{display:flex;justify-content:space-between;gap:var(--space-md);padding:10px 0;color:var(--ink)}
.ccv .mobile-menu a>span:not(.pn){color:var(--ink-muted);font-size:var(--type-body-sm)}
/* Hero: the photograph fills the section; the copy sits on a Linen panel so it reads on any picture */
.ccv .hero{position:relative;overflow:hidden;isolation:isolate}
.ccv .hero .hero-media{position:absolute;inset:0;z-index:-1;border-radius:0;aspect-ratio:auto;place-items:start center;padding:var(--space-lg) var(--container-padding)}
@media(min-width:900px){.ccv .hero .hero-media{place-items:center end;padding:var(--space-2xl)}}
.ccv .hero .hero-media span{max-width:24ch}
.ccv .hero .hero-media>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 0}
.ccv .hero .container{display:flex;align-items:center;padding-top:160px;padding-bottom:var(--container-padding)}
@media(min-width:900px){.ccv .hero .container{min-height:clamp(600px,78vh,760px);padding-top:var(--space-2xl);padding-bottom:var(--space-2xl)}}
.ccv .hero-panel{background:var(--surface-card);border-radius:var(--radius-xl);box-shadow:var(--elev-3);padding:var(--space-lg) var(--space-md);max-width:640px}
@media(min-width:768px){.ccv .hero-panel{padding:var(--space-xl)}}
/* Phones: the panel becomes an edge-to-edge Linen sheet over the photo, so headlines get the full measure */
@media(max-width:767px){.ccv .hero .container{padding-left:0;padding-right:0;padding-bottom:0}
.ccv .hero-panel{max-width:none;border-radius:var(--radius-xl) var(--radius-xl) 0 0;padding:var(--space-lg) var(--container-padding);box-shadow:none}}
@media(max-width:767px){/* Phones (2 Nov): the photo shows as a 4:5 block and the panel overlaps only its bottom 40% (40% of 125vw = 50vw), then runs on below it */
.ccv .hero .hero-media{position:relative;inset:auto;aspect-ratio:4/5}
.ccv .hero .container{padding-top:0;margin-top:-50vw}}
.ccv .hero:not(.hero--inner) h1{font:600 var(--type-body-lg)/1.5 var(--font-sans);letter-spacing:0;color:var(--title)}
@supports ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){/* Hero panels on every page: frosted glass over the photo, values from the --panel-glass-* tokens (2 Nov). Browsers without backdrop-filter keep the solid panel */
.ccv .hero .hero-panel{background:color-mix(in srgb,var(--panel-glass-tint) var(--panel-glass-opacity),transparent);-webkit-backdrop-filter:blur(var(--panel-glass-blur));backdrop-filter:blur(var(--panel-glass-blur))}}
/* Inner pages (hubs, Shop, About): the same photo background, a shorter band and a wider panel for question H1s */
@media(min-width:900px){.ccv .hero--inner .container{min-height:clamp(440px,60vh,600px)}}
.ccv .hero--inner .hero-panel{max-width:760px}
.ccv .hero+.section{border-top:2px solid var(--separator)}
/* Calm reveal: copy fades in with a 12px rise; pictures fade at scene pace */
@keyframes ccv-reveal{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
@keyframes ccv-fade{from{opacity:0}to{opacity:1}}
.ccv .hero-panel,.ccv .pdp>div:last-child{animation:ccv-reveal var(--dur-slow) var(--ease-settle) both}
.ccv .hero-media,.ccv .pdp>div:first-child{animation:ccv-fade var(--dur-scene) var(--ease-calm) both}
@media(prefers-reduced-motion:reduce){.ccv *,.ccv *::before,.ccv *::after{animation-duration:1ms!important;transition-duration:1ms!important}
.ccv{scroll-behavior:auto}}
/* Image slots (mockup only): a light grey checkerboard until real photography arrives (not a brand colour) */
.ccv .frame{position:relative;border-radius:var(--radius-lg);background:repeating-conic-gradient(#E6E6E6 0 25%,#F4F4F4 0 50%) 0 0/32px 32px;aspect-ratio:4/5;display:grid;place-items:center;overflow:hidden}
.ccv .frame>span{position:relative;font-size:var(--type-body-sm);line-height:1.5;text-align:center;padding:var(--space-sm) var(--space-md);max-width:32ch;background:var(--surface-card);border-radius:var(--radius-md)}
.ccv .frame>span:empty{display:none}
.ccv .frame>span b{display:block;color:var(--accent-text);margin-bottom:2px}
.ccv .frame--wide{aspect-ratio:16/10}
.ccv .frame--square{aspect-ratio:1/1}
.ccv .frame>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
/* Trust bar: a Vivid Coral band (Obsidian text and icons, 6.1:1) between two 2px Jade rules, drifting slowly left to right.
   The first list is the real one; the copies are aria-hidden and only close the loop.
   Pauses on hover; still under reduced motion. No pause button (removed at Elliot's request, 28 Oct) */
.ccv .trust{position:relative;overflow:hidden;background:var(--vivid-coral);color:var(--ink);border-top:2px solid var(--separator);border-bottom:2px solid var(--separator);--title:var(--obsidian-black);--ink:var(--obsidian-black);--icon-stroke:var(--obsidian-black);--hairline:rgba(27,16,22,.2);--focus:var(--obsidian-black)}
.ccv .trust-track{display:flex;width:max-content}
.ccv .trust.is-looping .trust-track{animation:ccv-drift 90s linear infinite}
/* Without the loop (no script, or reduced motion) the one list sits still and wraps */
.ccv .trust:not(.is-looping) .trust-track{width:auto}
.ccv .trust:not(.is-looping) ul{flex-wrap:wrap;gap:var(--space-sm) var(--space-lg);padding:var(--space-md) var(--container-padding)}
.ccv .trust:not(.is-looping) li{white-space:normal}
@keyframes ccv-drift{from{transform:translateX(-50%)}to{transform:translateX(0)}}
.ccv .trust:hover .trust-track{animation-play-state:paused}
.ccv .trust ul{list-style:none;margin:0;padding:var(--space-md) var(--space-2xl) var(--space-md) 0;display:flex;gap:var(--space-2xl)}
.ccv .trust li{display:flex;gap:var(--space-sm);align-items:center;white-space:nowrap}
.ccv .trust svg{flex:0 0 28px;color:var(--icon-stroke)}
@media(prefers-reduced-motion:reduce){.ccv .trust-track{animation:none!important;width:auto}
.ccv .trust ul[aria-hidden]{display:none}
.ccv .trust ul{flex-wrap:wrap;gap:var(--space-sm) var(--space-lg);padding:var(--space-md) var(--container-padding)}
.ccv .trust li{white-space:normal}}
/* Cards (design system): Linen ground, hairline, elev-2, 20px radius */
.ccv .grid{display:grid;gap:var(--space-lg)}
@media(min-width:768px){.ccv .grid-3{grid-template-columns:repeat(3,1fr)}
.ccv .grid-2{grid-template-columns:repeat(2,1fr)}}
.ccv .card{background:var(--surface-card);border:1px solid var(--hairline);border-radius:var(--radius-lg);box-shadow:var(--elev-2);padding:var(--space-lg);display:flex;flex-direction:column;gap:var(--space-xs)}
.ccv .card .frame{aspect-ratio:16/10;margin-bottom:var(--space-xs)}
.ccv .card h3{font-size:var(--type-headline-sm);line-height:1.35;margin:0}
.ccv .card p{font-size:var(--type-body-md);margin:0}
.ccv .card .more{margin-top:auto;font-weight:600}
/* Outline badge: the neutral product label */
.ccv .chip{display:inline-block;align-self:flex-start;color:var(--title);box-shadow:inset 0 0 0 1px var(--title);font:600 var(--type-caption)/1.4 var(--font-sans);letter-spacing:.01em;padding:5px 14px;border-radius:var(--radius-pill)}
/* Concern doors (Home): three card columns from 900px, picture on top; the foot lines up across the row */
.ccv .doors{display:grid;gap:var(--space-lg);margin-top:var(--space-lg)}
@media(min-width:900px){.ccv .doors{grid-template-columns:repeat(3,1fr)}}
.ccv .door{display:flex;flex-direction:column;gap:var(--space-md);background:var(--surface-card);border:1px solid var(--hairline);border-radius:var(--radius-lg);box-shadow:var(--elev-2);padding:var(--space-md);font-weight:400;transition:box-shadow var(--dur-base) var(--ease-calm)}
.ccv .door:hover{box-shadow:var(--elev-3);color:var(--ink)}
@media(min-width:768px){.ccv .door{padding:var(--space-lg)}}
.ccv .door .frame{aspect-ratio:3/2}
.ccv .door>div:last-child{display:flex;flex-direction:column;flex:1}
.ccv .door h3{font-size:var(--type-headline-md);line-height:1.3;margin:0 0 var(--space-xs)}
.ccv .door p{max-width:40ch}
.ccv .door-foot{display:flex;flex-wrap:wrap;gap:var(--space-md);align-items:center;margin-top:auto}
.ccv .door-foot .more{font-weight:600;color:var(--accent-text)}
.ccv .product-card .frame{aspect-ratio:1/1}
.ccv .name,.ccv .card .name,.ccv .product-strip .name{font:700 var(--type-headline-md)/1.3 var(--font-serif);color:var(--title);margin:0}
.ccv .price,.ccv .card .price{font:700 var(--type-body-lg)/1.4 var(--font-sans);color:var(--title)}
.ccv .rating,.ccv .card .rating{font-size:var(--type-body-sm);font-weight:400;color:var(--ink-muted)}
/* Price and button sit at the card foot, so they line up across a row whatever the copy above them */
.ccv .product-card .price{margin-top:auto;padding-top:var(--space-sm)}
/* Dark card: Obsidian ground, Linen text, Coral button */
.ccv .circle-card{background:var(--obsidian-black);border-color:transparent;box-shadow:none}
.ccv .circle-card h2,.ccv .circle-card h3{font-size:var(--type-headline-md);line-height:1.3}
/* Feature */
.ccv .feature{display:grid;gap:var(--space-lg);align-items:center}
@media(min-width:900px){.ccv .feature{grid-template-columns:1fr 1fr;gap:var(--space-xl)}}
.ccv .facts{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-sm);margin:var(--space-lg) 0}
.ccv .fact{background:var(--surface-card);border:1px solid var(--hairline);border-radius:var(--radius-md);padding:var(--space-md)}
.ccv .fact b{display:block;font:700 var(--type-headline-md)/1.2 var(--font-serif);color:var(--accent-text)}
.ccv .fact span{font-size:var(--type-body-sm);color:var(--ink-muted)}
/* Research diagram (folliCare): grouped horizontal bars on one 0–100% axis.
   3.6:1 = Coral, 40:1 = Crimson (validated: CVD ΔE 22, normal ΔE 24). Values are text at each bar end,
   labels stay in ink, and a table view backs Coral's low surface contrast. Shapes only, no "% increase" wording */
.ccv .chart{background:var(--surface-card);border-radius:var(--radius-lg);padding:var(--space-lg) var(--space-md);margin:var(--space-lg) 0;--bar-a:var(--vivid-coral);--bar-b:var(--deep-crimson)}
@media(min-width:768px){.ccv .chart{padding:var(--space-lg)}}
.ccv .chart-title{font:700 var(--type-headline-sm)/1.35 var(--font-serif);color:var(--title);margin:0 0 var(--space-sm)}
.ccv .chart-legend{list-style:none;margin:0 0 var(--space-md);padding:0;display:flex;flex-wrap:wrap;gap:var(--space-xs) var(--space-lg);font-size:var(--type-body-sm)}
.ccv .chart-legend li{display:inline-flex;align-items:center;gap:var(--space-xs)}
.ccv .chart-key{width:14px;height:14px;border-radius:4px}
.ccv .chart-key--a{background:var(--bar-a)}
.ccv .chart-key--b{background:var(--bar-b)}
.ccv .chart-group{margin-top:var(--space-md)}
.ccv .chart-group-label{font-size:var(--type-body-md);font-weight:600;color:var(--title);margin:0 0 var(--space-xs)}
.ccv .bar-row{display:grid;grid-template-columns:48px minmax(0,1fr);align-items:center;gap:var(--space-sm);margin-bottom:2px}
.ccv .bar-name{font-size:var(--type-body-sm);font-weight:600;color:var(--ink)}
/* Track carries the recessive 25% gridlines; bars sit on the left baseline with a 4px rounded data end */
.ccv .bar-track{position:relative;height:28px;background:linear-gradient(90deg,var(--hairline) 1px,transparent 1px) 0 0/25% 100%;box-shadow:inset -1px 0 0 var(--hairline)}
.ccv .chart-bar{position:absolute;left:0;top:4px;bottom:4px;width:var(--v);border-radius:0 4px 4px 0}
.ccv .chart-bar--a{background:var(--bar-a)}
.ccv .chart-bar--b{background:var(--bar-b)}
.ccv .bar-value{position:absolute;left:var(--v);top:50%;transform:translateY(-50%);margin-left:var(--space-xs);font-size:var(--type-body-sm);font-weight:600;color:var(--ink);white-space:nowrap}
.ccv .chart-axis{display:flex;justify-content:space-between;margin:var(--space-xs) 0 0 60px;font-size:var(--type-caption);color:var(--ink-muted)}
.ccv .chart-table{margin-top:var(--space-md);font-size:var(--type-body-sm)}
.ccv .chart-table summary{cursor:pointer;font-weight:600;color:var(--accent-text)}
.ccv .chart-table table{margin-top:var(--space-sm)}
/* Proof statement (Home): one large figure, two supporting points */
.ccv .proof{display:grid;gap:var(--space-xl);align-items:end}
@media(min-width:900px){.ccv .proof{grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:var(--space-2xl)}}
.ccv .proof>div>a,.ccv .proof-list a{font-weight:600}
.ccv .proof-list{display:grid;gap:var(--space-lg)}
.ccv .proof-list h3{font-size:var(--type-headline-sm);line-height:1.35;margin:0 0 var(--space-xs)}
.ccv .proof-list p{font-size:var(--type-body-md);margin:0 0 var(--space-xs)}
/* The page's one Sunny Yellow highlight: a marker behind the key number */
.ccv .stat-big{display:inline-block;font:700 clamp(2.125rem,0.68rem + 6.18vw,5.3125rem)/1 var(--font-serif);color:var(--on-highlight);background:linear-gradient(transparent 18%,var(--highlight) 18%,var(--highlight) 88%,transparent 88%);padding:0 .15em;margin:0 0 var(--space-md)}
/* Figure beside its sentence (3 Nov): Home proof block. The 85+ figure has its own size, 34px on phones up to 85px from 1200px wide */
.ccv .stat-row{display:flex;align-items:center;gap:var(--space-md) var(--space-lg);margin:0 0 var(--space-md)}
.ccv .stat-row .stat-big{flex:none;margin:0}
.ccv .stat-row .lead{margin:0}
/* Circle block: Obsidian, words left, what members get right */
.ccv .circle{background:var(--obsidian-black);padding:var(--section-py-mobile) 0}
@media(min-width:768px){.ccv .circle{padding:var(--section-py) 0}}
.ccv .circle .container{display:grid;gap:var(--space-lg);align-items:center}
@media(min-width:900px){.ccv .circle .container{grid-template-columns:1fr 1fr;gap:var(--space-2xl)}}
.ccv .circle p{color:var(--ink-muted);max-width:58ch}
.ccv .circle-perks{list-style:none;margin:0;padding:0;display:grid;gap:var(--space-md);font-size:var(--type-body-lg)}
.ccv .circle-perks li{position:relative;padding-left:1.75rem}
.ccv .circle-perks li::before{content:"";position:absolute;left:0;top:.55em;width:.7rem;height:.7rem;border-radius:50%;background:var(--vivid-coral)}
/* Footer */
.ccv .site-footer{background:var(--surface);padding:var(--space-2xl) 0 0}
/* Footer columns sit at their own text width with equal space between them, so the gaps between the words match */
.ccv .footer-grid{display:grid;gap:var(--space-xl) var(--space-lg);grid-template-columns:repeat(2,minmax(0,1fr))}
.ccv .footer-grid>div:first-child{grid-column:1/-1}
@media(min-width:900px){.ccv .footer-grid{grid-template-columns:repeat(3,max-content);justify-content:space-between}
.ccv .site-footer li a{white-space:nowrap}}
@media(min-width:1100px){.ccv .footer-grid{grid-template-columns:minmax(0,1.4fr) repeat(3,max-content);column-gap:var(--space-2xl)}
.ccv .footer-grid>div:first-child{grid-column:auto}}
/* footer column titles: real headings in sentence case, one step above the links (no kicker styling) */
.ccv .site-footer .footer-label{font:600 var(--type-body-md)/1.4 var(--font-sans);letter-spacing:0;color:var(--title);margin:0 0 var(--space-sm)}
.ccv .site-footer ul{list-style:none;margin:0;padding:0}
.ccv .site-footer li{margin:0}
.ccv .site-footer li+li{margin-top:var(--space-xs)}
.ccv .site-footer a{color:var(--ink);font-weight:400;font-size:var(--type-body-md)}
.ccv .site-footer a:hover{color:var(--accent-text)}
.ccv .site-footer .logo img{width:160px}
/* Social links: outline icons in the icon colour, 44px round targets; the name is the link's accessible label */
.ccv .social{display:flex;flex-wrap:wrap;gap:var(--space-xs);list-style:none;margin:var(--space-md) 0 0;padding:0}
.ccv .site-footer .social li{margin:0}
.ccv .site-footer .social a{display:grid;place-items:center;width:44px;height:44px;border-radius:50%;border:1px solid var(--hairline);color:var(--icon-stroke);transition:color var(--dur-gentle) var(--ease-calm),border-color var(--dur-gentle) var(--ease-calm)}
.ccv .site-footer .social a:hover{color:var(--accent-text);border-color:var(--accent-text)}
.ccv .brandline{font:italic 400 var(--type-headline-sm)/1.35 var(--font-serif);color:var(--title);margin:var(--space-xs) 0}
.ccv .disclaimer{margin:var(--space-xl) 0 var(--space-lg);color:var(--ink-muted);font-size:var(--type-caption);line-height:1.5;max-width:80ch}
/* Product page */
.ccv .pdp{display:grid;gap:var(--space-lg);padding:var(--space-lg) 0 var(--space-xl)}
@media(min-width:900px){.ccv .pdp{grid-template-columns:1.05fr 1fr;gap:var(--space-xl)}}
.ccv .thumbs{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-xs);margin-top:var(--space-xs)}
.ccv .thumbs .frame{aspect-ratio:1/1;border-radius:var(--radius-md)}
/* Product photos (3 Nov): thumbnails are buttons that show their photo in the main frame (ccv-gallery.js) */
.ccv .thumbs[hidden]{display:none}
.ccv .thumbs button{border:0;padding:0;font:inherit;cursor:pointer}
.ccv .thumbs button[aria-pressed=true]{outline:2px solid var(--ink);outline-offset:2px}
.ccv .breadcrumb{display:block;font-size:var(--type-body-sm);color:var(--ink-muted);margin-bottom:var(--space-xs)}
.ccv .pdp h1{font-size:var(--type-display-sm);line-height:1.15}
.ccv .claim{font-weight:600;color:var(--accent-text)}
.ccv .keyfacts{list-style:none;padding:0;margin:var(--space-lg) 0;display:grid;gap:var(--space-sm)}
.ccv .sizes{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-sm);margin:var(--space-md) 0}
.ccv .size{position:relative;display:block;border:1.5px solid var(--hairline);border-radius:var(--radius-md);padding:var(--space-md);cursor:pointer;background:var(--surface-card);transition:border-color var(--dur-base) var(--ease-calm),box-shadow var(--dur-base) var(--ease-calm)}
.ccv .size input{position:absolute;opacity:0}
.ccv .size:has(input:checked){border-color:var(--deep-crimson);box-shadow:inset 0 0 0 1px var(--deep-crimson)}
.ccv .size:has(input:focus-visible){outline:2px solid var(--focus);outline-offset:3px}
.ccv .size b,.ccv .size .p,.ccv .size .d{display:block}
.ccv .size b{font-weight:600}
.ccv .size .p{font:700 var(--type-body-lg)/1.4 var(--font-sans);color:var(--title)}
.ccv .size .d{font-size:var(--type-body-sm);color:var(--ink-muted)}
/* Badge (Sunny Yellow): the product page's one highlight */
.ccv .save{position:absolute;top:-12px;right:10px;background:var(--highlight);color:var(--on-highlight);font:600 var(--type-caption)/1.4 var(--font-sans);letter-spacing:.01em;padding:5px 12px;border-radius:var(--radius-pill)}
.ccv .buy{display:flex;gap:var(--space-xs);align-items:stretch}
.ccv .buy .btn{padding:14px var(--space-md);white-space:nowrap}
.ccv .qty{display:flex;border:1.5px solid var(--hairline);border-radius:var(--radius-pill);overflow:hidden;background:var(--surface)}
.ccv .qty button{background:none;border:0;width:40px;font-size:var(--type-body-lg);color:var(--ink);cursor:pointer}
.ccv .qty input{width:36px;border:0;background:transparent;text-align:center;font:inherit;color:var(--ink)}
/* Reassurance: Jade dots in place of ✓ glyphs */
.ccv .reassure{display:flex;flex-wrap:wrap;gap:6px 20px;font-size:var(--type-body-sm);color:var(--ink-muted);margin-top:var(--space-md)}
.ccv .reassure span{display:inline-flex;align-items:center;gap:var(--space-xs)}
.ccv .reassure span::before{content:"";flex:0 0 6px;width:6px;height:6px;border-radius:50%;background:var(--jade-green)}
.ccv .reassure--strip{justify-content:center;margin-top:var(--space-xl);font-size:var(--type-body-md);color:var(--ink)}
.ccv table.data{width:100%;border-collapse:separate;border-spacing:0;background:var(--surface-card);border:1px solid var(--hairline);border-radius:var(--radius-lg);overflow:hidden}
.ccv table.data th,.ccv table.data td{padding:12px 16px;text-align:left;border-bottom:1px solid var(--hairline);vertical-align:top}
.ccv table.data tr:last-child td{border-bottom:0}
.ccv table.data th{color:var(--title);font-weight:600;border-bottom:2px solid var(--separator)}
.ccv .table-wrap{overflow-x:auto}
.ccv ul.ticks{list-style:none;padding:0}
.ccv ul.ticks li{padding:6px 0 6px 1.6rem;position:relative;font-size:var(--type-body-lg)}
.ccv ul.ticks li::before{content:"";position:absolute;left:0;top:.9em;width:.65rem;height:.65rem;border-radius:50%;background:var(--vivid-coral)}
.ccv ol.steps{counter-reset:s;list-style:none;padding:0;display:grid;gap:var(--space-lg)}
@media(min-width:768px){.ccv ol.steps{grid-template-columns:repeat(3,1fr)}}
.ccv ol.steps li{counter-increment:s;background:var(--surface-card);border:1px solid var(--hairline);border-radius:var(--radius-lg);box-shadow:var(--elev-2);padding:var(--space-lg)}
.ccv ol.steps li::before{content:counter(s);display:grid;place-items:center;width:40px;height:40px;border-radius:50%;background:var(--vivid-coral);color:var(--obsidian-black);font:700 var(--type-body-lg)/1 var(--font-sans);margin-bottom:var(--space-md)}
.ccv ol.steps h3{font-size:var(--type-headline-sm);line-height:1.35;margin:0 0 var(--space-xs)}
.ccv ol.steps p{font-size:var(--type-body-md);margin:0}
/* How to take with the brand step icons (3 Nov, 05-design/icons): number and icon on the left, text on the right */
.ccv ol.steps--icons li{display:grid;grid-template-columns:auto auto 1fr;align-items:center;column-gap:var(--space-sm);padding:var(--space-md)}
.ccv ol.steps--icons li::before{margin:0 calc(var(--space-2xs) - var(--space-sm)) 0 0;width:28px;height:28px;font-size:var(--type-body-sm)}
.ccv ol.steps--icons .step-icon{display:block;width:90px;height:90px}
.ccv ol.steps--icons h3{margin:0;font-size:var(--type-body-md);line-height:1.35}
/* every step in 3 lines or fewer (measured 3 Nov): three across only from 1100px; below that one stacked column, the same on phones and tablets (max 360px, centred, tighter padding), so it doesn't jump as the screen narrows */
@media(max-width:1099px){.ccv ol.steps--icons{grid-template-columns:1fr;max-width:360px;margin-inline:auto}
.ccv ol.steps--icons li{padding:var(--space-sm)}}
/* Two columns: a picture on the left, its explanation in one card on the right (stacks on phones, picture first) */
.ccv .split{display:grid;gap:var(--space-lg);align-items:stretch}
@media(min-width:900px){.ccv .split{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--space-xl)}
.ccv .split .split-media{aspect-ratio:auto}}
.ccv .split-media{aspect-ratio:4/3}
/* A looping video in the picture slot (Feminoria gut-vaginal axis, 4 Nov): keeps the clip's own 3:4 shape at every width, so nothing is cropped */
.ccv .split .split-media--video{aspect-ratio:3/4;align-self:start;background:none}
.ccv .split-media--video video{display:block;width:100%;height:100%;object-fit:cover}
/* Numbered list inside a card: Coral number disc beside each step */
.ccv .step-list{counter-reset:s;list-style:none;margin:0;padding:0;display:grid;gap:var(--space-md)}
.ccv .step-list li{counter-increment:s;display:grid;grid-template-columns:40px minmax(0,1fr);column-gap:var(--space-md);align-items:start}
.ccv .step-list li::before{content:counter(s);grid-row:span 2;display:grid;place-items:center;width:40px;height:40px;border-radius:50%;background:var(--vivid-coral);color:var(--obsidian-black);font:700 var(--type-body-lg)/1 var(--font-sans)}
.ccv .step-list h3{margin:0 0 4px}
.ccv .step-list p{margin:0}
/* Review carousel: one row of equal-height cards that scrolls sideways (swipe, trackpad, keys or the buttons).
   3 cards visible on desktop, 2 on tablets, 1 on phones with the next one peeking in. No auto-advance */
.ccv .carousel-track{display:grid;grid-auto-flow:column;grid-auto-columns:85%;gap:var(--space-md);overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scroll-padding-left:4px;padding:8px 4px 24px;margin:-8px -4px -8px;scrollbar-width:thin;scrollbar-color:var(--hairline) transparent}
@media(min-width:600px){.ccv .carousel-track{grid-auto-columns:calc((100% - var(--space-lg)) / 2);gap:var(--space-lg)}}
@media(min-width:960px){.ccv .carousel-track{grid-auto-columns:calc((100% - 2 * var(--space-lg)) / 3)}}
.ccv .carousel-track>*{scroll-snap-align:start}
.ccv .carousel-track:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
/* Review card (3 Nov, one format site-wide): "quote" / stars / Name, Location / Verified buyer. Stars fill to --rating (0–5) */
.ccv .review .review-stars{margin:auto 0 0;padding-top:var(--space-sm);font-size:1.125rem;line-height:1}
.ccv .review .review-stars span{background:linear-gradient(90deg,var(--review-star) calc(var(--rating,5) / 5 * 100%),var(--review-star-empty) 0);-webkit-background-clip:text;background-clip:text;color:transparent}
.ccv .review .review-by{margin:var(--space-xs) 0 0;font-size:var(--type-body-sm)}
.ccv .review .review-verified{margin:0;font-size:var(--type-caption);color:var(--ink-muted)}
.ccv .carousel-track .review p:first-child{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:6;line-clamp:6;overflow:hidden}
.ccv .carousel-track .review.is-open p:first-child{display:block;-webkit-line-clamp:unset;line-clamp:none}
@media(max-width:599px){.ccv .carousel-track .review p:first-child{font-size:var(--type-body-md)}}
.ccv .review-more{align-self:flex-start;min-height:44px;padding:0;border:0;background:none;font:600 var(--type-body-sm)/1.4 var(--font-sans);color:var(--accent-text);cursor:pointer}
.ccv .carousel-controls{display:flex;justify-content:flex-end;gap:var(--space-xs);margin-top:var(--space-sm)}
.ccv .carousel.is-static .carousel-controls{display:none}
.ccv .carousel-btn{display:grid;place-items:center;width:44px;height:44px;border-radius:50%;border:1.5px solid var(--title);background:transparent;cursor:pointer;transition:background-color var(--dur-base) var(--ease-calm),opacity var(--dur-base) var(--ease-calm)}
.ccv .carousel-btn::before{content:"";width:.55rem;height:.55rem;border-right:2px solid var(--title);border-bottom:2px solid var(--title);transition:border-color var(--dur-base) var(--ease-calm)}
.ccv .carousel-btn--prev::before{transform:translateX(2px) rotate(135deg)}
.ccv .carousel-btn--next::before{transform:translateX(-2px) rotate(-45deg)}
.ccv .carousel-btn:hover:not(:disabled){background:var(--title)}
.ccv .carousel-btn:hover:not(:disabled)::before{border-color:var(--surface-card)}
.ccv .carousel-btn:disabled{opacity:.3;cursor:default}
/* Review cards: the quote at reading size */
.ccv .card.review p:first-child{font-size:var(--type-body-lg)}
/* How it's made: outline badges in a wrapping row */
.ccv .badge-row{list-style:none;margin:var(--space-md) 0 0;padding:0;display:flex;flex-wrap:wrap;gap:var(--space-xs)}
.ccv .badge-row li{color:var(--title);box-shadow:inset 0 0 0 1px var(--title);font:600 var(--type-caption)/1.4 var(--font-sans);letter-spacing:.01em;padding:6px 14px;border-radius:var(--radius-pill)}
.ccv .sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
/* FAQ: accordions at elev-1, answers in the HTML at load */
.ccv .faq details{background:var(--surface-card);border:1px solid var(--hairline);border-radius:var(--radius-md);box-shadow:var(--elev-1);margin-bottom:var(--space-sm);padding:0 var(--space-md)}
@media(min-width:768px){.ccv .faq details{padding:0 var(--space-lg)}}
.ccv .faq summary{display:flex;justify-content:space-between;align-items:center;gap:var(--space-md);cursor:pointer;padding:var(--space-md) 0;font-weight:600;color:var(--title);list-style:none}
.ccv .faq summary::-webkit-details-marker{display:none}
.ccv .faq summary::after{flex:0 0 auto;margin-left:0}
.ccv .faq details p{font-size:var(--type-body-md);margin:0;padding-bottom:var(--space-md)}
.ccv .narrow{max-width:760px;margin:0 auto}
/* Mockup-only chrome, kept apart from Sunny Yellow */
.ccv .flag{display:inline-block;background:#FFF3C4;color:#5B4500;font-size:var(--type-body-sm);font-weight:600;padding:.1rem .45rem;border-radius:6px;vertical-align:middle}
.ccv .mock-note{background:#FFF3C4;color:#5B4500;font-size:var(--type-body-sm);padding:.5rem var(--container-padding);text-align:center}
.ccv .mock-note a{color:#5B4500;font-weight:600}
/* Hub */
.ccv .reviewed{font-size:var(--type-body-sm);color:var(--ink-muted);margin-top:var(--space-md)}
.ccv .prose h2{margin-top:var(--space-xl)}
.ccv .prose>h2:first-child{margin-top:0}
.ccv .prose p,.ccv .prose li{max-width:68ch}
/* Numbered explainer inside the reading column */
.ccv .prose-steps{padding-left:1.4rem;margin:0 0 1em}
.ccv .prose-steps li{font-size:var(--type-body-lg);padding:4px 0;max-width:64ch}
.ccv .prose-steps li::marker{color:var(--accent-text);font-weight:700}
/* An image inside the reading column, with a caption */
.ccv .prose-figure{margin:var(--space-xl) 0}
.ccv .prose-figure .frame{aspect-ratio:16/9}
.ccv .prose-figure figcaption{font-size:var(--type-body-sm);color:var(--ink-muted);margin-top:var(--space-xs)}
/* Talk bubble after the Fertility DCI diagram (4 Nov): SVG bubble with a tail over the pondering mascot loop; ccvPonder pops each message with easeInOutBack, loops them, and pauses while the pointer is over the block. The video sits behind the bubble.
   Without script all four messages show in a column. The video's ground (#F0EFE4) is close to Linen 50; its edges fade out (the mascot stays inside 12-91%) so no box shows. */
.ccv .ponder{margin:var(--space-xl) 0;display:grid;grid-template-columns:30% minmax(0,1fr);grid-template-areas:"bubble bubble" "mascot .";align-items:center}
/* Close under the diagram caption (4 Nov): --space-sm, set on both sides so it doesn't depend on the figure's margin (Elementor zeroes figure margins in widgets) */
.ccv .prose-figure:has(+.ponder){margin-bottom:0}
.ccv .prose-figure+.ponder{margin-top:var(--space-sm)}
.ccv .ponder-bubbles{grid-area:bubble;position:relative;z-index:1;margin-left:17%;display:grid;row-gap:var(--space-xl)}
.ccv .ponder-bubble{position:relative;padding:28px 40px}
.ccv .ponder-shape{position:absolute;inset:0;width:100%;height:100%;overflow:visible;fill:var(--surface-card)}
.ccv .ponder-bubbles .ponder-bubble p{position:relative;margin:0;max-width:none;font-size:var(--type-body-lg);font-weight:600;line-height:1.45;color:var(--ink)}
.ccv .ponder-bubble .hl{color:var(--accent-text)}
/* Message count, bottom right of each bubble, in the same grey and size as figure captions */
.ccv .ponder-count{position:relative;display:block;margin-top:var(--space-2xs);text-align:right;font-size:var(--type-body-sm);font-weight:400;line-height:1.2;color:var(--ink-muted)}
.ccv .ponder-mascot{grid-area:mascot;position:relative;z-index:0;display:block;width:100%;height:auto;margin-top:calc(35px - 15%);-webkit-mask-image:linear-gradient(to right,transparent,#000 9%,#000 91%,transparent),linear-gradient(to bottom,transparent,#000 9%,#000 93%,transparent);-webkit-mask-composite:source-in;mask-image:linear-gradient(to right,transparent,#000 9%,#000 91%,transparent),linear-gradient(to bottom,transparent,#000 9%,#000 93%,transparent);mask-composite:intersect}
/* With script the four messages share one spot, sized to the longest, so nothing below moves when they change */
.ccv .ponder.is-live .ponder-bubble{grid-area:1/1;align-self:end;opacity:0;transform-origin:28px calc(100% + 27px);will-change:transform,opacity}
.ccv .ponder.is-live .ponder-bubble:not(.is-current){pointer-events:none}
/* Play/pause icon, bottom right: pause while the messages run, play while they are held (hover or tap) */
.ccv .ponder-toggle{grid-row:2;grid-column:2;justify-self:end;align-self:end;position:relative;z-index:1;width:32px;height:32px;padding:0;border:0;border-radius:50%;background:none;color:var(--accent-text);cursor:pointer;display:grid;place-items:center}
.ccv .ponder-toggle[hidden]{display:none}
.ccv .ponder-toggle svg{fill:currentColor}
.ccv .ponder-toggle .i-play,.ccv .ponder.is-paused .ponder-toggle .i-pause{display:none}
.ccv .ponder.is-paused .ponder-toggle .i-play{display:inline}
.ccv .ponder:not(.is-live) .ponder-bubble:not(:last-child) .ponder-shape svg{display:none}
@media(max-width:599px){.ccv .ponder{grid-template-columns:36% minmax(0,1fr)}
.ccv .ponder-bubbles{margin-left:10%}
.ccv .ponder-bubble{padding:20px 24px}
.ccv .ponder-bubbles .ponder-bubble p{font-size:var(--type-body-md)}}
/* Hub body: reading column + a side column with the product and the doctor note (stacks below 1100px) */
.ccv .hub-grid{display:grid;row-gap:var(--space-xl);grid-template-areas:"main" "aside" "more"}
.ccv .hub-grid>.prose{grid-area:main;min-width:0}
.ccv .hub-aside{grid-area:aside;display:grid;gap:var(--space-lg);align-self:start}
.ccv .hub-grid>.hub-more{grid-area:more}
.ccv .hub-more h2{margin-top:0}
@media(min-width:1100px){.ccv .hub-grid{grid-template-columns:minmax(0,1fr) 340px;grid-template-areas:"main aside" "more aside";column-gap:var(--space-2xl)}
.ccv .hub-aside{position:sticky;top:96px}}
/* Call-out (design system): Jade ground, Linen text */
.ccv .callout{background:var(--callout);color:var(--on-callout);border-radius:var(--radius-lg);padding:var(--space-lg);--title:var(--linen-white);--ink:var(--linen-white);--ink-muted:var(--linen-white);--accent-text:var(--linen-white);--focus:var(--linen-white)}
.ccv .callout h2{font-size:var(--type-headline-sm);line-height:1.35;margin:0 0 var(--space-xs)}
.ccv .callout p{font-size:var(--type-body-md);margin:0}
.ccv .product-strip{display:grid;gap:var(--space-lg);align-items:center;background:var(--surface-card);border:1px solid var(--hairline);border-radius:var(--radius-lg);box-shadow:var(--elev-2);padding:var(--space-lg)}
@media(min-width:700px){.ccv .product-strip{grid-template-columns:160px 1fr auto}}
@media(min-width:1100px){.ccv .hub-aside .product-strip{grid-template-columns:1fr;gap:var(--space-md)}}
.ccv .product-strip .frame{aspect-ratio:1/1}
.ccv .hub-aside .frame{aspect-ratio:4/3}
.ccv .product-strip p{font-size:var(--type-body-md);margin:0}
.ccv .chips{display:flex;flex-wrap:wrap;gap:var(--space-xs);margin:var(--space-lg) 0}
.ccv .chips a{border:1.5px solid var(--hairline);border-radius:var(--radius-pill);padding:10px 18px;color:var(--title);font-weight:600;font-size:var(--type-body-sm);transition:border-color var(--dur-base) var(--ease-calm),background-color var(--dur-base) var(--ease-calm),color var(--dur-base) var(--ease-calm)}
.ccv .chips a:hover{border-color:var(--title)}
.ccv .chips a.on{border-color:var(--title);background:var(--title);color:var(--surface)}
/* Mobile PDP: price + Add to cart inside the first screen */
@media(max-width:899px){.ccv .pdp{gap:var(--space-md);padding-top:var(--space-md)}
.ccv .pdp .frame--square{aspect-ratio:2/1}
.ccv .pdp .claim{font-size:var(--type-body-md)}
.ccv .pdp .thumbs{display:none}
.ccv .pdp h1{margin-bottom:var(--space-xs)}
.ccv .pdp .claim{margin-bottom:var(--space-xs)}
.ccv .sizes{margin:var(--space-xs) 0}
.ccv .size{padding:var(--space-sm)}}
/* 404: "4 [meme GIF] 4", the GIF is the zero, ringed in Coral (Coral is never text on Linen, so the digits are Forest).
   The GIF fills the round 0 (cover), so the sides of its 16:9 frame and the circle's corners are cropped. A still frame
   for reduced motion */
.ccv .nf{padding:var(--space-xl) 0 var(--space-2xl)}
.ccv .nf-grid{display:grid;gap:var(--space-lg);align-items:center}
@media(min-width:900px){.ccv .nf-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--space-2xl)}}
.ccv .nf-figure{display:flex;align-items:center;justify-content:center;gap:var(--space-sm);font:700 clamp(6rem,3.5rem + 10vw,11rem)/1 var(--font-serif);color:var(--title);user-select:none}
.ccv .nf-digit:first-child{transform:rotate(-6deg)}
.ccv .nf-digit:last-child{transform:rotate(5deg)}
.ccv .nf-gif{display:block;position:relative;flex:none;width:clamp(140px,8rem + 9vw,280px);aspect-ratio:1;border-radius:50%;overflow:hidden;background:var(--surface-card);outline:6px solid var(--vivid-coral);animation:nf-bob 4s var(--ease-calm) infinite}
.ccv .nf-gif img{display:block;width:100%;height:100%;object-fit:cover}
.ccv .nf-credit{margin:var(--space-md) 0 0;text-align:center;font-size:var(--type-caption)}
.ccv .nf-credit a{color:var(--ink-muted);font-weight:500}
@keyframes nf-bob{50%{transform:translateY(-8px) rotate(3deg)}}
@media(prefers-reduced-motion:reduce){.ccv .nf-gif{animation:none}}
.ccv .nf-copy h1{font-size:var(--type-display-sm);line-height:1.15;margin-bottom:var(--space-sm)}
.ccv .nf-copy .lead{margin-bottom:var(--space-lg)}
.ccv .nf-routes{margin-top:var(--space-2xl)}
.ccv .nf-routes h2{margin-bottom:var(--space-md)}
.ccv .nf-list{list-style:none;margin:0;padding:0;display:grid;gap:var(--space-sm);grid-template-columns:repeat(auto-fill,minmax(min(100%,210px),1fr))}
.ccv .nf-list a{display:block;height:100%;box-sizing:border-box;padding:var(--space-md);background:var(--surface-card);border-radius:var(--radius-md);color:var(--ink);font-weight:400;transition:background-color var(--dur-base) var(--ease-calm)}
/* tiles turn coral on hover: Obsidian on Coral (6.1:1) */
.ccv .nf-list a:hover{background:var(--vivid-coral);color:var(--on-cta)}
.ccv .nf-list a:hover b,.ccv .nf-list a:hover b+span{color:var(--on-cta)}
.ccv .nf-list b{display:block;font:700 var(--type-headline-sm)/1.3 var(--font-serif);color:var(--title);transition:color var(--dur-base) var(--ease-calm)}
.ccv .nf-list b+span{display:block;margin-top:2px;font-size:var(--type-body-sm);color:var(--ink-muted)}
.ccv .nf-help{margin-top:var(--space-lg);color:var(--ink)}
.ccv .nf-help a{font-weight:600}
/* Content pages (4 Nov): Clinical studies, Articles, Events, Career, FAQ, Contact and the policies.
   Page head: a short Linen band with breadcrumb, H1 and one answer sentence, no photo; content sits in the reading column */
.ccv .page-head{background:var(--surface-card);border-bottom:2px solid var(--separator);padding:var(--space-xl) 0 var(--space-lg)}
@media(min-width:900px){.ccv .page-head{padding:var(--space-2xl) 0 var(--space-xl)}}
.ccv .page-head h1{font-size:var(--type-display-sm);line-height:1.12;margin-bottom:var(--space-sm)}
.ccv .page-head .answer{margin:0}
.ccv .page-head .btn-row{margin-top:var(--space-md)}
.ccv .doc h2{font-size:var(--type-headline-md);margin-top:var(--space-xl)}
.ccv .doc>h2:first-child{margin-top:0}
.ccv .doc h3{font-size:var(--type-headline-sm);margin-top:var(--space-lg)}
.ccv .doc ol,.ccv .doc ul{padding-left:1.4rem}
.ccv .doc li{max-width:68ch;margin-bottom:var(--space-2xs)}
.ccv .doc li::marker{color:var(--accent-text);font-weight:700}
.ccv .doc .updated{color:var(--ink-muted);font-size:var(--type-body-sm)}
/* Study list: each paper as a linked row, title first, institution under it */
.ccv .study-list{list-style:none;padding:0!important;margin:var(--space-md) 0 0;display:grid;gap:var(--space-sm)}
.ccv .study-list li{background:var(--surface-card);border:1px solid var(--hairline);border-radius:var(--radius-md);box-shadow:var(--elev-1);padding:var(--space-md);margin:0;max-width:none}
.ccv .study-list a{display:block;font-weight:600;color:var(--title);line-height:1.4}
.ccv .study-list a::after{content:" \2197";color:var(--accent-text)}
.ccv .study-list p{margin:var(--space-2xs) 0 0;font-size:var(--type-body-sm);color:var(--ink-muted)}
.ccv .study-key{background:var(--surface-card);border:1px solid var(--hairline);border-left:4px solid var(--vivid-coral);border-radius:var(--radius-md);box-shadow:var(--elev-2);padding:var(--space-lg);margin-top:var(--space-md)}
.ccv .study-key h3{margin-top:0}
.ccv .study-key dl{display:grid;gap:var(--space-2xs);margin:0}
.ccv .study-key dt{font-weight:600;color:var(--title)}
.ccv .study-key dd{margin:0 0 var(--space-xs)}
/* Article cards: picture, categories, title, date, two-line excerpt; the whole card is the link */
.ccv .post-grid{display:grid;gap:var(--space-lg);grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));margin-top:var(--space-lg)}
.ccv .post-card{position:relative;display:flex;flex-direction:column;background:var(--surface-card);border:1px solid var(--hairline);border-radius:var(--radius-lg);box-shadow:var(--elev-2);overflow:hidden;transition:box-shadow var(--dur-base) var(--ease-calm)}
.ccv .post-card:hover{box-shadow:var(--elev-3)}
.ccv .post-card img{display:block;width:100%;height:auto;aspect-ratio:16/9;object-fit:cover}
.ccv .post-card .body{display:flex;flex-direction:column;gap:var(--space-xs);padding:var(--space-md) var(--space-md) var(--space-lg)}
.ccv .post-card .cats{font:600 var(--type-kicker)/1.4 var(--font-sans);letter-spacing:.04em;color:var(--accent-text);margin:0}
.ccv .post-card h2,.ccv .post-card h3{font-size:var(--type-headline-sm);line-height:1.3;margin:0}
.ccv .post-card h2 a,.ccv .post-card h3 a{color:var(--title)}
.ccv .post-card h2 a::after,.ccv .post-card h3 a::after{content:"";position:absolute;inset:0}
.ccv .post-card .date{font-size:var(--type-body-sm);color:var(--ink-muted);margin:0}
.ccv .post-card .excerpt{font-size:var(--type-body-md);margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.ccv .pager{display:flex;justify-content:center;gap:var(--space-xs);margin-top:var(--space-xl)}
.ccv .pager a,.ccv .pager span{display:inline-grid;place-items:center;min-width:44px;height:44px;padding:0 12px;box-sizing:border-box;border-radius:var(--radius-pill);border:1.5px solid var(--hairline);color:var(--title);font-weight:600}
.ccv .pager [aria-current]{background:var(--title);border-color:var(--title);color:var(--surface)}
/* Single article */
.ccv .article-meta{display:flex;flex-wrap:wrap;gap:var(--space-2xs) var(--space-md);color:var(--ink-muted);font-size:var(--type-body-sm);margin:var(--space-sm) 0 0}
.ccv .article-hero{margin:var(--space-lg) 0 0;border-radius:var(--radius-lg);overflow:hidden;aspect-ratio:16/9}
.ccv .article-hero img{width:100%;height:100%;object-fit:cover;display:block}
.ccv .article-body h2{font-size:var(--type-headline-md);margin-top:var(--space-xl)}
.ccv .article-body p,.ccv .article-body li{font-size:var(--type-body-lg);max-width:68ch}
.ccv .article-body .sample-note{font-size:var(--type-body-sm);color:var(--ink-muted);border-top:1px solid var(--hairline);padding-top:var(--space-sm);margin-top:var(--space-xl)}
/* Events: one event per block, photos in a square grid */
.ccv .event{padding:var(--space-lg) 0;border-top:1px solid var(--hairline)}
.ccv .event h3{margin:0 0 var(--space-2xs)}
.ccv .event .when{font:600 var(--type-kicker)/1.4 var(--font-sans);letter-spacing:.04em;color:var(--accent-text);margin:0 0 var(--space-2xs)}
.ccv .event p{margin:0}
.ccv .event-photos{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-xs);margin-top:var(--space-md)}
@media(min-width:600px){.ccv .event-photos{grid-template-columns:repeat(4,1fr)}}
.ccv .event-photos img{width:100%;height:auto;aspect-ratio:1;object-fit:cover;border-radius:var(--radius-md);display:block}
/* Career: each opening is a card that opens */
.ccv .job{background:var(--surface-card);border:1px solid var(--hairline);border-radius:var(--radius-lg);box-shadow:var(--elev-2);padding:0 var(--space-lg);margin-top:var(--space-md)}
.ccv .job summary{cursor:pointer;list-style:none;padding:var(--space-lg) 0;display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:var(--space-md);row-gap:var(--space-2xs);align-items:center}
.ccv .job summary h3{grid-column:1}
.ccv .job summary::after{grid-column:2;grid-row:1/span 2}
.ccv .job-meta{grid-column:1;font-size:var(--type-body-sm);color:var(--ink-muted)}
.ccv .job h4{font-family:var(--font-sans);font-size:var(--type-body-md);font-weight:700;color:var(--title);margin:var(--space-md) 0 var(--space-2xs)}
.ccv .job .job-body p{max-width:68ch}
.ccv .job summary::-webkit-details-marker{display:none}
.ccv .job summary h3{margin:0}
.ccv .job summary::after{content:"";flex:0 0 auto;width:.55em;height:.55em;border-right:2px solid var(--accent-text);border-bottom:2px solid var(--accent-text);transform:rotate(45deg);transition:transform var(--dur-base) var(--ease-calm)}
.ccv .job[open] summary::after{transform:rotate(225deg)}
.ccv .job .job-body{padding-bottom:var(--space-lg)}
/* Contact: form beside the other ways to reach us */
.ccv .contact-grid{display:grid;gap:var(--space-xl)}
@media(min-width:900px){.ccv .contact-grid{grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);align-items:start}}
.ccv .form{background:var(--surface-card);border:1px solid var(--hairline);border-radius:var(--radius-lg);box-shadow:var(--elev-2);padding:var(--space-lg);display:grid;gap:var(--space-md)}
.ccv .field{display:grid;gap:6px}
.ccv .field[hidden]{display:none}
.ccv .field label{font-weight:600;color:var(--title);font-size:var(--type-body-sm)}
.ccv .field label span{font-weight:400;color:var(--ink-muted)}
.ccv .field input,.ccv .field select,.ccv .field textarea{font:inherit;color:var(--ink);background:var(--surface);border:1.5px solid var(--hairline);border-radius:var(--radius-sm);padding:12px 14px;min-height:48px;width:100%;box-sizing:border-box}
.ccv .field textarea{min-height:140px;resize:vertical}
.ccv .field input:focus-visible,.ccv .field select:focus-visible,.ccv .field textarea:focus-visible{outline:2px solid var(--deep-crimson);outline-offset:1px;border-color:var(--deep-crimson)}
.ccv .form .small{margin:0}
.ccv .reach h2{font-size:var(--type-headline-md)}
.ccv .reach h2:not(:first-child){margin-top:var(--space-xl)}
.ccv .reach dl{margin:0;display:grid;gap:var(--space-2xs)}
.ccv .reach dt{font-weight:600;color:var(--title)}
.ccv .reach dd{margin:0 0 var(--space-sm)}
/* Footer legal line (4 Nov): "A brand by" + the Improwell logo (Brown version, the one that reads on Linen), sized to the text */
.ccv .by-improwell{white-space:nowrap}
.ccv .by-improwell img{display:inline-block;height:.95em;width:auto;vertical-align:-.1em;margin-left:.3em}
/* Footer (4 Nov): address under the social icons; copyright in a full-width Deep Crimson bar at the very bottom, as on concevoir.com.
   Linen on Crimson is 6.0:1; the Improwell logo is the Sand version there */
.ccv .footer-address{font-style:normal;font-size:var(--type-body-sm);line-height:1.5;color:var(--ink-muted);margin-top:var(--space-md);max-width:36ch}
.ccv .footer-bar{background:var(--deep-crimson);color:var(--linen-white)}
.ccv .footer-bar p{margin:0;padding:10px 0;font-size:var(--type-body-sm);line-height:1.4}


.ccv.ccv-pdp h1{font-size:var(--type-display-sm);line-height:1.15}
@media(max-width:899px){.ccv.ccv-pdp .frame--square{aspect-ratio:2/1}.ccv.ccv-pdp .thumbs{display:none}.ccv.ccv-pdp .claim{font-size:var(--type-body-md)}.ccv-pdp.elementor-section{padding-top:16px!important}}
@media(max-width:767px){.ccv.ccv-pdp>.elementor-container>.elementor-column>.elementor-widget-wrap{padding-left:0!important;padding-right:0!important}}
.ccv .elementor-widget:not(.elementor-widget-text-editor):not(.elementor-widget-theme-post-content) figure.prose-figure{margin:var(--space-xl) 0}.ccv .elementor-widget:not(.elementor-widget-text-editor):not(.elementor-widget-theme-post-content) figure.prose-figure:has(+.ponder){margin-bottom:0}.ccv .elementor-widget:not(.elementor-widget-text-editor):not(.elementor-widget-theme-post-content) figure.chart{margin:var(--space-lg) 0}
.ccv.ccv-contact{padding:var(--section-py-mobile) var(--container-padding)!important}@media(min-width:900px){.ccv.ccv-contact{padding:var(--section-py) var(--container-padding)!important}}.ccv.ccv-contact>.elementor-container{max-width:calc(var(--container-max,1180px) - 2*var(--container-padding,24px));gap:var(--space-xl)}.ccv.ccv-contact>.elementor-container>.elementor-column>.elementor-widget-wrap{padding:0}@media(max-width:767px){.ccv.ccv-contact>.elementor-container{gap:var(--space-xl)}}.ccv .ccv-form.elementor-widget-form .elementor-form{background:var(--surface-card);border:1px solid var(--hairline);border-radius:var(--radius-lg);box-shadow:var(--elev-2);padding:var(--space-lg)}.ccv .ccv-form.elementor-widget-form .elementor-form-fields-wrapper{margin:0;row-gap:var(--space-md)}.ccv .ccv-form.elementor-widget-form .elementor-field-group{padding:0!important;margin:0!important}.ccv .ccv-form.elementor-widget-form .elementor-field-label{font:600 var(--type-body-sm)/1.4 var(--font-sans);color:var(--title);padding-bottom:6px}.ccv .ccv-form.elementor-widget-form .elementor-field-textual,.ccv .ccv-form.elementor-widget-form .elementor-select-wrapper select{font:400 var(--type-body-md)/1.4 var(--font-sans);color:var(--ink)!important;background:var(--surface)!important;border:1.5px solid var(--hairline);border-radius:var(--radius-sm);padding:12px 14px;min-height:48px}.ccv .ccv-form.elementor-widget-form .elementor-field-textual:focus-visible,.ccv .ccv-form select:focus-visible{outline:2px solid var(--deep-crimson);outline-offset:1px;border-color:var(--deep-crimson);box-shadow:none}.ccv .ccv-form.elementor-widget-form .elementor-button[type="submit"]{background:var(--cta)!important;color:var(--on-cta)!important;border-radius:var(--radius-pill);min-height:50px;font:600 var(--type-label)/1 var(--font-sans);transition:background-color var(--dur-calm,400ms) var(--ease-calm),color var(--dur-calm,400ms) var(--ease-calm)}.ccv .ccv-form.elementor-widget-form .elementor-button[type="submit"]:hover{background:var(--deep-crimson)!important;color:var(--linen-white)!important}.ccv .ccv-form.elementor-widget-form .elementor-message{font:400 var(--type-body-md)/1.5 var(--font-sans);margin-top:var(--space-sm)}.ccv .ccv-form-note{margin-top:var(--space-sm)}
.ccv.ccv-archive,.ccv.ccv-article,.ccv.ccv-related,.ccv.ccv-home-articles{padding:var(--section-py-mobile) var(--container-padding)!important}@media(min-width:900px){.ccv.ccv-archive,.ccv.ccv-article,.ccv.ccv-related,.ccv.ccv-home-articles{padding:var(--section-py) var(--container-padding)!important}}.ccv.ccv-article-head{background:var(--surface-card);border-bottom:2px solid var(--separator);padding:var(--space-xl) var(--container-padding) var(--space-lg)!important}@media(min-width:900px){.ccv.ccv-article-head{padding:var(--space-2xl) var(--container-padding) var(--space-xl)!important}}.ccv.ccv-archive>.elementor-container,.ccv.ccv-related>.elementor-container,.ccv.ccv-home-articles>.elementor-container{max-width:calc(var(--container-max,1180px) - 2*var(--container-padding,24px))}.ccv.ccv-article-head>.elementor-container,.ccv.ccv-article>.elementor-container{max-width:760px}.ccv.ccv-archive .elementor-widget-wrap,.ccv.ccv-home-articles .elementor-widget-wrap,.ccv.ccv-article .elementor-widget-wrap,.ccv.ccv-related .elementor-widget-wrap,.ccv.ccv-article-head .elementor-widget-wrap{padding:0!important}.ccv.ccv-archive>.elementor-container>.elementor-column,.ccv.ccv-home-articles>.elementor-container>.elementor-column,.ccv.ccv-article>.elementor-container>.elementor-column,.ccv.ccv-related>.elementor-container>.elementor-column,.ccv.ccv-article-head>.elementor-container>.elementor-column{background:none}.ccv.ccv-related{background:var(--jade-green);color:var(--ink);--title:var(--linen-white);--ink:var(--linen-white);--ink-muted:var(--linen-white);--accent-text:var(--linen-white);--hairline:rgba(229,226,207,.24);--focus:var(--linen-white)}.ccv.ccv-related h2{margin:0 0 var(--space-lg)}.ccv.ccv-home-articles .ccv-posts{margin-top:var(--space-md)}.ccv .ccv-posts.elementor-widget .elementor-post__card{display:flex;flex-direction:column;height:100%;position:relative;background:var(--surface-card)!important;border:1px solid var(--hairline);border-radius:var(--radius-lg)!important;box-shadow:var(--elev-2)!important;overflow:hidden;transition:box-shadow var(--dur-base) var(--ease-calm);color:var(--ink);--title:var(--forest-shadow);--ink:var(--obsidian-black);--ink-muted:rgba(27,16,22,.72);--accent-text:var(--deep-crimson);--hairline:rgba(27,16,22,.14)}.ccv .ccv-posts.elementor-widget .elementor-post__card:hover{box-shadow:var(--elev-3)!important}.ccv .ccv-posts.elementor-widget .elementor-post__thumbnail__link{order:0;margin:0!important}.ccv .ccv-posts.elementor-widget .elementor-post__text{display:contents}.ccv .ccv-posts.elementor-widget .elementor-post__badge{order:1;position:static!important;margin:0!important;padding:var(--space-md) var(--space-md) 0!important;background:none!important;border-radius:0!important;color:var(--accent-text)!important;font:600 var(--type-kicker)/1.4 var(--font-sans)!important;letter-spacing:.04em;text-transform:none!important;text-align:left}.ccv .ccv-posts.elementor-widget .elementor-post__title{order:2;margin:var(--space-xs) var(--space-md) 0!important;font:700 var(--type-headline-sm)/1.3 var(--font-serif)!important}.ccv .ccv-posts.elementor-widget .elementor-post__title a{color:var(--title)!important;font:inherit!important}.ccv .ccv-posts.elementor-widget .elementor-post__title a::after{content:"";position:absolute;inset:0}.ccv .ccv-posts.elementor-widget .elementor-post__meta-data{order:3;margin:var(--space-xs) var(--space-md) 0!important;padding:0!important;border:0!important;font:400 var(--type-body-sm)/1.4 var(--font-sans)!important;color:var(--ink-muted)!important}.ccv .ccv-posts.elementor-widget .elementor-post__excerpt{order:4;margin:var(--space-xs) var(--space-md) 0!important}.ccv .ccv-posts.elementor-widget .elementor-post__excerpt p{font:400 var(--type-body-md)/1.6 var(--font-sans)!important;color:var(--ink)!important;margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.ccv .ccv-posts.elementor-widget .elementor-post__card{padding-bottom:var(--space-lg)}.ccv .ccv-posts.elementor-widget .elementor-pagination{display:flex;justify-content:center;gap:var(--space-xs);margin-top:var(--space-xl)}.ccv .ccv-posts.elementor-widget .elementor-pagination .page-numbers{display:inline-grid;place-items:center;min-width:44px;height:44px;padding:0 12px;box-sizing:border-box;border-radius:var(--radius-pill);border:1.5px solid var(--hairline);color:var(--title);font-weight:600;margin:0!important}.ccv .ccv-posts.elementor-widget .elementor-pagination .page-numbers.current{background:var(--title);border-color:var(--title);color:var(--surface)}.ccv .ccv-posts.elementor-widget .elementor-pagination .page-numbers.dots{border:0}.ccv .ccv-post-title .elementor-heading-title{font:700 var(--type-display-sm)/1.12 var(--font-serif)!important;color:var(--title)!important;margin:0 0 var(--space-sm)}.ccv .ccv-post-meta .elementor-icon-list-item,.ccv .ccv-post-meta .elementor-icon-list-text,.ccv .ccv-post-meta a{font:400 var(--type-body-sm)/1.5 var(--font-sans)!important;color:var(--ink-muted)!important}.ccv .ccv-post-hero{margin-top:var(--space-lg)}.ccv .ccv-post-hero img{width:100%!important;aspect-ratio:16/9;object-fit:cover;border-radius:var(--radius-lg)!important}.ccv .ccv-post-body{color:var(--ink)}.ccv .ccv-post-body h2{font:700 var(--type-headline-md)/1.25 var(--font-serif);color:var(--title);margin:var(--space-xl) 0 var(--space-md)}.ccv .ccv-post-body h3{font:700 var(--type-headline-sm)/1.3 var(--font-serif);color:var(--title);margin:var(--space-lg) 0 var(--space-sm)}.ccv .ccv-post-body p,.ccv .ccv-post-body li{font-size:var(--type-body-lg);line-height:1.65;max-width:68ch}.ccv .ccv-post-body img{max-width:100%;height:auto;border-radius:var(--radius-md)}.ccv .ccv-post-body a{color:var(--accent-text);font-weight:600}
body:not(.elementor-editor-active) .elementor-location-header,body:not(.elementor-editor-active) .elementor-location-header :is(.elementor-section,.elementor-container,.elementor-column,.elementor-widget-wrap,.elementor-widget,.elementor-widget-container){display:contents}
.admin-bar .ccv .site-header{top:var(--wp-admin--admin-bar--height,32px)}@media(max-width:600px){.admin-bar .ccv .site-header{top:0}}
/* WooCommerce pages: cart, checkout, my account */
.iw-bottomnav,.iw-bg{display:none!important}
body:is(.woocommerce-cart,.woocommerce-checkout,.woocommerce-account){background:var(--surface);color:var(--ink);font-family:var(--font-sans);font-size:var(--type-body-md);line-height:1.65}
:is(.woocommerce-cart,.woocommerce-checkout,.woocommerce-account) .iw-root{min-height:0}
:is(.woocommerce-cart,.woocommerce-checkout,.woocommerce-account) .iw-main>div{max-width:var(--container-max)!important;margin:0 auto;padding:var(--space-xl) var(--container-padding) var(--space-2xl)!important;box-sizing:border-box}
@media(min-width:768px){:is(.woocommerce-cart,.woocommerce-checkout,.woocommerce-account) .iw-main>div{padding-left:var(--space-lg)!important;padding-right:var(--space-lg)!important}}
:is(.woocommerce-cart,.woocommerce-checkout,.woocommerce-account) .iw-glass-card{padding:0!important;background:none;border:0;box-shadow:none;backdrop-filter:none}
:is(.woocommerce-cart,.woocommerce-checkout,.woocommerce-account) .iw-glass-card h1{font:700 var(--type-display-sm)/1.15 var(--font-serif);color:var(--title);margin:0 0 var(--space-lg)}
:is(.woocommerce-cart,.woocommerce-checkout,.woocommerce-account) .iw-entry-content :is(h2,h3,.wc-block-cart__totals-title,.wc-block-components-title,.wc-block-components-checkout-step__title){font-family:var(--font-serif);font-weight:700;color:var(--title);text-transform:none;letter-spacing:0}
:is(.woocommerce-cart,.woocommerce-checkout,.woocommerce-account) .iw-entry-content a{color:var(--accent-text);text-decoration:none;font-weight:500}
:is(.woocommerce-cart,.woocommerce-checkout,.woocommerce-account) .iw-entry-content a:hover{color:var(--title)}
:is(.woocommerce-cart,.woocommerce-checkout,.woocommerce-account) .wc-block-components-product-name{font-weight:600;color:var(--title)!important;font-size:var(--type-body-md)}
:is(.woocommerce-cart,.woocommerce-checkout,.woocommerce-account) .wc-block-cart-item__image img{border-radius:var(--radius-md)}
:is(.woocommerce-cart,.woocommerce-checkout,.woocommerce-account) .wc-block-components-sidebar-layout .wc-block-components-sidebar{background:var(--surface-card);border-radius:var(--radius-lg);padding:var(--space-lg)}
:is(.woocommerce-cart,.woocommerce-checkout,.woocommerce-account) .wp-block-woocommerce-checkout-order-summary-block{border:0;border-radius:0}
@media(max-width:599px){:is(.woocommerce-cart,.woocommerce-checkout,.woocommerce-account) .wc-block-components-sidebar-layout .wc-block-components-sidebar{padding:var(--space-md)}}
:is(.woocommerce-cart,.woocommerce-checkout,.woocommerce-account) .wc-block-components-totals-footer-item{color:var(--title)}
:is(.woocommerce-cart,.woocommerce-checkout,.woocommerce-account) :is(.wc-block-components-button:not(.is-link),.wc-block-cart__submit-button,.wc-block-components-checkout-place-order-button,.woocommerce .button,.woocommerce button.button,.woocommerce a.button,.woocommerce input.button){display:inline-flex;align-items:center;justify-content:center;min-height:50px;padding:14px 30px;border:0;border-radius:var(--radius-pill);background:var(--cta);color:var(--on-cta)!important;font:600 var(--type-label)/1 var(--font-sans);text-decoration:none;cursor:pointer}
:is(.woocommerce-cart,.woocommerce-checkout,.woocommerce-account) :is(.wc-block-components-button:not(.is-link),.wc-block-cart__submit-button,.wc-block-components-checkout-place-order-button,.woocommerce .button,.woocommerce button.button,.woocommerce a.button,.woocommerce input.button):hover{background:var(--deep-crimson);color:var(--linen-white)!important}
:is(.woocommerce-cart,.woocommerce-checkout,.woocommerce-account) :is(.wc-block-components-text-input input,.wc-block-components-textarea,.wc-blocks-components-select__select,.wc-block-components-combobox .components-combobox-control__input,.woocommerce form .input-text,.woocommerce form select){border:1.5px solid var(--hairline)!important;border-radius:var(--radius-sm)!important;background:var(--linen-50,#fff);color:var(--ink);font-family:var(--font-sans)}
:is(.woocommerce-cart,.woocommerce-checkout,.woocommerce-account) :is(input,select,textarea,button,a):focus-visible{outline:2px solid var(--focus);outline-offset:2px}
:is(.woocommerce-cart,.woocommerce-checkout,.woocommerce-account) .wc-block-components-quantity-sele\63 tor{border-radius:var(--radius-pill);border-color:var(--hairline)}
:is(.woocommerce-cart,.woocommerce-checkout,.woocommerce-account) .wc-block-components-quantity-sele\63 tor::after{border-radius:var(--radius-pill);border-color:var(--hairline)}
:is(.woocommerce-cart,.woocommerce-checkout,.woocommerce-account) .woocommerce-MyAccount-navigation ul{list-style:none;margin:0;padding:0;display:grid;gap:var(--space-2xs)}
:is(.woocommerce-cart,.woocommerce-checkout,.woocommerce-account) .woocommerce-MyAccount-navigation a{display:block;padding:var(--space-xs) var(--space-md);border-radius:var(--radius-pill)}
:is(.woocommerce-cart,.woocommerce-checkout,.woocommerce-account) .woocommerce-MyAccount-navigation .is-active a{background:var(--surface-card);color:var(--title)}
:is(.woocommerce-cart,.woocommerce-checkout,.woocommerce-account) .woocommerce :is(form.login,form.register){background:var(--surface-card);border:0;border-radius:var(--radius-lg);padding:var(--space-lg)}
/* WooCommerce notices on every page ("… has been added to your cart. View cart", errors): a Linen card in
   the content width, the icon in line, and the action as the outlined pill (Buy now / Continue shopping) */
.woocommerce-notices-wrapper:not(:empty){max-width:var(--container-max);margin:var(--space-md) auto 0;padding:0 var(--container-padding);box-sizing:border-box}
@media(min-width:768px){.woocommerce-notices-wrapper:not(:empty){padding:0 var(--space-lg)}}
body :is(.woocommerce-message,.woocommerce-info,.woocommerce-error){display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:var(--space-xs) var(--space-sm);margin:0 0 var(--space-sm)!important;padding:var(--space-md)!important;background:var(--surface-card)!important;border:0!important;border-radius:var(--radius-md);color:var(--ink)!important;font:400 var(--type-body-md)/1.5 var(--font-sans)!important;list-style:none}
body :is(.woocommerce-message,.woocommerce-info,.woocommerce-error)::before{position:static!important;grid-column:1;grid-row:1;color:var(--jade-green)!important;font-size:20px;line-height:1}
body .woocommerce-error::before{color:var(--deep-crimson)!important}
/* WooCommerce's clearfix (::after) would become an empty grid row and add a gap under the content */
body :is(.woocommerce-message,.woocommerce-info,.woocommerce-error)::after{display:none!important}
body :is(.woocommerce-message,.woocommerce-info,.woocommerce-error) .button{grid-column:3;grid-row:1;justify-self:end;margin:0!important;float:none!important;display:inline-flex;align-items:center;box-sizing:border-box;min-height:44px;padding:10px 22px!important;border:1.5px solid var(--title)!important;border-radius:var(--radius-pill)!important;background:transparent!important;color:var(--title)!important;font:600 var(--type-label)/1 var(--font-sans)!important;text-decoration:none}
body :is(.woocommerce-message,.woocommerce-info,.woocommerce-error) .button:hover{background:var(--title)!important;color:var(--surface)!important}
/* phones: icon beside the message, the action on its own row */
@media(max-width:599px){body :is(.woocommerce-message,.woocommerce-info,.woocommerce-error){grid-template-columns:auto 1fr}body :is(.woocommerce-message,.woocommerce-info,.woocommerce-error) .button{grid-column:1/-1;grid-row:2;justify-self:start}}
/* (the close button's 44 px hit area overhangs the padding so the drawn × itself sits 20 px from the edge)
   Page-level notices (the theme prints them straight under the header, e.g. "… has been added to your cart")
   float at the bottom of the screen as a coral toast; ccv-cart.js adds the close button and the timeout.
   Obsidian on Coral (6.1:1; never white on Coral), and View cart as a solid Obsidian pill. */
body > .woocommerce-notices-wrapper:not(:empty){position:fixed;left:0;right:0;bottom:calc(var(--space-md) + env(safe-area-inset-bottom,0px));z-index:60;margin:0 auto;pointer-events:none}
body > .woocommerce-notices-wrapper > *{pointer-events:auto;box-shadow:var(--elev-3);animation:ccv-toast-in .3s var(--ease-calm) both}
body > .woocommerce-notices-wrapper :is(.woocommerce-message,.woocommerce-info,.woocommerce-error){grid-template-columns:auto 1fr auto auto;background:var(--cta)!important;color:var(--on-cta)!important}
body > .woocommerce-notices-wrapper :is(.woocommerce-message,.woocommerce-info,.woocommerce-error)::before{color:var(--on-cta)!important}
body > .woocommerce-notices-wrapper :is(.woocommerce-message,.woocommerce-info,.woocommerce-error) .button{background:var(--obsidian-black)!important;border-color:var(--obsidian-black)!important;color:var(--linen-white)!important}
body > .woocommerce-notices-wrapper :is(.woocommerce-message,.woocommerce-info,.woocommerce-error) .button:hover{background:var(--forest-shadow)!important;border-color:var(--forest-shadow)!important}
.ccv-toast-close{grid-column:4;grid-row:1;display:grid;place-items:center;width:44px;height:44px;margin:-13px -18px -13px 0;padding:0;border:0;border-radius:var(--radius-pill);background:transparent;color:var(--on-cta);cursor:pointer}
.ccv-toast-close:hover{background:rgba(27,16,22,.1)}
.ccv-toast-close:focus-visible,body > .woocommerce-notices-wrapper .button:focus-visible{outline:2px solid var(--obsidian-black);outline-offset:2px}
body > .woocommerce-notices-wrapper .is-leaving{opacity:0;transform:translateY(16px);transition:opacity .3s var(--ease-calm),transform .3s var(--ease-calm)}
@keyframes ccv-toast-in{from{opacity:0;transform:translateY(16px)}}
@media(prefers-reduced-motion:reduce){body > .woocommerce-notices-wrapper > *{animation:none}body > .woocommerce-notices-wrapper .is-leaving{transition:none}}
/* phones: the toast keeps one row (text · View cart · ×) with 14 px text; View cart fills the height inside the
   20 px padding, with the card's corner radius (a pill that tall would read as an oval) */
@media(max-width:599px){body > .woocommerce-notices-wrapper :is(.woocommerce-message,.woocommerce-info,.woocommerce-error){grid-template-columns:auto 1fr auto auto;column-gap:var(--space-xs);font-size:var(--type-body-sm)!important}body > .woocommerce-notices-wrapper :is(.woocommerce-message,.woocommerce-info,.woocommerce-error) .button{grid-column:3;grid-row:1;align-self:stretch;justify-self:end;padding:0 var(--space-sm)!important;border-radius:var(--radius-md)!important}.ccv-toast-close{grid-column:4}}
/* CCV buy box on WooCommerce product forms (see ccv-buybox.js) */
form.ccv-buy{background:none;display:block;font-size:var(--type-body-md);font-weight:400}
/* WooCommerce gives the form the class "cart", which the header's cart-count badge (.ccv .cart b) also matches */
form.ccv-buy .size b{display:block;place-items:normal;background:none;color:inherit;border-radius:0;min-width:0;height:auto;font-size:inherit;margin:0;font-weight:600}
form.ccv-buy table.variations,form.ccv-buy .woocommerce-variation-price,form.ccv-buy .woocommerce-variation-description,form.ccv-buy .reset_variations{display:none!important}
form.ccv-buy .ccv-options{border:0;padding:0;margin:0}
form.ccv-buy .ccv-options legend{font-weight:600;padding:0}
form.ccv-buy .buy{display:flex!important;gap:var(--space-xs);align-items:stretch;margin:0}
form.ccv-buy .quantity.qty{float:none!important;margin:0!important;display:flex;flex:none}
form.ccv-buy .quantity.qty button{min-width:40px}
form.ccv-buy .quantity.qty input.qty{width:36px;border:0;background:transparent;text-align:center;font:inherit;color:var(--ink);padding:0;-moz-appearance:textfield;appearance:textfield}
form.ccv-buy .quantity.qty input.qty::-webkit-inner-spin-button,form.ccv-buy .quantity.qty input.qty::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
form.ccv-buy .btn{float:none!important;flex:1;min-width:0;min-height:50px!important;padding:14px var(--space-md)!important;border-radius:var(--radius-pill)!important;font:600 var(--type-label)/1 var(--font-sans)!important;white-space:nowrap}
/* the theme animates every button property (transition: all .2s); when ccv-buybox.js turns the Woo button into the CCV
   button its width would animate from 0 and could stay half-grown, so only colours animate here (4 Nov) */
form.ccv-buy .btn{transition-property:background-color,color,border-color,box-shadow!important;transition-duration:var(--dur-base,400ms)!important}
/* phones up to 399px (4 Nov): a narrower number field and button padding so "Add to cart · RM198" fits beside the quantity at 360px */
@media(max-width:399px){form.ccv-buy .quantity.qty input.qty{width:30px!important;min-width:0!important;flex:0 0 30px!important;padding:0!important}form.ccv-buy .btn{padding-left:14px!important;padding-right:14px!important}}
/* very small phones (under 360px): the button may wrap rather than push the page sideways (4 Nov) */
@media(max-width:359px){form.ccv-buy .btn{white-space:normal!important;line-height:1.2!important}}
form.ccv-buy .btn--primary{background:var(--cta)!important;color:var(--on-cta)!important;border:1.5px solid transparent!important}
form.ccv-buy .btn--primary:hover{background:var(--deep-crimson)!important;color:var(--linen-white)!important}
form.ccv-buy .btn--secondary{background:transparent!important;color:var(--title)!important;border:1.5px solid var(--title)!important}
form.ccv-buy .btn--secondary:hover{background:var(--title)!important;color:var(--surface)!important}
form.ccv-buy .ccv-buy-now{display:flex;width:100%;margin:var(--space-xs) 0 0!important}
form.ccv-buy .btn:disabled,form.ccv-buy .btn.disabled{opacity:.5;cursor:not-allowed}
/* tighter cards on phones keep price + Add to cart in the first screen */
@media(max-width:899px){form.ccv-buy .sizes{margin:var(--space-2xs) 0 var(--space-sm)}form.ccv-buy .size{padding:var(--space-xs) var(--space-sm)}}
/* the price range repeats what the cards and button show */
.ccv-pdp .ccv-price:has(~ .ccv-add-to-cart form.variations_form){display:none}
/* CCV cart and checkout lines: product context and the buy box's controls (see ccv-cart.js).
   Prefixed with body: WooCommerce's block styles load after this file and would win a tie. */
body:is(.woocommerce-cart,.woocommerce-checkout) .wc-block-cart-items,body:is(.woocommerce-cart,.woocommerce-checkout) .wc-block-components-order-summary{font-size:var(--type-body-md)}
body.woocommerce-cart .wc-block-cart-items__header{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
body.woocommerce-cart .wc-block-cart-items td{border-color:var(--hairline)!important;padding-top:var(--space-lg)!important;padding-bottom:var(--space-lg)!important;vertical-align:top}
body.woocommerce-cart td.wc-block-cart-item__image{width:96px!important;padding-right:var(--space-md)!important}
body.woocommerce-cart .wc-block-cart-item__image img{width:96px!important;height:96px!important;max-width:none;object-fit:cover}
body.woocommerce-cart .wc-block-cart-item__image img,body.woocommerce-checkout .wc-block-components-order-summary-item__image img{background:var(--surface-card);border-radius:var(--radius-md)}
/* name, then what it is, then the chosen option and its note on one muted line */
body:is(.woocommerce-cart,.woocommerce-checkout) .wc-block-components-product-name{font:700 var(--type-headline-sm)/1.35 var(--font-serif)!important;color:var(--title)!important;text-decoration:none}
body.woocommerce-checkout .wc-block-components-order-summary-item .wc-block-components-product-name{font-size:var(--type-body-md)!important}
body:is(.woocommerce-cart,.woocommerce-checkout) .ccv-item-desc{margin:2px 0 var(--space-xs);font-size:var(--type-body-md);line-height:1.5;color:var(--ink)}
body.woocommerce-checkout .ccv-item-desc{font-size:var(--type-body-sm);margin-bottom:var(--space-2xs)}
body.woocommerce-cart .wc-block-cart-item__prices{font-size:var(--type-body-sm);color:var(--ink-muted);margin:0 0 var(--space-2xs)}
body:is(.woocommerce-cart,.woocommerce-checkout) .wc-block-components-product-metadata{display:flex;flex-direction:row!important;flex-wrap:wrap;align-items:baseline;gap:0 .35em;width:100%;box-sizing:border-box;margin:0 0 var(--space-sm);font-size:var(--type-body-sm);line-height:1.5;color:var(--ink-muted)}
body:is(.woocommerce-cart,.woocommerce-checkout) .wc-block-components-product-metadata>*{flex:0 0 auto;width:auto!important;max-width:100%}
body:is(.woocommerce-cart,.woocommerce-checkout) .wc-block-components-product-metadata .wc-block-components-product-details{order:-1;margin:0;padding:0;font-size:inherit}
body:is(.woocommerce-cart,.woocommerce-checkout) .wc-block-components-product-details *{font-size:inherit}
body:is(.woocommerce-cart,.woocommerce-checkout) .wc-block-components-product-metadata__description,body:is(.woocommerce-cart,.woocommerce-checkout) .wc-block-components-product-metadata__description p{margin:0;font-size:inherit}
body:is(.woocommerce-cart,.woocommerce-checkout) .wc-block-components-product-metadata__description p{display:inline}
body:is(.woocommerce-cart,.woocommerce-checkout) .wc-block-components-product-metadata__description::before{content:"\00b7\00a0"}
body.woocommerce-cart .wc-block-cart-item__total{font:600 var(--type-body-md)/1.4 var(--font-sans);color:var(--title)}
/* quantity: the buy box's pill stepper; remove: a round icon button */
body.woocommerce-cart .wc-block-cart-item__quantity{display:flex;align-items:center;gap:var(--space-xs)}
body.woocommerce-cart .wc-block-components-quantity-sele\63 tor{display:inline-flex;width:auto!important;height:44px;margin:0;border:1.5px solid var(--hairline)!important;border-radius:var(--radius-pill)!important;background:var(--surface)}
body.woocommerce-cart .wc-block-components-quantity-sele\63 tor::after{border:1.5px solid var(--hairline)!important;border-radius:var(--radius-pill)!important;opacity:1}
body.woocommerce-cart .wc-block-components-quantity-sele\63 tor__button{min-width:40px;font-size:var(--type-body-lg)!important;color:var(--ink)!important;opacity:1}
body.woocommerce-cart .wc-block-components-quantity-sele\63 tor__button:disabled{opacity:.35}
body.woocommerce-cart .wc-block-components-quantity-sele\63 tor__input{width:36px!important;min-width:36px;font:600 var(--type-body-md)/1 var(--font-sans)!important;color:var(--ink)!important}
body.woocommerce-cart .wc-block-cart-item__remove-link{display:inline-grid!important;place-items:center;width:44px!important;height:44px!important;margin:0!important;border-radius:var(--radius-pill);color:var(--ink-muted)!important;transition:background-color .2s,color .2s}
body.woocommerce-cart .wc-block-cart-item__remove-link:hover{background:var(--surface-card);color:var(--deep-crimson)!important}
/* totals panel: readable sizes, full-width actions like the buy box */
body:is(.woocommerce-cart,.woocommerce-checkout) .wc-block-components-sidebar :is(.wc-block-components-totals-item,.wc-block-components-panel__button){font-size:var(--type-body-md)}
body.woocommerce-checkout .wc-block-components-checkout-order-summary__title-text{font:700 var(--type-headline-sm)/1.35 var(--font-serif);color:var(--title)}
body.woocommerce-cart .wc-block-cart__totals-title{font-size:var(--type-headline-sm)!important;margin:0 0 var(--space-xs)!important;padding:0!important}
body.woocommerce-cart .wc-block-cart__submit-button{width:100%}
body.woocommerce-cart .ccv-continue{display:flex;align-items:center;justify-content:center;width:100%;min-height:50px;margin-top:var(--space-xs);border:1.5px solid var(--title);border-radius:var(--radius-pill);color:var(--title)!important;font:600 var(--type-label)/1 var(--font-sans)!important;text-decoration:none;box-sizing:border-box;transition:background-color .2s,color .2s}
body.woocommerce-cart .ccv-continue:hover{background:var(--title);color:var(--surface)!important}
@media(max-width:599px){body.woocommerce-cart .wc-block-cart-items td{padding-top:var(--space-md)!important;padding-bottom:var(--space-md)!important}}
/* narrow carts (WooCommerce adds .is-mobile): a smaller picture in its own column; the sticky bar keeps only Proceed to checkout */
body.woocommerce-cart .is-mobile .wc-block-cart-items__row{grid-template-columns:64px 1fr auto!important;column-gap:var(--space-sm)}
body.woocommerce-cart .is-mobile td.wc-block-cart-item__image{width:64px!important;padding-right:0!important}
body.woocommerce-cart .is-mobile .wc-block-cart-item__image img{width:64px!important;height:64px!important}
body.woocommerce-cart .wc-block-cart__submit-container--sticky .ccv-continue{display:none}
/* empty cart: the "New in store" grid in the shop's type, with the coral pill button (the theme's link colour made it crimson on dark grey) */
body.woocommerce-cart .wc-block-grid__product-title{font:700 var(--type-headline-sm)/1.35 var(--font-serif)!important;color:var(--title)!important}
body.woocommerce-cart .wc-block-grid__product-price{font-size:var(--type-body-md)!important;color:var(--ink)}
body.woocommerce-cart .wp-block-button__link{display:inline-flex;align-items:center;justify-content:center;min-height:50px;padding:14px 30px!important;border:0;border-radius:var(--radius-pill)!important;background:var(--cta)!important;color:var(--on-cta)!important;font:600 var(--type-label)/1 var(--font-sans)!important;text-decoration:none}
body.woocommerce-cart .wp-block-button__link:hover{background:var(--deep-crimson)!important;color:var(--linen-white)!important}
body.woocommerce-cart .wc-block-cart__empty-cart__title{font:700 var(--type-headline-lg)/1.25 var(--font-serif)!important;color:var(--title);margin:0 0 var(--space-xl)!important}
body.woocommerce-cart .wc-block-cart__empty-cart__title::before{display:none!important}
body.woocommerce-cart .wp-block-woocommerce-empty-cart-block .wp-block-separator{display:none}/* End custom CSS */