/* Shared storefront requirement: 1440px outer content container, fluid below it.
 * Full-width homepage section backgrounds retain their existing layout.
 */
:root { --hh-page-width:1440px; }
body:not(.cms-index-index) #maincontent {
 width:100%;max-width:var(--hh-page-width)!important;margin-inline:auto;box-sizing:border-box;
}
/* These page handles already provide their gutter on maincontent. */
body:is(.hh-cart-page,.hh-customer-page) #maincontent > .columns {
 width:100%;max-width:none!important;padding-inline:0;box-sizing:border-box;
}
body.hh-information #maincontent .hh-info {max-width:none;margin-inline:0;}
body.hh-cart-page .cart-empty {width:100%;max-width:none;}

/* Match the page surface while keeping the sticky header readable. */
:root:not([data-color-mode="dark"]) #header { background:var(--color-surface); }

/* Give the light storefront a charcoal footer with readable local colours. */
:root:not([data-color-mode="dark"]) .hh-ft {
 --color-bg:var(--color-ink);
 --color-surface:var(--color-ink);
 --color-fg:var(--color-hide);
 --color-fg-secondary:var(--color-sand);
 --color-line:var(--color-line-dark);
 --color-accent-ink:var(--color-primary);
 background:var(--color-charcoal);
 color:var(--color-fg);
 color-scheme:dark;
}
:root:not([data-color-mode="dark"]) .hh-ft .hh-ft-word {
 -webkit-text-stroke:1px var(--color-sand);
}

/* The blog's native SVGs need dimensions when its Luma CSS is absent in Hyva. */
.amblog-svg { width:calc(var(--spacing) * 5); height:calc(var(--spacing) * 5); flex-shrink:0; vertical-align:middle; }
.amblog-container-list { display:grid; gap:calc(var(--spacing) * 6); }
.amblog-post-container { min-width:0; overflow-wrap:anywhere; }
.amblog-container-list :is(.amblog-wrap,.amblog-no-comments) { display:flex; flex-wrap:wrap; align-items:center; gap:calc(var(--spacing) * 2); }
.amblog-container-list .amblog-features { display:flex; flex-wrap:wrap; gap:calc(var(--spacing) * 3); }
.amblog-container-list .amblog-footer { margin-top:calc(var(--spacing) * 4); }
.amblog-container-list .amblog-post-title { margin-block:calc(var(--spacing) * 3); font-family:var(--font-display); font-size:var(--text-2xl); line-height:var(--text-2xl--line-height); }

/* Compact product badges reuse the existing 10px label size and spacing scale. */
.hh-product .hh-product-fit { height:calc(var(--spacing) * 5); padding-inline:calc(var(--spacing) * 2); font-size:.625rem; white-space:nowrap; }

/* The German storefront uses its existing Jagd Holster artwork. */
.hh-brand-logo.hh-brand-logo--de { mask-image:var(--hh-brand-image); mask-size:100% 100%; mask-position:center; mask-repeat:no-repeat; }
.hh-brand-logo.hh-brand-logo--de::after { clip-path:polygon(0 0,45% 0,45% 100%,0 100%); }
.hh-header-bar .hh-logo .hh-brand-logo--de { width:calc(var(--spacing) * 32); max-width:100%; }
.hh-header-bar .hh-logo .hh-brand-logo--de img { width:100%; height:auto; max-width:100%; }
.hh-menu-logo .hh-brand-logo--de { max-width:calc(var(--spacing) * 34); }

/* Keep product names to two lines without clipping the card-wide link. */
.hh-product-name, .hf-card-title > a { display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:2; overflow:hidden; }

/* Native footer disclosures keep desktop columns and the no-script links available. */
.hh-ft-col-toggle, .hh-ft-mobile-label { display:none; }
.hh-ft-payments { display:contents; }

@media (max-width:767px) {
 .hh-ft-inner { padding-block:calc(var(--spacing) * 8); gap:calc(var(--spacing) * 8); }
 .hh-ft-news { display:grid; gap:calc(var(--spacing) * 5); padding-bottom:calc(var(--spacing) * 8); }
 .hh-ft-news-copy { gap:calc(var(--spacing) * 3); min-width:0; }
 .hh-ft-news-title { font-size:var(--text-3xl); line-height:var(--text-3xl--line-height); }
 .hh-ft-eyebrow { color:var(--color-fg-secondary); }
 .hh-ft-shine { color:inherit; }
 .hh-ft-news-form { width:100%; min-width:0; max-width:none; }
 .hh-ft-sub-label { margin-bottom:calc(var(--spacing) * 2); }
 .hh-ft-sub-row { flex-direction:column; align-items:stretch; padding:0; gap:calc(var(--spacing) * 3); border:0; border-radius:0; background:transparent; }
 .hh-ft-sub-field { flex-basis:auto; }
 .hh-ft .hh-ft-sub-input { height:calc(var(--spacing) * 12); background:var(--color-bg); border:1px solid var(--color-line); border-radius:var(--radius-lg); }
 .hh-ft-sub-btn { width:100%; min-height:calc(var(--spacing) * 12); }
 .hh-ft-grid { grid-template-columns:minmax(0,1fr); gap:0; }
 .hh-ft-brand { max-width:none; padding-bottom:calc(var(--spacing) * 6); gap:calc(var(--spacing) * 3); }
 .hh-ft-brand .hh-ft-cta { min-height:calc(var(--spacing) * 11); color:var(--color-fg); }
 .hh-ft-col { border-top:1px solid var(--color-line); }
 .hh-ft-col:last-child { border-bottom:1px solid var(--color-line); }
 .hh-ft-col-title { display:none; }
 .hh-ft-col-toggle { display:flex; align-items:center; justify-content:space-between; gap:calc(var(--spacing) * 4); min-height:calc(var(--spacing) * 14); padding-block:calc(var(--spacing) * 3); list-style:none; color:var(--color-fg); font-size:var(--text-base); font-weight:600; cursor:pointer; }
 .hh-ft-col-toggle::-webkit-details-marker { display:none; }
 .hh-ft-col-toggle > svg { flex-shrink:0; width:calc(var(--spacing) * 4); height:calc(var(--spacing) * 4); }
 .hh-ft-links[open] .hh-ft-col-toggle > svg { transform:rotate(180deg); }
 .hh-ft-col ul { gap:0; padding-bottom:calc(var(--spacing) * 3); }
 .hh-ft-col li > a { display:flex; align-items:center; min-height:calc(var(--spacing) * 11); }
 .hh-ft-word { display:none; }
 .hh-ft-bar { flex-direction:column; align-items:stretch; gap:calc(var(--spacing) * 6); padding-top:0; border-top:0; }
 .hh-ft-mobile-label { display:block; margin:0; color:var(--color-fg-secondary); font-size:var(--text-xs); text-align:center; }
 .hh-ft-payments { display:grid; gap:calc(var(--spacing) * 3); }
 .hh-ft-pay { display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); width:100%; gap:var(--spacing); }
 .hh-ft-pay li { min-width:0; height:calc(var(--spacing) * 10); padding-inline:calc(var(--spacing) / 2); gap:calc(var(--spacing) / 2); border-radius:var(--radius-md); font-size:calc(var(--spacing) * 2.5); white-space:nowrap; }
 .hh-ft-pay .hh-ft-visa { font-size:var(--text-xs); }
 .hh-ft-pay .hh-ft-apple-pay { font-size:calc(var(--spacing) * 2.5); }
 .hh-ft-pay svg { width:auto; height:calc(var(--spacing) * 3); max-width:calc(var(--spacing) * 6); flex-shrink:0; }
 .hh-ft-end { flex-direction:column; gap:calc(var(--spacing) * 3); }
 .hh-ft-social { justify-content:center; gap:calc(var(--spacing) * 2); }
 .hh-ft .hh-ft-social a { width:calc(var(--spacing) * 11); height:calc(var(--spacing) * 11); border:1px solid var(--color-line); border-radius:var(--radius-lg); color:var(--color-fg); }
 .hh-ft-social svg { width:calc(var(--spacing) * 5); height:calc(var(--spacing) * 5); }
 .hh-ft-legal { order:1; justify-content:center; text-align:center; padding-top:calc(var(--spacing) * 5); border-top:1px solid var(--color-line); font-size:var(--text-xs); line-height:var(--text-xs--line-height); }
}
@media (min-width:480px) and (max-width:767px) {
 .hh-ft-pay { grid-template-columns:repeat(6,minmax(0,1fr)); }
}


/* A single inset keyboard-focus line avoids stacked component borders/rings.
 * Priority is deliberate: this shared policy also owns module focus effects.
 * Swatch buttons retain their existing single-border selection/focus treatment.
 */
:is(a,button,input,select,textarea,summary,[tabindex],[contenteditable="true"]):focus-visible:not(.hh-pills--swatch button, .hh-ft-sub-input),
.hh-options .options-list input[type="radio"]:focus-visible + label {
    outline: 2px solid currentColor !important;
    outline-offset: -2px !important;
    box-shadow: none !important;
}


/* Finished German artwork follows the selected appearance in header and mobile menu. */
.hh-brand-logo.hh-brand-logo--mode-de { mask:none; -webkit-mask:none; background:transparent; }
.hh-brand-logo.hh-brand-logo--mode-de::after { content:none; }
.hh-brand-logo.hh-brand-logo--mode-de img { opacity:1; width:100%; height:auto; }
.hh-brand-logo.hh-brand-logo--mode-de .hh-logo-light { display:block; }
.hh-brand-logo.hh-brand-logo--mode-de .hh-logo-dark { display:none; }
:root[data-color-mode="dark"] .hh-brand-logo.hh-brand-logo--mode-de .hh-logo-light { display:none; }
:root[data-color-mode="dark"] .hh-brand-logo.hh-brand-logo--mode-de .hh-logo-dark { display:block; }
.hh-menu-logo .hh-brand-logo--mode-de { width:128px; }

/* The newsletter input uses its enclosing border as its focus indicator. */
.hh-ft-sub-row:focus-within { border-color:var(--color-line); }
.hh-ft-sub-row:has(.hh-ft-sub-input:focus) { border-color:var(--color-primary); }
@media (max-width:767px) {
 .hh-ft .hh-ft-sub-input:focus { border-color:var(--color-primary); }
}
