/* ==========================================================================
   Custom design request (sections/design-request.liquid)
   Uses the theme's tokens with fallbacks, so the same file works in every built-in theme.
   Motion: transform / opacity / stroke-dashoffset only; off under prefers-reduced-motion.
   ========================================================================== */
.dr {
  --dr-ink: var(--c-text, #16213d);
  --dr-muted: var(--c-muted, #545a6e);
  --dr-line: var(--c-line, #e0cda8);
  --dr-surface: var(--c-surface, #fbf7f0);
  --dr-bg: var(--c-bg, #f7f0e4);
  --dr-gold: var(--c-accent, #c8a15a);
  --dr-gold-light: var(--c-accent-light, #e2c98f);
  --dr-gold-text: var(--c-accent-text, var(--c-accent-strong, #7e6029));
  --dr-pearl: var(--c-pearl, #f3efe8);
  --dr-error: var(--c-sale, #7b1e2b);
  --dr-radius: 14px;
}
.dr--soft { background-color: color-mix(in srgb, var(--c-soft, #efe3cf) 82%, transparent); }
.dr [hidden] { display: none !important; }
.dr__grid { display: grid; gap: clamp(36px, 5vw, 72px); align-items: start; }
@media (min-width: 990px) { .dr__grid { grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr); } .dr__aside { position: sticky; top: 120px; } }

/* ---------- aside ---------- */
.dr__heading { max-width: 14ch; }
.dr__lede { margin-top: 18px; max-width: 44ch; font-size: 16.5px; }
.dr__steps { display: grid; gap: 14px; margin: 28px 0 0; padding: 0; list-style: none; }
.dr__steps li { display: flex; align-items: center; gap: 14px; font-size: 15px; color: var(--c-text-soft, var(--dr-ink)); }
.dr__num, .dr__legend-num {
  display: inline-grid; place-items: center; flex: none; width: 32px; height: 32px; border-radius: 50%;
  border: 1px solid var(--dr-gold); box-shadow: 0 0 0 3px var(--dr-bg), 0 0 0 4px color-mix(in srgb, var(--dr-gold) 35%, transparent);
  font-family: var(--font-heading); font-size: 12px; letter-spacing: .02em; color: var(--dr-gold-text); background: var(--dr-surface);
}
.dr__builder {
  display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 14px;
  margin-top: 30px; padding: 16px 18px; border-radius: var(--dr-radius);
  background: var(--c-deep, var(--dr-ink)); color: var(--c-deep-text, #fff);
  transition: transform .4s cubic-bezier(.2,.7,.2,1), box-shadow .4s ease;
}
.dr__builder:hover { transform: translateY(-2px); box-shadow: 0 18px 34px -22px color-mix(in srgb, var(--dr-ink) 80%, transparent); }
.dr__builder > .dr-icon:first-child { color: var(--dr-gold-light); }
.dr__builder strong { display: block; font-family: var(--font-heading); font-weight: var(--font-heading-weight, 500); font-size: 14.5px; letter-spacing: .06em; }
.dr__builder span span { display: block; margin-top: 2px; font-size: 13.5px; opacity: .78; }
.dr__builder .dr-icon:last-child { transition: transform .4s cubic-bezier(.2,.7,.2,1); }
.dr__builder:hover .dr-icon:last-child { transform: translateX(4px); }
.dr__channel { display: flex; align-items: center; gap: 10px; margin: 18px 0 0; font-size: 14.5px; color: var(--dr-muted); }
.dr__channel .dr-icon { flex: none; color: #1f7a4d; }
.dr__channel a { color: var(--dr-ink); text-decoration: underline; text-decoration-color: var(--dr-gold); text-underline-offset: 4px; }

/* ---------- card ---------- */
.dr__card {
  position: relative; scroll-margin-top: 120px; padding: clamp(22px, 4vw, 48px); border-radius: 8px; background: var(--dr-surface);
  outline: 3px double color-mix(in srgb, var(--dr-gold) 55%, var(--dr-line)); outline-offset: -12px;
  box-shadow: 0 34px 70px -52px color-mix(in srgb, var(--dr-ink) 70%, transparent);
}
.dr__form { display: block; margin: 0; }
.dr__fields { display: grid; gap: clamp(26px, 3vw, 34px); }
.dr__group { display: grid; gap: 18px; margin: 0; padding: 0; border: 0; min-width: 0; }
.dr__group + .dr__group { padding-top: clamp(26px, 3vw, 34px); border-top: 1px solid var(--dr-line); }
.dr__legend { display: flex; align-items: center; gap: 12px; padding: 0; margin: 0 0 4px; font-family: var(--font-heading); font-weight: var(--font-heading-weight, 500); font-size: calc(17px * var(--heading-scale, 1)); letter-spacing: .06em; color: var(--dr-ink); }
.dr__legend-num { width: 28px; height: 28px; font-size: 11px; }
.dr__field { position: relative; }
.dr .field em { font-style: normal; text-transform: none; letter-spacing: 0; opacity: .9; }
.dr__label { display: block; margin-bottom: 10px; font-size: 12.5px; letter-spacing: .1em; text-transform: uppercase; color: var(--dr-muted); }
.dr__hint { font-size: 13px; letter-spacing: 0; text-transform: none; color: var(--dr-muted); margin: 0; }
.dr textarea { min-height: 132px; resize: vertical; line-height: 1.6; }
.dr .field input[aria-invalid="true"], .dr .field textarea[aria-invalid="true"], .dr__money:has(input[aria-invalid="true"]) { border-color: var(--dr-error); }
.dr__error { display: block; margin: 0; font-size: 13px; letter-spacing: 0; text-transform: none; color: var(--dr-error); }
.dr__error:empty { display: none; }
.dr__counter { justify-self: end; margin-top: -2px; font-size: 12px; letter-spacing: .04em; text-transform: none; color: var(--dr-muted); font-variant-numeric: tabular-nums; }
.dr__counter.is-near { color: var(--dr-gold-text); }
.dr__counter.is-over { color: var(--dr-error); }
.dr__alert { padding: 14px 16px; border-radius: 12px; background: color-mix(in srgb, var(--dr-error) 9%, transparent); color: var(--dr-error); font-size: 14.5px; }

/* ---------- drop zone ---------- */
.dr__drop {
  position: relative; display: grid; justify-items: center; gap: 8px; padding: clamp(26px, 4vw, 38px) 20px; text-align: center; cursor: pointer;
  border: 1.5px dashed color-mix(in srgb, var(--dr-gold) 75%, var(--dr-line)); border-radius: var(--dr-radius);
  background:
    radial-gradient(120% 90% at 50% 0%, color-mix(in srgb, var(--dr-gold-light) 20%, transparent), transparent 70%),
    var(--dr-bg);
  transition: border-color .25s ease, background-color .25s ease, transform .25s ease, box-shadow .25s ease;
}
.dr__drop:hover, .dr__drop:focus-within { border-color: var(--dr-gold); box-shadow: 0 0 0 4px color-mix(in srgb, var(--dr-gold) 16%, transparent); }
.dr__drop.is-over { border-style: solid; border-color: var(--dr-gold); transform: scale(1.01); box-shadow: 0 0 0 6px color-mix(in srgb, var(--dr-gold) 22%, transparent); }
.dr__drop.is-full { opacity: .6; }
.dr__drop-art { display: grid; place-items: center; width: 58px; height: 58px; border-radius: 50%; color: var(--dr-gold-text); background: var(--dr-surface); box-shadow: 0 0 0 1px color-mix(in srgb, var(--dr-gold) 55%, transparent), 0 10px 22px -14px color-mix(in srgb, var(--dr-ink) 60%, transparent); transition: transform .5s cubic-bezier(.3,1.5,.5,1); }
.dr__drop:hover .dr__drop-art, .dr__drop.is-over .dr__drop-art { transform: translateY(-3px) rotate(-4deg); }
.dr__drop-title { font-size: 16px; color: var(--dr-ink); }
.dr__drop-link { color: var(--dr-gold-text); text-decoration: underline; text-decoration-color: var(--dr-gold); text-underline-offset: 4px; }
.dr kbd { display: inline-block; padding: 1px 6px; border: 1px solid var(--dr-line); border-bottom-width: 2px; border-radius: 5px; background: var(--dr-surface); font-family: inherit; font-size: .82em; line-height: 1.5; }
html:not(.js) .dr__js-only { display: none; }
/* Without JavaScript the native picker stays visible so people can see what they chose. */
.dr__file { max-width: 100%; font-size: 14px; color: var(--dr-muted); }
.js .dr__file { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer; font-size: 0; }
.js .dr__drop.is-full .dr__file { pointer-events: none; }

.dr__thumbs { display: grid; grid-template-columns: repeat(auto-fill, minmax(92px, 1fr)); gap: 12px; margin: 0; padding: 0; list-style: none; }
.dr__thumb { position: relative; aspect-ratio: 1; border-radius: 12px; overflow: hidden; background: var(--dr-bg); box-shadow: 0 0 0 1px var(--dr-line); animation: dr-pop .45s cubic-bezier(.3,1.4,.5,1) both; }
.dr__thumb img { width: 100%; height: 100%; object-fit: cover; }
.dr__thumb.is-busy img { filter: saturate(.4) blur(1px); opacity: .7; }
.dr__thumb-size { position: absolute; left: 6px; bottom: 6px; padding: 1px 7px; border-radius: 999px; background: rgba(22, 33, 61, .66); color: #fff; font-size: 10.5px; letter-spacing: .04em; }
.dr__remove {
  position: absolute; top: 6px; right: 6px; display: grid; place-items: center; width: 32px; height: 32px; border-radius: 50%;
  background: rgba(255, 255, 255, .94); color: var(--dr-ink); box-shadow: 0 4px 10px -4px rgba(0, 0, 0, .35); transition: transform .2s ease, background-color .2s ease;
}
.dr__remove::before { content: ""; position: absolute; inset: -6px; }
.dr__remove:hover { transform: scale(1.08); background: #fff; color: var(--dr-error); }
.dr__remove--inline { position: static; flex: none; box-shadow: 0 0 0 1px var(--dr-line); }
.dr__notice { margin: 0; padding: 12px 14px; border-radius: 12px; font-size: 14px; color: var(--dr-ink); background: color-mix(in srgb, var(--dr-gold-light) 26%, transparent); }
@keyframes dr-pop { from { opacity: 0; transform: scale(.7); } to { opacity: 1; transform: none; } }

.dr__design { display: flex; align-items: center; gap: 14px; padding: 12px; border-radius: var(--dr-radius); background: var(--dr-bg); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--dr-gold) 55%, var(--dr-line)); }
.dr__design-img { flex: none; width: 76px; height: 76px; border-radius: 10px; object-fit: cover; background: var(--dr-surface); }
.dr__design-copy { min-width: 0; flex: 1; }
.dr__design-title { margin: 0; font-family: var(--font-heading); font-size: 14.5px; letter-spacing: .05em; color: var(--dr-ink); }
.dr__design-meta { margin: 2px 0 0; font-size: 13.5px; color: var(--dr-muted); }

/* ---------- size chips ---------- */
.dr__sizes { display: flex; flex-wrap: wrap; gap: 10px; }
.dr__chip { position: relative; display: inline-flex; }
.dr__chip input { position: absolute; opacity: 0; inset: 0; margin: 0; cursor: pointer; }
.dr__chip span { display: inline-flex; align-items: center; min-height: 44px; padding: 0 18px; border-radius: 999px; border: 1px solid var(--dr-line); background: var(--dr-surface); font-size: 14px; color: var(--dr-ink); transition: background-color .2s ease, border-color .2s ease, color .2s ease, box-shadow .2s ease; }
.dr__chip:hover span { border-color: var(--dr-gold); }
.dr__chip input:checked + span { background: var(--dr-ink); border-color: var(--dr-ink); color: var(--dr-bg); box-shadow: 0 0 0 3px color-mix(in srgb, var(--dr-gold) 30%, transparent); }
.dr__chip input:focus-visible + span { outline: 2px solid var(--dr-gold-text); outline-offset: 3px; }
.dr__mm { display: none; margin-top: 14px; max-width: 260px; }
.dr__field:has(input[value="custom"]:checked) .dr__mm { display: grid; }

/* ---------- money ---------- */
.dr__money { display: flex; align-items: stretch; min-height: 52px; border: 1px solid var(--dr-line); border-radius: 12px; background: var(--dr-surface); overflow: hidden; transition: border-color .2s ease; }
.dr__money:focus-within { border-color: var(--dr-ink); }
.dr .dr__money input { flex: 1; min-width: 0; min-height: 50px; border: 0; border-radius: 0; background: transparent; font-variant-numeric: tabular-nums; }
.dr .dr__money input:focus { outline: none; }
.dr__money-affix { display: grid; place-items: center; padding: 0 4px 0 16px; font-size: 15px; letter-spacing: 0; text-transform: none; color: var(--dr-gold-text); }
.dr__money-affix:last-child { padding: 0 16px 0 4px; }

/* ---------- honeypot, consent, submit ---------- */
.dr__hp { position: absolute !important; left: -10000px; width: 1px; height: 1px; overflow: hidden; }
.dr__consent { display: flex; align-items: flex-start; gap: 10px; margin: 0; font-size: 13px; line-height: 1.6; color: var(--dr-muted); }
.dr__consent .dr-icon { flex: none; margin-top: 2px; color: var(--dr-gold-text); }
.dr__submit { display: grid; gap: 10px; }
.dr__button { min-height: 56px; }
.dr__button.is-loading { color: transparent; }
.dr__progress { height: 4px; border-radius: 4px; background: var(--dr-line); overflow: hidden; }
.dr__progress span { display: block; height: 100%; width: 100%; background: linear-gradient(90deg, var(--dr-gold-light), var(--dr-gold)); transform-origin: left; transform: scaleX(var(--p, 0)); transition: transform .2s ease; }

/* ---------- success ---------- */
.dr__success { display: grid; justify-items: center; gap: 6px; padding: clamp(10px, 3vw, 30px) 0; text-align: center; outline: none; }
.dr__success-eyebrow { margin: 6px 0 4px; }
.dr__success-title { max-width: 18ch; font-size: calc(clamp(24px, 2.6vw, 34px) * var(--heading-scale, 1)); }
.dr__success-title em { display: block; margin-top: 8px; }
.dr__ref { margin: 14px 0 0; display: inline-flex; align-items: center; gap: 10px; padding: 8px 8px 8px 18px; border-radius: 999px; background: var(--dr-bg); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--dr-gold) 60%, var(--dr-line)); font-size: 12px; letter-spacing: .18em; text-transform: uppercase; color: var(--dr-muted); }
.dr__ref strong { padding: 6px 14px; border-radius: 999px; background: var(--dr-ink); color: var(--dr-bg); font-family: var(--font-heading); font-size: 14px; letter-spacing: .1em; }
.dr__success-text { max-width: 42ch; margin: 14px 0 0; color: var(--c-text-soft, var(--dr-muted)); }
.dr__success-actions { display: grid; justify-items: center; gap: 14px; margin-top: 22px; width: 100%; }
.dr__wa { width: 100%; max-width: 360px; background: #1f7a4d; color: #fff; }
.dr__wa:hover { background: #186640; box-shadow: 0 14px 28px -18px rgba(24, 102, 64, .8); }
.dr__again { margin-top: 4px; }

.dr-art { width: 168px; height: 168px; overflow: visible; }
.dr-art__halo { fill: color-mix(in srgb, var(--dr-gold-light) 22%, transparent); }
.dr-art__wire { fill: none; stroke: var(--dr-gold); stroke-width: 1.4; stroke-dasharray: 1 1; stroke-dashoffset: 0; }
.dr-art__bead, .dr-art__star, .dr-art__spark { transform-box: fill-box; transform-origin: center; }
.dr-art__bow { transform-box: fill-box; transform-origin: 50% 30%; }
.dr-art__star { fill: var(--c-burgundy, var(--dr-gold-text)); }
.dr-art__spark { fill: var(--dr-gold); }
.dr__success:not([hidden]) .dr-art__halo { animation: dr-fade .6s ease both; }
.dr__success:not([hidden]) .dr-art__wire { animation: dr-draw 1s cubic-bezier(.6,.1,.3,1) .1s both; }
.dr__success:not([hidden]) .dr-art__bead { animation: dr-bead .5s cubic-bezier(.3,1.6,.5,1) calc(.45s + var(--i) * 55ms) both; }
.dr__success:not([hidden]) .dr-art__bow { animation: dr-bow .8s cubic-bezier(.3,1.5,.5,1) 1.35s both, dr-sway 6s ease-in-out 2.2s infinite; }
.dr__success:not([hidden]) .dr-art__star { animation: dr-star .7s cubic-bezier(.3,1.6,.5,1) 1.6s both; }
.dr__success:not([hidden]) .dr-art__spark--a { animation: dr-twinkle 2.6s ease-in-out 1.9s infinite both; }
.dr__success:not([hidden]) .dr-art__spark--b { animation: dr-twinkle 2.6s ease-in-out 2.5s infinite both; }
@keyframes dr-fade { from { opacity: 0; } }
@keyframes dr-draw { from { stroke-dashoffset: 1; } }
@keyframes dr-bead { from { opacity: 0; transform: scale(0); } }
@keyframes dr-bow { from { opacity: 0; transform: translateY(-28px) scale(.4) rotate(-14deg); } }
@keyframes dr-sway { 0%, 100% { transform: rotate(-3deg); } 50% { transform: rotate(3deg); } }
@keyframes dr-star { from { opacity: 0; transform: scale(0) rotate(-90deg); } }
@keyframes dr-twinkle { 0%, 100% { opacity: .15; transform: scale(.6); } 50% { opacity: 1; transform: scale(1.1); } }

@media (max-width: 749px) {
  .dr__card { outline-offset: -8px; }
  .dr__sizes { display: grid; grid-template-columns: 1fr 1fr; }
  .dr__chip span { justify-content: center; width: 100%; padding: 0 10px; font-size: 13.5px; }
  .dr__chip { display: flex; }
}

@media (prefers-reduced-motion: reduce) {
  .dr *, .dr *::before, .dr *::after { animation: none !important; transition-duration: .001ms !important; }
}

/* Right under the page title: pull the form up to the title's ornament. */
.section-main-page:has(+ .section-design-request) .page-content { padding-bottom: clamp(8px, 2vw, 24px); }
.section-main-page:has(+ .section-design-request) .page-content__body:empty { display: none; }
@media (hover: none) { .dr__js-only { display: none; } }
