/* ==========================================================================
   Da Vat Hy — "Carnival" theme
   Loaded by includes/store-head.php when Settings → Appearance → Theme preset
   is set to "Da Vat Hy Carnival". Restyles the shared Tailwind markup.
   ========================================================================== */

:root {
  --dv-night:   #1d0b29;   /* header / footer / dark sections */
  --dv-deep:    #120618;
  --dv-plum:    #2a1038;   /* body text, headings on cream */
  --dv-violet:  #3a1650;
  --dv-cream:   #f8f3ea;   /* page background */
  --dv-paper:   #fffaf1;   /* cards */
  --dv-gold:    #e9b95c;
  --dv-gold-lt: #f6d58e;
  --dv-gold-dk: #e2a948;
  --dv-line:    rgba(42, 16, 56, .12);
  --dv-gold-grad: linear-gradient(180deg, #f6d58e, #e2a948);
  --dv-title-grad: linear-gradient(180deg, #f8e3ad, #d99e3e);
  --dv-serif:   'Lora', Georgia, serif;
  --dv-display: 'Playfair Display', Georgia, serif;
  --dv-sans:    'Montserrat', system-ui, sans-serif;
  --dv-script:  'Kaushan Script', cursive;
  --radius: 9999px;
}

/* ── Base ─────────────────────────────────────────────────────────────── */
body.theme-carnival { background: var(--dv-cream) !important; color: var(--dv-plum); font-family: var(--dv-serif); }
.theme-carnival h1, .theme-carnival h2 { font-family: var(--dv-display); font-weight: 900; color: var(--dv-plum); letter-spacing: -.01em; }
.theme-carnival h3, .theme-carnival h4, .theme-carnival h5, .theme-carnival h6 { font-family: var(--dv-sans); font-weight: 700; color: var(--dv-plum); }
.theme-carnival button, .theme-carnival input, .theme-carnival select, .theme-carnival textarea, .theme-carnival label,
.theme-carnival nav, .theme-carnival table, .theme-carnival .text-xs, .theme-carnival .text-sm { font-family: var(--dv-sans); }
.theme-carnival ::selection { background: var(--dv-gold); color: var(--dv-night); }

/* Neutral Tailwind surfaces → warm cream palette */
.theme-carnival .bg-white { background-color: var(--dv-paper) !important; }
.theme-carnival .bg-gray-50, .theme-carnival .bg-slate-50 { background-color: #f3ecdf !important; }
.theme-carnival .bg-gray-100, .theme-carnival .bg-slate-100 { background-color: #efe5d4 !important; }
.theme-carnival .hover\:bg-gray-50:hover, .theme-carnival .hover\:bg-slate-50:hover,
.theme-carnival .hover\:bg-gray-100:hover { background-color: #efe5d4 !important; }
.theme-carnival .bg-gray-900 { background-color: var(--dv-plum) !important; }
.theme-carnival .text-gray-900, .theme-carnival .text-slate-900, .theme-carnival .text-gray-800 { color: var(--dv-plum) !important; }
.theme-carnival .text-gray-700, .theme-carnival .text-gray-600 { color: #4d3a58 !important; }
.theme-carnival .text-gray-500, .theme-carnival .text-gray-400 { color: #7c6a84 !important; }
.theme-carnival .text-blue-600, .theme-carnival .text-blue-700,
.theme-carnival .hover\:text-blue-600:hover, .theme-carnival .hover\:text-blue-700:hover,
.theme-carnival .group:hover .group-hover\:text-blue-600, .theme-carnival .group:hover .group-hover\:text-blue-700 { color: #9a6a12 !important; }
.theme-carnival .hover\:bg-blue-50:hover { background-color: #f6ead0 !important; }
.theme-carnival .border, .theme-carnival .border-b, .theme-carnival .border-t,
.theme-carnival .border-gray-100, .theme-carnival .border-gray-200, .theme-carnival .border-slate-100 { border-color: var(--dv-line) !important; }
.theme-carnival .focus\:border-blue-500:focus, .theme-carnival input:focus, .theme-carnival select:focus, .theme-carnival textarea:focus {
  border-color: var(--dv-gold-dk) !important; box-shadow: 0 0 0 3px rgba(233, 185, 92, .25) !important; outline: none !important;
}
.theme-carnival .focus\:ring-blue-500:focus { --tw-ring-color: rgba(233, 185, 92, .35) !important; }
.theme-carnival input[type=text], .theme-carnival input[type=email], .theme-carnival input[type=tel],
.theme-carnival input[type=password], .theme-carnival input[type=number], .theme-carnival input[type=search],
.theme-carnival select, .theme-carnival textarea { background-color: #fff; }

/* ── Buttons ──────────────────────────────────────────────────────────── */
.theme-carnival .btn-primary, .dv-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: .6rem;
  font-family: var(--dv-sans) !important; font-weight: 700; letter-spacing: .06em; text-transform: uppercase;
  color: var(--dv-plum) !important; background: var(--dv-gold-grad) !important;
  border: 0 !important; border-radius: 9999px !important;
  box-shadow: 0 6px 18px -8px rgba(226, 169, 72, .9);
  transition: transform .15s ease, box-shadow .15s ease, filter .15s ease !important; text-decoration: none;
}
.theme-carnival .btn-primary:hover, .dv-btn:hover { filter: brightness(1.05); transform: translateY(-1px); box-shadow: 0 10px 22px -8px rgba(226, 169, 72, .95); opacity: 1 !important; }
.theme-carnival .btn-primary:disabled { filter: grayscale(.5); opacity: .6 !important; transform: none; }
.theme-carnival .btn-outline {
  font-family: var(--dv-sans) !important; font-weight: 700; letter-spacing: .06em; text-transform: uppercase;
  color: var(--dv-plum) !important; border: 2px solid var(--dv-gold-dk) !important; border-radius: 9999px !important; background: transparent;
}
.theme-carnival .btn-outline:hover { background: rgba(233, 185, 92, .15) !important; }
.theme-carnival .badge-sale { background: #a3247e; color: #fff; border-radius: 9999px; font-family: var(--dv-sans); }
.dv-btn { padding: 1.05rem 2.1rem; font-size: .95rem; }
.dv-btn svg { width: 20px; height: 20px; }

/* ── Header ───────────────────────────────────────────────────────────── */
body.theme-carnival .site-header { background: var(--dv-night) !important; border-bottom: 1px solid rgba(233, 185, 92, .18) !important; box-shadow: 0 6px 24px -12px rgba(0,0,0,.6) !important; }
.theme-carnival .site-header-inner { height: 80px !important; max-width: 1440px !important; padding-left: clamp(16px, 4vw, 56px) !important; padding-right: clamp(16px, 4vw, 56px) !important; }
.theme-carnival .site-nav-link {
  color: #f3ece2 !important; background: transparent !important; font-family: var(--dv-sans); font-weight: 500 !important; font-size: 13.5px;
  border-radius: 0 !important; padding: 8px 2px !important; margin: 0 12px; border-bottom: 2px solid transparent;
}
.theme-carnival .site-nav-link:hover { color: var(--dv-gold-lt) !important; }
.theme-carnival .site-nav-link.is-active { border-bottom-color: var(--dv-gold); }
.theme-carnival .site-nav-link svg { color: var(--dv-gold) !important; }
.theme-carnival .site-icon-btn { color: #f3ece2 !important; }
.theme-carnival .site-icon-btn svg { color: currentColor !important; }
.theme-carnival .site-icon-btn:hover { background: rgba(233, 185, 92, .14) !important; color: var(--dv-gold-lt) !important; }
.theme-carnival .site-cart-count { background: var(--dv-gold) !important; color: var(--dv-night) !important; }
.theme-carnival .site-header-cta { padding: 12px 26px; font-size: 12.5px; margin-left: 10px; }
.theme-carnival .site-dropdown { background: var(--dv-paper) !important; border-color: rgba(233, 185, 92, .3) !important; }
@media (max-width: 1023px) { .theme-carnival .site-header-cta { display: none !important; } }

/* Text logo (used when no logo image has been uploaded) */
.dv-logo { display: flex; align-items: center; gap: 10px; text-decoration: none; }
.dv-logo img { height: 46px; width: auto; filter: drop-shadow(0 2px 6px rgba(0,0,0,.35)); }
.dv-logo span { font-family: var(--dv-display); font-weight: 900; font-size: 23px; line-height: .92; letter-spacing: .02em;
  background: var(--dv-title-grad); -webkit-background-clip: text; background-clip: text; color: transparent; }
.dv-logo--drawer span { font-size: 19px; }
.dv-logo--drawer img { height: 36px; }

/* Mobile drawer */
body.theme-carnival .site-drawer { background: var(--dv-night) !important; }
body.theme-carnival .site-drawer .site-drawer-head { background: var(--dv-night) !important; border-color: rgba(233, 185, 92, .18) !important; }
.theme-carnival .site-drawer a, .theme-carnival .site-drawer button { color: #f3ece2 !important; }
.theme-carnival .site-drawer a:hover, .theme-carnival .site-drawer button:hover { background: rgba(233, 185, 92, .12) !important; color: var(--dv-gold-lt) !important; }
.theme-carnival .site-drawer svg { color: var(--dv-gold) !important; }
.theme-carnival .site-drawer .border-t { border-color: rgba(233, 185, 92, .18) !important; }
.theme-carnival .site-drawer .dv-btn { color: var(--dv-plum) !important; }

/* ── Footer ───────────────────────────────────────────────────────────── */
body.theme-carnival .site-footer { background: var(--dv-night) !important; color: #d9cfe0; border-top: 0 !important; position: relative; overflow: hidden; }
.theme-carnival .site-footer h3 { color: var(--dv-gold) !important; font-family: var(--dv-sans); letter-spacing: .18em; text-transform: uppercase; font-size: 12.5px; }
.theme-carnival .site-footer a, .theme-carnival .site-footer p, .theme-carnival .site-footer li, .theme-carnival .site-footer span { color: #d9cfe0 !important; }
.theme-carnival .site-footer a:hover { color: var(--dv-gold-lt) !important; }
.theme-carnival .site-footer .border-t { border-color: rgba(233, 185, 92, .18) !important; }
.theme-carnival .site-footer .site-footer-bottom, .theme-carnival .site-footer .site-footer-bottom * { color: #9c8aa8 !important; }
.dv-footer-sign { font-family: var(--dv-script); color: var(--dv-gold); line-height: 1.05; transform: rotate(-5deg); transform-origin: left; }
.dv-footer-sign .big { font-size: 40px; display: block; }
.dv-footer-sign .small { font-size: 24px; display: block; margin-top: 4px; }
.dv-footer-note { font-family: var(--dv-sans); font-size: 11.5px; letter-spacing: .08em; color: #9c8aa8; text-transform: uppercase; }

/* ── Cards, cart drawer, modals ───────────────────────────────────────── */
.theme-carnival .rounded-2xl { border-radius: 18px; }
.theme-carnival .group .aspect-square.bg-gray-100 { background: #fff !important; box-shadow: 0 1px 0 var(--dv-line), 0 14px 30px -22px rgba(42,16,56,.6); }
body.theme-carnival .site-cart-panel, body.theme-carnival .site-cart-panel .bg-white { background: var(--dv-cream) !important; }
body.theme-carnival .site-cart-panel .h-16 { background: var(--dv-night) !important; }
.theme-carnival .site-cart-panel .h-16 h2, .theme-carnival .site-cart-panel .h-16 svg, .theme-carnival .site-cart-panel .h-16 span { color: #f3ece2 !important; font-family: var(--dv-sans); }
.theme-carnival .site-cart-panel .h-16 button:hover { background: rgba(233,185,92,.15) !important; }

/* Cookie + quick view */
body.theme-carnival .site-cookie { background: var(--dv-night) !important; border-color: rgba(233,185,92,.3) !important; }
.theme-carnival .site-cookie p, .theme-carnival .site-cookie svg { color: #e9e0ee !important; }
.theme-carnival .site-cookie a { color: var(--dv-gold) !important; }
.theme-carnival .site-cookie button:first-child { color: #e9e0ee !important; border-color: rgba(255,255,255,.2) !important; background: transparent !important; }
.theme-carnival .site-cookie button:last-child { background: var(--dv-gold-grad) !important; color: var(--dv-plum) !important; border-radius: 9999px; }

/* Breadcrumbs, prose */
.theme-carnival .prose h2, .theme-carnival .prose h3 { color: var(--dv-plum); }
.theme-carnival .prose a { color: #9a6a12; }

/* ── Shared section helpers (homepage hero, events page) ──────────────── */
.dv-eyebrow { font-family: var(--dv-sans); font-weight: 600; letter-spacing: .2em; text-transform: uppercase; }
.dv-script { font-family: var(--dv-script); color: var(--dv-gold); line-height: 1; transform: rotate(-4deg); transform-origin: left; display: inline-block; }
.dv-title { font-family: var(--dv-display); font-weight: 900; line-height: 1; letter-spacing: -.01em; }
.dv-title--gold { background: var(--dv-title-grad); -webkit-background-clip: text; background-clip: text; color: transparent !important; }
.dv-rule { width: 72px; height: 3px; background: var(--dv-gold-dk); border-radius: 2px; }
.dv-dark { background: var(--dv-night); color: var(--dv-cream); }
.dv-dark h1, .dv-dark h2, .dv-dark h3 { color: var(--dv-cream); }
.dv-wrap { max-width: 1440px; margin: 0 auto; }
.dv-pad { padding-left: clamp(20px, 6vw, 96px); padding-right: clamp(20px, 6vw, 96px); }

/* Decorative confetti: stars, moons, beads */
.dv-deco { position: absolute; pointer-events: none; z-index: 1; }
.dv-beads { position: absolute; pointer-events: none; z-index: 1; height: 14px; border-radius: 50%;
  background-image: radial-gradient(circle, var(--dv-gold) 3.2px, transparent 3.7px); background-size: 14px 14px; opacity: .9; }

/* Hero (homepage + events) */
.dv-hero { position: relative; min-height: clamp(560px, 80vh, 720px); display: flex; align-items: center; background: var(--dv-deep); overflow: hidden; }
.dv-hero > img.dv-hero-bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.dv-hero::after { content: ""; position: absolute; inset: 0; z-index: 0;
  background: linear-gradient(90deg, rgba(18,6,24,.94) 0%, rgba(18,6,24,.78) 38%, rgba(18,6,24,.15) 72%, rgba(18,6,24,0) 100%); }
.dv-hero-body { position: relative; z-index: 2; color: var(--dv-cream); max-width: 640px; padding-top: 80px; padding-bottom: 80px; }
.dv-hero-body p { font-family: var(--dv-serif); }
.dv-hero-body p.dv-eyebrow { font-family: var(--dv-sans); }
@media (max-width: 767px) {
  .dv-hero::after { background: linear-gradient(180deg, rgba(18,6,24,.55) 0%, rgba(18,6,24,.85) 55%, rgba(18,6,24,.95) 100%); }
}

/* Occasion icons row */
.dv-occasions { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 28px 0; }
.dv-occasion { display: flex; flex-direction: column; align-items: center; gap: 16px; padding: 0 12px; text-align: center; }
.dv-occasion + .dv-occasion { border-left: 1px solid var(--dv-line); }
.dv-occasion-icon { width: 84px; height: 84px; border-radius: 50%; border: 2px solid var(--dv-gold-dk); display: flex; align-items: center; justify-content: center; color: var(--dv-violet); background: var(--dv-paper); box-shadow: 0 10px 24px -16px rgba(42,16,56,.6); }
.dv-occasion-icon svg { width: 38px; height: 38px; }
.dv-occasion-label { font-family: var(--dv-sans); font-weight: 700; font-size: 12.5px; letter-spacing: .08em; line-height: 1.4; text-transform: uppercase; }
@media (max-width: 640px) { .dv-occasion + .dv-occasion { border-left: 0; } }

/* Brush-edged image */
.dv-blob { border-radius: 46% 54% 50% 50% / 52% 46% 54% 48%; overflow: hidden; box-shadow: 0 30px 60px -30px rgba(42,16,56,.6); }
.dv-blob img { width: 100%; height: 100%; object-fit: cover; display: block; }

/* Age gate */
.dv-age { position: fixed; inset: 0; z-index: 300; display: flex; align-items: center; justify-content: center; padding: 20px;
  background: radial-gradient(ellipse at top, rgba(58,22,80,.97), rgba(18,6,24,.98)); }
.dv-age-card { width: 100%; max-width: 460px; text-align: center; color: var(--dv-cream); }
.dv-age-card img { height: 92px; margin: 0 auto 10px; }
.dv-age-card .dv-title { font-size: 44px; }
.dv-age-card p { font-family: var(--dv-serif); color: #d9cfe0; }
.dv-age-no { font-family: var(--dv-sans); font-weight: 600; letter-spacing: .06em; text-transform: uppercase; font-size: .85rem;
  color: #e9e0ee; border: 2px solid rgba(255,255,255,.25); border-radius: 9999px; padding: 1rem 2rem; background: transparent; cursor: pointer; }
.dv-age-no:hover { border-color: var(--dv-gold); color: var(--dv-gold-lt); }

@media (prefers-reduced-motion: reduce) {
  .theme-carnival .btn-primary, .dv-btn { transition: none !important; }
  .theme-carnival .btn-primary:hover, .dv-btn:hover { transform: none; }
}

/* Hero photo anchored right on wide screens (keeps portrait/landscape shots sharp & clear of the headline) */
@media (min-width: 768px) {
  .dv-hero > img.dv-hero-bg--right { left: auto; right: 0; width: var(--dv-hero-w, 62%); }
  .dv-hero:has(.dv-hero-bg--right)::after {
    background: linear-gradient(90deg, var(--dv-deep) 0%, var(--dv-deep) calc(100% - var(--dv-hero-w, 62%)), rgba(18,6,24,.55) calc(100% - var(--dv-hero-w, 62%) + 12%), rgba(18,6,24,0) 85%);
  }
}

/* Utilities missing from the prebuilt tailwind.min.css */
.mt-7 { margin-top: 1.75rem; } .mt-8 { margin-top: 2rem; } .mt-9 { margin-top: 2.25rem; } .mb-9 { margin-bottom: 2.25rem; }
.my-7 { margin-top: 1.75rem; margin-bottom: 1.75rem; } .my-8 { margin-top: 2rem; margin-bottom: 2rem; }
.gap-14 { gap: 3.5rem; } .py-7 { padding-top: 1.75rem; padding-bottom: 1.75rem; }
.z-\[70\] { z-index: 70; } .top-5 { top: 1.25rem; } .right-5 { right: 1.25rem; }

/* Footer brand pieces keep their gold */
body.theme-carnival .site-footer .dv-footer-sign span { color: var(--dv-gold) !important; }
body.theme-carnival .site-footer .dv-logo span { color: transparent !important; }
body.theme-carnival .site-footer > div { max-width: 1440px; padding-left: clamp(20px, 4vw, 56px); padding-right: clamp(20px, 4vw, 56px); }
.theme-carnival .border-blue-500, .theme-carnival .border-blue-600 { border-color: var(--dv-gold-dk) !important; }
.theme-carnival .bg-blue-600, .theme-carnival .bg-blue-500 { background-color: var(--dv-plum) !important; }
.theme-carnival .bg-blue-50 { background-color: #f6ead0 !important; }
.theme-carnival .border-blue-200 { border-color: rgba(226,169,72,.45) !important; }
.theme-carnival .login-notice, .theme-carnival .login-notice * { color: var(--dv-plum) !important; }
.theme-carnival .login-notice svg { color: var(--dv-gold-dk) !important; }

/* ── One-page order form (homepage #order) ─────────────────────────────── */
.dv-order { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 32px; max-width: 1100px; align-items: start; }
.dv-order-product { position: sticky; top: 100px; }
@media (max-width: 900px) { .dv-order { grid-template-columns: 1fr; } .dv-order-product { position: static; } }
.dv-order-card { background: var(--dv-paper); border: 1px solid var(--dv-line); border-radius: 20px; box-shadow: 0 24px 50px -36px rgba(42,16,56,.55); }
.dv-order-form { padding: 28px clamp(20px, 3vw, 36px); }
.dv-order-h { font-family: var(--dv-sans) !important; font-weight: 700; font-size: 13px !important; letter-spacing: .14em; text-transform: uppercase; color: var(--dv-violet) !important; margin: 30px 0 14px; padding-bottom: 10px; border-bottom: 1px solid var(--dv-line); }
.dv-order-h:first-child { margin-top: 0; }
.dv-label { display: block; font-family: var(--dv-sans); font-size: 13px; font-weight: 600; color: #4d3a58; margin-bottom: 6px; }
.dv-input { width: 100%; padding: 11px 14px; border: 1px solid rgba(42,16,56,.18); border-radius: 12px; background: #fff; font-family: var(--dv-sans); font-size: 15px; color: var(--dv-plum); }
textarea.dv-input { resize: vertical; }
.dv-choice { display: flex; align-items: center; gap: 12px; padding: 14px 16px; border: 2px solid rgba(42,16,56,.14); border-radius: 14px; background: #fff; cursor: pointer; font-family: var(--dv-sans); transition: border-color .15s, background .15s; }
.dv-choice small { display: block; font-size: 12px; color: #7c6a84; font-weight: 500; margin-top: 2px; }
.dv-choice strong { font-size: 14px; color: var(--dv-plum); }
.dv-choice input { accent-color: var(--dv-plum); flex-shrink: 0; }
.dv-choice.is-on { border-color: var(--dv-gold-dk); background: #fdf3df; }
.dv-qty { display: inline-flex; align-items: center; border: 1px solid rgba(42,16,56,.18); border-radius: 9999px; background: #fff; overflow: hidden; }
.dv-qty button { width: 42px; height: 42px; font-size: 20px; color: var(--dv-plum); }
.dv-qty button:hover { background: #f6ead0; }
.dv-qty input { width: 46px; text-align: center; border: 0 !important; box-shadow: none !important; font-family: var(--dv-sans); font-weight: 700; font-size: 16px; color: var(--dv-plum); -moz-appearance: textfield; background: transparent !important; }
.dv-qty input::-webkit-outer-spin-button, .dv-qty input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.dv-order-sum { margin-top: 26px; padding: 18px 20px; border-radius: 14px; background: #f3ecdf; font-family: var(--dv-sans); font-size: 15px; }
.dv-order-sum > div { display: flex; justify-content: space-between; padding: 4px 0; color: #4d3a58; }
.dv-order-sum .is-total { margin-top: 6px; padding-top: 10px; border-top: 1px solid var(--dv-line); font-weight: 700; font-size: 20px; color: var(--dv-plum); }
.dv-btn:disabled { opacity: .65; cursor: not-allowed; transform: none; }
