/**
 * DDC Help Center — Custom Stylesheet
 *
 * @description Custom stylesheet for Doodle Design Co. Help Scout Help Center
 * @author      Will S.
 * @version     7.4.18
 * @date        2026-05-28
 * @company     Doodle Design Company
 * @website     https://help.sharpsticker.store
 * @platform    Help Scout (Standard tier — CSS upload + Insert <head> Code)
 *
 * Section index
 *   1.  CSS Custom Properties
 *   2.  @font-face declarations
 *   3.  Accessibility (skip-link, focus)
 *   4.  Base styles
 *   5.  Hero / Search section
 *   5b. Rotating placeholder
 *   6.  Navbar (brand lockup, links, Contact button, hamburger)
 *   7.  Category / collection cards (homepage)
 *   8.  Category background images (per-category icon registry)
 *   9.  Sidebar
 *   10. Category head / sort
 *   11. Main content wrapper
 *   12. Search results page (#serp)
 *   13. Article body (#fullArticle)
 *   14. Callout boxes (cool pastel palette)
 *   15. Quick Answers accordion
 *   16. Tabs component
 *   17. Related Articles BEM
 *   18. User Guides grid
 *   19. Article Ratings (hidden)
 *   20. Icons
 *   21. Contact Modal
 *   22. Modal Overlay
 *   23. Footer (light 3-column)
 */


/* ==========================================================================
   1. CSS Custom Properties
   ========================================================================== */

:root {
  /* ── Core palette ──────────────────────────────────────────────────────── */
  --color-bg:                   #fff5ee;   /* page background */
  --color-surface:              #fffaf6;   /* cards, sidebars, callout fills, footer */
  --color-text:                 #333333;   /* primary text, headings, button labels */
  --color-text-muted:           #7a7370;   /* subheads, meta, breadcrumbs */
  --color-border:               #e8d9cc;   /* card borders, hairlines, input borders */
  --color-border-strong:        #d7c3b0;   /* slightly darker hairline for hover/active */
  --color-button-bg:            #333333;
  --color-button-bg-hover:      #1f1f1f;
  --color-button-text:          #fff5ee;
  --color-focus-ring:           #333333;
  --color-code-bg:              #f5e6d8;   /* warm-tinted inline code background */
  --color-code-block-bg:        #333333;
  --color-code-block-text:      #fff5ee;

  /* ── Brand aliases (back-compat with v5.2.0 inherited selectors) ──────── */
  --color-primary:              var(--color-text);
  --color-primary-dark:         var(--color-button-bg-hover);
  --color-primary-light:        var(--color-text-muted);
  --color-secondary:            var(--color-text);
  --color-secondary-dark:       var(--color-button-bg-hover);
  --color-secondary-light:      var(--color-text-muted);
  --color-accent:               var(--color-text-muted);
  --color-accent-dark:          var(--color-text);
  --color-accent-light:         var(--color-border-strong);
  --color-black:                var(--color-text);
  --color-white:                #ffffff;

  /* ── Callout cool pastels ──────────────────────────────────────────────── */
  --callout-info-bg:            #e6f0f7;
  --callout-info-accent:        #5b8aa8;
  --callout-tip-bg:             #e3f1ea;
  --callout-tip-accent:         #5c9079;
  --callout-warn-bg:            #fbeede;
  --callout-warn-accent:        #b1845a;
  --callout-important-bg:       #f4dee0;
  --callout-important-accent:   #a76971;
  --callout-neutral-bg:         rgba(51, 51, 51, 0.05);
  --callout-neutral-accent:     var(--color-text-muted);

  /* Legacy semantic aliases (v5.2.0 selectors still resolve) */
  --color-info:                 var(--callout-info-accent);
  --color-info-bg:              var(--callout-info-bg);
  --color-info-border:          var(--callout-info-accent);
  --color-warning:              var(--callout-warn-accent);
  --color-warning-bg:           var(--callout-warn-bg);
  --color-warning-border:       var(--callout-warn-accent);
  --color-success:              var(--callout-tip-accent);
  --color-success-bg:           var(--callout-tip-bg);
  --color-success-border:       var(--callout-tip-accent);
  --color-danger:               var(--callout-important-accent);
  --color-danger-bg:            var(--callout-important-bg);
  --color-danger-border:        var(--callout-important-accent);

  /* ── Neutrals (warm-tinted alphas) ─────────────────────────────────────── */
  --color-grey-extra-light:     rgba(51, 51, 51, 0.08);
  --color-grey-light:           rgba(51, 51, 51, 0.18);
  --color-grey:                 rgba(51, 51, 51, 0.48);
  --color-grey-dark:            rgba(51, 51, 51, 0.62);
  --color-grey-extra-dark:      rgba(51, 51, 51, 0.78);

  /* ── Typography ────────────────────────────────────────────────────────── */
  --font-family-heading:        "Moulay", Georgia, serif;
  --font-family-body:           "Sentient", system-ui, -apple-system, "Segoe UI", sans-serif;
  --font-family-mono:           "SF Mono", "Fira Code", Consolas, monospace;

  /* Legacy family aliases */
  --font-family-primary:        var(--font-family-body);
  --font-family-secondary:      var(--font-family-heading);
  --font-family-display:        var(--font-family-heading);
  --font-family-text:           var(--font-family-body);
  --font-family-headline:       var(--font-family-heading);
  --font-family-nav:            var(--font-family-body);

  /* Body sizes */
  --font-size-xs:               12px;
  --font-size-sm:               14px;
  --font-size-base:             16px;
  --font-size-md:               17px;
  --font-size-lg:               18px;

  --font-line-height-xs:        1.5;
  --font-line-height-sm:        1.5;
  --font-line-height-base:      1.6;
  --font-line-height-lg:        1.55;

  /* Heading sizes (desktop) */
  --font-size-h1-hero:          64px;
  --font-size-h1-page:          40px;
  --font-size-h2:               28px;
  --font-size-h3:               22px;
  --font-size-h4:               18px;

  /* ── Spacing ───────────────────────────────────────────────────────────── */
  --space-xs:    4px;
  --space-sm:    8px;
  --space-md:    12px;
  --space-lg:    16px;
  --space-xl:    24px;
  --space-2xl:   32px;
  --space-3xl:   40px;
  --space-4xl:   64px;
  --space-5xl:   96px;
  --space-6xl:   128px;

  /* Legacy spacing aliases */
  --spacing-xs:  var(--space-xs);
  --spacing-sm:  var(--space-sm);
  --spacing-md:  var(--space-md);
  --spacing-lg:  var(--space-lg);
  --spacing-xl:  var(--space-xl);
  --spacing-2xl: var(--space-2xl);
  --spacing-3xl: var(--space-3xl);
  --spacing-4xl: var(--space-4xl);
  --spacing-5xl: var(--space-5xl);
  --spacing-6xl: var(--space-6xl);

  /* ── Border radius ─────────────────────────────────────────────────────── */
  --radius-xs:   4px;
  --radius-sm:   8px;
  --radius-md:   10px;
  --radius-lg:   12px;
  --radius-xl:   16px;
  --radius-pill: 30px;
  --radius-full: 50%;

  /* Legacy radius aliases */
  --border-radius-xs:    var(--radius-xs);
  --border-radius-sm:    var(--radius-sm);
  --border-radius-md:    var(--radius-md);
  --border-radius-lg:    var(--radius-lg);
  --border-radius-xl:    var(--radius-xl);
  --border-radius-pill:  var(--radius-pill);
  --border-radius-full:  var(--radius-full);

  /* ── Shadows (softened for warm-cream bg) ──────────────────────────────── */
  --shadow-sm: 0 1px 3px rgba(51, 51, 51, 0.06), 0 1px 2px rgba(51, 51, 51, 0.03);
  --shadow-md: 0 4px 12px rgba(51, 51, 51, 0.08), 0 2px 4px rgba(51, 51, 51, 0.04);
  --shadow-lg: 0 12px 24px rgba(51, 51, 51, 0.08), 0 4px 8px rgba(51, 51, 51, 0.04);

  /* ── Transitions ───────────────────────────────────────────────────────── */
  --transition-fast:   0.1s ease-in-out;
  --transition-normal: 0.2s ease-in-out;
  --transition-slow:   0.3s ease-in-out;

  /* ── Z-index ───────────────────────────────────────────────────────────── */
  --z-dropdown:        1000;
  --z-sticky:          1020;
  --z-fixed:           1030;
  --z-modal-backdrop:  1040;
  --z-modal:           1050;
  --z-index-sticky:    var(--z-sticky);
  --z-index-modal:     var(--z-modal);
  --z-index-modal-backdrop: var(--z-modal-backdrop);

  /* ── Article readability ───────────────────────────────────────────────── */
  --article-max-width:        75ch;
  --article-line-height:      1.6;
  --article-paragraph-spacing: 1.25em;
}


/* ==========================================================================
   2. @font-face declarations
   18 total: 8 Moulay TTF + 10 Sentient OTF (5 weights × 2 styles)
   ========================================================================== */

/* ── Moulay (headings) ─────────────────────────────────────────────────── */

@font-face {
  font-family: "Moulay";
  font-style: normal;
  font-weight: 100;
  font-display: swap;
  src: url("https://cdn.shopify.com/s/files/1/0684/1162/1687/files/Moulay-Thin.ttf?v=1777316100") format("truetype");
}

@font-face {
  font-family: "Moulay";
  font-style: normal;
  font-weight: 200;
  font-display: swap;
  src: url("https://cdn.shopify.com/s/files/1/0684/1162/1687/files/Moulay-ExtraLight.ttf?v=1777316100") format("truetype");
}

@font-face {
  font-family: "Moulay";
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url("https://cdn.shopify.com/s/files/1/0684/1162/1687/files/Moulay-Light.ttf?v=1777316100") format("truetype");
}

@font-face {
  font-family: "Moulay";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("https://cdn.shopify.com/s/files/1/0684/1162/1687/files/Moulay-Regular.ttf?v=1777316100") format("truetype");
}

@font-face {
  font-family: "Moulay";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("https://cdn.shopify.com/s/files/1/0684/1162/1687/files/Moulay-Medium.ttf?v=1777316100") format("truetype");
}

@font-face {
  font-family: "Moulay";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("https://cdn.shopify.com/s/files/1/0684/1162/1687/files/Moulay-SemiBold.ttf?v=1777316100") format("truetype");
}

@font-face {
  font-family: "Moulay";
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("https://cdn.shopify.com/s/files/1/0684/1162/1687/files/Moulay-Bold.ttf?v=1777316100") format("truetype");
}

@font-face {
  font-family: "Moulay";
  font-style: normal;
  font-weight: 800;
  font-display: swap;
  src: url("https://cdn.shopify.com/s/files/1/0684/1162/1687/files/Moulay-ExtraBold.ttf?v=1777316100") format("truetype");
}

/* ── Sentient (body) ───────────────────────────────────────────────────── */

@font-face {
  font-family: "Sentient";
  font-style: normal;
  font-weight: 200;
  font-display: swap;
  src: url("https://cdn.shopify.com/s/files/1/0684/1162/1687/files/Sentient-Extralight.otf?v=1777316052") format("opentype");
}

@font-face {
  font-family: "Sentient";
  font-style: italic;
  font-weight: 200;
  font-display: swap;
  src: url("https://cdn.shopify.com/s/files/1/0684/1162/1687/files/Sentient-ExtralightItalic.otf?v=1777316051") format("opentype");
}

@font-face {
  font-family: "Sentient";
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url("https://cdn.shopify.com/s/files/1/0684/1162/1687/files/Sentient-Light.otf?v=1777316051") format("opentype");
}

@font-face {
  font-family: "Sentient";
  font-style: italic;
  font-weight: 300;
  font-display: swap;
  src: url("https://cdn.shopify.com/s/files/1/0684/1162/1687/files/Sentient-LightItalic.otf?v=1777316051") format("opentype");
}

@font-face {
  font-family: "Sentient";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("https://cdn.shopify.com/s/files/1/0684/1162/1687/files/Sentient-Regular.otf?v=1777316051") format("opentype");
}

@font-face {
  font-family: "Sentient";
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url("https://cdn.shopify.com/s/files/1/0684/1162/1687/files/Sentient-Italic.otf?v=1777316051") format("opentype");
}

@font-face {
  font-family: "Sentient";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("https://cdn.shopify.com/s/files/1/0684/1162/1687/files/Sentient-Medium.otf?v=1777316051") format("opentype");
}

@font-face {
  font-family: "Sentient";
  font-style: italic;
  font-weight: 500;
  font-display: swap;
  src: url("https://cdn.shopify.com/s/files/1/0684/1162/1687/files/Sentient-MediumItalic.otf?v=1777316052") format("opentype");
}

@font-face {
  font-family: "Sentient";
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("https://cdn.shopify.com/s/files/1/0684/1162/1687/files/Sentient-Bold.otf?v=1777316052") format("opentype");
}

@font-face {
  font-family: "Sentient";
  font-style: italic;
  font-weight: 700;
  font-display: swap;
  src: url("https://cdn.shopify.com/s/files/1/0684/1162/1687/files/Sentient-BoldItalic.otf?v=1777316051") format("opentype");
}


/* ==========================================================================
   3. Accessibility — Skip Link & Focus Styles
   ========================================================================== */

.skip-link {
  position: absolute;
  top: -100%;
  left: 16px;
  background: var(--color-text);
  color: var(--color-button-text);
  padding: 10px 20px;
  border-radius: var(--radius-md);
  font-family: var(--font-family-body);
  font-size: var(--font-size-base);
  font-weight: 500;
  z-index: var(--z-modal);
  text-decoration: none;
  transition: top var(--transition-fast);
}

.skip-link:focus {
  top: 16px;
}

:focus-visible {
  outline: 2.5px solid var(--color-focus-ring) !important;
  outline-offset: 3px !important;
  border-radius: 3px;
}

:focus:not(:focus-visible) {
  outline: none;
}


/* ==========================================================================
   4. Base Styles
   ========================================================================== */

*,
*::before,
*::after {
  box-sizing: border-box;
}

html {
  scroll-behavior: smooth;
  scroll-padding-top: 88px;
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
}

body {
  background-color: var(--color-bg) !important;
  font-family: var(--font-family-body);
  font-size: var(--font-size-base);
  font-weight: 400;
  line-height: var(--font-line-height-base);
  color: var(--color-text);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
  letter-spacing: 0.01em;
}

h1, h2, h3, h4, h5, h6 {
  font-family: var(--font-family-heading);
  color: var(--color-text);
  letter-spacing: -0.01em;
  margin-top: 0;
}

h1 { font-size: var(--font-size-h1-page); font-weight: 700; line-height: 1.1; }
h2 { font-size: var(--font-size-h2);      font-weight: 600; line-height: 1.2; }
h3 { font-size: var(--font-size-h3);      font-weight: 600; line-height: 1.25; }
h4 { font-size: var(--font-size-h4);      font-weight: 500; line-height: 1.3; }
h5 { font-size: var(--font-size-base);    font-weight: 500; line-height: 1.4; }

p {
  font-family: var(--font-family-body);
  color: var(--color-text);
  margin: 0 0 var(--article-paragraph-spacing);
}

p:last-child { margin-bottom: 0; }

hr {
  height: 1px;
  background-color: var(--color-border);
  border: none;
  margin: var(--space-2xl) 0;
}

a {
  color: var(--color-text);
  transition: color var(--transition-fast), opacity var(--transition-fast);
}

a:hover {
  color: var(--color-text-muted);
}

img {
  max-width: 100%;
  height: auto;
}

.container-fluid {
  max-width: 1200px;
}

#contentArea {
  padding: 0 24px;
}

@media (max-width: 768px) {
  #contentArea     { padding: 0 16px; }
  .container-fluid { padding-left: 16px; padding-right: 16px; }
  #main-content    { padding: 0 16px; }
  .contentWrapper  { padding: 0 16px; }
}


/* ==========================================================================
   5. Hero / Search Section (#docsSearch)
   ========================================================================== */

#docsSearch {
  background-color: var(--color-bg) !important;
  background-image: none !important;
  min-height: 280px;
  display: flex;
  align-items: center;
  flex-direction: column;
  justify-content: center;
  padding: 96px 24px 48px;
  margin-bottom: 16px;
  border-bottom: 1px solid var(--color-border);
}

#docsSearch h1 {
  font-family: var(--font-family-heading) !important;
  font-size: clamp(2.5rem, 6vw, 4rem);
  line-height: 1.05;
  letter-spacing: -0.02em;
  margin: 0 0 12px;
  color: var(--color-text);
  font-weight: 800;
  text-align: center;
}

/* Hero subhead: CSS-injected so it survives JS failure */
#docsSearch h1::after {
  content: "Search our help articles or browse by topic below.";
  display: block;
  margin-top: 14px;
  font-family: var(--font-family-body);
  font-size: var(--font-size-lg);
  font-weight: 400;
  line-height: 1.5;
  letter-spacing: 0;
  color: var(--color-text-muted);
}

#docsSearch #searchBar {
  width: 640px !important;
  max-width: 100%;
  margin-top: 32px;
  padding: 0 !important;
  display: flex;
  align-items: center;
  position: relative;
  filter: drop-shadow(0 4px 12px rgba(51, 51, 51, 0.08));
}

#docsSearch .search-query {
  border: 1.5px solid var(--color-border) !important;
  border-radius: var(--radius-pill) !important;
  background: var(--color-surface) !important;
  color: var(--color-text) !important;
  height: 58px !important;
  font-family: var(--font-family-body) !important;
  font-size: 17px !important;
  font-weight: 400;
  padding-left: 22px !important;
  padding-right: 148px;
  width: 100%;
  box-sizing: border-box;
  transition: border-color var(--transition-normal), box-shadow var(--transition-normal);
}

#docsSearch .search-query::placeholder {
  color: var(--color-text-muted);
  opacity: 1;
}

#docsSearch .search-query:hover {
  border-color: var(--color-border-strong) !important;
}

#docsSearch .search-query:focus {
  border-color: var(--color-text) !important;
  box-shadow: 0 0 0 3px rgba(51, 51, 51, 0.10) !important;
  outline: none;
}

#docsSearch #searchBar button {
  background: var(--color-button-bg);
  color: var(--color-button-text);
  height: 48px;
  border-radius: var(--radius-pill);
  border: none;
  font-family: var(--font-family-body) !important;
  font-size: 15px;
  font-weight: 500;
  padding: 0 28px;
  line-height: 1;
  transition: background-color var(--transition-fast), transform var(--transition-fast);
  position: absolute;
  right: 5px;
  top: 50%;
  margin-top: -24px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  min-height: 44px;
}

/* Clean hover/press: stays a solid dark filled pill (just a touch darker + a
   slight lift) — never flips to an outlined / light-background state. */
#docsSearch #searchBar button:hover,
#docsSearch #searchBar button:active,
#docsSearch #searchBar button:focus {
  background: var(--color-button-bg-hover) !important;
  color: var(--color-button-text) !important;
  border: none !important;
  box-shadow: none !important;
}

#docsSearch #searchBar button:hover { transform: translateY(-1px); }
#docsSearch #searchBar button:active { transform: translateY(0); }

#docsSearch #searchBar button:focus-visible {
  outline: 2.5px solid var(--color-focus-ring) !important;
  outline-offset: 3px !important;
}

#docsSearch #searchBar button .icon-search::before {
  content: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='16'%20height='16'%20viewBox='0%200%2020%2020'%20fill='%23fff5ee'%3E%3Cpath%20fill-rule='evenodd'%20d='M12.323%2013.383a5.5%205.5%200%201%201%201.06-1.06l2.897%202.897a.75.75%200%201%201-1.06%201.06l-2.897-2.897Zm.677-4.383a4%204%200%201%201-8%200%204%204%200%200%201%208%200Z'/%3E%3C/svg%3E");
  position: relative;
  top: 1px;
}

#docsSearch textarea,
#docsSearch input[type=text] {
  box-shadow: none;
  -webkit-appearance: none;
  transition: border-color var(--transition-fast), box-shadow var(--transition-fast);
}

/* Autocomplete dropdown */
#docsSearch #serp-dd {
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-lg);
  top: 68px;
  margin-top: 8px;
  border: 1px solid var(--color-border);
  background: var(--color-surface);
  overflow: hidden;
}

#docsSearch #serp-dd .noResults {
  padding: 16px 24px;
  font-size: var(--font-size-base);
  color: var(--color-text-muted);
  font-family: var(--font-family-body);
}

#docsSearch #serp-dd a {
  color: var(--color-text);
  font-size: var(--font-size-base);
  font-family: var(--font-family-body);
  font-weight: 400;
  padding: 14px 18px;
  display: block;
  transition: background var(--transition-fast);
}

#docsSearch #serp-dd a:hover {
  background: var(--color-grey-extra-light);
}

@media (max-width: 768px) {
  #docsSearch {
    min-height: 220px;
    padding: 48px 16px 40px;
    margin-bottom: 16px;
  }

  #docsSearch h1 {
    font-size: clamp(2rem, 7vw, 2.8rem);
    line-height: 1.1;
    margin-bottom: 8px;
    padding: 0 8px;
    word-wrap: break-word;
  }

  #docsSearch h1::after {
    font-size: 16px;
    margin-top: 10px;
  }

  #docsSearch #searchBar {
    width: 100% !important;
    max-width: 540px;
    margin-top: 24px;
    filter: none;
  }

  /* Mobile search button: icon only — circular dark pill with just the
     magnifier. Hides any "Search" text label via font-size:0 (the icon is
     injected as a background-image on .icon-search::before, so it stays). */
  #docsSearch #searchBar button {
    width: 44px;
    height: 44px;
    min-height: 44px;
    padding: 0 !important;
    font-size: 0 !important;
    line-height: 0;
    border-radius: 50%;
    gap: 0;
    right: 7px;
    margin-top: -22px;
  }

  /* Dead-centre the magnifier in the round button (the icon wrapper fills the
     button and centres its glyph; no baseline nudge). */
  #docsSearch #searchBar button .icon-search {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 100%;
  }

  /* Upsize the magnifier so it reads at icon-only size. */
  #docsSearch #searchBar button .icon-search::before {
    width: 18px;
    height: 18px;
    position: static;
    top: auto;
    display: block;
    content: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='18'%20height='18'%20viewBox='0%200%2020%2020'%20fill='%23fff5ee'%3E%3Cpath%20fill-rule='evenodd'%20d='M12.323%2013.383a5.5%205.5%200%201%201%201.06-1.06l2.897%202.897a.75.75%200%201%201-1.06%201.06l-2.897-2.897Zm.677-4.383a4%204%200%201%201-8%200%204%204%200%200%201%208%200Z'/%3E%3C/svg%3E");
  }

  /* Make room for the round button (44 + 7 right offset + 8 gap = ~60). */
  #docsSearch .search-query {
    padding-right: 64px !important;
    height: 54px !important;
  }
}

@media (max-width: 480px) {
  #docsSearch h1 { font-size: 2.2rem; }
  #docsSearch h1::after { font-size: 15px; }

  #docsSearch .search-query {
    padding-right: 60px !important;
    font-size: 16px !important;
  }

  /* Slightly smaller round button on the smallest phones. */
  #docsSearch #searchBar button {
    width: 40px;
    height: 40px;
    min-height: 40px;
    margin-top: -20px;
    right: 6px;
  }
}


/* ==========================================================================
   5b. Rotating Placeholder
   JS drives the rotation; CSS owns the animation states.
   ========================================================================== */

.hs-placeholder-rotator {
  position: absolute;
  left: 22px;
  top: 50%;
  transform: translateY(-50%);
  font-family: var(--font-family-body) !important;
  font-size: 17px;
  font-weight: 400;
  color: var(--color-text-muted);
  pointer-events: none;
  user-select: none;
  -webkit-user-select: none;
  z-index: 1;
  white-space: nowrap;
  overflow: hidden;
  max-width: calc(100% - 165px);
  will-change: opacity, transform;
  transition: opacity 0.2s ease;
}

.hs-placeholder-rotator.hs-ph-in {
  animation: hs-ph-in 0.5s cubic-bezier(0.22, 1, 0.36, 1) both;
}

.hs-placeholder-rotator.hs-ph-out {
  animation: hs-ph-out 0.35s ease-in both;
}

/* Hard hide on focus/typing — display wins over the keyframe fill-mode,
   which is what made the old opacity-based hide fail. */
.hs-placeholder-rotator.hs-ph-hidden {
  display: none !important;
}

@keyframes hs-ph-in {
  from { opacity: 0; transform: translateY(calc(-50% + 8px)); }
  to   { opacity: 1; transform: translateY(-50%); }
}

@keyframes hs-ph-out {
  from { opacity: 1; transform: translateY(-50%); }
  to   { opacity: 0; transform: translateY(calc(-50% - 6px)); }
}

@media (max-width: 768px) {
  .hs-placeholder-rotator { font-size: 15px; max-width: calc(100% - 132px); }
}

@media (max-width: 480px) {
  .hs-placeholder-rotator { font-size: 14px; max-width: calc(100% - 118px); }
}


/* ==========================================================================
   6. Navbar
   ========================================================================== */

.navbar {
  padding-top: 18px;
  padding-bottom: 14px;
  background-color: var(--color-bg) !important;
  position: sticky;
  top: 0;
  z-index: var(--z-sticky);
  box-shadow: none;
  border-bottom: none;
  transition: padding 0.25s ease, box-shadow 0.25s ease, background-color 0.25s ease;
  will-change: padding, box-shadow;
}

/* Flex row so the brand pins left, nav fills, actions pin right.
   The category links are centered via balanced spacers inside .nav.
   The header spans the full page width (overriding the global 1200px
   .container-fluid cap) with a little breathing room on the sides. */
.navbar .navbar-inner > .container-fluid,
.navbar .navbar-inner > .container {
  display: flex;
  align-items: center;
  gap: 16px;
  max-width: none !important;
  width: 100%;
  padding-left: 32px;
  padding-right: 32px;
  box-sizing: border-box;
}

.navbar .nav-collapse {
  flex: 1 1 auto;
  min-width: 0;
}

/* The header is simply sticky on EVERY page — no scroll-shrink, no shadow, no
   frosting. The is-scrolled class is still toggled but intentionally has no
   visual effect (kept a no-op so any rule keyed off it stays harmless). */
.navbar.is-scrolled {
  padding-top: 18px;
  padding-bottom: 14px;
  box-shadow: none;
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
}

.navbar .navbar-inner {
  background: none !important;
  box-shadow: none !important;
  border: none !important;
}

/* ── Brand lockup: icon + "Help" ───────────────────────────────────────── */
/*
 * Works in three states:
 *   (a) Our v6 JS injected <img class="hs-logo"> + <span class="hs-brand-word">Help</span>
 *   (b) Old v5.2.0 JS injected hs-logo--text + hs-logo--icon (we hide the text one)
 *   (c) NO JS — only HelpScout's default <span> with long site name. CSS fakes the lockup
 *       using a background-image icon + ::after wordmark, and zeroes the default text.
 */

.navbar .brand {
  padding: 0;
  height: 44px;
  display: inline-flex !important;
  align-items: center;
  gap: 8px;
  text-decoration: none !important;
  flex-shrink: 0;
  color: var(--color-text) !important;
  position: relative;
  /* (c) CSS fallback icon — kicks in when no <img> has been injected */
  background-image: url("https://cdn.shopify.com/s/files/1/0684/1162/1687/files/OG_Icon_631b9010-d2c8-471c-8924-c089e76a9463.svg?v=1777316172");
  background-repeat: no-repeat;
  background-position: left center;
  background-size: 40px 40px;
  padding-left: 48px;
  min-height: 40px;
}

/* (a/b) When JS has injected an <img class="hs-logo">, drop the CSS bg + padding */
.navbar .brand:has(img.hs-logo) {
  background-image: none;
  padding-left: 0;
}

/* (b) Old v5.2.0 cross-fade: hide the wordmark image, keep only the icon */
.navbar .brand .hs-logo--text {
  display: none !important;
}

/* All real <img> logos render at the same compact size — no cross-fade */
.navbar .brand .hs-logo,
.navbar .brand .hs-logo--icon {
  height: 40px;
  width: 40px;
  display: block;
  opacity: 1 !important;
  transform: none !important;
  position: static !important;
  transition: opacity var(--transition-normal);
}

/* "Help" wordmark (v6 JS path) */
.navbar .brand .hs-brand-word {
  font-family: var(--font-family-heading) !important;
  font-weight: 500;
  font-size: 24px;
  line-height: 1;
  color: var(--color-text) !important;
  letter-spacing: -0.005em;
  transition: color var(--transition-normal);
}

/* (c) No-JS path: HelpScout's default <span> shows the full site name.
   Zero its content and replace with "Help" via ::after. */
.navbar .brand > span:not(.hs-brand-word) {
  font-size: 0 !important;
  line-height: 0 !important;
  letter-spacing: 0 !important;
  color: transparent !important;
  display: inline-flex;
  align-items: center;
}

.navbar .brand > span:not(.hs-brand-word)::after {
  content: "Help";
  display: inline-block;
  font-family: var(--font-family-heading);
  font-weight: 500;
  font-size: 24px;
  line-height: 1;
  color: var(--color-text);
  letter-spacing: -0.005em;
}

/* If v6 JS wordmark is present, hide the ::after fallback */
.navbar .brand:has(.hs-brand-word) > span:not(.hs-brand-word) {
  display: none !important;
}

/* ── Nav links + Contact button ────────────────────────────────────────── */

.navbar .nav {
  margin: 0;
  display: flex;
  align-items: center;
  gap: 4px;
  width: 100%;
  float: none;
}

.navbar .nav > li {
  display: inline-flex;
  align-items: center;
}

/* Balanced spacers centre the category links between brand and actions. */
.navbar .nav .nav-spacer {
  flex: 1 1 0;
  min-width: 0;
}

.navbar .nav .nav-cat {
  flex: 0 0 auto;
}

.navbar .nav .header-actions {
  flex: 1 1 0;
  min-width: 0;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 12px;
}

/* ── Header dropdowns (Contact us / Return to Doodle) ──────────────────── */

.hs-dropdown {
  position: relative;
  display: inline-flex;
}

.hs-dd-toggle {
  cursor: pointer;
}

/* Caret uses the toggle's text colour via mask, so it stays legible on both
   the filled (light text) and outlined (dark text) buttons and on hover. */
.hs-dd-caret {
  width: 14px;
  height: 14px;
  flex-shrink: 0;
  background-color: currentColor;
  -webkit-mask: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2020%2020'%20fill='%23333333'%3E%3Cpath%20fill-rule='evenodd'%20d='M5.72%208.47a.75.75%200%200%201%201.06%200l3.47%203.47%203.47-3.47a.75.75%200%201%201%201.06%201.06l-4%204a.75.75%200%200%201-1.06%200l-4-4a.75.75%200%200%201%200-1.06Z'/%3E%3C/svg%3E") center / 14px 14px no-repeat;
  mask: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2020%2020'%20fill='%23333333'%3E%3Cpath%20fill-rule='evenodd'%20d='M5.72%208.47a.75.75%200%200%201%201.06%200l3.47%203.47%203.47-3.47a.75.75%200%201%201%201.06%201.06l-4%204a.75.75%200%200%201-1.06%200l-4-4a.75.75%200%200%201%200-1.06Z'/%3E%3C/svg%3E") center / 14px 14px no-repeat;
  transition: transform var(--transition-fast);
}

.hs-dropdown.is-open .hs-dd-caret {
  transform: rotate(180deg);
}

.hs-dropdown-menu {
  position: absolute;
  top: calc(100% + 8px);
  right: 0;
  min-width: 210px;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-lg);
  padding: 6px;
  display: none;
  flex-direction: column;
  z-index: var(--z-dropdown);
}

.hs-dropdown.is-open .hs-dropdown-menu {
  display: flex;
}

/* Invisible bridge across the 8px gap so hover-open survives the cursor
   travelling from the toggle down into the menu. */
.hs-dropdown-menu::before {
  content: "";
  position: absolute;
  top: -8px;
  left: 0;
  right: 0;
  height: 8px;
}

/* Both menu items are <button class="hs-dd-item"> — identical elements. The
   flex + appearance reset keeps them pixel-identical: same size, font, padding,
   vertical centring and hover. Only the click behaviour differs. */
.hs-dd-item {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  width: 100%;
  text-align: left;
  background: none;
  border: none;
  -webkit-appearance: none;
  appearance: none;
  cursor: pointer;
  font-family: var(--font-family-body) !important;
  font-size: 14px !important;
  font-weight: 500 !important;
  color: var(--color-text) !important;
  padding: 10px 12px !important;
  border-radius: var(--radius-sm);
  text-decoration: none !important;
  white-space: nowrap;
  line-height: 1.3;
  min-height: 40px;
  box-sizing: border-box;
  transition: background var(--transition-fast), color var(--transition-fast);
}

.hs-dd-item:hover {
  background: var(--color-grey-extra-light);
  color: var(--color-text) !important;
  opacity: 1;
}

.hs-dd-divider {
  height: 1px;
  margin: 6px 8px;
  background: var(--color-border);
}

/* Inside the flex actions group, the toggle buttons no longer need margins. */
.navbar .nav .header-actions .contact-btn,
.navbar .nav .header-actions .return-btn {
  margin-left: 0;
}

.navbar .nav a.header-cat-link {
  font-family: var(--font-family-body) !important;
  font-size: 15px;
  font-weight: 500;
  line-height: 1;
  color: var(--color-text) !important;
  padding: 12px 10px !important;
  text-decoration: none !important;
  transition: color var(--transition-fast), background var(--transition-fast);
  letter-spacing: 0;
  min-height: 44px;
  border-radius: var(--radius-sm);
  display: inline-flex;
  align-items: center;
}

.navbar .nav a.header-cat-link:hover {
  color: var(--color-text-muted) !important;
  background: var(--color-grey-extra-light);
  opacity: 1;
}

.navbar .nav .contact-btn {
  background-color: var(--color-button-bg);
  color: var(--color-button-text) !important;
  padding: 10px 20px !important;
  border-radius: var(--radius-pill);
  text-decoration: none !important;
  /* Toggle label in Moulay Regular (heading face); the caret is a CSS mask,
     not text, so it's unaffected. Menu items inside stay in Sentient. */
  font-family: var(--font-family-heading) !important;
  font-weight: 400;
  font-size: 15px;
  border: 1.5px solid var(--color-button-bg);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  transition: background-color var(--transition-normal), color var(--transition-normal), transform var(--transition-normal), box-shadow var(--transition-normal);
  margin-left: 8px;
  white-space: nowrap;
  box-shadow: var(--shadow-sm);
  min-height: 44px;
  line-height: 1;
}

/* The Contact-us toggle keeps a constant colour — no change on hover, press,
   or when its dropdown is open (only the caret rotates to signal open state). */
.navbar .nav .contact-btn:hover,
.navbar .nav .contact-btn:active,
.navbar .nav .hs-dropdown.is-open .contact-btn {
  background-color: var(--color-button-bg);
  border-color: var(--color-button-bg);
  box-shadow: var(--shadow-sm);
  color: var(--color-button-text) !important;
  opacity: 1;
}

.navbar .nav .contact-btn:focus-visible {
  outline: 2.5px solid var(--color-focus-ring) !important;
  outline-offset: 3px !important;
}

/* Return-to-Doodle: outlined button — same shape as Contact us, just border */
.navbar .nav .return-btn {
  background-color: transparent;
  color: var(--color-button-bg) !important;
  padding: 10px 20px !important;
  border-radius: var(--radius-pill);
  text-decoration: none !important;
  font-family: var(--font-family-body) !important;
  font-weight: 500;
  font-size: 15px;
  border: 1.5px solid var(--color-button-bg);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  transition: background-color var(--transition-normal), color var(--transition-normal), transform var(--transition-normal);
  margin-left: 12px;
  white-space: nowrap;
  min-height: 44px;
  line-height: 1;
  box-shadow: none;
}

.navbar .nav .return-btn:hover {
  background-color: var(--color-button-bg);
  color: var(--color-button-text) !important;
  transform: translateY(-1px);
  opacity: 1;
}

.navbar .nav .return-btn:focus-visible {
  outline: 2.5px solid var(--color-focus-ring) !important;
  outline-offset: 3px !important;
}

/* Default HelpScout nav anchors (catch-all, before JS replaces them) */
.navbar .nav a {
  font-family: var(--font-family-body) !important;
  font-size: 15px;
  font-weight: 500;
  color: var(--color-text) !important;
  text-decoration: none !important;
}

.navbar .nav a [class^=icon-] {
  color: var(--color-text) !important;
}

.navbar .nav .active .caret {
  display: none !important;
}

/* ── Hamburger toggle ──────────────────────────────────────────────────── */

.navbar .navbar-toggle {
  position: relative;
  min-width: 44px;
  min-height: 44px;
  background: transparent !important;
  border: none !important;
}

.navbar .navbar-toggle::before {
  content: "";
  background-image: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2020%2020'%20fill='%23333333'%3E%3Cpath%20fill-rule='evenodd'%20d='M3%204.75a.75.75%200%200%201%20.75-.75h12.5a.75.75%200%200%201%200%201.5h-12.5a.75.75%200%200%201-.75-.75Z'/%3E%3Cpath%20fill-rule='evenodd'%20d='M3%2010a.75.75%200%200%201%20.75-.75h12.5a.75.75%200%200%201%200%201.5h-12.5a.75.75%200%200%201-.75-.75Z'/%3E%3Cpath%20fill-rule='evenodd'%20d='M3%2015.25a.75.75%200%200%201%20.75-.75h12.5a.75.75%200%200%201%200%201.5h-12.5a.75.75%200%200%201-.75-.75Z'/%3E%3C/svg%3E");
  background-size: 20px 20px;
  background-repeat: no-repeat;
  background-position: center;
  width: 20px;
  height: 20px;
  display: block;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

.navbar .navbar-toggle .icon-bar {
  display: none !important;
}

.navbar .nav-collapse {
  padding-top: var(--space-2xl);
}

@media (max-width: 768px) {
  .navbar {
    padding-bottom: 0;
  }

  /* Revert the desktop centring flex so the collapse menu stacks normally,
     and tighten the full-width side padding for small screens. */
  .navbar .navbar-inner > .container-fluid,
  .navbar .navbar-inner > .container {
    display: block;
    padding-left: 16px;
    padding-right: 16px;
  }

  .navbar .nav .nav-spacer {
    display: none;
  }

  .navbar .nav .header-actions {
    flex-direction: column;
    align-items: stretch;
    flex: none;
    width: 100%;
    gap: 0;
  }

  .navbar .nav .hs-dropdown {
    display: block;
    width: 100%;
  }

  .navbar .nav .hs-dropdown-menu {
    position: static;
    box-shadow: none;
    border: none;
    background: none;
    min-width: 0;
    padding: 0 0 0 8px;
  }

  .navbar .nav .hs-dd-toggle {
    width: 100%;
    justify-content: center;
  }

  .navbar .brand {
    height: 46px;
  }

  .navbar .brand .hs-logo {
    height: 36px;
    width: 36px;
  }

  .navbar .brand .hs-brand-word {
    font-size: 22px;
  }

  .navbar .navbar-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
  }

  .navbar .navbar-toggle {
    order: 3;
  }

  .navbar .nav {
    flex-direction: column;
    align-items: stretch;
    gap: 0;
    margin: 0;
  }

  .navbar .nav > li {
    display: block;
    width: 100%;
  }

  .navbar .nav a.header-cat-link {
    font-size: 17px;
    padding: 14px 0 !important;
    border-radius: 0;
    border-bottom: 1px solid var(--color-border);
    min-height: 52px;
  }

  .navbar .nav a.header-cat-link:hover {
    background: transparent;
  }

  .navbar .nav .contact-btn,
  .navbar .nav .return-btn {
    margin: 12px 0 0;
    width: 100%;
    justify-content: center;
    padding: 14px 20px !important;
    font-size: 15px;
  }

  .navbar .nav .return-btn {
    margin-top: 20px;
  }
}

@media (max-width: 480px) {
  .navbar .brand .hs-logo {
    height: 34px;
    width: 34px;
  }

  .navbar .brand .hs-brand-word {
    font-size: 21px;
  }
}


/* ==========================================================================
   7. Category / Collection Cards (homepage)
   Per spec: icon + title only — no description, no count.
   ========================================================================== */

.collection-category {
  color: var(--color-text);
}

.collection-category:first-of-type h2 {
  margin-top: 8px;
}

.collection-category h2 {
  text-align: center;
  font-family: var(--font-family-heading) !important;
  font-size: 1.75rem;
  font-weight: 600;
  letter-spacing: -0.01em;
  text-transform: none;
  pointer-events: none;
  cursor: default;
  color: var(--color-text);
  text-decoration: none;
  margin-bottom: 24px;
  margin-top: 32px;
  line-height: 1.2;
}

.category-list {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 24px;
  padding: 24px 0 40px;
}

.category {
  background-repeat: no-repeat !important;
  background-position: center top 32px !important;
  background-color: var(--color-surface) !important;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-xl) !important;
  padding-top: 200px !important;
  padding-right: 0 !important;
  padding-bottom: 32px !important;
  padding-left: 0 !important;
  box-sizing: border-box;
  width: calc(33.333% - 16px) !important;
  transition: box-shadow var(--transition-normal), transform var(--transition-normal), border-color var(--transition-normal) !important;
  box-shadow: var(--shadow-sm);
  overflow: hidden;
  text-align: center;
}

.category h3 {
  color: var(--color-text);
  font-family: var(--font-family-heading) !important;
  font-size: 18px;
  line-height: 1.3;
  margin: 0 24px;
  font-weight: 600;
  letter-spacing: -0.005em;
}

/* Per spec: hide description + article count */
.category .article-count,
.category p {
  display: none !important;
}

.category:hover {
  box-shadow: var(--shadow-lg);
  transform: translateY(-3px);
  border-color: var(--color-border-strong);
}

@media (max-width: 900px) {
  .category {
    width: calc(50% - 12px) !important;
  }

  .collection-category h2 { font-size: 1.5rem; margin-top: 48px; }
}

@media (max-width: 600px) {
  /* Compact cards: icon sized + pulled close to the title, less dead space. */
  .category {
    width: 100% !important;
    background-size: 84px 84px !important;
    background-position: center top 22px !important;
    padding-top: 116px !important;
    padding-bottom: 24px !important;
  }

  .category h3 { font-size: 17px; }

  /* Cards sit closer together. */
  .category-list { gap: 12px; padding: 16px 0 48px; }
}


/* ==========================================================================
   8. Category Background Images
   Per-category icon registry. Each #category-NNN maps to a HelpScout
   collection ID. Replace with Lucide-style 200x200 SVGs when ready.
   ========================================================================== */

/*
 * TODO: line-icon swap.
 * To find a category's ID, hover the homepage card and look at the URL:
 *   /collection/NNN-some-slug   ← NNN is the ID, becomes #category-NNN
 * Replace each background-image URL with a 200x200 line-icon SVG hosted
 * on Shopify CDN (stroke 1.5, color #333333).
 */

/* Default fallback icon — applied to every card; specific IDs below override.
   Uses a Lucide-style line "panels" icon as a data URI so no extra network call. */
.category {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='96' height='96' viewBox='0 0 24 24' fill='none' stroke='%23333333' stroke-width='1.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='18' height='18' x='3' y='3' rx='2' ry='2'/%3E%3Cpath d='M3 9h18'/%3E%3Cpath d='M9 21V9'/%3E%3C/svg%3E");
  background-size: 96px 96px;
}

/* Specific category icon assignments — keep slugs/IDs accurate with HelpScout */
#category-5 {
  background-size: 160px 160px;
  background-image: url(https://cdn.shopify.com/s/files/1/0684/1162/1687/files/returns_Icon_538f793e-2046-4852-bc09-0fd5205b0ef5.svg?v=1754153300);
}

/* Products collection categories */
#category-41 {
  background-size: 160px 160px;
  background-image: url(https://cdn.shopify.com/s/files/1/0684/1162/1687/files/Product_Icon_b5f463f1-741d-449f-939c-da7d8723fe4a.svg?v=1754154124);
}

#category-20 {
  background-size: 160px 160px;
  background-image: url(https://cdn.shopify.com/s/files/1/0684/1162/1687/files/product_info.svg?v=1754363867);
}

#category-21 {
  background-size: 160px 160px;
  background-image: url(https://cdn.shopify.com/s/files/1/0684/1162/1687/files/Sticker_icon_1a39a916-0b20-44f9-8f19-82cf53144707.svg?v=1754364347);
}

/* Hide unwanted/admin categories */
#collection-category-308,
#support-center {
  display: none;
}


/* ==========================================================================
   9. Sidebar (#sidebar) — Restyled native HelpScout sidebar
   ========================================================================== */

#sidebar {
  margin-top: 40px;
  position: sticky;
  top: 88px;
  align-self: flex-start;
}

#sidebar #searchBar {
  margin-bottom: 32px;
}

#sidebar #searchBar.sm button {
  height: 48px;
  min-height: 44px;
}

#sidebar .search-query {
  border: 1.5px solid var(--color-border) !important;
  border-radius: var(--radius-lg) !important;
  background: var(--color-surface) !important;
  color: var(--color-text) !important;
  height: 48px !important;
  font-family: var(--font-family-body) !important;
  font-size: var(--font-size-base) !important;
  padding-left: 16px !important;
  padding-right: 48px !important;
  transition: border-color var(--transition-fast), box-shadow var(--transition-fast);
}

#sidebar .search-query:hover {
  border-color: var(--color-border-strong) !important;
}

#sidebar .search-query:focus {
  border-color: var(--color-text) !important;
  box-shadow: 0 0 0 3px rgba(51, 51, 51, 0.08) !important;
  outline: none;
}

#sidebar textarea,
#sidebar input[type=text] {
  box-shadow: none;
  transition: border-color var(--transition-fast), box-shadow var(--transition-fast) !important;
}

#sidebar form button {
  right: 12px;
  min-height: 44px;
  background: transparent !important;
  border: none;
}

#sidebar .icon-search::before {
  content: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='20'%20height='20'%20viewBox='0%200%2020%2020'%20fill='%23333333'%3E%3Cpath%20fill-rule='evenodd'%20d='M12.323%2013.383a5.5%205.5%200%201%201%201.06-1.06l2.897%202.897a.75.75%200%201%201-1.06%201.06l-2.897-2.897Zm.677-4.383a4%204%200%201%201-8%200%204%204%200%200%201%208%200Z'/%3E%3C/svg%3E");
  width: 20px;
  height: 20px;
  opacity: 0.55;
}

#sidebar #serp-dd {
  top: 56px;
  box-shadow: var(--shadow-lg);
  border-radius: var(--radius-md);
  border: 1px solid var(--color-border);
  background: var(--color-surface);
  overflow: hidden;
}

#sidebar #serp-dd .noResults {
  padding: 16px 24px;
  font-size: var(--font-size-base);
  color: var(--color-text-muted);
  font-family: var(--font-family-body);
}

#sidebar #serp-dd a {
  color: var(--color-text);
  font-size: var(--font-size-base);
  padding: 12px 18px;
  display: block;
  transition: background var(--transition-fast);
}

#sidebar #serp-dd a:hover {
  background: var(--color-grey-extra-light);
}

#sidebar h3 {
  font-family: var(--font-family-heading);
  font-size: 12px;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--color-text-muted);
  margin-bottom: 12px;
}

#sidebar .nav-list {
  margin: 0;
  padding: 0;
  list-style: none;
}

#sidebar .nav-list li {
  margin: 0;
}

#sidebar .nav-list a {
  color: var(--color-text);
  font-family: var(--font-family-body);
  font-size: var(--font-size-base);
  font-weight: 400;
  line-height: 1.4 !important;
  padding: 10px 12px !important;
  text-shadow: none !important;
  text-decoration: none;
  border-radius: var(--radius-sm);
  transition: background var(--transition-fast), color var(--transition-fast);
  min-height: 44px;
  display: flex;
  align-items: center;
}

#sidebar .nav-list a:hover {
  color: var(--color-text) !important;
  background: var(--color-grey-extra-light);
}

#sidebar .nav-list .active a {
  color: var(--color-text);
  font-weight: 400 !important;
  background: rgba(51, 51, 51, 0.08);
}

#sidebar .nav-list .active a i {
  visibility: hidden;
}

#sidebar .nav-list .active a::before {
  content: none;
}

@media (max-width: 768px) {
  #sidebar {
    margin-top: 32px;
    padding-bottom: 32px;
    position: static;
  }

  #sidebar .search-query {
    height: 48px !important;
    font-size: 16px !important;
  }
}


/* ==========================================================================
   10. Category Head / Sort
   ========================================================================== */

#categoryHead {
  margin-bottom: 32px;
}

#categoryHead h1 {
  font-family: var(--font-family-heading);
  font-size: var(--font-size-h1-page);
  font-weight: 700;
  line-height: 1.1;
  color: var(--color-text);
  margin-right: 240px;
  margin-bottom: 12px;
}

#categoryHead .sort {
  top: 0;
}

#categoryHead #sortBy {
  border: 1.5px solid var(--color-border);
  border-radius: var(--radius-lg);
  padding: 0 36px 0 14px;
  width: 220px;
  height: 44px;
  margin: 0;
  color: var(--color-text);
  font-family: var(--font-family-body);
  font-size: var(--font-size-base);
  font-weight: 400;
  -webkit-appearance: none;
  background-color: var(--color-surface);
  background-image: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2020%2020'%20fill='%23333333'%3E%3Cpath%20fill-rule='evenodd'%20d='M5.72%208.47a.75.75%200%200%201%201.06%200l3.47%203.47%203.47-3.47a.75.75%200%201%201%201.06%201.06l-4%204a.75.75%200%200%201-1.06%200l-4-4a.75.75%200%200%201%200-1.06Z'/%3E%3C/svg%3E");
  background-position: right 12px center;
  background-repeat: no-repeat;
  background-size: 18px 18px;
  cursor: pointer;
  transition: border-color var(--transition-fast);
}

#categoryHead #sortBy:hover {
  border-color: var(--color-border-strong) !important;
}

#categoryHead #sortBy:focus {
  border-color: var(--color-text) !important;
  box-shadow: 0 0 0 3px rgba(51, 51, 51, 0.08) !important;
  outline: 0;
}

@media (max-width: 768px) {
  #categoryHead h1 {
    margin-right: 0;
    font-size: 32px;
  }
}


/* ==========================================================================
   11. Main Content & Article Wrapper
   ========================================================================== */

#main-content {
  background-image: none;
  background-color: var(--color-bg);
  padding-top: 40px;
}

@media (max-width: 768px) {
  #main-content { padding-top: 16px; }
}

.contentWrapper {
  background-color: transparent;
  border-radius: 0;
  box-shadow: none;
  border: none !important;
  padding: var(--space-3xl) 0;
}

.contentWrapper a {
  text-decoration: underline;
  text-underline-offset: 2px;
  word-break: break-word;
  font-weight: 500;
  color: var(--color-text);
  transition: color var(--transition-fast);
}

.contentWrapper a:hover {
  color: var(--color-text-muted);
}

.related {
  border-radius: var(--radius-lg);
  margin-top: 40px;
}

@media (max-width: 768px) {
  .contentWrapper { padding: 16px 0; }
}

.articleList {
  margin: 0;
  padding: 0;
  list-style: none;
}

.articleList li {
  margin: 0;
  padding: 16px 24px !important;
  border-bottom: 1px solid var(--color-border);
  transition: background var(--transition-fast), padding var(--transition-fast);
  position: relative;
}

.articleList li:hover {
  background: var(--color-surface);
}

.articleList li::after {
  content: "→";
  position: absolute;
  right: 20px;
  top: 50%;
  transform: translateY(-50%);
  font-family: var(--font-family-body);
  font-size: 16px;
  color: var(--color-text-muted);
  opacity: 0;
  transition: opacity var(--transition-fast), transform var(--transition-fast);
}

.articleList li:hover::after {
  opacity: 1;
  transform: translateY(-50%) translateX(2px);
}

.articleList li a {
  font-family: var(--font-family-body);
  font-size: var(--font-size-base);
  font-weight: 400;
  color: var(--color-text);
  text-decoration: none !important;
  display: block;
}

.articleList li a:hover {
  color: var(--color-text);
}


/* ==========================================================================
   12. Search Results Page (#serp)
   ========================================================================== */

#serp h1 {
  color: var(--color-text);
  font-family: var(--font-family-heading);
  font-size: var(--font-size-h1-page);
  font-weight: 700;
  line-height: 1.1;
  margin-bottom: 12px !important;
}

#serp .articlesFound {
  color: var(--color-text-muted) !important;
  margin-bottom: 32px;
  font-size: var(--font-size-base);
  font-family: var(--font-family-body);
  font-weight: 400;
}

#serp ul {
  margin: 0;
  padding: 0;
  list-style: none;
}

#serp li {
  margin: 24px 0;
  max-width: 720px;
  padding: 0;
  border: none;
}

#serp li:first-of-type { margin-top: 0; }
#serp li:last-of-type  { margin-bottom: 0; }

#serp li::before,
#serp li::after { content: none; }

#serp li a {
  font-size: var(--font-size-md) !important;
  font-weight: 600;
  font-family: var(--font-family-heading);
  color: var(--color-text) !important;
  text-decoration: underline;
  text-underline-offset: 3px;
}

#serp li a:hover {
  color: var(--color-text-muted) !important;
}

#serp li p {
  color: var(--color-text-muted);
  margin-left: 0;
  margin-top: 6px;
  font-size: var(--font-size-sm);
  line-height: 1.5;
  font-family: var(--font-family-body);
}


/* ==========================================================================
   13. Article Body (#fullArticle)
   ========================================================================== */

#fullArticle {
  max-width: var(--article-max-width);
  color: var(--color-text);
}

#fullArticle h1,
#fullArticle h2,
#fullArticle h3,
#fullArticle h4,
#fullArticle h5,
#fullArticle strong,
#fullArticle p,
#fullArticle i,
#fullArticle em {
  color: var(--color-text);
}

#fullArticle h1,
#fullArticle .title {
  font-family: var(--font-family-heading);
  font-size: var(--font-size-h1-page);
  font-weight: 700;
  line-height: 1.1;
  letter-spacing: -0.01em;
  margin: 0 0 var(--space-lg);
}

#fullArticle h2 {
  font-family: var(--font-family-heading);
  font-size: var(--font-size-h2);
  font-weight: 600;
  line-height: 1.2;
  letter-spacing: -0.005em;
  margin: 2.5em 0 0.6em;
  padding-bottom: 10px;
  border-bottom: 2px solid var(--color-border);
}

#fullArticle h3 {
  font-family: var(--font-family-heading);
  font-size: var(--font-size-h3);
  font-weight: 600;
  line-height: 1.25;
  margin: 2em 0 0.5em;
}

#fullArticle h4 {
  font-family: var(--font-family-heading);
  font-size: 14px;
  font-weight: 500;
  line-height: 1.4;
  margin: 1.75em 0 0.4em;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--color-text-muted);
}

/* Body copy */
#fullArticle p,
#fullArticle ul,
#fullArticle ol,
#fullArticle li,
#fullArticle blockquote,
#fullArticle dd,
#fullArticle table {
  color: var(--color-text);
  font-family: var(--font-family-body);
  font-size: var(--font-size-base);
  line-height: var(--article-line-height);
  font-weight: 400;
}

#fullArticle p {
  margin-bottom: var(--article-paragraph-spacing);
}

#fullArticle strong {
  font-weight: 700;
}

#fullArticle em,
#fullArticle i {
  font-style: italic;
}

/* Images */
#fullArticle img,
#fullArticle .lightbox img {
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  max-width: 100%;
  height: auto;
  display: block;
  margin: 1.5em 0;
}

#fullArticle .lightbox {
  cursor: zoom-in;
  display: inline-block;
}

#fullArticle hr {
  border: none;
  border-top: 1px solid var(--color-border);
  margin: var(--space-3xl) 0;
  background: none;
}

#fullArticle article {
  margin-bottom: 32px;
}

/* Inline code */
#fullArticle code {
  font-family: var(--font-family-mono);
  font-size: 0.9em;
  background: var(--color-code-bg);
  color: var(--color-text);
  border-radius: var(--radius-xs);
  padding: 2px 6px;
  border: none;
}

/* Code blocks */
#fullArticle pre {
  background: var(--color-code-block-bg);
  border: none;
  border-radius: var(--radius-md);
  padding: 20px 24px;
  overflow-x: auto;
  margin: 1.5em 0;
  line-height: 1.65;
  color: var(--color-code-block-text);
}

#fullArticle pre code {
  font-family: var(--font-family-mono);
  font-size: 14px;
  background: none;
  border: none;
  padding: 0;
  color: var(--color-code-block-text);
}

/* Blockquote */
#fullArticle blockquote {
  border-left: 3px solid var(--color-border) !important;
  background: rgba(51, 51, 51, 0.03);
  border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
  margin: 1.5em 0;
  padding: 16px 20px !important;
  font-style: italic;
  color: var(--color-text) !important;
}

/* Tables */
#fullArticle table {
  width: 100%;
  border-collapse: collapse;
  font-size: 15px;
  margin: 1.5em 0;
  border-radius: var(--radius-md);
  overflow: hidden;
  box-shadow: var(--shadow-sm);
  background: var(--color-bg);
}

#fullArticle th {
  font-family: var(--font-family-heading);
  background: var(--color-surface);
  padding: 12px 16px;
  text-align: left;
  border: 1px solid var(--color-border);
  font-size: 14px;
  font-weight: 600;
  color: var(--color-text);
}

#fullArticle td {
  padding: 12px 16px;
  border: 1px solid var(--color-border);
  vertical-align: top;
  font-size: 15px;
}

#fullArticle tr:nth-child(even) td {
  background: rgba(51, 51, 51, 0.02);
}

/* Lists */
#fullArticle ul,
#fullArticle ol {
  margin: 0 0 var(--article-paragraph-spacing) 24px;
  padding: 0;
}

#fullArticle ul {
  list-style: none;
}

#fullArticle li {
  margin-bottom: 8px;
  line-height: var(--article-line-height);
}

#fullArticle li:last-of-type {
  margin-bottom: 0;
}

#fullArticle li strong + p {
  margin-top: 0;
}

#fullArticle ul li::before {
  content: "•";
  color: var(--color-text-muted);
  font-weight: bold;
  display: inline-block;
  width: 20px;
  margin-left: -20px;
}

/* Definition lists */
#fullArticle dl {
  margin: var(--space-2xl) 0;
}

#fullArticle dt {
  color: var(--color-text);
  background: none;
  font-size: var(--font-size-base);
  font-weight: 700;
  font-family: var(--font-family-heading);
  padding: 0 0 4px;
  text-align: left;
  width: 32px;
}

#fullArticle dt::after { content: "."; }

#fullArticle dd {
  padding-top: var(--space-xs);
  margin-left: var(--space-3xl);
  margin-bottom: var(--space-lg);
}

#fullArticle dd h1,
#fullArticle dd h2,
#fullArticle dd h3,
#fullArticle dd h4,
#fullArticle dd h5,
#fullArticle dd h6 {
  margin: 0 0 4px;
  font-size: var(--font-size-lg);
  line-height: 1.4;
  font-weight: 600;
  color: var(--color-text);
}

#fullArticle dd p { margin: 0; }
#fullArticle dd img { margin: 16px 0 24px; }

/* Article header row — JS (initArticleMeta) lifts the "last updated" line up
   from the foot and drops it in here so it reads inline with the title. */
.ddc-article-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 6px 24px;
  margin: 0 0 var(--space-lg);
}

.ddc-article-head h1 {
  margin: 0 !important;
  flex: 1 1 auto;
}

.ddc-article-head .articleFoot {
  flex: 0 0 auto;
  margin: 0 !important;
  white-space: nowrap;
}

/* Print icon, pulled into the row by JS — reset any default theme
   absolute/float positioning so it sits inline after the date. */
.ddc-article-head .printArticle {
  position: static !important;
  float: none !important;
  flex: 0 0 auto;
  margin: 0 !important;
  color: var(--color-text-muted) !important;
}

@media (max-width: 600px) {
  .ddc-article-head { gap: 4px 12px; }
  .ddc-article-head .articleFoot { white-space: normal; }
}

/* "Last updated" meta — placed under H1 by HelpScout.
   HelpScout's default theme often zeroes the height of this element; force it visible. */
.articleFoot {
  display: block !important;
  visibility: visible !important;
  height: auto !important;
  min-height: 20px;
  margin: -8px 0 32px !important;
  padding: 0 !important;
  font-family: var(--font-family-body) !important;
  font-size: 14px !important;
  font-weight: 300 !important;
  line-height: 1.5 !important;
  color: var(--color-text-muted) !important;
  border: none !important;
  background: none !important;
}

.articleFoot *,
.articleFoot time,
.articleFoot time.lu,
.articleFoot span,
.articleFoot a {
  display: inline !important;
  height: auto !important;
  font-family: var(--font-family-body) !important;
  font-size: 14px !important;
  font-weight: 300 !important;
  color: var(--color-text-muted) !important;
  background: none !important;
  border: none !important;
  padding: 0 !important;
  margin: 0 !important;
}


/* ==========================================================================
   14. Callout Boxes — Cool Pastel Palette
   ========================================================================== */

/*
 * CALLOUT AUTHOR GUIDE
 * Type "/callout" in any HelpScout article and pick:
 *   Blue   → Info        (general "good to know")
 *   Green  → Tip         (recommended approach, shortcut)
 *   Yellow → Warning     (could cause user error)
 *   Red    → Important   (must-not-miss; data loss, security)
 *   Grey   → Neutral note
 * If HelpScout's color list differs from above, we adjust the class mapping
 * after seeing one rendered live.
 */

/* Base reset for all variants */
.callout,
[class*="callout-"],
.callout.yellow,
.callout.warning,
.callout.grey,
.callout.gray,
.callout.green,
.callout.blue,
.callout.red,
.callout.purple {
  border-radius: var(--radius-md) !important;
  border: none !important;
  border-left: none !important;
  outline: none !important;
  box-shadow: none !important;
  padding: 20px 24px !important;
  margin: 1.5em 0;
  font-family: var(--font-family-body);
  font-size: var(--font-size-base);
  line-height: var(--article-line-height);
  color: var(--color-text);
}

.callout h3,
[class*="callout-"] h3 {
  margin: 0 0 8px !important;
  font-family: var(--font-family-heading) !important;
  font-size: 17px !important;
  line-height: 1.3 !important;
  font-weight: 600 !important;
  letter-spacing: 0;
}

.callout p,
[class*="callout-"] p {
  font-size: var(--font-size-base) !important;
  font-family: var(--font-family-body);
  color: var(--color-text);
  margin-bottom: 0;
}

.callout p + p,
[class*="callout-"] p + p {
  margin-top: 8px;
}

.callout > *:first-child,
[class*="callout-"] > *:first-child {
  margin-top: 0 !important;
}

.callout > *:last-child,
[class*="callout-"] > *:last-child {
  margin-bottom: 0 !important;
}

/* Info — Blue */
.callout-blue,
.callout.blue {
  background: var(--callout-info-bg) !important;
}
.callout-blue h3,
.callout.blue h3 {
  color: var(--callout-info-accent) !important;
}

/* Tip — Green */
.callout-green,
.callout.green {
  background: var(--callout-tip-bg) !important;
}
.callout-green h3,
.callout.green h3 {
  color: var(--callout-tip-accent) !important;
}

/* Warning — Yellow */
.callout-yellow,
.callout.yellow {
  background: var(--callout-warn-bg) !important;
}
.callout-yellow h3,
.callout.yellow h3 {
  color: var(--callout-warn-accent) !important;
}

/* Important — Red */
.callout-red,
.callout.red,
.callout-warning,
.callout.warning {
  background: var(--callout-important-bg) !important;
}
.callout-red h3,
.callout.red h3,
.callout-warning h3,
.callout.warning h3 {
  color: var(--callout-important-accent) !important;
}

/* Neutral — Grey / Gray / Purple / fallback */
.callout-grey,
.callout-gray,
.callout-purple,
.callout.grey,
.callout.gray,
.callout.purple,
.callout {
  background: var(--callout-neutral-bg) !important;
}
.callout-grey h3,
.callout-gray h3,
.callout-purple h3,
.callout.grey h3,
.callout.gray h3,
.callout.purple h3,
.callout > h3:only-of-type {
  color: var(--callout-neutral-accent) !important;
}


/* ==========================================================================
   15. Quick Answers Accordion
   Restyled v5.2.0's dark-on-#333 accordion to LIGHT variant.
   ========================================================================== */

.quick-answers {
  background-color: var(--color-surface);
  color: var(--color-text);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  padding: 32px !important;
  margin: 2em 0;
}

.quick-anwsers-heading,
.quick-answers-heading {
  color: var(--color-text) !important;
  font-family: var(--font-family-heading);
  font-size: var(--font-size-h3);
  font-weight: 600;
  margin: 0 0 16px;
}

.quick-answers details {
  margin: 0 0 10px 0;
  outline: none;
  border-radius: var(--radius-md);
  transition: background var(--transition-normal);
}

.quick-answers details:last-child {
  margin-bottom: 0;
}

.quick-answers details summary {
  background: var(--color-bg);
  color: var(--color-text);
  padding: 18px 24px;
  font-size: var(--font-size-base);
  font-weight: 500;
  font-family: var(--font-family-body);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  outline: none;
  cursor: pointer;
  list-style: none;
  transition: background var(--transition-normal), color var(--transition-normal), border-color var(--transition-normal);
  min-height: 44px;
  display: flex;
  align-items: center;
  position: relative;
}

.quick-answers details summary::after {
  content: "";
  position: absolute;
  right: 22px;
  top: 50%;
  width: 14px;
  height: 14px;
  transform: translateY(-50%);
  background-image: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2020%2020'%20fill='%23333333'%3E%3Cpath%20fill-rule='evenodd'%20d='M5.72%208.47a.75.75%200%200%201%201.06%200l3.47%203.47%203.47-3.47a.75.75%200%201%201%201.06%201.06l-4%204a.75.75%200%200%201-1.06%200l-4-4a.75.75%200%200%201%200-1.06Z'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: center;
  background-size: 14px 14px;
  transition: transform var(--transition-fast);
}

.quick-answers details summary:hover {
  background: var(--color-surface);
  border-color: var(--color-border-strong);
}

.quick-answers details[open] {
  background: transparent;
}

.quick-answers details[open] summary {
  padding: 18px 24px;
  border-color: var(--color-text);
  margin-bottom: 8px;
}

.quick-answers details[open] summary::after {
  transform: translateY(-50%) rotate(180deg);
}

.quick-answers details p {
  margin: 0 0 8px;
  padding: 0 24px;
  color: var(--color-text);
  font-family: var(--font-family-body);
  font-size: var(--font-size-base);
  line-height: var(--article-line-height);
}


/* ==========================================================================
   16. Tabs Component
   ========================================================================== */

.tabs {
  display: flex;
  flex-wrap: wrap;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  overflow: hidden;
  box-shadow: var(--shadow-sm);
  background: var(--color-surface);
}

.tabs input[type=radio] {
  display: none;
}

.tabs input + label {
  flex-grow: 3;
}

.tabs label {
  background: var(--color-surface);
  order: 1;
  outline: none;
  display: flex;
  padding: 14px 24px;
  margin: 0;
  width: auto;
  color: var(--color-text-muted);
  font-size: var(--font-size-base);
  font-family: var(--font-family-body);
  font-weight: 500;
  text-align: center;
  cursor: pointer;
  border-bottom: 2px solid transparent;
  transition: color var(--transition-fast), background var(--transition-fast), border-color var(--transition-fast);
  min-height: 44px;
  align-items: center;
  justify-content: center;
}

.tabs label:hover {
  color: var(--color-text);
  background: rgba(51, 51, 51, 0.04);
}

.tabs [id^=tab]:checked + label {
  background: var(--color-bg);
  color: var(--color-text);
  font-weight: 600;
  border-bottom-color: var(--color-text);
  font-family: var(--font-family-heading);
}

.tabs [id^=tab]:checked + label + .tab-content {
  display: block;
  width: 100%;
}

.tabs .tab-content {
  background: var(--color-bg);
  display: none;
  flex-grow: 1;
  order: 99;
  padding: 24px 28px;
  font-family: var(--font-family-body);
  font-size: var(--font-size-base);
  line-height: var(--article-line-height);
}

@media (max-width: 768px) {
  .tabs label { width: 100%; }
}


/* ==========================================================================
   17. Related Articles BEM (.c-RelatedArticles*)
   ========================================================================== */

.c-RelatedArticles {
  margin-top: 48px;
  padding-top: 32px;
  border-top: 1px solid var(--color-border);
}

.c-RelatedArticles__title {
  font-family: var(--font-family-heading);
  font-size: var(--font-size-h3);
  color: var(--color-text);
  margin-bottom: 20px;
  font-weight: 600;
}

.c-RelatedArticles__card {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  padding: 16px 20px;
  margin-bottom: 10px;
  display: block;
  text-decoration: none !important;
  transition: border-color var(--transition-normal), box-shadow var(--transition-normal), transform var(--transition-normal);
  box-shadow: var(--shadow-sm);
}

.c-RelatedArticles__card:hover {
  border-color: var(--color-border-strong);
  box-shadow: var(--shadow-md);
  transform: translateY(-1px);
}

.c-RelatedArticles__card-title {
  font-family: var(--font-family-body);
  font-size: var(--font-size-base);
  font-weight: 500;
  color: var(--color-text);
  text-decoration: none;
}

.c-RelatedArticles__card:hover .c-RelatedArticles__card-title {
  color: var(--color-text-muted);
}


/* ==========================================================================
   18. User Guides Grid
   ========================================================================== */

.userGuides ul {
  display: flex;
  flex-wrap: wrap;
  margin-left: 0 !important;
  margin-bottom: 0 !important;
  gap: 0;
  list-style: none;
  padding: 0;
}

.userGuides li {
  width: 29%;
  border-top: 2px solid var(--color-border);
  padding: 16px 0 40px;
  margin-left: 2% !important;
  margin-right: 2% !important;
  margin-bottom: 24px !important;
  transition: border-color var(--transition-fast);
}

.userGuides li:hover {
  border-top-color: var(--color-text);
}

.userGuides a {
  text-decoration: none;
  word-break: break-word !important;
  color: var(--color-text);
  font-family: var(--font-family-body);
  font-size: var(--font-size-base);
  font-weight: 500;
  transition: color var(--transition-fast);
}

.userGuides a:hover {
  color: var(--color-text-muted);
}

.userGuides li::before {
  content: "" !important;
  width: 0 !important;
  margin: 0 !important;
}

@media (max-width: 768px) {
  .userGuides li { width: 100%; }
}


/* ==========================================================================
   19. Article Ratings — hidden per spec (no feedback widget)
   ========================================================================== */

.articleRatings {
  display: none !important;
}

.beaconContent {
  display: none;
}


/* ==========================================================================
   20. Icons
   ========================================================================== */

.icon-print,
a.icon-print,
a[href*="print"] {
  display: none !important;
}

.icon-article-doc {
  opacity: 0.55;
  position: relative;
  top: 4px;
  margin-right: 8px !important;
}

.icon-article-doc::before {
  content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 20 20' fill='%23333333'%3E%3Cpath d='M6.75 4.5c-.69 0-1.25.56-1.25 1.25v8.5c0 .69.56 1.25 1.25 1.25h6.5c.69 0 1.25-.56 1.25-1.25v-4.75h-3.25a1.75 1.75 0 0 1-1.75-1.75v-3.25h-2.75Zm4.25 1.06 2.44 2.44h-2.19a.25.25 0 0 1-.25-.25v-2.19Zm-7 .19a2.75 2.75 0 0 1 2.75-2.75h3.5a.75.75 0 0 1 .53.22l5 5c.141.14.22.331.22.53v5.5a2.75 2.75 0 0 1-2.75 2.75h-6.5a2.75 2.75 0 0 1-2.75-2.75v-8.5Z'/%3E%3C/svg%3E");
}


/* ==========================================================================
   21. Contact Modal (#contactModal)
   Beacon is the primary path; this is restyled fallback only.
   ========================================================================== */

#contactModal {
  border: none !important;
  border-radius: var(--radius-lg);
  background: var(--color-bg);
  padding: 32px !important;
  box-shadow: var(--shadow-lg);
}

#contactModal h2 {
  border: none;
  color: var(--color-text);
  font-family: var(--font-family-heading);
  font-size: var(--font-size-h2);
  font-weight: 600;
  padding: 0;
  margin: 0 0 16px;
}

#contactModal .form-horizontal .control-label {
  width: 100px;
  text-align: left;
  font-size: var(--font-size-base);
  font-family: var(--font-family-body);
  font-weight: 500;
  color: var(--color-text);
}

#contactModal .controls input,
#contactModal .controls textarea {
  font-family: var(--font-family-body);
  font-size: var(--font-size-base);
  color: var(--color-text);
  background: var(--color-surface);
  border-radius: var(--radius-md);
  border: 1.5px solid var(--color-border);
  padding: 10px 14px;
  min-height: 44px;
  transition: border-color var(--transition-fast);
}

#contactModal .controls input:focus,
#contactModal .controls textarea:focus {
  border-color: var(--color-text);
  outline: none;
  box-shadow: 0 0 0 3px rgba(51, 51, 51, 0.08);
}


/* ==========================================================================
   22. Modal Overlay (.modal-overlay, .modal-content, .modal-btn)
   ========================================================================== */

.modal-overlay {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(51, 51, 51, 0.55);
  align-items: center;
  justify-content: center;
  z-index: var(--z-modal-backdrop);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  display: none;
}

.modal-content {
  background-color: var(--color-bg);
  padding: 36px;
  border-radius: var(--radius-xl);
  box-shadow: var(--shadow-lg);
  max-width: 460px;
  width: 90%;
  text-align: center;
  position: relative;
  z-index: var(--z-modal);
  font-family: var(--font-family-body);
}

.modal-content h2 {
  font-family: var(--font-family-heading);
  font-size: 26px;
  font-weight: 600;
  margin: 0 0 14px;
  color: var(--color-text);
}

.modal-content p {
  font-size: var(--font-size-base);
  line-height: 1.6;
  margin-bottom: 28px;
  color: var(--color-text);
  font-family: var(--font-family-body);
}

.modal-buttons {
  display: flex;
  gap: 12px;
  justify-content: center;
}

.modal-btn {
  font-size: 14px;
  font-weight: 500;
  padding: 12px 28px;
  border-radius: var(--radius-pill);
  border: 1.5px solid var(--color-text);
  cursor: pointer;
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-family-body);
  transition: all var(--transition-normal);
  min-height: 44px;
}

#modal-continue-btn {
  background-color: var(--color-button-bg);
  color: var(--color-button-text);
}

#modal-continue-btn:hover {
  background-color: var(--color-button-bg-hover);
  transform: translateY(-1px);
  box-shadow: var(--shadow-md);
}

#modal-cancel-btn {
  background-color: transparent;
  color: var(--color-text);
}

#modal-cancel-btn:hover {
  background-color: rgba(51, 51, 51, 0.06);
  transform: translateY(-1px);
}

/* Footer Terms & Policies — small popover that opens ABOVE the link. */
.ddc-foot-terms {
  position: relative;
  display: inline-flex;
}

.ddc-foot-terms-pop {
  position: absolute;
  bottom: calc(100% + 10px);
  right: 0;
  min-width: 180px;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-lg);
  padding: 6px;
  display: none;
  flex-direction: column;
  z-index: var(--z-dropdown);
}

.ddc-foot-terms.is-open .ddc-foot-terms-pop {
  display: flex;
}

/* Invisible bridge across the 10px gap so hover survives the cursor
   travelling from the link up into the popover. */
.ddc-foot-terms-pop::after {
  content: "";
  position: absolute;
  bottom: -10px;
  left: 0;
  right: 0;
  height: 10px;
}

/* Scoped under .ddc-foot-bottom so these beat the light `.ddc-foot-bottom a`
   rule (equal specificity otherwise wins by source order, making the policy
   text cream-on-cream). Dark text + grey hover, exactly like the header menu. */
.ddc-foot-bottom .ddc-foot-terms-pop a {
  display: block;
  width: 100%;
  text-align: left;
  font-family: var(--font-family-body) !important;
  font-size: 14px !important;
  font-weight: 500 !important;
  color: var(--color-text) !important;
  padding: 9px 12px !important;
  margin: 0 !important;
  border-radius: var(--radius-sm);
  text-decoration: none !important;
  white-space: nowrap;
  opacity: 1 !important;
  transition: background var(--transition-fast);
}

.ddc-foot-bottom .ddc-foot-terms-pop a:hover {
  background: var(--color-grey-extra-light) !important;
  color: var(--color-text) !important;
  opacity: 1 !important;
}

@media (max-width: 480px) {
  .modal-buttons { flex-direction: column; gap: 10px; }
  .modal-content { padding: 28px 20px; }
}


/* ==========================================================================
   23a. Article Table of Contents (right sidebar, article pages only)
        JS in ddc-help-head.html generates this on pages that have #fullArticle.
        Sits at the top of #sidebar above the categories list, sticky on scroll.
   ========================================================================== */

/* Anchor offset so a TOC click lands the heading just below the sticky header
   (not hidden under it, and not stopping between two headings). */
#fullArticle h2[id],
#fullArticle h3[id] {
  scroll-margin-top: calc(var(--ddc-nav-h, 72px) + 28px);
}

.ddc-toc {
  margin-top: 32px;
  padding-top: 24px;
  border-top: 1px solid var(--color-border);
}

.ddc-toc h4 {
  font-family: var(--font-family-heading) !important;
  font-size: 12px !important;
  font-weight: 500 !important;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--color-text-muted);
  margin: 0 0 14px !important;
  padding: 0;
  line-height: 1.2;
}

.ddc-toc ul {
  list-style: none;
  margin: 0;
  padding: 0;
  position: relative;
}

/* Reading-progress fill — a thin bar in the text colour that grows from the top
   of the list down to the section you're reading (set by JS), filling the faint
   grey track formed by the per-item border-left below. */
.ddc-toc-indicator {
  position: absolute;
  left: 0;
  top: 0;
  width: 2px;
  height: 0;
  background: var(--color-text);
  border-radius: 2px;
  opacity: 0;
  pointer-events: none;
  transition: height 0.4s cubic-bezier(0.22, 1, 0.36, 1),
              opacity 0.3s ease;
}

.ddc-toc li {
  margin: 0;
  padding: 0;
}

.ddc-toc li::before { content: none !important; }

.ddc-toc li a {
  display: block;
  padding: 6px 14px;
  font-family: var(--font-family-body);
  font-size: 14px;
  font-weight: 400;
  line-height: 1.45;
  color: var(--color-text-muted);
  text-decoration: none !important;
  border-left: 2px solid var(--color-border);
  transition: color 0.3s ease, transform 0.3s cubic-bezier(0.22, 1, 0.36, 1);
}

.ddc-toc li.h3 a {
  padding-left: 26px;
  font-size: 13.5px;
}

.ddc-toc li a:hover {
  color: var(--color-text);
}

.ddc-toc li a.is-active {
  color: var(--color-text);
  font-weight: 500;
  transform: translateX(3px);
}

@media (prefers-reduced-motion: reduce) {
  .ddc-toc-indicator,
  .ddc-toc li a { transition: none; }
  .ddc-toc li a.is-active { transform: none; }
}

/* The collapse caret only appears in the mobile dropdown mode. */
.ddc-toc-caret { display: none; }

@media (max-width: 768px) {
  /* Article pages: hide the whole sidebar (search + categories). The TOC is
     relocated under the title by initArticleTOC(). */
  body.ddc-article #sidebar {
    display: none !important;
  }

  /* TOC under the title → a tap-to-open dropdown card, no progress indicator. */
  .ddc-toc.ddc-toc--mobile {
    /* Collapsed: hugs the toggle text. The extra bottom margin keeps the
       article text below from touching the card. */
    margin: 16px 0 24px;
    padding: 0;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    background: var(--color-surface);
    overflow: hidden;
  }

  .ddc-toc.ddc-toc--mobile .ddc-toc-toggle {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    margin: 0 !important;
    padding: 14px 16px;
    cursor: pointer;
    color: var(--color-text);
  }

  .ddc-toc.ddc-toc--mobile .ddc-toc-caret {
    display: inline-flex;
    transition: transform 0.25s ease;
  }
  .ddc-toc.ddc-toc--mobile.is-open .ddc-toc-caret {
    transform: rotate(180deg);
  }

  .ddc-toc.ddc-toc--mobile ul {
    max-height: 0;
    overflow: hidden;
    padding: 0 8px;
    transition: max-height 0.3s ease;
  }
  .ddc-toc.ddc-toc--mobile.is-open ul {
    max-height: 70vh;
    overflow-y: auto;
    padding: 4px 8px 14px;
  }

  /* Clean list rows on mobile — no track line, no indicator. */
  .ddc-toc.ddc-toc--mobile .ddc-toc-indicator { display: none; }
  .ddc-toc.ddc-toc--mobile li a {
    border-left: none;
    padding: 9px 16px;
    transform: none;
  }
  .ddc-toc.ddc-toc--mobile li.h3 a {
    padding-left: 30px;
  }
  .ddc-toc.ddc-toc--mobile li a.is-active {
    transform: none;
  }
}


/* ==========================================================================
   23. Footer — DARK full-bleed with giant Doodle wordmark
   Built dynamically by initFooter() in ddc-help-head.html.
   ========================================================================== */

footer {
  background-color: var(--color-text) !important;
  color: var(--color-bg) !important;
  margin: 64px 10px 0 !important;
  margin-right: 10px !important;
  padding: 0 !important;
  width: auto !important;
  position: relative;
  font-family: var(--font-family-body) !important;
  overflow: visible;
  border: 4px solid transparent !important;
  border-top-left-radius: 8px !important;
  border-top-right-radius: 8px !important;
  border-bottom-left-radius: 0 !important;
  border-bottom-right-radius: 0 !important;
  box-sizing: border-box;
  text-align: left;
}

/* Wipe HelpScout's default footer text/links — JS rebuilds the whole thing */
footer > p,
footer > .footerPoweredBy,
footer > span,
footer a[href*="helpscout"],
footer .footerPoweredBy,
footer p[class*="powered"] {
  display: none !important;
}

/* Column row — the two menus sit centered as a pair, each with its links
   centered beneath the heading. */
.ddc-footer-inner {
  max-width: 1200px;
  margin: 0 auto;
  padding: 56px 48px 0;
  display: grid;
  grid-template-columns: repeat(2, auto);
  justify-content: space-between;
  gap: 80px;
  align-items: start;
  text-align: center;
}

/* Columns stay pinned to the outer edges (space-between); within each column the
   heading and its links are centred together as a block. */

.ddc-foot-col h4 {
  font-family: var(--font-family-heading) !important;
  font-size: 20px !important;
  font-weight: 700 !important;
  text-transform: none !important;
  letter-spacing: -0.005em !important;
  color: var(--color-bg) !important;
  margin: 0 0 24px !important;
  padding: 0;
  line-height: 1.2;
}

.ddc-foot-col ul {
  list-style: none !important;
  margin: 0 !important;
  padding: 0 !important;
}

.ddc-foot-col li {
  margin: 0 0 14px !important;
  padding: 0 !important;
}

.ddc-foot-col li::before { content: none !important; }

.ddc-foot-col a,
.ddc-foot-col button {
  color: var(--color-bg) !important;
  font-family: var(--font-family-body) !important;
  font-size: 15px !important;
  font-weight: 400 !important;
  text-decoration: none !important;
  background: none !important;
  border: none !important;
  padding: 0 !important;
  margin: 0 !important;
  cursor: pointer;
  transition: opacity var(--transition-fast);
  line-height: 1.5 !important;
  opacity: 0.78;
  display: inline-block;
  text-align: center;
}

.ddc-foot-col a:hover,
.ddc-foot-col button:hover {
  opacity: 1;
  color: var(--color-bg) !important;
}

/* Giant Doodle wordmark — full bleed */
.ddc-foot-wordmark {
  display: block;
  width: 100%;
  margin: 48px 0 0;
  padding: 0 48px;
  box-sizing: border-box;
  line-height: 0;
}

.ddc-foot-wordmark img {
  width: 100%;
  height: auto;
  display: block;
  max-width: 100%;
}

/* Bottom strip: copyright pushed to the left edge, Terms to the right edge
   of the footer card (full width, not capped to the 1200px column block). */
.ddc-foot-bottom {
  max-width: none;
  margin: 0;
  padding: 28px 40px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-family: var(--font-family-body) !important;
  font-size: 13px;
  color: var(--color-bg);
  opacity: 1;
  gap: 16px;
}

.ddc-foot-bottom span {
  font-family: var(--font-family-body) !important;
  color: var(--color-bg) !important;
  font-size: 13px !important;
  letter-spacing: 0;
}

.ddc-foot-bottom a {
  color: var(--color-bg) !important;
  text-decoration: none !important;
  font-size: 13px !important;
  font-family: var(--font-family-body) !important;
  opacity: 1;
  transition: opacity var(--transition-fast);
}

.ddc-foot-bottom a:hover {
  opacity: 0.7;
}

.ddc-foot-terms-link {
  background: none !important;
  border: none !important;
  cursor: pointer;
  color: var(--color-bg) !important;
  font-family: var(--font-family-body) !important;
  font-size: 13px !important;
  padding: 0 !important;
  margin: 0 !important;
  opacity: 1;
  transition: opacity var(--transition-fast);
}

.ddc-foot-terms-link:hover {
  opacity: 0.7;
}

/* Hide ANY HelpScout powered-by link anywhere */
footer a[href*="helpscout.com"],
footer a[href*="helpscout.net"],
footer .footerPoweredBy,
footer p:has(a[href*="helpscout"]),
footer span:has(a[href*="helpscout"]),
footer div:has(> a[href*="helpscout"]):not(.ddc-footer-inner):not(.ddc-foot-bottom):not(.ddc-foot-col) {
  display: none !important;
}

@media (max-width: 768px) {
  footer {
    margin-top: 64px;
  }

  .ddc-footer-inner {
    padding: 56px 24px 0;
    gap: 32px;
  }

  .ddc-foot-col h4 {
    font-size: 17px !important;
    margin-bottom: 18px !important;
  }

  .ddc-foot-wordmark {
    margin: 56px 0 0;
    padding: 0 24px;
  }

  .ddc-foot-bottom {
    flex-direction: column;
    align-items: flex-start;
    gap: 8px;
    padding: 24px;
    text-align: left;
  }
}

@media (max-width: 480px) {
  .ddc-footer-inner {
    grid-template-columns: 1fr;
    gap: 32px;
    text-align: center;
  }
  .ddc-footer-inner .ddc-foot-col:last-child {
    text-align: center;
  }
}


/* ==========================================================================
   24. External-link "You're leaving the Help Center" modal
       Built by initExternalLinkGuard() in ddc-help-head.html and appended to
       <body>. Shown when a link points off-site to a non-sharpsticker.store
       host; "Continue" opens the destination in a new tab.
   ========================================================================== */

.ddc-leave-overlay {
  position: fixed;
  inset: 0;
  z-index: var(--z-modal);
  display: none;
  align-items: center;
  justify-content: center;
  padding: 24px;
  background: rgba(51, 51, 51, 0.45);
  -webkit-backdrop-filter: blur(4px);
  backdrop-filter: blur(4px);
}

.ddc-leave-overlay.is-open {
  display: flex;
}

.ddc-leave-modal {
  width: 100%;
  max-width: 460px;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-xl);
  box-shadow: var(--shadow-lg);
  padding: 32px;
  text-align: left;
  font-family: var(--font-family-body);
  animation: ddc-leave-in 0.22s cubic-bezier(0.22, 1, 0.36, 1) both;
}

@keyframes ddc-leave-in {
  from { opacity: 0; transform: translateY(8px) scale(0.98); }
  to   { opacity: 1; transform: none; }
}

.ddc-leave-title {
  font-family: var(--font-family-heading) !important;
  font-size: 22px !important;
  font-weight: 600 !important;
  color: var(--color-text) !important;
  margin: 0 0 12px !important;
  line-height: 1.25;
  letter-spacing: -0.01em;
}

.ddc-leave-text {
  font-family: var(--font-family-body) !important;
  font-size: 15px !important;
  font-weight: 400 !important;
  color: var(--color-text-muted) !important;
  margin: 0 0 14px !important;
  line-height: 1.5;
}

.ddc-leave-url {
  display: block;
  font-family: var(--font-family-mono);
  font-size: 13px;
  color: var(--color-text);
  background: var(--color-code-bg);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  padding: 10px 12px;
  margin: 0 0 24px;
  word-break: break-all;
  line-height: 1.4;
}

.ddc-leave-actions {
  display: flex;
  justify-content: flex-end;
  gap: 10px;
}

.ddc-leave-actions button {
  font-family: var(--font-family-body) !important;
  font-size: 14px !important;
  font-weight: 600 !important;
  padding: 10px 18px !important;
  border-radius: var(--radius-pill);
  cursor: pointer;
  -webkit-appearance: none;
  appearance: none;
  line-height: 1.2;
  transition: background var(--transition-fast),
              color var(--transition-fast),
              border-color var(--transition-fast);
}

.ddc-leave-cancel {
  background: transparent;
  border: 1px solid var(--color-border-strong);
  color: var(--color-text) !important;
}

.ddc-leave-cancel:hover {
  background: var(--color-grey-extra-light);
}

.ddc-leave-continue {
  background: var(--color-button-bg);
  border: 1px solid var(--color-button-bg);
  color: var(--color-button-text) !important;
}

.ddc-leave-continue:hover {
  background: var(--color-button-bg-hover);
  border-color: var(--color-button-bg-hover);
}

.ddc-leave-actions button:focus-visible {
  outline: 2px solid var(--color-focus-ring);
  outline-offset: 2px;
}

@media (prefers-reduced-motion: reduce) {
  .ddc-leave-modal { animation: none; }
}

@media (max-width: 480px) {
  .ddc-leave-modal { padding: 24px; }
  .ddc-leave-actions { flex-direction: column; }
  .ddc-leave-actions button { width: 100%; }
}


/* ==========================================================================
   25. Homepage hero — full-screen orange panel, scroll-linked fade
       Active only on body.ddc-home (set by initHomeHero() in the <head> code).
       --hero-bg / --hero-fg are written by JS each scroll frame: the panel
       lerps brand orange → page cream, the text lerps cream → ink. The
       fallbacks below render the correct "top of page" state before JS runs.
   ========================================================================== */

/* The ENTIRE page backdrop follows the hero colour, so the orange never ends in
   a hard edge against a different background — the whole thing fades as one. */
html.ddc-home-pre { background-color: rgb(255, 111, 97); }
body.ddc-home { background-color: var(--hero-bg, rgb(255, 111, 97)) !important; }

/* Pre-paint state (html.ddc-home-pre is set in <head> before the hero parses)
   — full-screen orange with cream text so there's no flash before boot() runs.
   initHomeHero() then swaps in body.ddc-home, whose --hero-bg/--hero-fg rules
   below sit later in the cascade and take over the scroll-linked fade. */
html.ddc-home-pre #docsSearch {
  min-height: 100vh;
  min-height: 100svh;
  margin-bottom: 0;
  border-bottom: none;
  background-color: rgb(255, 111, 97) !important;
}

html.ddc-home-pre #docsSearch h1,
html.ddc-home-pre #docsSearch h1::after {
  color: rgb(255, 245, 238);
}

/* Match the sticky header to the pre-paint hero so the bar doesn't flash cream. */
html.ddc-home-pre .navbar {
  background-color: rgb(255, 111, 97) !important;
  box-shadow: none !important;
}

body.ddc-home #docsSearch {
  position: relative;
  /* Fill the viewport BELOW the sticky navbar so the visual centre of the hero
     content lines up with the visual centre of what the user actually sees.
     --ddc-nav-h is published per-frame by initHomeHero(); the 72px fallback
     matches the unscrolled navbar height. svh tracks the dynamic mobile chrome
     so iOS / Android browser bars don't push the cue out of view. */
  min-height: calc(100vh - var(--ddc-nav-h, 72px));
  min-height: calc(100svh - var(--ddc-nav-h, 72px));
  margin-bottom: 0;
  border-bottom: none;
  background-color: var(--hero-bg, rgb(255, 111, 97)) !important;
  /* Symmetric breathing room top / bottom so flex-centre sits at the true
     middle of the visible hero (was 96 / 48 → content shifted down). */
  padding-top: 40px !important;
  padding-bottom: 80px !important;
}

body.ddc-home #docsSearch h1,
body.ddc-home #docsSearch h1::after {
  color: var(--hero-fg, rgb(255, 245, 238));
}

/* ── Hero responsive — keep the content vertically centred on every device
   type and orientation. The navbar-height variable is published by JS each
   frame so calc() always tracks the real header. ────────────────────────── */
@media (max-width: 768px) {
  body.ddc-home #docsSearch {
    padding-top: 28px !important;
    padding-bottom: 64px !important;
  }
}

@media (max-width: 480px) {
  body.ddc-home #docsSearch {
    padding-top: 20px !important;
    padding-bottom: 56px !important;
  }
}

/* Landscape phones / very short viewports — drop the 100vh floor so the hero
   doesn't overshoot a 360px-tall window, and trim padding so search still fits.
   The scroll cue auto-hides via JS when content runs to the edge. */
@media (max-height: 520px) and (orientation: landscape) {
  body.ddc-home #docsSearch {
    min-height: calc(100vh - var(--ddc-nav-h, 56px));
    min-height: calc(100svh - var(--ddc-nav-h, 56px));
    padding-top: 16px !important;
    padding-bottom: 32px !important;
  }
  body.ddc-home #docsSearch h1 {
    font-size: clamp(1.6rem, 4.5vw, 2.4rem);
  }
  body.ddc-home #docsSearch #searchBar {
    margin-top: 18px;
  }
  .ddc-scroll-cue { display: none; }
}

/* Hero entrance — the heading and search bar rise in gently on load. */
@keyframes ddc-hero-enter {
  from { opacity: 0; transform: translateY(18px); }
  to   { opacity: 1; transform: none; }
}

body.ddc-home #docsSearch h1 {
  animation: ddc-hero-enter 0.7s cubic-bezier(0.22, 1, 0.36, 1) both;
}

body.ddc-home #docsSearch #searchBar {
  animation: ddc-hero-enter 0.7s cubic-bezier(0.22, 1, 0.36, 1) 0.12s both;
  /* Sticky: rides up with the hero content, pins just under the header for the
     length of the hero, then releases (scrolls away with the hero) as the
     categories arrive — and re-pins / rejoins the hero on the way back up.
     Native sticky keeps it the real, working search box (no clone). The nav
     height var is published by initHomeHero() so the offset is always correct. */
  position: sticky;
  top: calc(var(--ddc-nav-h, 72px) + 28px);
  z-index: 6;
}

/* Scroll-down cue at the bottom of the hero — gentle bounce, in the hero text
   colour, fades out on first scroll (opacity set inline by JS). */
.ddc-scroll-cue {
  position: absolute;
  left: 50%;
  bottom: 28px;
  transform: translateX(-50%);
  color: var(--hero-fg, rgb(255, 245, 238));
  opacity: 0.85;
  pointer-events: none;
  transition: opacity 0.35s ease;
  animation: ddc-cue-bounce 1.8s ease-in-out infinite;
}

.ddc-scroll-cue svg { display: block; }

@keyframes ddc-cue-bounce {
  0%, 100% { transform: translate(-50%, 0); }
  50%      { transform: translate(-50%, 8px); }
}

/* Category sections fade up as they scroll into view. The .ddc-reveal class is
   added by JS only when IntersectionObserver exists, so a missing observer
   leaves the cards fully visible. */
body.ddc-home .collection-category.ddc-reveal {
  opacity: 0;
  transform: translateY(32px);
  transition: opacity 0.7s ease, transform 0.7s cubic-bezier(0.22, 1, 0.36, 1);
}

body.ddc-home .collection-category.ddc-reveal.ddc-revealed {
  opacity: 1;
  transform: none;
}

/* ── Homepage header: same colour as the hero ────────────────────────────
   The navbar is sticky (it sits above the hero, not over it), so rather than a
   transparent header we paint it with the very same --hero-bg the hero uses —
   header and hero read as one continuous colour that fades orange → cream as
   you scroll. Foreground follows: category links + wordmark lerp via --hero-fg;
   the Contact pill, hamburger and logo flip at the midpoint (body.ddc-hero-top
   / JS src swap). */
body.ddc-home .navbar {
  background-color: var(--hero-bg, rgb(255, 111, 97)) !important;
  box-shadow: none !important;
  -webkit-backdrop-filter: none !important;
  backdrop-filter: none !important;
  /* --hero-bg is driven per-frame by JS — don't transition it (would smear). */
  transition: padding 0.25s ease, box-shadow 0.25s ease;
}

/* Homepage navbar is fully shadow-less in every state — it reads as a flat
   continuation of the hero / page colour, with no shadow line floating across
   the orange→cream handoff. */
body.ddc-home .navbar,
body.ddc-home .navbar.is-scrolled {
  box-shadow: none !important;
}

/* Keep the homepage header at a constant height (no scroll-shrink), so the
   hero height + sticky-search offset never jump as you start scrolling. This
   is what removes the "finicky" feel from the transition. */
body.ddc-home .navbar.is-scrolled {
  padding-top: 18px;
  padding-bottom: 14px;
}

/* Category links + wordmark lerp cream → ink in lockstep with the hero text. */
body.ddc-home .navbar .nav a.header-cat-link,
body.ddc-home .navbar .brand .hs-brand-word,
body.ddc-home .navbar .brand > span:not(.hs-brand-word)::after {
  color: var(--hero-fg, var(--color-text)) !important;
}

body.ddc-home .navbar .nav a.header-cat-link:hover {
  background: transparent;
  opacity: 0.7;
}

/* Contact us → solid cream pill with dark label while over the orange (constant
   on hover / open); flips to the normal dark pill past the midpoint. */
body.ddc-hero-top .navbar .nav .contact-btn,
body.ddc-hero-top .navbar .nav .contact-btn:hover,
body.ddc-hero-top .navbar .nav .contact-btn:active,
body.ddc-hero-top .navbar .nav .hs-dropdown.is-open .contact-btn {
  background-color: var(--color-bg) !important;
  border-color: var(--color-bg) !important;
  color: var(--color-text) !important;
}

/* Inverted hamburger icon (mobile) → cream strokes. */
body.ddc-hero-top .navbar .navbar-toggle::before {
  background-image: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2020%2020'%20fill='%23fff5ee'%3E%3Cpath%20fill-rule='evenodd'%20d='M3%204.75a.75.75%200%200%201%20.75-.75h12.5a.75.75%200%200%201%200%201.5h-12.5a.75.75%200%200%201-.75-.75Z'/%3E%3Cpath%20fill-rule='evenodd'%20d='M3%2010a.75.75%200%200%201%20.75-.75h12.5a.75.75%200%200%201%200%201.5h-12.5a.75.75%200%200%201-.75-.75Z'/%3E%3Cpath%20fill-rule='evenodd'%20d='M3%2015.25a.75.75%200%200%201%20.75-.75h12.5a.75.75%200%200%201%200%201.5h-12.5a.75.75%200%200%201-.75-.75Z'/%3E%3C/svg%3E") !important;
}

@media (prefers-reduced-motion: reduce) {
  body.ddc-home #docsSearch h1,
  body.ddc-home #docsSearch #searchBar,
  .ddc-scroll-cue {
    animation: none;
  }
  body.ddc-home .collection-category.ddc-reveal {
    opacity: 1;
    transform: none;
    transition: none;
  }
}


/* ==========================================================================
   26. Beacon launcher — fully hidden (open on demand only)
       The floating launcher never shows; the Beacon panel is opened only from
       Contact us → "Send us a message". A contact-support tooltip (§28) points
       people to that button.
   ========================================================================== */

/* The floating Beacon launcher is suppressed entirely — Beacon is set to
   display:manual at init, so support is reached only via Contact us → "Send us
   a message" (which calls Beacon('open')). This CSS is a belt-and-suspenders in
   case the launcher renders for a frame before the config applies. */
.BeaconFabButtonFrame {
  display: none !important;
}


/* ==========================================================================
   27. Mobile header menu — polish
       Cleaner expanded Contact-us submenu (indented rows under a hairline),
       larger tap targets, tidier spacing. Desktop is unchanged.
   ========================================================================== */

@media (max-width: 768px) {
  /* Expanded Contact-us submenu: indent under a hairline so the two items read
     as children of the toggle, with comfortable tap targets. */
  .navbar .nav .hs-dropdown-menu {
    padding: 4px 0 8px;
    margin: 4px 0 0 4px;
    border-left: 2px solid var(--color-border);
    border-radius: 0;
  }

  .navbar .nav .hs-dd-item {
    font-size: 16px !important;
    padding: 14px 14px !important;
    min-height: 48px;
    border-radius: var(--radius-sm);
  }

  /* Tighten the gap between the Contact-us pill and its submenu. */
  .navbar .nav .header-actions {
    margin-top: 4px;
  }
}


/* ==========================================================================
   28. Contact-support tooltip
       Points at the "Contact us" header button (since the Beacon launcher is
       hidden). Built + positioned by initContactTooltip() in the <head> code;
       dark bubble with an arrow aimed up at the button, gentle attention bob.
   ========================================================================== */

.ddc-contact-tip {
  position: fixed;
  z-index: 1030;
  max-width: 300px;
  display: flex;
  align-items: center;
  gap: 9px;
  background-color: var(--color-button-bg);
  color: var(--color-button-text);
  font-family: var(--font-family-body);
  font-size: 13.5px;
  font-weight: 500;
  line-height: 1.4;
  padding: 9px 9px 9px 14px;
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-lg);
  opacity: 0;
  pointer-events: none;
  /* No motion — just a colour + fade that follows the hero. */
  transition: opacity 0.3s ease, background-color 0.3s ease, color 0.3s ease;
}

.ddc-contact-tip.is-visible {
  opacity: 1;
}

/* Follows the hero: a clean light bubble while over the orange (matching the
   inverted Contact pill), transitioning to the normal dark bubble on scroll. */
body.ddc-hero-top .ddc-contact-tip {
  background-color: var(--color-bg);
  color: var(--color-text);
}

.ddc-contact-tip-icon {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  opacity: 0.9;
}

.ddc-contact-tip-icon svg {
  display: block;
}

.ddc-contact-tip-text {
  flex: 1 1 auto;
}

.ddc-contact-tip-close {
  flex: 0 0 auto;
  pointer-events: auto;
  cursor: pointer;
  width: 22px;
  height: 22px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  background: transparent;
  border: none;
  color: inherit;
  font-size: 17px;
  line-height: 1;
  border-radius: 50%;
  opacity: 0.6;
  transition: opacity 0.15s ease, background 0.15s ease;
}

.ddc-contact-tip-close:hover {
  opacity: 1;
  background: rgba(128, 128, 128, 0.2);
}

.ddc-contact-tip-arrow {
  position: absolute;
  top: -5px;
  right: var(--tip-arrow-right, 24px);
  width: 11px;
  height: 11px;
  background-color: var(--color-button-bg);
  transform: rotate(45deg);
  border-radius: 2px;
  transition: background-color 0.3s ease;
}

body.ddc-hero-top .ddc-contact-tip-arrow {
  background-color: var(--color-bg);
}

.ddc-contact-tip-close svg {
  display: block;
}


/* ==========================================================================
   29. Mobile navigation — controlled slide-down menu (JS-owned)
       initMobileNav() adds .ddc-mnav (which enables everything here) and
       toggles .ddc-nav-open. Gated on .ddc-mnav so that, without JS, the
       native HelpScout menu still works untouched.
   ========================================================================== */

@media (max-width: 768px) {
  /* Collapsed by default; slides open on .ddc-nav-open. */
  .navbar.ddc-mnav .nav-collapse {
    max-height: 0;
    padding-top: 0;
    overflow: hidden;
    opacity: 0;
    visibility: hidden;
    transition: max-height 0.34s cubic-bezier(0.22, 1, 0.36, 1),
                padding-top 0.34s cubic-bezier(0.22, 1, 0.36, 1),
                opacity 0.22s ease,
                visibility 0s linear 0.34s;
  }

  .navbar.ddc-mnav.ddc-nav-open .nav-collapse {
    max-height: 82vh;
    padding-top: 8px;
    padding-bottom: 8px;
    overflow-y: auto;
    opacity: 1;
    visibility: visible;
    transition: max-height 0.38s cubic-bezier(0.22, 1, 0.36, 1),
                padding-top 0.38s cubic-bezier(0.22, 1, 0.36, 1),
                opacity 0.26s ease,
                visibility 0s;
  }

  /* Rows fade/slide in once the menu opens (light stagger). */
  .navbar.ddc-mnav.ddc-nav-open .nav > li {
    animation: ddc-mnav-row 0.34s cubic-bezier(0.22, 1, 0.36, 1) both;
  }
  .navbar.ddc-mnav.ddc-nav-open .nav > li:nth-child(2) { animation-delay: 0.03s; }
  .navbar.ddc-mnav.ddc-nav-open .nav > li:nth-child(3) { animation-delay: 0.06s; }
  .navbar.ddc-mnav.ddc-nav-open .nav > li:nth-child(4) { animation-delay: 0.09s; }
  .navbar.ddc-mnav.ddc-nav-open .nav > li:nth-child(5) { animation-delay: 0.12s; }
  .navbar.ddc-mnav.ddc-nav-open .nav > li:nth-child(6) { animation-delay: 0.15s; }
  .navbar.ddc-mnav.ddc-nav-open .nav > li:nth-child(7) { animation-delay: 0.18s; }

  /* Hamburger → X (Polaris XIcon) while the menu is open. */
  .navbar.ddc-mnav.ddc-nav-open .navbar-toggle::before {
    background-image: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2020%2020'%20fill='%23333333'%3E%3Cpath%20d='M13.97%2015.03a.75.75%200%201%200%201.06-1.06l-3.97-3.97%203.97-3.97a.75.75%200%200%200-1.06-1.06l-3.97%203.97-3.97-3.97a.75.75%200%200%200-1.06%201.06l3.97%203.97-3.97%203.97a.75.75%200%201%200%201.06%201.06l3.97-3.97%203.97%203.97Z'/%3E%3C/svg%3E");
  }

  /* Homepage inverted header: cream X when open over the orange hero. */
  body.ddc-hero-top .navbar.ddc-mnav.ddc-nav-open .navbar-toggle::before {
    background-image: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2020%2020'%20fill='%23fff5ee'%3E%3Cpath%20d='M13.97%2015.03a.75.75%200%201%200%201.06-1.06l-3.97-3.97%203.97-3.97a.75.75%200%200%200-1.06-1.06l-3.97%203.97-3.97-3.97a.75.75%200%200%200-1.06%201.06l3.97%203.97-3.97%203.97a.75.75%200%201%200%201.06%201.06l3.97-3.97%203.97%203.97Z'/%3E%3C/svg%3E");
  }
}

@keyframes ddc-mnav-row {
  from { opacity: 0; transform: translateY(-6px); }
  to   { opacity: 1; transform: none; }
}

@media (prefers-reduced-motion: reduce) {
  .navbar.ddc-mnav .nav-collapse { transition: opacity 0.2s ease; }
  .navbar.ddc-mnav.ddc-nav-open .nav > li { animation: none; }
}
