/* The Haunted Workshop: mobile-first campaign styles, scoped to this plugin. */
@font-face {
  font-family: 'DFL Creepster';
  src: url('images/Creepster-Regular.ttf') format('truetype');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}
.hw-campaign {
  --hw-ink: #252820;
  --hw-paper: #f6f2e8;
  --hw-orange: #ef8745;
  --hw-muted: #706b5f;
  background: var(--hw-paper);
  color: var(--hw-ink);
  font: 14px/1.6 Arial, Helvetica, sans-serif;
  isolation: isolate;
  overflow: clip;
}
.hw-campaign *, .hw-campaign *::before, .hw-campaign *::after { box-sizing: border-box; }
.hw-campaign [hidden] { display: none !important; }
.hw-campaign a { color: inherit; text-decoration: none; }
.hw-campaign button { cursor: pointer; font: inherit; text-transform: none; box-shadow: none; }
.hw-campaign img { display: block; max-width: 100%; }
.hw-campaign svg { display: block; width: 24px; height: 24px; }
.hw-campaign .hw-icon { flex: none; width: 17px; height: 17px; }
.hw-campaign h1, .hw-campaign h2, .hw-campaign h3, .hw-campaign p { margin: 0; color: inherit; }
.hw-campaign :focus-visible { outline: 3px solid #ed8040; outline-offset: 3px; }
.hw-container { width: min(100%, 1216px); margin-inline: auto; padding-inline: 16px; }

/* The image retains its native 3:2 composition on phones. */
.hw-hero { display: grid; background: #151913; color: #f8f2e5; }
.hw-hero-content { padding: 34px 21px 32px; }
.hw-eyebrow { color: #d4ad79 !important; font-size: 10px; font-weight: 700; letter-spacing: 2px; }
.hw-campaign .hw-hero h1 {
  margin: 16px 0 18px;
  font: 400 clamp(48px, 12vw, 66px)/.97 'DFL Creepster', Georgia, serif;
  letter-spacing: .5px;
}
.hw-hero h1 span, .hw-hero h1 em { display: block; }
.hw-hero h1 em { color: #f39958; font-style: normal; }
.hw-hero-copy { max-width: 430px; color: #e0ded4 !important; font-size: 15px; line-height: 1.55; }
.hw-hero-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 9px; margin-top: 25px; }
.hw-campaign .hw-button {
  display: inline-flex; align-items: center; justify-content: space-between; gap: 20px;
  min-height: 48px; border-radius: 6px; padding: 12px 18px;
  font-size: 12px; font-weight: 700; line-height: 1.3;
  transition: background .2s ease;
}
.hw-button-orange { background: var(--hw-orange); color: #221b12 !important; }
.hw-button-orange:hover { background: #ffa668; }
.hw-button-dark { background: #252b20; color: #fff8e9 !important; }
.hw-button-dark:hover { background: #45503b; }
.hw-sample-cta { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; border-bottom: 1px solid #a49379; color: #ede1cc !important; font-size: 12px; }
.hw-campaign .hw-hero-actions .hw-button,
.hw-campaign .hw-hero-actions .hw-sample-cta { justify-content: space-between; gap: 15px; min-height: 50px; border-radius: 5px; padding: 12px 16px; font-size: 12px; font-weight: 700; line-height: 1.2; transition: background .2s ease, border-color .2s ease, box-shadow .2s ease, transform .2s ease; }
.hw-campaign .hw-hero-actions .hw-button { border: 1px solid #ffc393; box-shadow: 0 4px 0 #a4572e; }
.hw-campaign .hw-hero-actions .hw-button:hover { transform: translateY(-2px); box-shadow: 0 6px 0 #a4572e; }
.hw-campaign .hw-hero-actions .hw-sample-cta { border: 1px solid #8d887a; background: #161b15ba; color: #fff6e8 !important; }
.hw-campaign .hw-hero-actions .hw-sample-cta:hover { border-color: #e8c89e; background: #30382d; transform: translateY(-2px); }
.hw-campaign .hw-hero-arrow { width: 17px; height: 17px; fill: none; stroke: currentColor; stroke-width: 1.9; stroke-linecap: round; stroke-linejoin: round; }
.hw-hero-visual { position: relative; width: 100%; aspect-ratio: 3 / 2; overflow: hidden; background: #24251f; }
.hw-hero-image { width: 100%; height: 100% !important; object-fit: cover; object-position: center; }
.hw-hero-shade { position: absolute; inset: 0; background: linear-gradient(0deg, #0d110cb8, transparent 31%); pointer-events: none; }
.hw-hero-creatures { position: absolute; inset: 0; z-index: 2; overflow: hidden; pointer-events: none; }
.hw-bat { position: absolute; left: -12%; width: 45px; opacity: 0; filter: drop-shadow(0 3px 3px #0008); animation: hw-bat-flight 22s linear infinite; }
.hw-bat img { width: 100%; height: auto !important; animation: hw-bat-flap 1.5s ease-in-out infinite alternate; }
.hw-bat-one { top: 12%; }
.hw-bat-two { top: 25%; width: 30px; animation-delay: -10s; animation-duration: 27s; }
.hw-bat-two img { animation-delay: -.7s; }
.hw-skeleton { position: absolute; left: 4%; bottom: 3%; width: 59px; filter: drop-shadow(0 4px 4px #0009); animation: hw-skeleton-sway 8s ease-in-out infinite; transform-origin: center bottom; }
.hw-pumpkin { position: absolute; right: 5%; bottom: 4%; width: 69px; filter: drop-shadow(0 4px 5px #0009); animation: hw-pumpkin-glow 9s ease-in-out infinite; transform-origin: center bottom; }
.hw-skeleton img, .hw-pumpkin img { display: block; width: 100%; height: auto !important; }
@keyframes hw-bat-flight {
  0% { left: -12%; opacity: 0; transform: translateY(7px) rotate(-9deg); }
  8%, 82% { opacity: .9; }
  44% { transform: translateY(-9px) rotate(8deg); }
  100% { left: 106%; opacity: 0; transform: translateY(4px) rotate(-5deg); }
}
@keyframes hw-bat-flap { from { transform: scaleY(.85); } to { transform: scaleY(1.06); } }
@keyframes hw-skeleton-sway { 0%, 100% { transform: rotate(-2deg); } 50% { transform: rotate(2deg); } }
@keyframes hw-pumpkin-glow { 0%, 100% { transform: rotate(-1deg); } 50% { transform: rotate(1deg); } }

/* A compact catalogue with useful product facts and clear actions. */
.hw-collection { padding-top: 36px; padding-bottom: 42px; scroll-margin-top: 82px; }
.hw-kicker { color: #86502f !important; font-size: 10px; font-weight: 700; letter-spacing: 1.4px; }
.hw-campaign h2 { font: 700 clamp(30px, 8vw, 42px)/1.1 Georgia, serif; letter-spacing: -.9px; }
.hw-campaign h2 em { font-weight: 400; }
.hw-section-heading h2 { margin-top: 7px; }
.hw-intro { max-width: 630px; margin-top: 10px !important; color: #565349 !important; font-size: 14px; line-height: 1.55; }
.hw-filters { display: flex; flex-wrap: wrap; gap: 7px; margin: 19px 0 16px; }
.hw-filters::after { content: ''; flex-basis: 100%; height: 0; order: 1; }
.hw-filters button:nth-child(n+4) { order: 2; }
.hw-filters button { flex: none; min-height: 42px; border: 1px solid #cfc6b6; border-radius: 24px; padding: 8px 15px; background: #fffaf0; color: #423f37; font-size: 12px; font-weight: 700; white-space: nowrap; }
.hw-filters button[aria-pressed='true'] { border-color: #262b21; background: #262b21; color: #fff6e8; }
.hw-filters button:hover { border-color: #a75a30; }
.hw-result-count { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.hw-products { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 13px 10px; }
.hw-product { display: flex; flex-direction: column; min-width: 0; overflow: hidden; border: 1px solid #4d4b3e; border-radius: 8px; background: #222620; }
.hw-product-image { position: relative; display: block; width: 100%; aspect-ratio: 1 / 1; overflow: hidden; border-bottom: 1px solid #6b5a43; background: #262920; }
.hw-product-image img { width: 100%; height: 100% !important; object-fit: cover; transition: transform .35s ease; }
.hw-product-image:hover img { transform: scale(1.025); }
.hw-saving { position: absolute; top: 8px; right: 8px; z-index: 2; border-radius: 3px; padding: 4px 6px; background: #e7894e; color: #241d18; font-size: 10px; font-weight: 800; }
.hw-product-body { display: flex; flex: 1; flex-direction: column; min-width: 0; padding: 12px 11px 11px; color: #f8efe2; }
.hw-campaign h3 { font: 700 19px/1.15 Georgia, serif; letter-spacing: -.35px; }
.hw-colour-count { margin-top: 6px !important; color: #d9c8b3 !important; font-size: 11px; font-weight: 600; line-height: 1.3; }
.hw-description { display: none; }
.hw-card-meta { margin-top: 7px !important; color: #f3be85 !important; font-size: 11px; }
.hw-card-bottom { margin-top: auto; padding-top: 10px; }
.hw-price-line { display: flex; align-items: baseline; flex-wrap: wrap; gap: 3px; padding-bottom: 11px; line-height: 1.2; }
.hw-price-line > span { width: 100%; color: #d8c9b7; font-size: 11px; }
.hw-price-line strong { color: #ffb277; font-size: 22px; letter-spacing: -.5px; white-space: nowrap; }
.hw-price-line strong .amount { color: inherit !important; }
.hw-price-line small { color: #d8c9b7; font-size: 11px; }
.hw-product-link { display: flex; align-items: center; justify-content: space-between; gap: 10px; min-height: 44px; border-radius: 5px; padding: 10px 11px; background: #e9894d; color: #211d18 !important; font-size: 12px; font-weight: 700; line-height: 1.2; }
.hw-product-link:hover { background: #f6a46c; color: #211d18 !important; }
.hw-campaign .hw-product-link .hw-icon { width: 15px; height: 15px; }
.hw-all-fabrics { display: flex; justify-content: center; margin-top: 20px; }
.hw-text-link { display: inline-flex; align-items: center; gap: 15px; min-height: 44px; border-bottom: 1px solid #b8aa97; color: #352e24 !important; font-size: 13px; font-weight: 700; }
.hw-text-link:hover { color: #a84e21 !important; }

/* Customer reviews */
.hw-reviews { padding-block: 40px; border-block: 1px solid #d9d1c1; background: #eae7dc; scroll-margin-top: 82px; }
.hw-review-heading { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 16px 28px; }
.hw-review-heading h2 { max-width: 620px; }
.hw-review-score { display: inline-flex; align-items: center; gap: 10px; border-left: 3px solid #bc7849; padding-left: 12px; line-height: 1; }
.hw-review-score strong { display: inline-flex; align-items: baseline; color: #252820; font: 700 22px/1 -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif; letter-spacing: -0.4px; }
.hw-review-score strong span { color: #726c5d; font-size: 14px; font-weight: 500; margin-left: 2px; }
.hw-campaign .hw-review-score .hw-stars { display: inline-flex; align-items: center; gap: 3px; color: #bc7849; line-height: 1; }
.hw-campaign .hw-review-score .hw-stars .hw-icon { width: 15px; height: 15px; display: block; }
.hw-review-count { display: inline-flex; align-items: center; color: #5c584e; font: 500 13px/1 -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif; }
.hw-review-grid { display: grid; gap: 10px; margin-top: 22px; }
.hw-review { display: flex; flex-direction: column; min-width: 0; border: 1px solid #d5cbbb; border-top: 3px solid #b9774a; border-radius: 5px; padding: 18px; background: #faf7ef; }
.hw-review-top { display: flex; justify-content: space-between; align-items: center; gap: 10px; }
.hw-stars { display: inline-flex; gap: 2px; color: #bc7849; }
.hw-campaign .hw-stars .hw-icon { width: 14px; height: 14px; }
.hw-verified-badge { display: inline-flex; align-items: center; gap: 4px; color: #087f5b; font-size: 11px; font-weight: 600; }
.hw-check-icon { display: inline-block; vertical-align: middle; flex-shrink: 0; }
.hw-review blockquote { flex: 1; margin: 12px 0 16px; border: 0; padding: 0; color: #342f28; font: 15px/1.55 Georgia, serif; }
.hw-review-person { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 3px 12px; border-top: 1px solid #e3dacc; padding-top: 11px; }
.hw-review-person strong { color: #262820; font-size: 12px; }
.hw-buyer-tag { font-weight: 600; color: #087f5b; }

/* Service information without decorative clutter. */
.hw-help { display: grid; gap: 12px; padding-block: 40px; scroll-margin-top: 82px; }
.hw-help-card { position: relative; display: flex; flex-direction: column; align-items: flex-start; border: 1px solid #d9cfbb; border-radius: 9px; padding: 23px; }
.hw-help-samples { background: #eae2cf; }
.hw-help-returns { background: #e3e7da; border-color: #cfd5c6; }
.hw-help-icon { position: absolute; top: 19px; right: 19px; color: #887e66; }
.hw-campaign .hw-help-icon .hw-icon { width: 30px; height: 30px; stroke-width: 1.4; }
.hw-help h2 { max-width: 330px; margin-top: 8px; font-size: 30px; }
.hw-help-card > p:not(.hw-kicker) { max-width: 440px; margin: 13px 0 20px !important; color: #4d4b42 !important; font-size: 14px; line-height: 1.55; }
.hw-help-card > a { margin-top: auto; }
.hw-help .hw-button { width: 100%; max-width: 320px; }

@media (max-width: 360px) {
  .hw-campaign .hw-hero h1 { font-size: 46px; }
  .hw-hero-content { padding-inline: 17px; }
  .hw-hero-actions { display: grid; grid-template-columns: 1fr; }
  .hw-campaign .hw-hero-actions .hw-button, .hw-campaign .hw-hero-actions .hw-sample-cta { width: 100%; }
  .hw-campaign h3 { font-size: 18px; }
  .hw-product-body { padding-inline: 9px; }
  .hw-price-line strong { font-size: 19px; }
  .hw-product-link { font-size: 11px; }
}
@media (min-width: 700px) {
  .hw-container { padding-inline: 28px; }
  .hw-filters::after { display: none; }
  .hw-filters button:nth-child(n+4) { order: 0; }
  .hw-hero-content { padding: 48px 34px 40px; }
  .hw-campaign .hw-hero h1 { font-size: 72px; }
  .hw-collection { padding-block: 48px 54px; }
  .hw-products { gap: 20px; }
  .hw-product-body { padding: 17px; }
  .hw-campaign h3 { font-size: 22px; }
  .hw-description { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden; min-height: 42px; margin-top: 9px !important; color: #d6c9b9 !important; font-size: 13px; line-height: 1.55; }
  .hw-price-line > span { width: auto; margin-right: 3px; }
  .hw-price-line strong { font-size: 24px; }
  .hw-product-link { font-size: 12px; }
  .hw-review-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
  .hw-help { grid-template-columns: 1fr 1fr; gap: 18px; padding-block: 55px; }
  .hw-help-card { padding: 27px; }
}
@media (min-width: 960px) {
  .hw-hero { grid-template-columns: 49% 51%; min-height: 570px; }
  .hw-hero-content { display: flex; min-width: 0; flex-direction: column; align-items: flex-start; justify-content: center; padding: 50px 24px 52px max(40px, calc((100vw - 1180px) / 2)); }
  .hw-campaign .hw-hero h1 { font-size: clamp(58px, 4.65vw, 78px); }
  .hw-hero h1 span, .hw-hero h1 em { white-space: nowrap; }
  .hw-hero-copy { font-size: 15px; }
  .hw-hero-visual { height: 100%; min-height: 570px; aspect-ratio: auto; }
  .hw-hero-image { object-position: 75% center; }
  .hw-skeleton { width: 86px; left: 5%; bottom: 3%; }
  .hw-pumpkin { width: 88px; right: 6%; bottom: 4%; }
  .hw-products { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .hw-review-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .hw-review { min-width: 0; }
}
@media (prefers-reduced-motion: reduce) {
  .hw-campaign *, .hw-campaign *::before, .hw-campaign *::after { animation: none !important; transition: none !important; }
}
/* Retain the site's shared header and footer, expanding only the page content. */
body.dfl-halloween-page .main-page-wrapper { padding-top: 0; padding-bottom: 0; }
body.dfl-halloween-page #main-content { display: block; width: 100%; max-width: none; padding: 0; margin: 0; }
body.dfl-halloween-page .hw-campaign { width: 100%; min-width: 0; margin-bottom: 0; }
