/* ==========================================================================
   DECOVINK chrome: announcement bar, header, mega menu, drawer, search, footer.
   No shadows anywhere. Structure comes from hairlines and whitespace.
   ========================================================================== */

/* Announcement bar ------------------------------------------------------- */

.dv-announce {
  font-size: 0.8125rem;
  line-height: 1;
  border-bottom: 1px solid rgba(255,255,255,0.10);
}

.dv-announce__inner {
  display: flex;
  align-items: center;
  gap: var(--dv-md);
  min-height: 40px;
  padding-block: 10px;
}

.dv-announce__list {
  display: flex;
  align-items: center;
  gap: var(--dv-lg);
  margin: 0; padding: 0;
  list-style: none;
  flex: 1 1 auto;
  min-width: 0;
}

.dv-announce__item {
  display: flex;
  align-items: center;
  gap: 8px;
  white-space: nowrap;
  color: rgba(255,255,255,0.82);
}

.dv-announce__item .dv-icon { color: var(--dv-accent); flex: none; }

.dv-announce__flag {
  margin: 0;
  color: rgba(255,255,255,0.82);
  white-space: nowrap;
  flex: none;
}

.dv-announce__close {
  flex: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px; height: 28px;
  padding: 0;
  background: transparent;
  border: 0;
  border-radius: var(--dv-r-sm);
  color: rgba(255,255,255,0.60);
  cursor: pointer;
}
.dv-announce__close:hover { color: #FFFFFF; background: rgba(255,255,255,0.08); }

/* Below desktop: one message at a time, rotated by script. */
@media (max-width: 1199px) {
  .dv-announce__list { gap: 0; }
  .dv-announce__item { display: none; }
  .dv-announce__item.is-active { display: flex; }
  .dv-announce__flag { display: none; }
}

/* Header ----------------------------------------------------------------- */

.dv-header {
  position: sticky;
  top: 0;
  z-index: 900;
  background: var(--dv-bg);
  border-bottom: 1px solid var(--dv-line);
}

.dv-header__inner {
  display: flex;
  align-items: center;
  gap: var(--dv-md);
  height: var(--dv-header-h);
  transition: height 0.18s var(--dv-ease);
}

.dv-header.is-scrolled .dv-header__inner { height: var(--dv-header-h-scrolled); }

/* Logo */

.dv-logo {
  display: inline-flex;
  align-items: center;
  flex: none;
  text-decoration: none;
  color: var(--dv-ink);
}
.dv-logo:hover { color: var(--dv-ink); }

.dv-logo__img { max-height: 40px; width: auto; }

.dv-logo__placeholder { display: inline-flex; align-items: center; gap: 10px; }

.dv-logo__mark { flex: none; }

.dv-logo__word {
  font-size: 1.375rem;
  font-weight: var(--dv-fw-display);
  letter-spacing: -0.02em;
  line-height: 1;
}

.dv-logo__placeholder--invert .dv-logo__word { color: #FFFFFF; }

/* Primary nav and mega menu ---------------------------------------------- */

.dv-nav { flex: 1 1 auto; min-width: 0; display: none; }

@media (min-width: 1200px) {
  .dv-nav { display: block; }
}

.dv-nav__list {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 2px;
  margin: 0; padding: 0;
  list-style: none;
  flex-wrap: nowrap;
}

.dv-nav__item { position: static; display: flex; align-items: center; }

.dv-nav__link {
  display: inline-flex;
  align-items: center;
  height: 40px;
  padding: 0 10px;
  border-radius: var(--dv-r-sm);
  font-size: 0.9375rem;
  font-weight: var(--dv-fw-medium);
  color: var(--dv-ink);
  text-decoration: none;
  white-space: nowrap;
  transition: color 0.15s var(--dv-ease);
}
.dv-nav__link:hover { color: var(--dv-accent); }

.dv-nav__item.is-current > .dv-nav__link { color: var(--dv-accent); }

.dv-nav__toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 24px; height: 40px;
  margin-left: -6px;
  padding: 0;
  background: transparent;
  border: 0;
  border-radius: var(--dv-r-sm);
  color: var(--dv-ink-muted);
  cursor: pointer;
}

.dv-nav__toggle .dv-icon { transition: transform 0.18s var(--dv-ease); }

.dv-nav__item.is-open .dv-nav__toggle .dv-icon { transform: rotate(180deg); }
.dv-nav__item.is-open > .dv-nav__link { color: var(--dv-accent); }

.dv-nav__empty { margin: 0; font-size: 0.8125rem; color: var(--dv-ink-muted); text-align: center; }

/* The panel. Full bleed, hairline top, no shadow. */

.dv-panel {
  position: absolute;
  left: 0; right: 0;
  top: 100%;
  background: var(--dv-bg);
  border-top: 1px solid var(--dv-line);
  border-bottom: 1px solid var(--dv-line);
}

.dv-panel__inner { padding-block: var(--dv-lg); }

.dv-panel__list {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--dv-md) var(--dv-lg);
  margin: 0; padding: 0;
  list-style: none;
}

.dv-panel__item { min-width: 0; }

.dv-panel__link {
  display: block;
  padding: 10px 12px;
  border-radius: var(--dv-r-sm);
  text-decoration: none;
  color: var(--dv-ink);
  transition: background-color 0.15s var(--dv-ease);
}
.dv-panel__link:hover { background: var(--dv-surface-alt); color: var(--dv-ink); }

.dv-panel__label {
  display: block;
  font-size: 0.9375rem;
  font-weight: var(--dv-fw-medium);
  line-height: 1.3;
}

.dv-panel__desc {
  display: block;
  margin-top: 2px;
  font-size: 0.8125rem;
  line-height: 1.4;
  color: var(--dv-ink-muted);
}

.dv-panel__heading {
  display: block;
  padding: 10px 12px 4px;
  font-size: 0.75rem;
  font-weight: var(--dv-fw-medium);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--dv-ink-muted);
}

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

/* Header utilities ------------------------------------------------------- */

.dv-utils {
  display: flex;
  align-items: center;
  gap: 2px;
  flex: none;
  margin-left: auto;
}

.dv-util {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px; height: 44px;
  padding: 0;
  background: transparent;
  border: 0;
  border-radius: var(--dv-r-sm);
  color: var(--dv-ink);
  text-decoration: none;
  cursor: pointer;
  transition: background-color 0.15s var(--dv-ease), color 0.15s var(--dv-ease);
}
.dv-util:hover { background: var(--dv-surface-alt); color: var(--dv-accent); }

.dv-cart-count {
  position: absolute;
  top: 4px; right: 4px;
  min-width: 18px; height: 18px;
  padding: 0 5px;
  background: var(--dv-accent);
  border-radius: var(--dv-r-pill);
  color: #FFFFFF;
  font-size: 0.6875rem;
  font-weight: var(--dv-fw-bold);
  line-height: 18px;
  text-align: center;
}

.dv-header__cta { margin-left: var(--dv-sm); }

.dv-util--burger { display: inline-flex; }
@media (min-width: 1200px) { .dv-util--burger { display: none; } }

/* Below tablet the CTA moves to a fixed bottom bar, so hide it in the header. */
@media (max-width: 767px) {
  .dv-header__cta { display: none; }
}
/* Search panel ----------------------------------------------------------- */

.dv-search {
  position: absolute;
  left: 0; right: 0;
  top: 100%;
  background: var(--dv-bg);
  border-top: 1px solid var(--dv-line);
  border-bottom: 1px solid var(--dv-line);
}

.dv-search__inner { padding-block: var(--dv-md); }

.dv-search__form {
  position: relative;
  display: flex;
  align-items: center;
  gap: var(--dv-sm);
}

.dv-search__form .dv-icon {
  position: absolute;
  left: 14px;
  color: var(--dv-ink-muted);
  pointer-events: none;
}

.dv-search__form input[type="search"] { padding-left: 44px; }

/* Mobile drawer ---------------------------------------------------------- */

.dv-drawer {
  position: fixed;
  top: 0; right: 0; bottom: 0;
  z-index: 1000;
  width: min(88vw, 380px);
  display: flex;
  flex-direction: column;
  background: var(--dv-bg);
  border-left: 1px solid var(--dv-line);
  overflow-y: auto;
  overscroll-behavior: contain;
}

.dv-drawer__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--dv-md);
  padding: var(--dv-md) var(--dv-md) var(--dv-md) var(--dv-lg);
  border-bottom: 1px solid var(--dv-line);
}

.dv-drawer__title {
  font-size: 0.75rem;
  font-weight: var(--dv-fw-medium);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--dv-ink-muted);
}

.dv-drawer__nav { flex: 1 1 auto; padding: var(--dv-sm) 0; }

.dv-drawer__list, .dv-drawer__list ul { margin: 0; padding: 0; list-style: none; }

.dv-drawer__list a {
  display: block;
  min-height: 52px;
  padding: 15px var(--dv-lg);
  font-size: 1rem;
  font-weight: var(--dv-fw-medium);
  color: var(--dv-ink);
  text-decoration: none;
  border-bottom: 1px solid var(--dv-line);
}
.dv-drawer__list a:hover { background: var(--dv-surface-alt); color: var(--dv-ink); }

/* Second level sits indented, lighter, and without its own divider weight. */
.dv-drawer__list .sub-menu a {
  min-height: 48px;
  padding-left: calc(var(--dv-lg) + var(--dv-md));
  font-size: 0.9375rem;
  font-weight: var(--dv-fw-body);
  color: var(--dv-ink-muted);
}

.dv-drawer__foot { padding: var(--dv-md) var(--dv-lg) var(--dv-lg); }

.dv-scrim {
  position: fixed;
  inset: 0;
  z-index: 990;
  background: rgba(22,22,22,0.5);
}

body.dv-locked { overflow: hidden; }

/* Mobile sticky order bar ------------------------------------------------ */

.dv-mobilebar {
  position: fixed;
  left: 0; right: 0; bottom: 0;
  z-index: 880;
  display: none;
  padding: 10px var(--dv-gutter) calc(10px + env(safe-area-inset-bottom));
  background: var(--dv-bg);
  border-top: 1px solid var(--dv-line);
}

@media (max-width: 767px) {
  .dv-mobilebar { display: block; }
  body { padding-bottom: 76px; }
}

/* Footer ----------------------------------------------------------------- */

.dv-footer { margin-top: var(--dv-xxl); }

.dv-footer__top {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--dv-lg);
  padding-block: var(--dv-xl);
}

@media (min-width: 640px) {
  .dv-footer__top { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (min-width: 1200px) {
  .dv-footer__top {
    grid-template-columns: 1.4fr repeat(4, minmax(0, 1fr)) 1.6fr;
    gap: var(--dv-lg);
  }
}

.dv-footer__tagline {
  margin: var(--dv-md) 0 0;
  font-size: 0.875rem;
  color: rgba(255,255,255,0.64);
  max-width: 24em;
}

.dv-footer__social {
  display: flex;
  flex-wrap: wrap;
  gap: var(--dv-sm);
  margin: var(--dv-md) 0 0;
  padding: 0;
  list-style: none;
}

.dv-footer__social a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px; height: 40px;
  border: 1px solid rgba(255,255,255,0.20);
  border-radius: var(--dv-r-sm);
  color: #FFFFFF;
  font-size: 0.875rem;
  font-weight: var(--dv-fw-bold);
  text-decoration: none;
}
.dv-footer__social a:hover { background: var(--dv-accent); border-color: var(--dv-accent); color: #FFFFFF; }

.dv-footer__heading {
  margin: 0 0 var(--dv-md);
  font-size: 0.75rem;
  font-weight: var(--dv-fw-medium);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: rgba(255,255,255,0.56);
}

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

.dv-footer__list li + li { margin-top: 10px; }

.dv-footer__list a {
  font-size: 0.9375rem;
  color: rgba(255,255,255,0.82);
  text-decoration: none;
}
.dv-footer__list a:hover { color: #FFFFFF; text-decoration: underline; }

.dv-footer__newstext {
  margin: 0 0 var(--dv-md);
  font-size: 0.875rem;
  color: rgba(255,255,255,0.64);
}

.dv-news { display: flex; flex-wrap: wrap; gap: var(--dv-sm); }

.dv-news input[type="email"] {
  flex: 1 1 180px;
  min-width: 0;
  background: rgba(255,255,255,0.06);
  border-color: rgba(255,255,255,0.20);
  color: #FFFFFF;
}
.dv-news input[type="email"]::placeholder { color: rgba(255,255,255,0.48); }

.dv-news__consent {
  flex: 1 1 100%;
  margin: 0;
  font-size: 0.75rem;
  line-height: 1.5;
  color: rgba(255,255,255,0.56);
}
.dv-news__consent label { display: flex; gap: 8px; font-weight: var(--dv-fw-body); margin: 0; }
.dv-news__consent input { flex: none; margin-top: 2px; }

.dv-footer__bottom {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--dv-md);
  padding-block: var(--dv-md) var(--dv-lg);
  border-top: 1px solid rgba(255,255,255,0.12);
}

.dv-footer__legalline {
  margin: 0;
  font-size: 0.8125rem;
  color: rgba(255,255,255,0.56);
}

.dv-footer__legal {
  display: flex;
  flex-wrap: wrap;
  gap: var(--dv-md);
  margin: 0; padding: 0;
  list-style: none;
}

.dv-footer__legal a {
  font-size: 0.8125rem;
  color: rgba(255,255,255,0.56);
  text-decoration: none;
}
.dv-footer__legal a:hover { color: #FFFFFF; }

/* Admin-only build notices ---------------------------------------------- */

.dv-admin-note {
  margin: var(--dv-md) 0 0;
  padding: 10px 12px;
  border: 1px dashed var(--dv-accent);
  border-radius: var(--dv-r-sm);
  font-size: 0.75rem;
  line-height: 1.5;
  color: rgba(255,255,255,0.72);
}
/* Nav fits one line from 1200px. Between 1200 and 1365 it runs tighter. */
@media (min-width: 1200px) and (max-width: 1365px) {
  .dv-nav__link { padding: 0 7px; font-size: 0.875rem; }
  .dv-header__cta { padding: 0 18px; font-size: 0.875rem; }
  .dv-util { width: 40px; height: 40px; }
}

/* Never let the nav row overflow onto the logo. */
.dv-nav { overflow: visible; }
.dv-nav__list { min-width: 0; }
.dv-nav__item { flex: 0 1 auto; min-width: 0; }
/* ==========================================================================
   DV CONTENT CONTAINER

   Hello Elementor's own container CSS is switched off, so default templates
   (archives, search, single posts, the Woo pages) need their own measure.
   Elementor-built pages are excluded: they bring their own containers and
   must stay free to run full bleed.
   ========================================================================== */

body:not(.elementor-page) .site-main {
  width: 100%;
  max-width: var(--dv-maxw);
  margin-inline: auto;
  padding: var(--dv-section-y) var(--dv-gutter);
}

body:not(.elementor-page) .site-main > * + * { margin-top: var(--dv-lg); }

.page-header { margin-bottom: var(--dv-lg); }

/* Keep running text readable on default templates. */
body:not(.elementor-page) .entry-content > p,
body:not(.elementor-page) .entry-content > ul,
body:not(.elementor-page) .entry-content > ol { max-width: 34em; }

/* Mega menu item icons --------------------------------------------------- */
/* Only links that actually resolved an icon get the two-column grid, so a
   panel with no icons keeps exactly the layout it had before. */

.dv-panel__link--icon {
  display: flex;
  align-items: flex-start;
  gap: 12px;
}

.dv-panel__icon {
  flex: 0 0 auto;
  height: 40px;
  /* Optical nudge: the cap height of the label sits a little below its box. */
  margin-top: 1px;
}

.dv-panel__icon img {
  display: block;
  width: auto;
  height: 100%;
  object-fit: contain;
}

.dv-panel__link--icon .dv-panel__text {
  min-width: 0;
}

/* No mobile rule here on purpose: below 1024px .dv-nav is display:none and
   the burger opens .dv-drawer, which is separate markup and has no icons. */

/* Narrow header fit ------------------------------------------------------ */
/* At 320px the bar needs logo (150) + gap (16) + utils (182) = 348px inside
   272px of content box, and both children had flex-shrink: 0, so the row
   overflowed and every page got a 52px horizontal scroll. Phase G found
   this; it is fixed here by tightening the gutter and letting the logo
   scale, which removes no control and keeps all four utility buttons at
   their 44px touch target. Nothing changes at 430px and above. */
@media (max-width: 400px) {
  .dv-header__inner { padding-left: 12px; padding-right: 12px; gap: 8px; }
  .dv-logo { flex-shrink: 1; min-width: 0; }
  .dv-logo__img { width: auto; max-width: 100%; height: auto; max-height: 26px; }
  .dv-utils { gap: 0; }
}

/* Grouped mega panel (Custom Apparel) ----------------------------------- */
/* The apparel icons are 64x40, so equal columns left three labels 12-26px
   short at 1280px. Column 3 holds a single short item, so it gives width
   to the longer labels instead of shrinking the illustrations. Scoped with
   :has() to panels that have column headings, i.e. only this one. */
@media (min-width: 1024px) {
  .dv-panel__list:has(> .dv-panel__item--group) {
    grid-template-columns: minmax(0, 1.12fr) minmax(0, 1fr) minmax(0, 0.78fr) minmax(0, 1.1fr);
    column-gap: 24px;
  }
  .dv-panel__list:has(> .dv-panel__item--group) .dv-panel__link--icon { gap: 10px; }
}

/* Two groups plus a CTA (Embroidery): three columns, so the CTA gets the
   wide last column instead of the narrow third one and does not wrap. */
@media (min-width: 1024px) {
  .dv-panel__list:has(> .dv-panel__item--group):has(> li:nth-child(3):last-child) {
    grid-template-columns: minmax(0, 1.12fr) minmax(0, 1fr) minmax(0, 1.1fr);
  }
}

/* A label with no description line sits centred on its icon rather than
   hugging the top of it. */
.dv-panel__link--icon:not(:has(.dv-panel__desc)) { align-items: center; }

/* Footer refinements ----------------------------------------------------- */

/* Column headings slightly bolder; links on a tighter ~28px rhythm. */
.dv-footer__heading { font-weight: 600; }
.dv-footer__list li { line-height: 1.45; }
.dv-footer__list li + li { margin-top: 6px; }

/* Real monogram image in place of the drawn placeholder mark. */
.dv-logo__mark--img { display: block; width: auto; height: 30px; }

/* Social icons: drawn SVGs, centred in the existing 40px squares. */
.dv-footer__socialicon { display: block; width: 20px; height: 20px; }

/* Newsletter result line (filled by the sign-up script). */
.dv-news__msg { flex: 1 1 100%; margin: 4px 0 0; font-size: 0.8125rem; line-height: 1.5; color: #FFFFFF; }
.dv-news.is-sending button { opacity: .6; pointer-events: none; }
.dv-news__consent a { color: rgba(255,255,255,0.82); text-decoration: underline; }

/* Unsubscribe form on the /newsletter/ page. */
.dvn-unsub { display: flex; flex-wrap: wrap; gap: 8px; max-width: 32rem; }
.dvn-unsub input[type="email"] { flex: 1 1 14rem; min-width: 0; }
.dv-news__consent label { align-items: flex-start; }
