/* Canonical public header geometry. Page CSS owns page content, never this shell. */
:root {
  --pl-public-header-height: 72px;
  --pl-public-header-gutter: clamp(16px, 4vw, 64px);
  --pl-public-header-bg: var(--pl-shell-header-background, #f4f4f4);
  --pl-public-header-fg: var(--pl-color-text, #151515);
  --pl-public-header-muted: var(--pl-color-text-muted, #666);
  --pl-public-header-line: var(--pl-shell-header-border, rgba(21, 21, 21, .16));
  --pl-public-header-accent: var(--pl-color-accent, #303236);
  --pl-public-header-surface: var(--pl-color-surface, #fff);
}

:root[data-pl-theme="dark"],
:root[data-theme="dark"],
:root.dark {
  --pl-public-header-bg: #111312;
  --pl-public-header-fg: #f5f5f5;
  --pl-public-header-muted: rgba(245, 245, 245, .72);
  --pl-public-header-line: rgba(245, 245, 245, .18);
  --pl-public-header-accent: #e5e7eb;
  --pl-public-header-surface: #171a19;
}

.pl-public-header,
.pl-public-header *,
.pl-public-mobile-nav,
.pl-public-mobile-nav * { box-sizing: border-box; }

html .pl-public-header.pl-public-header {
  position: fixed;
  inset: 0 0 auto;
  z-index: var(--pl-z-sticky, 100);
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  grid-template-rows: minmax(0, 1fr);
  align-items: center;
  gap: clamp(14px, 1.8vw, 28px);
  width: 100%;
  height: var(--pl-public-header-height);
  min-width: 0;
  min-height: var(--pl-public-header-height);
  margin: 0;
  padding: 0 var(--pl-public-header-gutter);
  border: 0;
  border-bottom: 1px solid var(--pl-public-header-line);
  border-radius: 0;
  background: var(--pl-public-header-bg);
  box-shadow: none;
  color: var(--pl-public-header-fg);
  backdrop-filter: blur(14px);
  isolation: isolate;
}

html:not(.pl-homepage) body:has(> .pl-public-header) { padding-top: var(--pl-public-header-height); }
html:has(> body > .pl-public-header) { scroll-padding-top: var(--pl-public-header-height); }
body:has(> .pl-public-header) :is(button, a, input, select, textarea, [tabindex]) { scroll-margin-top: calc(var(--pl-public-header-height) + 12px); }

.pl-public-header .pl-public-brand {
  grid-column: 1;
  grid-row: 1;
  display: inline-flex;
  align-items: center;
  justify-self: start;
  gap: 12px;
  min-width: 0;
  min-height: 44px;
  color: var(--pl-public-header-fg);
  text-decoration: none;
}

html .pl-public-header.pl-public-header > .pl-public-brand { grid-column: 1; grid-row: 1; }

.pl-public-header .pl-public-brand__mark {
  display: inline-grid;
  width: 42px;
  height: 42px;
  flex: 0 0 42px;
  place-items: center;
  overflow: hidden;
  border: 1px solid var(--pl-public-header-line);
  border-radius: 4px;
  background: #fff;
}

.pl-public-header .pl-public-brand__mark img,
.pl-public-header .pl-public-brand > img {
  display: block;
  width: 42px;
  height: 42px;
  object-fit: cover;
}

.pl-public-header .pl-public-brand__name {
  display: block;
  width: 79px;
  min-width: 0;
  color: var(--pl-public-header-fg);
  font-family: "Instrument Serif", Georgia, serif;
  font-size: 23px;
  font-weight: 400;
  letter-spacing: -.015em;
  line-height: 1;
  white-space: nowrap;
  transform: scaleX(.742);
  transform-origin: left center;
}

.pl-public-header .pl-public-brand__name em { color: var(--pl-public-header-accent); font-weight: 400; }

.pl-public-header .pl-public-nav {
  grid-column: 2;
  grid-row: 1;
  display: flex;
  align-items: center;
  justify-self: center;
  gap: clamp(10px, 1.4vw, 22px);
  min-width: 0;
}

html .pl-public-header.pl-public-header > .pl-public-nav { grid-column: 2; grid-row: 1; }

.pl-public-header .pl-public-nav a,
.pl-public-header .pl-public-nav button {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--pl-public-header-muted);
  font: 700 11px/1 "Manrope", Arial, sans-serif;
  letter-spacing: .11em;
  text-decoration: none;
  text-transform: uppercase;
  white-space: nowrap;
  cursor: pointer;
}

.pl-public-header .pl-public-nav a::after,
.pl-public-header .pl-public-nav button::after {
  position: absolute;
  right: 0;
  bottom: 7px;
  left: 0;
  height: 1px;
  content: "";
  background: var(--pl-public-header-accent);
  transform: scaleX(0);
  transform-origin: right;
  transition: transform .18s ease;
}

.pl-public-header .pl-public-nav :is(a, button):is(:hover, :focus-visible, [aria-current="page"]) { color: var(--pl-public-header-fg); }
.pl-public-header .pl-public-nav :is(a, button):is(:hover, :focus-visible, [aria-current="page"])::after { transform: scaleX(1); transform-origin: left; }

.pl-public-header .pl-public-actions {
  grid-column: 3;
  grid-row: 1;
  display: flex;
  align-items: center;
  justify-self: end;
  justify-content: flex-end;
  gap: 8px;
  min-width: 0;
  min-height: 44px;
}

html .pl-public-header.pl-public-header > .pl-public-actions { grid-column: 3; grid-row: 1; }

.pl-public-control,
.pl-public-header .theme-button,
.pl-public-header .customer-commerce-header-link,
.pl-public-header .customer-commerce-mini > button,
.pl-public-static-action {
  display: inline-flex;
  min-width: 44px;
  height: 44px !important;
  min-height: 44px !important;
  align-items: center;
  justify-content: center;
  gap: 7px;
  padding: 0 12px;
  border: 1px solid var(--pl-public-header-line);
  border-radius: 4px;
  background: var(--pl-public-header-surface);
  box-shadow: none;
  color: var(--pl-public-header-fg);
  font: 700 10px/1 "Manrope", Arial, sans-serif;
  letter-spacing: .06em;
  text-decoration: none;
  text-transform: uppercase;
  white-space: nowrap;
}

.pl-public-header :is(a, button):focus-visible,
.pl-public-header[data-pl-keyboard-mode="true"] :is(a, button):focus,
.pl-public-mobile-nav :is(a, button):focus-visible { outline: 2px solid var(--pl-public-header-accent); outline-offset: 2px; }

.pl-public-header .pl-public-menu-toggle {
  grid-column: 2;
  grid-row: 1;
  display: none;
  justify-self: end;
}

html .pl-public-header.pl-public-header > .pl-public-menu-toggle { grid-column: 2; grid-row: 1; }

.pl-public-header .pl-public-menu-icon {
  position: relative;
  display: block;
  width: 17px;
  height: 12px;
  border-top: 1px solid currentColor;
  border-bottom: 1px solid currentColor;
}

.pl-public-header .pl-public-menu-icon::after {
  position: absolute;
  top: 50%;
  left: 0;
  width: 100%;
  height: 1px;
  content: "";
  background: currentColor;
  transform: translateY(-50%);
}

/* Neutral first-paint slots. Commerce hydration keeps this exact width. */
.pl-public-header .customer-commerce-header {
  position: relative;
  display: grid;
  grid-template-columns: 82px 76px;
  align-items: center;
  gap: 7px;
  width: 165px;
  min-width: 165px;
  min-height: 44px;
  color: var(--pl-public-header-fg);
}

.pl-public-header .customer-commerce-header-link,
.pl-public-header .customer-commerce-mini,
.pl-public-header .customer-commerce-mini > button { width: 100%; min-width: 0; }
.pl-public-header .customer-commerce-mini { position: relative; }
.pl-public-header .customer-commerce-header-badge { position: absolute; top: -6px; right: -6px; min-width: 20px; }
.pl-public-header .theme-button__icon,
.pl-public-header .theme-button__icon svg { display: block; width: 18px; height: 18px; flex: 0 0 18px; }
.pl-public-header .theme-button__icon svg { fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.pl-public-header .theme-button { width: 78px; flex: 0 0 78px; }
body.pl-public-menu-open { overflow: hidden; }

@media (max-width: 900px) {
  html .pl-public-header.pl-public-header { grid-template-columns: minmax(0, 1fr) auto auto; }
  html.pl-public-js .pl-public-header .pl-public-menu-toggle { display: inline-flex; }
  .pl-public-header .pl-public-actions { grid-column: 3; }
  html .pl-public-header.pl-public-header > .pl-public-nav {
    position: fixed;
    top: var(--pl-public-header-height);
    right: var(--pl-public-header-gutter);
    bottom: auto;
    left: var(--pl-public-header-gutter);
    grid-column: auto;
    grid-row: auto;
    align-self: auto;
    justify-self: auto;
    width: calc(100vw - (2 * var(--pl-public-header-gutter)));
    max-width: none;
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 0;
    overflow: hidden;
    border: 1px solid var(--pl-public-header-line);
    border-top: 0;
    border-radius: 0 0 4px 4px;
    background: var(--pl-public-header-bg);
    box-shadow: 0 18px 40px rgba(0, 0, 0, .14);
    opacity: 1;
    visibility: visible;
    transform: none;
    pointer-events: auto;
  }
  html.pl-public-js .pl-public-header .pl-public-nav { display: none; opacity: 0; visibility: hidden; transform: translateY(-8px); pointer-events: none; }
  .pl-public-header .pl-public-nav a,
  .pl-public-header .pl-public-nav button { min-height: 52px; border-right: 1px solid var(--pl-public-header-line); }
  .pl-public-header .pl-public-nav :is(a, button):last-child { border-right: 0; }
  html.pl-public-js .pl-public-header.is-menu-open .pl-public-nav { display: grid; opacity: 1; visibility: visible; transform: translateY(0); pointer-events: auto; }
}

@media (max-width: 640px) {
  :root { --pl-public-header-height: 64px; --pl-public-header-gutter: 12px; }
  html .pl-public-header.pl-public-header { grid-template-columns: 40px 44px minmax(0, 1fr); gap: 6px; }
  .pl-public-header .pl-public-brand__mark,
  .pl-public-header .pl-public-brand__mark img,
  .pl-public-header .pl-public-brand > img { width: 40px; height: 40px; flex-basis: 40px; }
  .pl-public-header .pl-public-brand__name { display: none; }
  .pl-public-header .pl-public-menu-toggle { grid-column: 2; justify-self: start; width: 44px; padding: 0; }
  .pl-public-header .pl-public-menu-toggle .pl-public-control__label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
  .pl-public-header .pl-public-actions { width: 100%; gap: 4px; }
  .pl-public-header .theme-button { width: 44px; flex-basis: 44px; gap: 0; padding: 0; }
  .pl-public-header .theme-button__label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
  .pl-public-header .theme-button__icon,
  .pl-public-header .theme-button__icon svg { width: 15px; height: 15px; flex-basis: 15px; }
  .pl-public-header .customer-commerce-header { grid-template-columns: 62px 58px; gap: 4px; width: 124px; min-width: 124px; }
  .pl-public-header .customer-commerce-header-link,
  .pl-public-header .customer-commerce-mini > button { width: 100%; padding: 0 4px; font-size: 9px; letter-spacing: .015em; }
  html .pl-public-header.pl-public-header > .pl-public-nav { right: 0; left: 0; width: 100vw; grid-template-columns: 1fr; max-height: calc(100dvh - var(--pl-public-header-height)); overflow-y: auto; border-right: 0; border-left: 0; border-radius: 0; background: var(--pl-public-header-bg); overscroll-behavior: contain; }
  .pl-public-header .pl-public-nav a,
  .pl-public-header .pl-public-nav button { min-height: 50px; border-right: 0; border-bottom: 1px solid var(--pl-public-header-line); }
}

@media (max-width: 350px) {
  :root { --pl-public-header-gutter: 8px; }
  html .pl-public-header.pl-public-header,
  .pl-public-header .pl-public-actions { gap: 4px; }
  .pl-public-header .customer-commerce-header { grid-template-columns: 52px 48px; gap: 4px; width: 104px; min-width: 104px; }
}

@media (prefers-reduced-motion: reduce) {
  .pl-public-nav,
  .pl-public-nav a::after,
  .pl-public-nav button::after { transition: none; }
}

/* Tracking shortcuts share the public theme without affecting form owners. */
.pl-public-tracking-shortcut {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  min-height: 44px;
  max-width: 100%;
  padding: 12px 18px;
  border: 1px solid var(--pl-public-header-line);
  border-radius: 4px;
  background: var(--pl-public-header-surface);
  color: var(--pl-public-header-fg);
  font: 600 14px/1.4 "Manrope", Arial, sans-serif;
  text-decoration: none;
  text-align: center;
}
.pl-public-tracking-shortcut svg { flex: 0 0 18px; }
.pl-public-tracking-shortcut:is(:hover, :focus-visible) { border-color: var(--pl-public-header-fg); }
.pl-public-tracking-shortcut:focus-visible { outline: 2px solid var(--pl-public-header-accent); outline-offset: 3px; }
.pl-public-order-footer {
  display: flex;
  justify-content: center;
  margin: 0 auto;
  padding: 24px var(--pl-public-header-gutter) calc(40px + env(safe-area-inset-bottom, 0px));
}
.order-trust-footer > .pl-public-tracking-shortcut { justify-self: start; }
.pl-homepage .footer .pl-public-tracking-shortcut {
  justify-self: start;
  min-height: 44px;
  color: var(--pl-public-header-fg);
  letter-spacing: 0;
  text-decoration: none;
  text-transform: none;
}
@media (max-width: 640px) {
  body:has(> .pl-whatsapp-fab) .pl-public-order-footer,
  .pl-homepage body:has(> .pl-whatsapp-fab) .footer { padding-bottom: calc(144px + env(safe-area-inset-bottom, 0px)); }
}

/* Shared public support action; fixed positioning reserves no document space. */
.pl-whatsapp-fab {
  position: fixed;
  right: calc(2rem + env(safe-area-inset-right, 0px));
  bottom: calc(2.25rem + env(safe-area-inset-bottom, 0px));
  z-index: 110;
  display: grid;
  place-items: center;
  width: 56px;
  height: 56px;
  border: 0;
  border-radius: 50%;
  background: transparent;
  box-shadow: none;
  transition: transform .2s ease, filter .2s ease;
}
.pl-whatsapp-fab img { position: absolute; top: 50%; left: 50%; display: block; width: 76px; height: 76px; max-width: none; object-fit: contain; transform: translate(-50%, -50%); pointer-events: none; }
.pl-whatsapp-fab:hover { transform: scale(1.06); filter: drop-shadow(0 7px 14px rgb(17 190 83 / .34)); }
.pl-whatsapp-fab:focus:not(:focus-visible) { outline: none; }
.pl-whatsapp-fab:focus-visible { outline: 2px solid var(--pl-color-focus, #236eaa); outline-offset: 2px; filter: drop-shadow(0 7px 14px rgb(17 190 83 / .34)); }
html:not(.pl-homepage) body:has(.plf-consent-fallback) .pl-whatsapp-fab { bottom: calc(5rem + env(safe-area-inset-bottom, 0px)); }
html.pl-homepage .pl-whatsapp-fab { bottom: calc(6rem + env(safe-area-inset-bottom, 0px)); }
@media (max-width: 760px) {
  html.pl-homepage .pl-whatsapp-fab { bottom: calc(5.25rem + env(safe-area-inset-bottom, 0px)); }
}
@media (prefers-reduced-motion: reduce) {
  .pl-whatsapp-fab { transition: none; }
  .pl-whatsapp-fab:hover { transform: none; }
}

/* Public discovery uses the existing shell; the menu has one interaction owner. */
.pl-public-header .pl-public-search-toggle { position: relative; z-index: 2; width: 44px; flex: 0 0 44px; padding: 0; }
.pl-public-header .pl-public-search-slot { position: relative; display: inline-flex; flex: 0 0 44px; width: 44px; height: 44px; }
.pl-public-search-feedback { position: fixed; top: calc(var(--pl-public-header-height) + 8px); left: var(--pl-public-header-gutter); right: var(--pl-public-header-gutter); margin: 0; padding: 16px; border: 1px solid var(--pl-public-header-line); background: var(--pl-public-header-bg); color: var(--pl-public-header-fg); font: 14px/1.5 "Manrope", Arial, sans-serif; }
.pl-public-search-toggle span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
.pl-public-header .pl-public-nav > .pl-public-menu-search { display: none; }
.pl-public-services { position: relative; }
.pl-public-services > summary {
  display: flex; align-items: center; gap: 5px; min-height: 44px;
  color: var(--pl-public-header-muted); cursor: pointer; list-style: none;
  font: 700 11px/1 "Manrope", Arial, sans-serif; letter-spacing: .11em; text-transform: uppercase;
}
.pl-public-services > summary::-webkit-details-marker { display: none; }
.pl-public-services > summary:is(:hover, :focus-visible, [data-current="true"]) { color: var(--pl-public-header-fg); }
.pl-public-services > summary:focus-visible { outline: 2px solid var(--pl-public-header-accent); outline-offset: 2px; }
.pl-public-services[open] > summary svg { transform: rotate(180deg); }
.pl-public-services__links {
  position: absolute; top: calc(100% + 14px); left: -24px; width: 272px;
  display: grid; padding: 12px 24px; background: var(--pl-public-header-surface);
  border: 1px solid var(--pl-public-header-line); border-radius: 4px;
  animation: pl-public-links-in 180ms ease both;
}
.pl-public-header .pl-public-services__links a {
  justify-content: flex-start; min-height: 46px; color: var(--pl-public-header-muted);
  font-size: 12px; font-weight: 500; letter-spacing: 0; text-transform: none;
}
.pl-public-header .pl-public-services__links a::after { bottom: 4px; }
@keyframes pl-public-links-in { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: translateY(0); } }
@media (min-width: 901px) and (max-width: 1180px) {
  :root { --pl-public-header-gutter: 16px; }
  html .pl-public-header.pl-public-header { gap: 14px; }
  .pl-public-header .pl-public-nav { gap: 12px; }
  .pl-public-header .pl-public-nav > a, .pl-public-services > summary { font-size: 10px; letter-spacing: .07em; }
}
@media (min-width: 901px) and (max-width: 1024px) {
  html .pl-public-header.pl-public-header { gap: 10px; }
  .pl-public-header .pl-public-nav { gap: 8px; }
  .pl-public-header .pl-public-nav > a, .pl-public-services > summary { letter-spacing: .04em; }
}
@media (max-width: 900px) {
  html.pl-public-js .pl-public-header.pl-public-header > .pl-public-nav {
    display: grid; grid-template-columns: 1fr; gap: 0; right: 0; left: 0;
    width: 100%; max-height: calc(100dvh - var(--pl-public-header-height));
    overflow: auto; padding: 12px var(--pl-public-header-gutter) calc(24px + env(safe-area-inset-bottom));
    border: 0; border-bottom: 1px solid var(--pl-public-header-line); border-radius: 0; box-shadow: none;
    overscroll-behavior: contain;
    background: var(--pl-public-header-surface);
    transition: opacity 180ms ease, transform 180ms ease, visibility 180ms;
  }
  html.pl-public-js .pl-public-header:not(.is-menu-open) .pl-public-nav { visibility: hidden; opacity: 0; pointer-events: none; transform: translateY(-8px); }
  .pl-public-header .pl-public-nav > a, .pl-public-header .pl-public-menu-search, .pl-public-services > summary {
    justify-content: flex-start; min-height: 50px; padding: 0 12px; border: 0;
  }
  .pl-public-header .pl-public-nav > .pl-public-menu-search { display: inline-flex; gap: 12px; }
  .pl-public-services { border-block: 1px solid var(--pl-public-header-line); margin-block: 4px; }
  .pl-public-services > summary { justify-content: space-between; }
  .pl-public-services__links { position: static; width: 100%; padding: 0 12px 12px; border: 0; background: transparent; }
  .pl-public-header .pl-public-services__links a { min-height: 44px; padding: 0 12px; border: 0; }
}
html:not(.pl-public-js) .pl-public-header.pl-public-header { position: relative; height: auto; min-height: var(--pl-public-header-height); padding-block: 8px; }
html:not(.pl-public-js) .pl-public-header.pl-public-header > .pl-public-nav { position: static; grid-column: 1 / -1; grid-row: 2; display: flex; flex-wrap: wrap; width: 100%; justify-content: center; overflow: visible; border: 0; box-shadow: none; }
html:not(.pl-public-js) body:has(> .pl-public-header) { padding-top: 0; }
@media (prefers-reduced-motion: reduce) {
  .pl-public-services__links { animation: none; }
  html.pl-public-js .pl-public-header.pl-public-header > .pl-public-nav { transition: none; }
}
