/* Dolce Darlin' loader. Pairs with loader.js. Mobile first (390 x 844).
   Positions (cupcake, words, glow centre) are set in px by loader.js layout(),
   so the line cupcake sits exactly where the hero's photo cupcake rests. */
:root {
  --dl-ground: #eda3b5;     /* deeper dusty pink, picked over #f1b1bf by eye */
  --dl-glow: 255, 247, 243; /* soft cream */
  --dl-raspberry: #bf3761;
  --dl-deep: #a8284f;
}

html.dolce-loading,
html.dolce-loading body { overflow: hidden; }

#dolce-loader {
  position: fixed;
  inset: 0;
  z-index: 9999;
  pointer-events: none;
  contain: layout style;
  --dl-cx: 50%;
  --dl-cy: 35%;
  --dl-rx: 260px;
  --dl-ry: 300px;
}
html.dolce-loading #dolce-loader { pointer-events: auto; }

/* Ground, top layer first: cream glow behind the cupcake and words, fine
   grain, then a very faint gingham. Quiet, so the cupcake stays the hero. */
#dolce-loader .dl-bg {
  position: absolute;
  inset: 0;
  background-color: var(--dl-ground);
  background-image:
    radial-gradient(var(--dl-rx) var(--dl-ry) at var(--dl-cx) var(--dl-cy),
      rgba(var(--dl-glow), 0.9) 0%, rgba(var(--dl-glow), 0.55) 45%, rgba(var(--dl-glow), 0) 100%),
    url("data:image/png;base64,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"),
    repeating-linear-gradient(90deg, rgba(255, 255, 255, 0.055) 0 14px, rgba(255, 255, 255, 0) 14px 28px),
    repeating-linear-gradient(0deg, rgba(255, 255, 255, 0.055) 0 14px, rgba(255, 255, 255, 0) 14px 28px);
  background-size: auto, 64px 64px, auto, auto;
  will-change: opacity;
}

#dolce-loader .dl-centre { position: absolute; inset: 0; }

/* Box = viewBox aspect, so the drawing maps onto the photo with no letterboxing. */
#dolce-loader .dl-cup {
  position: absolute;
  display: block;
  overflow: visible;
}

#dolce-loader .dl-word {
  position: absolute;
  display: block;
  aspect-ratio: 6830 / 1190;
  height: auto;
  overflow: visible;
  will-change: transform, opacity;
}

/* Dark berry pill behind the words: highlighted, soft shadow, glassy edge. */
#dolce-loader .dl-pill {
  position: absolute;
  border-radius: 999px;
  background: rgba(42, 15, 26, 0.85);
  box-shadow:
    0 10px 28px rgba(42, 15, 26, 0.32),
    0 2px 6px rgba(42, 15, 26, 0.22),
    inset 0 1px 0 rgba(250, 246, 247, 0.16),
    inset 0 0 0 1px rgba(250, 246, 247, 0.08);
  -webkit-backdrop-filter: blur(8px) saturate(1.2);
  backdrop-filter: blur(8px) saturate(1.2);
  will-change: transform, opacity;
}

/* Sparkles, drawn in screen px. */
#dolce-loader .dl-fx {
  position: absolute;
  inset: 0;
  overflow: visible;
  pointer-events: none;
}

#dolce-loader .dl-sr {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}
