/**
 * The Business Directory v4.2.15 — Modern UI
 * Font: Outfit (geometric sans)
 * 4.2.15: Hardened PayPal verification, blocked coupons on recurring, is_recurring admin UI.
 * 4.2.14: Recurring Stripe subscriptions, PayPal, webhooks, cancel UI.
 * 4.2.13: Full Stripe Elements integration, coupon schema fix.
 * 4.2.12: Stronger contrast on quick category tiles, kill theme underlines.
 * 4.2.11: Hero headline + subtitle + frosted-glass quick category tiles.
 * 4.2.10: Dark blue hero with glowing accent blobs.
 * 4.2.9:  Map cluster tuning, /category/{slug}/ pretty URLs.
 * 4.2.8:  Self-healing directory page, clean-URL form submit.
 * 4.2.7:  Slug-based URLs, dynamic form action.
 * 4.2.6:  Amenities meta migration.
 * 4.2.5:  Robust amenity name resolution + one-time repair of corrupt option.
 * 4.2.4:  Color hero, color-coded category pills, brighter accents.
 * 4.2.3:  GPS pin map markers, plugin rename, page-title migration.
 * 4.2.2:  WCAG AA contrast fixes, visible focus rings, reduced-motion support.
 */

@import url('https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700;800&display=swap');

/* ===== VARIABLES ===== */
:root {
    --ddp-primary: #4f46e5;
    --ddp-primary-dark: #4338ca;
    --ddp-primary-light: #eef2ff;
    --ddp-primary-glow: rgba(79, 70, 229, 0.12);
    --ddp-secondary: #64748b;
    --ddp-accent: #06b6d4;
    --ddp-success: #047857; /* emerald-700: 5.48:1 white-on / on-white, WCAG AA */
    --ddp-success-light: #d1fae5;
    --ddp-warning: #f59e0b;
    --ddp-warning-light: #fef3c7;
    --ddp-danger: #dc2626; /* red-600: 4.83:1 white-on / on-white, WCAG AA */
    --ddp-danger-light: #fee2e2;
    --ddp-gray-50: #f8fafc;
    --ddp-gray-100: #f1f5f9;
    --ddp-gray-200: #e2e8f0;
    --ddp-gray-300: #cbd5e1;
    --ddp-gray-400: #94a3b8;
    --ddp-gray-500: #64748b;
    --ddp-gray-600: #475569;
    --ddp-gray-700: #334155;
    --ddp-gray-800: #1e293b;
    --ddp-gray-900: #0f172a;
    --ddp-radius: 10px;
    --ddp-radius-lg: 16px;
    --ddp-radius-xl: 20px;
    --ddp-shadow-xs: 0 1px 2px rgba(0,0,0,0.04);
    --ddp-shadow: 0 1px 3px rgba(0,0,0,0.06), 0 1px 2px rgba(0,0,0,0.04);
    --ddp-shadow-md: 0 4px 6px -1px rgba(0,0,0,0.07), 0 2px 4px -2px rgba(0,0,0,0.05);
    --ddp-shadow-lg: 0 10px 25px -5px rgba(0,0,0,0.08), 0 8px 10px -6px rgba(0,0,0,0.04);
    --ddp-shadow-xl: 0 20px 40px -8px rgba(0,0,0,0.1);
    --ddp-font: 'Outfit', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
    --ddp-transition: 0.2s cubic-bezier(0.4, 0, 0.2, 1);
}

/* ===== BASE ===== */
.ddp-directory, .ddp-dashboard, .ddp-form-page, .ddp-single-listing,
.ddp-manage-page, .ddp-auth-page, .ddp-pricing-page, .ddp-analytics, .ddp-account-page {
    font-family: var(--ddp-font);
    color: var(--ddp-gray-800);
    line-height: 1.6;
    max-width: 1200px;
    margin: 0 auto;
    padding: 24px;
    -webkit-font-smoothing: antialiased;
}

/* ===== BUTTONS ===== */
.ddp-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 10px 22px;
    border-radius: var(--ddp-radius);
    font-family: var(--ddp-font);
    font-weight: 600;
    font-size: 14px;
    cursor: pointer;
    border: none;
    text-decoration: none;
    transition: all var(--ddp-transition);
    letter-spacing: -0.01em;
    white-space: nowrap;
}
.ddp-btn-primary {
    background: var(--ddp-primary);
    color: #fff;
    box-shadow: 0 1px 2px rgba(79,70,229,0.3), inset 0 1px 0 rgba(255,255,255,0.1);
}
.ddp-btn-primary:hover {
    background: var(--ddp-primary-dark);
    color: #fff;
    box-shadow: 0 4px 12px rgba(79,70,229,0.35);
    transform: translateY(-1px);
}
.ddp-btn-secondary { background: var(--ddp-gray-600); color: #fff; }
.ddp-btn-secondary:hover { background: var(--ddp-gray-700); color: #fff; }
.ddp-btn-outline {
    background: #fff;
    border: 1.5px solid var(--ddp-gray-200);
    color: var(--ddp-gray-700);
}
.ddp-btn-outline:hover {
    border-color: var(--ddp-primary);
    color: var(--ddp-primary);
    background: var(--ddp-primary-light);
}
.ddp-btn-danger { background: var(--ddp-danger); color: #fff; }
.ddp-btn-lg { padding: 14px 30px; font-size: 16px; border-radius: 12px; }
.ddp-btn-sm { padding: 6px 14px; font-size: 13px; }
.ddp-btn-block { width: 100%; }
.ddp-btn:disabled { opacity: 0.5; cursor: not-allowed; transform: none !important; }
.ddp-btn-success { background: var(--ddp-success); color: #fff; }

/* ===== FORMS ===== */
.ddp-form { max-width: 800px; }
.ddp-field { margin-bottom: 20px; }
.ddp-field label {
    display: block;
    font-weight: 600;
    margin-bottom: 6px;
    color: var(--ddp-gray-700);
    font-size: 14px;
}
.ddp-input, .ddp-select, .ddp-textarea {
    width: 100%;
    padding: 11px 14px;
    border: 1.5px solid var(--ddp-gray-200);
    border-radius: var(--ddp-radius);
    font-family: var(--ddp-font);
    font-size: 15px;
    color: var(--ddp-gray-800);
    background: #fff;
    transition: all var(--ddp-transition);
    box-sizing: border-box;
}
.ddp-input:focus, .ddp-select:focus, .ddp-textarea:focus {
    outline: none;
    border-color: var(--ddp-primary);
    /* Solid 3px ring at ~50% alpha — meets 3:1 contrast against white. */
    box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.45);
}
.ddp-input::placeholder, .ddp-select::placeholder, .ddp-textarea::placeholder {
    color: var(--ddp-gray-500); /* 4.78:1 on white, meets WCAG AA */
    opacity: 1; /* Firefox lowers placeholder opacity by default */
}
.ddp-field-row { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.ddp-field-row-3 { grid-template-columns: repeat(3, 1fr); }
.ddp-checkbox-label { display: flex; align-items: center; gap: 8px; cursor: pointer; font-size: 14px; }
.required { color: var(--ddp-danger); }

/* ===== MESSAGES ===== */
.ddp-message { padding: 14px 18px; border-radius: var(--ddp-radius); margin-top: 16px; font-size: 14px; font-weight: 500; }
.ddp-success { background: var(--ddp-success-light); color: #065f46; border: 1px solid #a7f3d0; }
.ddp-error { background: var(--ddp-danger-light); color: #991b1b; border: 1px solid #fecaca; }
.ddp-notice { padding: 40px; text-align: center; background: var(--ddp-gray-50); border-radius: var(--ddp-radius-lg); }

/* =============================================
   HERO — dark blue gradient frame around the search header
   ============================================= */
.ddp-hero {
    position: relative;
    margin: -8px -8px 32px;
    padding: 36px 20px 28px;
    border-radius: calc(var(--ddp-radius-xl) + 8px);
    /* Deep navy → indigo with cyan/azure highlights at the edges */
    background:
        radial-gradient(ellipse 80% 50% at 20% 0%, rgba(56, 189, 248, 0.35), transparent 70%),
        radial-gradient(ellipse 70% 50% at 85% 10%, rgba(99, 102, 241, 0.45), transparent 65%),
        radial-gradient(ellipse 90% 60% at 50% 110%, rgba(14, 165, 233, 0.25), transparent 60%),
        linear-gradient(135deg, #0b1d3a 0%, #102a52 35%, #1e3a8a 70%, #0c4a6e 100%);
    overflow: hidden;
    isolation: isolate;
}
/* Subtle starfield/grain texture for depth */
.ddp-hero::after {
    content: '';
    position: absolute;
    inset: 0;
    z-index: 1;
    pointer-events: none;
    opacity: 0.4;
    background-image:
        radial-gradient(rgba(255,255,255,0.08) 1px, transparent 1px),
        radial-gradient(rgba(56,189,248,0.06) 1px, transparent 1px);
    background-size: 32px 32px, 24px 24px;
    background-position: 0 0, 16px 16px;
    mix-blend-mode: screen;
}
/* Top highlight line — gives it the polished glass-card feel */
.ddp-hero::before {
    content: '';
    position: absolute;
    top: 0;
    left: 5%;
    right: 5%;
    height: 1px;
    z-index: 2;
    background: linear-gradient(90deg,
        transparent 0%,
        rgba(255,255,255,0.4) 50%,
        transparent 100%);
}
.ddp-hero .ddp-search-header {
    position: relative;
    z-index: 3;
    background: #fff;
    /* Strong shadow + tinted ring to lift the card off the dark hero */
    box-shadow:
        0 24px 50px -12px rgba(0, 0, 0, 0.5),
        0 10px 20px -8px rgba(0, 0, 0, 0.3),
        0 0 0 1px rgba(255, 255, 255, 0.06);
    border: 1px solid rgba(255, 255, 255, 0.95);
    margin-bottom: 0;
}
.ddp-hero-decor {
    position: absolute;
    inset: 0;
    z-index: 0;
    pointer-events: none;
}
.ddp-hero-blob {
    position: absolute;
    border-radius: 50%;
    filter: blur(50px);
    opacity: 0.65;
    animation: ddp-blob-drift 20s ease-in-out infinite;
    mix-blend-mode: screen;
}
.ddp-hero-blob-1 {
    width: 280px;
    height: 280px;
    top: -100px;
    left: -60px;
    background: radial-gradient(circle, #38bdf8 0%, #0ea5e9 60%, transparent 100%);
}
.ddp-hero-blob-2 {
    width: 320px;
    height: 320px;
    top: -120px;
    right: -80px;
    background: radial-gradient(circle, #818cf8 0%, #6366f1 55%, transparent 100%);
    animation-delay: -7s;
}
.ddp-hero-blob-3 {
    width: 240px;
    height: 240px;
    bottom: -90px;
    left: 35%;
    background: radial-gradient(circle, #22d3ee 0%, #06b6d4 55%, transparent 100%);
    animation-delay: -14s;
}
@keyframes ddp-blob-drift {
    0%, 100% { transform: translate(0, 0) scale(1); }
    33%      { transform: translate(25px, 15px) scale(1.08); }
    66%      { transform: translate(-20px, 10px) scale(0.94); }
}
@media (prefers-reduced-motion: reduce) {
    .ddp-hero-blob { animation: none; }
    .ddp-hero::after { animation: none; }
}
@media (max-width: 600px) {
    .ddp-hero { padding: 24px 12px 20px; }
    .ddp-hero-blob { filter: blur(40px); }
}

/* Hero text + quick-category tiles */
.ddp-hero-content {
    position: relative;
    z-index: 3;
    max-width: 900px;
    margin: 0 auto;
    text-align: center;
}
.ddp-hero-title {
    margin: 0 0 10px;
    padding: 0 12px;
    color: #fff;
    font-size: clamp(26px, 4vw, 38px);
    font-weight: 800;
    line-height: 1.15;
    letter-spacing: -0.02em;
    text-shadow: 0 2px 12px rgba(0, 0, 0, 0.3);
}
.ddp-hero-subtitle {
    margin: 0 0 24px;
    padding: 0 12px;
    color: rgba(255, 255, 255, 0.85);
    font-size: clamp(14px, 1.6vw, 16px);
    font-weight: 400;
    line-height: 1.5;
    text-shadow: 0 1px 8px rgba(0, 0, 0, 0.25);
}
.ddp-hero-quick-cats {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    justify-content: center;
    margin-top: 20px;
    padding: 0 4px;
}
.ddp-quick-cat {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 10px 16px;
    border-radius: 999px;
    /* Frosted-glass look: tinted white over the dark hero. Bumped opacity
       so tiles read clearly even before hover. */
    background: rgba(255, 255, 255, 0.18);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    border: 1px solid rgba(255, 255, 255, 0.35);
    color: #fff !important;
    text-decoration: none !important;
    /* Boost edge against busy backgrounds without making the text fuzzy */
    text-shadow: 0 1px 2px rgba(0, 0, 0, 0.4);
    font-weight: 600;
    font-size: 14px;
    transition: all var(--ddp-transition);
    white-space: nowrap;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}
.ddp-quick-cat:hover,
.ddp-quick-cat:focus {
    background: #fff;
    color: #0b1d3a !important;
    border-color: #fff;
    text-shadow: none;
    transform: translateY(-2px);
    box-shadow: 0 12px 24px rgba(0, 0, 0, 0.3);
}
.ddp-quick-cat:hover .ddp-quick-cat-label,
.ddp-quick-cat:focus .ddp-quick-cat-label {
    text-decoration: none !important;
}
.ddp-quick-cat-icon {
    font-size: 18px;
    line-height: 1;
    filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.3));
    transition: filter var(--ddp-transition);
}
.ddp-quick-cat:hover .ddp-quick-cat-icon {
    filter: none;
}
.ddp-quick-cat-label {
    line-height: 1.2;
    text-decoration: none !important;
    border-bottom: 0 !important;
}
.ddp-quick-cat,
.ddp-quick-cat * {
    text-decoration: none !important;
}
.ddp-quick-cat:focus-visible {
    outline: 2px solid #fff;
    outline-offset: 3px;
    background: rgba(255, 255, 255, 0.2);
}
@media (max-width: 600px) {
    .ddp-hero-quick-cats { gap: 8px; }
    .ddp-quick-cat { padding: 8px 12px; font-size: 13px; }
    .ddp-quick-cat-icon { font-size: 16px; }
}

/* =============================================
   SEARCH HEADER
   ============================================= */
.ddp-search-header {
    background: #fff;
    padding: 28px;
    border-radius: var(--ddp-radius-xl);
    box-shadow: var(--ddp-shadow-md);
    margin-bottom: 24px;
    border: 1px solid var(--ddp-gray-100);
}
.ddp-search-main {
    display: flex;
    gap: 10px;
    margin-bottom: 16px;
    align-items: stretch;
}
.ddp-search-input-wrap {
    flex: 1;
    position: relative;
}
.ddp-search-icon {
    position: absolute;
    left: 16px;
    top: 50%;
    transform: translateY(-50%);
    color: var(--ddp-gray-500); /* 4.6:1 on gray-50, meets 3:1 for UI */
    pointer-events: none;
    z-index: 2;
}
.ddp-search-input {
    width: 100%;
    padding: 14px 16px 14px 48px !important;
    border: 1.5px solid var(--ddp-gray-200);
    border-radius: 12px;
    font-family: var(--ddp-font);
    font-size: 16px;
    color: var(--ddp-gray-800);
    background: var(--ddp-gray-50);
    transition: all var(--ddp-transition);
    box-sizing: border-box;
    height: 100%;
}
.ddp-search-input:focus {
    outline: none;
    border-color: var(--ddp-primary);
    box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.45);
    background: #fff;
}
.ddp-search-input::placeholder { color: var(--ddp-gray-500); opacity: 1; }

/* Near Me + Search buttons match search bar height */
.ddp-search-main .ddp-btn {
    padding: 14px 22px;
    border-radius: 12px;
    font-size: 15px;
    align-self: stretch;
}
.ddp-search-main .ddp-btn-primary { min-width: 100px; }

/* Autocomplete */
.ddp-autocomplete {
    position: absolute;
    top: calc(100% + 4px);
    left: 0; right: 0;
    background: #fff;
    border: 1px solid var(--ddp-gray-200);
    border-radius: 12px;
    box-shadow: var(--ddp-shadow-lg);
    z-index: 100;
    display: none;
    overflow: hidden;
}
.ddp-autocomplete-item {
    display: block;
    padding: 12px 16px;
    text-decoration: none;
    color: var(--ddp-gray-800);
    border-bottom: 1px solid var(--ddp-gray-100);
    transition: background var(--ddp-transition);
}
.ddp-autocomplete-item:last-child { border-bottom: none; }
.ddp-autocomplete-item:hover { background: var(--ddp-primary-light); }
.ddp-autocomplete-item span { display: block; font-size: 12px; color: var(--ddp-gray-500); }

/* ===== FILTER ROW ===== */
.ddp-filters-row {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    align-items: center;
}
.ddp-filters-row .ddp-select {
    width: auto;
    min-width: 160px;
    padding: 10px 36px 10px 14px;
    border: 1.5px solid var(--ddp-gray-200);
    border-radius: 10px;
    font-family: var(--ddp-font);
    font-size: 14px;
    color: var(--ddp-gray-700);
    background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2.5'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") right 12px center no-repeat;
    -webkit-appearance: none;
    appearance: none;
    cursor: pointer;
    transition: all var(--ddp-transition);
}
.ddp-filters-row .ddp-select:hover { border-color: var(--ddp-gray-300); }
.ddp-filters-row .ddp-select:focus {
    border-color: var(--ddp-primary);
    box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.45);
    outline: none;
}

/* ===== MORE FILTERS ===== */
.ddp-more-filters { padding-top: 18px; border-top: 1px solid var(--ddp-gray-200); margin-top: 18px; }
.ddp-amenities-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: 10px; }

/* ===== CARDS ===== */
.ddp-card {
    background: #fff;
    border-radius: var(--ddp-radius-lg);
    box-shadow: var(--ddp-shadow);
    overflow: hidden;
    transition: all 0.3s cubic-bezier(0.4,0,0.2,1);
    border: 1px solid var(--ddp-gray-100);
}
.ddp-card:hover {
    transform: translateY(-4px);
    box-shadow: var(--ddp-shadow-xl);
    border-color: var(--ddp-gray-200);
}
.ddp-card-featured {
    border: 2px solid #f59e0b;
    box-shadow:
        0 10px 25px -8px rgba(245, 158, 11, 0.35),
        0 0 0 4px rgba(245, 158, 11, 0.08);
    background: linear-gradient(180deg, #fffbeb 0%, #ffffff 18%);
}
.ddp-card-image {
    display: block;
    aspect-ratio: 16/10;
    overflow: hidden;
    position: relative;
    background: linear-gradient(135deg, var(--ddp-gray-100), var(--ddp-gray-50));
}
.ddp-card-image img {
    width: 100%; height: 100%; object-fit: cover;
    transition: transform 0.4s cubic-bezier(0.4,0,0.2,1);
}
.ddp-card:hover .ddp-card-image img { transform: scale(1.05); }
.ddp-card-placeholder { display: flex; align-items: center; justify-content: center; height: 100%; color: var(--ddp-gray-400); }
.ddp-card-body { padding: 18px; }
.ddp-card-category {
    display: inline-block;
    font-size: 11px; color: var(--ddp-primary);
    text-transform: uppercase; font-weight: 700;
    text-decoration: none; letter-spacing: 0.05em;
    background: var(--ddp-primary-light);
    padding: 3px 10px; border-radius: 6px;
}
.ddp-card-category:hover { background: var(--ddp-primary); color: #fff; }

/* Color-coded category pills (cards + single-listing badge). Each
   category gets a consistent color based on term_id % 8. Light bg +
   dark text combinations all meet WCAG AA 4.5:1.
   Palette: indigo, pink, teal, amber, emerald, sky, violet, rose. */
.ddp-card-category[data-cat-color="0"], .ddp-badge-category[data-cat-color="0"] { background: #eef2ff; color: #3730a3; }
.ddp-card-category[data-cat-color="1"], .ddp-badge-category[data-cat-color="1"] { background: #fce7f3; color: #9d174d; }
.ddp-card-category[data-cat-color="2"], .ddp-badge-category[data-cat-color="2"] { background: #ccfbf1; color: #115e59; }
.ddp-card-category[data-cat-color="3"], .ddp-badge-category[data-cat-color="3"] { background: #fef3c7; color: #92400e; }
.ddp-card-category[data-cat-color="4"], .ddp-badge-category[data-cat-color="4"] { background: #d1fae5; color: #065f46; }
.ddp-card-category[data-cat-color="5"], .ddp-badge-category[data-cat-color="5"] { background: #e0f2fe; color: #075985; }
.ddp-card-category[data-cat-color="6"], .ddp-badge-category[data-cat-color="6"] { background: #ede9fe; color: #5b21b6; }
.ddp-card-category[data-cat-color="7"], .ddp-badge-category[data-cat-color="7"] { background: #ffe4e6; color: #9f1239; }
.ddp-card-category[data-cat-color]:hover { filter: brightness(0.95); }
.ddp-card-title { margin: 10px 0 6px; font-size: 17px; font-weight: 700; letter-spacing: -0.02em; }
.ddp-card-title a { color: inherit; text-decoration: none; }
.ddp-card-title a:hover { color: var(--ddp-primary); }
.ddp-card-rating { display: flex; align-items: center; gap: 6px; margin-bottom: 8px; }
.ddp-stars { color: #f59e0b; letter-spacing: 0; font-size: 14px; text-shadow: 0 1px 0 rgba(245, 158, 11, 0.15); }
.ddp-rating-text { font-size: 13px; color: var(--ddp-gray-500); font-weight: 500; }
.ddp-card-meta { display: flex; flex-wrap: wrap; gap: 12px; font-size: 13px; color: var(--ddp-gray-500); }
.ddp-card-meta svg { vertical-align: -2px; }
.ddp-card-footer {
    padding: 14px 18px; border-top: 1px solid var(--ddp-gray-100);
    display: flex; justify-content: space-between; align-items: center; font-size: 14px;
}
.ddp-card-phone { color: var(--ddp-gray-600); text-decoration: none; display: flex; align-items: center; gap: 6px; font-weight: 500; font-size: 13px; transition: color var(--ddp-transition); }
.ddp-card-phone:hover { color: var(--ddp-primary); }
.ddp-card-link { color: var(--ddp-primary); text-decoration: none; font-weight: 600; font-size: 13px; display: inline-flex; align-items: center; gap: 4px; transition: gap var(--ddp-transition); }
.ddp-card-link:hover { gap: 8px; }

/* ===== BADGES ===== */
.ddp-badge { display: inline-flex; align-items: center; gap: 4px; padding: 5px 12px; font-size: 11px; font-weight: 700; text-transform: uppercase; border-radius: 8px; letter-spacing: 0.04em; }
.ddp-badge-featured { background: linear-gradient(135deg,#f59e0b,#d97706); color: #1e293b; position: absolute; top: 12px; left: 12px; box-shadow: 0 2px 8px rgba(245,158,11,0.4); }
.ddp-badge-verified { background: var(--ddp-primary); color: #fff; }
.ddp-badge-category { background: var(--ddp-gray-100); color: var(--ddp-gray-700); text-decoration: none; }
.ddp-verified-icon { color: var(--ddp-primary); vertical-align: middle; }

/* ===== GRID ===== */
.ddp-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 24px; }
.ddp-view-list .ddp-card { display: grid; grid-template-columns: 220px 1fr auto; }
.ddp-view-list .ddp-card-image { aspect-ratio: 1; }

/* ===== MAP ===== */
.ddp-map { height: 420px; border-radius: var(--ddp-radius-xl); z-index: 1; border: 1px solid var(--ddp-gray-200); }
#ddp-single-map { height: 300px; margin-bottom: 16px; border-radius: var(--ddp-radius-lg); }
.ddp-map-section { margin-bottom: 24px; position: relative; }
.ddp-map-info { padding: 12px 18px; background: #fff; border-radius: 0 0 var(--ddp-radius-xl) var(--ddp-radius-xl); font-size: 14px; color: var(--ddp-gray-600); border: 1px solid var(--ddp-gray-200); border-top: none; font-weight: 500; }
.ddp-clear-filters {
    margin-left: 16px;
    color: #86198f; /* 7.08:1 on #fae8ff, WCAG AAA */
    font-weight: 700;
    text-decoration: none;
    background: #fae8ff;
    padding: 4px 12px;
    border-radius: 999px;
    font-size: 12px;
    transition: all var(--ddp-transition);
}
.ddp-clear-filters:hover { background: #c026d3; color: #fff; }
.ddp-map-overlay-controls { display: flex; gap: 0; margin-top: -1px; }
.ddp-map-type-btn { padding: 8px 18px; background: #fff; border: 1px solid var(--ddp-gray-200); cursor: pointer; font-family: var(--ddp-font); font-size: 13px; font-weight: 600; color: var(--ddp-gray-600); transition: all var(--ddp-transition); }
.ddp-map-type-btn:first-child { border-radius: 0 0 0 12px; }
.ddp-map-type-btn:last-child { border-radius: 0 0 12px 0; border-left: none; }
.ddp-map-type-btn.active { background: var(--ddp-primary); color: #fff; border-color: var(--ddp-primary); }

/* ===== RESULTS BAR ===== */
.ddp-results-bar { display: flex; justify-content: space-between; align-items: center; margin-bottom: 24px; flex-wrap: wrap; gap: 12px; }
.ddp-results-count { font-size: 15px; font-weight: 600; color: var(--ddp-gray-700); }
.ddp-results-controls { display: flex; align-items: center; gap: 10px; }
.ddp-sort-select {
    padding: 9px 36px 9px 14px; border: 1.5px solid var(--ddp-gray-200); border-radius: 10px;
    font-family: var(--ddp-font); font-size: 14px; font-weight: 500;
    background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2.5'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") right 12px center no-repeat;
    -webkit-appearance: none; appearance: none; cursor: pointer;
}
.ddp-view-toggle { display: flex; border: 1.5px solid var(--ddp-gray-200); border-radius: 10px; overflow: hidden; }
.ddp-view-btn { padding: 9px 14px; background: #fff; border: none; cursor: pointer; color: var(--ddp-gray-600); transition: all var(--ddp-transition); display: flex; align-items: center; }
.ddp-view-btn + .ddp-view-btn { border-left: 1.5px solid var(--ddp-gray-200); }
.ddp-view-btn.active { background: var(--ddp-primary-light); color: var(--ddp-primary); }
.ddp-view-btn:hover { color: var(--ddp-primary); }

/* ===== STATS ===== */
.ddp-stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; margin-bottom: 24px; }
.ddp-stats-4 { grid-template-columns: repeat(4, 1fr); }
.ddp-stat-card { background: #fff; padding: 22px; border-radius: var(--ddp-radius-lg); box-shadow: var(--ddp-shadow); text-align: center; border: 1px solid var(--ddp-gray-100); transition: all var(--ddp-transition); }
.ddp-stat-card:hover { box-shadow: var(--ddp-shadow-md); }
.ddp-stat-number { display: block; font-size: 36px; font-weight: 800; color: var(--ddp-gray-900); letter-spacing: -0.03em; }
.ddp-stat-label { font-size: 13px; color: var(--ddp-gray-500); font-weight: 500; margin-top: 2px; }
.ddp-stat-green { border-left: 4px solid var(--ddp-success); }
.ddp-stat-orange { border-left: 4px solid var(--ddp-warning); }
.ddp-stat-blue { border-left: 4px solid var(--ddp-primary); }

/* ===== DASHBOARD ===== */
.ddp-dashboard-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 28px; flex-wrap: wrap; gap: 16px; }
.ddp-user-info { display: flex; align-items: center; gap: 16px; }
.ddp-user-info img { border-radius: 50%; border: 3px solid var(--ddp-gray-100); }
.ddp-user-info h1 { margin: 0; font-size: 24px; font-weight: 700; letter-spacing: -0.02em; }
.ddp-user-info p { margin: 4px 0 0; color: var(--ddp-gray-500); font-size: 14px; }
.ddp-header-actions { display: flex; gap: 10px; }

/* ===== SECTION ===== */
.ddp-section { background: #fff; padding: 24px; border-radius: var(--ddp-radius-lg); box-shadow: var(--ddp-shadow); margin-bottom: 24px; border: 1px solid var(--ddp-gray-100); }
.ddp-section h2 { margin: 0 0 20px; font-size: 20px; font-weight: 700; letter-spacing: -0.02em; }

/* ===== TABLES ===== */
.ddp-listings-table table, .ddp-table { width: 100%; border-collapse: collapse; }
.ddp-listings-table th, .ddp-listings-table td, .ddp-table th, .ddp-table td { padding: 14px 12px; text-align: left; border-bottom: 1px solid var(--ddp-gray-100); }
.ddp-listings-table th, .ddp-table th { font-weight: 700; color: var(--ddp-gray-500); font-size: 12px; text-transform: uppercase; letter-spacing: 0.05em; }
.ddp-listings-table tr:hover, .ddp-table tr:hover { background: var(--ddp-gray-50); }
.ddp-listing-cell { display: flex; align-items: center; gap: 12px; }
.ddp-listing-thumb { width: 48px; height: 48px; border-radius: 10px; object-fit: cover; }
.ddp-status { padding: 4px 12px; border-radius: 8px; font-size: 12px; font-weight: 600; }
.ddp-status-publish { background: var(--ddp-success-light); color: #065f46; }
.ddp-status-pending { background: var(--ddp-warning-light); color: #92400e; }
.ddp-status-draft { background: var(--ddp-gray-100); color: var(--ddp-gray-600); }
.ddp-actions { display: flex; gap: 6px; }

/* ===== AUTH PAGES ===== */
.ddp-auth-page { display: flex; gap: 40px; justify-content: center; align-items: flex-start; min-height: 60vh; padding-top: 40px; }
.ddp-auth-card { background: #fff; padding: 40px; border-radius: var(--ddp-radius-xl); box-shadow: var(--ddp-shadow-lg); width: 100%; max-width: 420px; border: 1px solid var(--ddp-gray-100); }
.ddp-auth-card h1 { margin: 0 0 8px; font-weight: 700; letter-spacing: -0.02em; }
.ddp-auth-card > p { color: var(--ddp-gray-500); margin-bottom: 24px; }
.ddp-auth-footer { text-align: center; margin-top: 24px; color: var(--ddp-gray-500); font-size: 14px; }
.ddp-auth-footer a { color: var(--ddp-primary); font-weight: 600; text-decoration: none; }
.ddp-auth-benefits { background: var(--ddp-gray-50); padding: 32px; border-radius: var(--ddp-radius-xl); border: 1px solid var(--ddp-gray-100); }
.ddp-auth-benefits h3 { margin: 0 0 16px; font-weight: 700; }
.ddp-auth-benefits ul { list-style: none; padding: 0; margin: 0; }
.ddp-auth-benefits li { padding: 10px 0; font-size: 15px; color: var(--ddp-gray-600); }

/* ===== LOGIN PROMPT ===== */
.ddp-login-prompt { display: flex; justify-content: center; padding: 60px 20px; }
.ddp-login-prompt-card { background: #fff; padding: 48px; border-radius: var(--ddp-radius-xl); box-shadow: var(--ddp-shadow-lg); text-align: center; max-width: 500px; border: 1px solid var(--ddp-gray-100); }
.ddp-login-icon { color: var(--ddp-primary); margin-bottom: 20px; }
.ddp-login-buttons { display: flex; flex-direction: column; gap: 12px; margin: 24px 0; }

/* ===== FORM PAGE ===== */
.ddp-form-page { max-width: 900px; }
.ddp-form-header { margin-bottom: 24px; }
.ddp-form-header h1 { margin: 0 0 8px; font-weight: 700; letter-spacing: -0.02em; }
.ddp-back-link { color: var(--ddp-primary); text-decoration: none; font-weight: 600; font-size: 14px; }
.ddp-form-section { background: #fff; padding: 28px; border-radius: var(--ddp-radius-lg); box-shadow: var(--ddp-shadow); margin-bottom: 20px; border: 1px solid var(--ddp-gray-100); }
.ddp-form-section h2 { margin: 0 0 20px; padding-bottom: 14px; border-bottom: 1px solid var(--ddp-gray-100); font-weight: 700; }
.ddp-form-actions { margin-top: 24px; display: flex; gap: 12px; }

/* ===== STEPS ===== */
.ddp-steps { display: flex; justify-content: center; gap: 0; margin-bottom: 30px; background: #fff; padding: 20px 24px; border-radius: var(--ddp-radius-xl); box-shadow: var(--ddp-shadow); border: 1px solid var(--ddp-gray-100); }
.ddp-step { display: flex; align-items: center; gap: 10px; padding: 10px 28px; color: var(--ddp-gray-600); position: relative; font-weight: 500; font-size: 14px; }
.ddp-step:not(:last-child)::after { content: ''; position: absolute; right: -20px; width: 40px; height: 2px; background: var(--ddp-gray-200); }
.ddp-step.active { color: var(--ddp-primary); }
.ddp-step.completed { color: var(--ddp-success); }
.ddp-step-num { width: 34px; height: 34px; border-radius: 10px; background: var(--ddp-gray-100); display: flex; align-items: center; justify-content: center; font-weight: 700; font-size: 14px; transition: all var(--ddp-transition); }
.ddp-step.active .ddp-step-num { background: var(--ddp-primary); color: #fff; box-shadow: 0 2px 8px rgba(79,70,229,0.3); }
.ddp-step.completed .ddp-step-num { background: var(--ddp-success); color: #fff; }
.ddp-step-actions { display: flex; gap: 12px; justify-content: center; padding-top: 20px; border-top: 1px solid var(--ddp-gray-100); margin-top: 20px; }

/* ===== PACKAGES ===== */
.ddp-package-select { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 16px; margin-bottom: 24px; }
.ddp-package-option { cursor: pointer; }
.ddp-package-option input { display: none; }
.ddp-package-option.ddp-package-owned {
    cursor: not-allowed;
    opacity: 0.65;
}
.ddp-package-option.ddp-package-owned:hover .ddp-package-card {
    border-color: var(--ddp-gray-200);
    box-shadow: none;
    transform: none;
}
.ddp-package-owned-note {
    margin: 12px 0 0;
    padding: 8px 12px;
    background: #ecfdf5;
    border-left: 3px solid #16a34a;
    color: #065f46;
    font-size: 13px;
    border-radius: 4px;
}
.ddp-package-card { background: #fff; border: 2px solid var(--ddp-gray-200); border-radius: var(--ddp-radius-lg); padding: 24px; transition: all 0.25s cubic-bezier(0.4,0,0.2,1); position: relative; height: 100%; }
.ddp-package-option:hover .ddp-package-card { border-color: var(--ddp-primary); box-shadow: var(--ddp-shadow-md); }
.ddp-package-option input:checked + .ddp-package-card { border-color: var(--ddp-primary); background: var(--ddp-primary-light); box-shadow: 0 0 0 4px var(--ddp-primary-glow); }
.ddp-popular-badge { position: absolute; top: -11px; left: 50%; transform: translateX(-50%); background: linear-gradient(135deg,#f59e0b,#d97706); color: #1e293b; padding: 4px 16px; border-radius: 20px; font-size: 11px; font-weight: 700; box-shadow: 0 2px 6px rgba(245,158,11,0.3); }
.ddp-package-card h3 { margin: 0 0 12px; font-weight: 700; }
.ddp-package-price { margin-bottom: 12px; }
.ddp-price-amount { font-size: 32px; font-weight: 800; letter-spacing: -0.03em; }
.ddp-price-period { color: var(--ddp-gray-500); font-size: 14px; }
.ddp-package-features { list-style: none; padding: 0; margin: 16px 0 0; }
.ddp-package-features li { padding: 7px 0; padding-left: 22px; position: relative; font-size: 14px; color: var(--ddp-gray-600); }
.ddp-package-features li::before { content: '✓'; position: absolute; left: 0; color: var(--ddp-success); font-weight: 700; }

/* ===== ORDER SUMMARY ===== */
.ddp-order-summary { background: var(--ddp-gray-50); padding: 20px; border-radius: var(--ddp-radius); margin-bottom: 24px; border: 1px solid var(--ddp-gray-100); }
.ddp-order-line { display: flex; justify-content: space-between; padding: 8px 0; font-size: 15px; }
.ddp-order-total { border-top: 2px solid var(--ddp-gray-200); margin-top: 8px; padding-top: 12px; font-size: 18px; font-weight: 700; }

/* ===== PAYMENT ===== */
.ddp-free-notice { text-align: center; padding: 40px; background: var(--ddp-success-light); border-radius: var(--ddp-radius); color: #065f46; border: 1px solid #a7f3d0; }
.ddp-payment-methods { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-bottom: 20px; }
.ddp-payment-method { cursor: pointer; }
.ddp-payment-method input { display: none; }
.ddp-payment-method-card { border: 2px solid var(--ddp-gray-200); border-radius: var(--ddp-radius); padding: 20px; text-align: center; transition: all var(--ddp-transition); font-weight: 600; }
.ddp-payment-method input:checked + .ddp-payment-method-card { border-color: var(--ddp-primary); background: var(--ddp-primary-light); }
.ddp-card-element {
    padding: 14px 16px;
    border: 1.5px solid var(--ddp-gray-200);
    border-radius: var(--ddp-radius);
    background: #fff;
    transition: border-color var(--ddp-transition), box-shadow var(--ddp-transition);
    min-height: 22px;
}
.ddp-card-element.StripeElement--focus {
    border-color: var(--ddp-primary);
    box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.45);
}
.ddp-card-element.StripeElement--invalid {
    border-color: var(--ddp-danger);
    box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.2);
}
.ddp-card-errors { color: var(--ddp-danger); font-size: 14px; margin-top: 8px; min-height: 18px; }
.ddp-payment-form { margin-top: 8px; }

/* Subscription cards on user dashboard */
.ddp-subscriptions { display: grid; gap: 12px; }
.ddp-sub-card {
    display: flex;
    flex-wrap: wrap;
    gap: 16px;
    justify-content: space-between;
    align-items: center;
    padding: 18px 20px;
    background: #fff;
    border: 1px solid var(--ddp-gray-200);
    border-radius: var(--ddp-radius);
    box-shadow: 0 1px 3px rgba(0,0,0,0.04);
}
.ddp-sub-card.ddp-sub-past-due {
    border-color: #f59e0b;
    background: #fffbeb;
}
.ddp-sub-info h3 {
    margin: 0 0 6px;
    font-size: 17px;
    color: var(--ddp-gray-900);
}
.ddp-sub-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 18px;
    font-size: 14px;
    color: var(--ddp-gray-700);
}
.ddp-sub-meta strong { color: var(--ddp-gray-900); }
.ddp-sub-provider {
    color: var(--ddp-gray-500);
    font-size: 13px;
}
.ddp-sub-actions { flex-shrink: 0; }
.ddp-sub-cancelled-note {
    font-size: 13px;
    color: var(--ddp-gray-500);
    font-style: italic;
}

/* ===== IMAGE UPLOAD ===== */
.ddp-image-row { display: grid; grid-template-columns: 120px 1fr; gap: 20px; margin-bottom: 20px; }
.ddp-image-upload { border: 2px dashed var(--ddp-gray-200); border-radius: var(--ddp-radius); overflow: hidden; position: relative; transition: border-color var(--ddp-transition); }
.ddp-image-upload:hover { border-color: var(--ddp-primary); }
.ddp-upload-area { padding: 40px; text-align: center; cursor: pointer; color: var(--ddp-gray-500); }
.ddp-upload-area input { position: absolute; inset: 0; opacity: 0; cursor: pointer; }
.ddp-upload-small .ddp-upload-area { padding: 20px; }
.ddp-upload-preview { position: relative; }
.ddp-upload-preview img { width: 100%; height: 150px; object-fit: cover; display: block; }
.ddp-remove-img { position: absolute; top: 8px; right: 8px; width: 26px; height: 26px; border-radius: 8px; background: var(--ddp-danger); color: #fff; border: none; cursor: pointer; font-size: 16px; line-height: 1; display: flex; align-items: center; justify-content: center; }
.ddp-gallery-upload { display: flex; flex-wrap: wrap; gap: 12px; }
.ddp-gallery-grid { display: contents; }
.ddp-gallery-item { width: 100px; height: 100px; position: relative; border-radius: 10px; overflow: hidden; }
.ddp-gallery-item img { width: 100%; height: 100%; object-fit: cover; }
.ddp-gallery-remove { position: absolute; top: 4px; right: 4px; width: 22px; height: 22px; border-radius: 6px; background: var(--ddp-danger); color: #fff; border: none; cursor: pointer; font-size: 12px; }
.ddp-gallery-add { width: 100px; height: 100px; border: 2px dashed var(--ddp-gray-300); border-radius: 10px; display: flex; flex-direction: column; align-items: center; justify-content: center; cursor: pointer; position: relative; color: var(--ddp-gray-600); font-size: 13px; transition: border-color var(--ddp-transition); }
.ddp-gallery-add:hover { border-color: var(--ddp-primary); color: var(--ddp-primary); }
.ddp-gallery-add input { position: absolute; inset: 0; opacity: 0; cursor: pointer; }

/* ===== COLLAPSIBLE ===== */
.ddp-collapsible-header { cursor: pointer; display: flex; justify-content: space-between; align-items: center; }
.ddp-collapse-icon { font-size: 20px; color: var(--ddp-gray-600); }

/* ===== SINGLE LISTING ===== */
/* Breadcrumb: separators use gray-500 (4.78:1 on white, meets AA),
   links use gray-700 (10:1, AAA), current page uses gray-600 (7.27:1, AAA). */
.ddp-breadcrumb { margin-bottom: 20px; font-size: 14px; color: var(--ddp-gray-500); }
.ddp-breadcrumb a { color: var(--ddp-gray-700); text-decoration: none; font-weight: 500; }
.ddp-breadcrumb a:hover { color: var(--ddp-primary); text-decoration: underline; }
.ddp-breadcrumb a:focus-visible { outline: 2px solid var(--ddp-primary); outline-offset: 2px; border-radius: 2px; }
.ddp-breadcrumb-current { color: var(--ddp-gray-600); font-weight: 500; }
.ddp-listing-header { background: #fff; padding: 28px; border-radius: var(--ddp-radius-xl); box-shadow: var(--ddp-shadow); margin-bottom: 24px; border: 1px solid var(--ddp-gray-100); }
.ddp-listing-header-main { display: flex; gap: 20px; align-items: flex-start; }
.ddp-listing-logo { width: 80px; height: 80px; border-radius: 14px; overflow: hidden; flex-shrink: 0; border: 2px solid var(--ddp-gray-100); }
.ddp-listing-logo img { width: 100%; height: 100%; object-fit: cover; }
.ddp-listing-header-info { flex: 1; }
.ddp-listing-badges { display: flex; gap: 8px; margin-bottom: 8px; flex-wrap: wrap; }
.ddp-listing-title { margin: 0 0 6px; font-size: 28px; font-weight: 800; letter-spacing: -0.03em; }
.ddp-listing-tagline { color: var(--ddp-gray-500); margin: 0 0 12px; font-size: 16px; }
.ddp-listing-meta { display: flex; flex-wrap: wrap; gap: 16px; align-items: center; }
.ddp-listing-rating { display: flex; align-items: center; gap: 8px; }
.ddp-stars-large { font-size: 20px; color: #f59e0b; text-shadow: 0 1px 0 rgba(245, 158, 11, 0.15); }
.ddp-rating-value { font-weight: 700; }
.ddp-rating-count { color: var(--ddp-primary); font-weight: 600; }
.ddp-listing-header-actions { display: flex; gap: 8px; flex-shrink: 0; }
.ddp-action-btn { width: 42px; height: 42px; border-radius: 12px; border: 1.5px solid var(--ddp-gray-200); background: #fff; cursor: pointer; display: flex; align-items: center; justify-content: center; color: var(--ddp-gray-500); transition: all var(--ddp-transition); font-size: 16px; padding: 0; }
.ddp-action-btn:hover { border-color: var(--ddp-primary); color: var(--ddp-primary); background: var(--ddp-primary-light); }
.ddp-action-btn.active { background: var(--ddp-danger); border-color: var(--ddp-danger); color: #fff; }

/* ===== GALLERY ===== */
.ddp-gallery-section { margin-bottom: 24px; }
.ddp-gallery-main { border-radius: var(--ddp-radius-xl); overflow: hidden; margin-bottom: 12px; }
.ddp-gallery-main img { width: 100%; max-height: 500px; object-fit: cover; display: block; }
.ddp-gallery-thumbs { display: flex; gap: 10px; overflow-x: auto; }
.ddp-gallery-thumb { width: 80px; height: 80px; border-radius: 10px; overflow: hidden; cursor: pointer; opacity: 0.6; transition: all var(--ddp-transition); border: 2px solid transparent; }
.ddp-gallery-thumb:hover, .ddp-gallery-thumb.active { opacity: 1; border-color: var(--ddp-primary); }
.ddp-gallery-thumb img { width: 100%; height: 100%; object-fit: cover; }

/* ===== SINGLE CONTENT ===== */
.ddp-single-content { display: grid; grid-template-columns: 1fr 350px; gap: 24px; }
.ddp-content-main .ddp-section { margin-bottom: 24px; }
.ddp-content-main h2 { margin: 0 0 16px; font-size: 20px; font-weight: 700; }
.ddp-section-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 16px; }
.ddp-section-header h2 { margin: 0; }

/* ===== SERVICES & AMENITIES ===== */
.ddp-services-list, .ddp-amenities-list { display: flex; flex-wrap: wrap; gap: 8px; }
.ddp-service-tag, .ddp-amenity-tag { display: inline-flex; align-items: center; gap: 6px; padding: 8px 16px; background: var(--ddp-gray-50); border: 1px solid var(--ddp-gray-100); border-radius: 10px; font-size: 14px; font-weight: 500; color: var(--ddp-gray-700); }
.ddp-service-tag svg, .ddp-amenity-tag svg { color: var(--ddp-success); }
.ddp-amenity-icon { font-size: 16px; line-height: 1; display: inline-flex; align-items: center; }

/* ===== COUPONS ===== */
.ddp-coupons-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 16px; }
.ddp-coupon-card { border: 2px dashed var(--ddp-warning); border-radius: var(--ddp-radius-lg); padding: 20px; position: relative; background: #fffbeb; }
.ddp-coupon-badge { position: absolute; top: -12px; right: 16px; background: linear-gradient(135deg,#f59e0b,#d97706); color: #1e293b; padding: 4px 14px; border-radius: 8px; font-weight: 700; font-size: 14px; }
.ddp-coupon-card h4 { margin: 8px 0; font-weight: 700; }
.ddp-coupon-code { background: #fff; padding: 10px 14px; border-radius: var(--ddp-radius); margin-top: 12px; font-family: monospace; font-weight: 600; border: 1px solid var(--ddp-gray-200); }
.ddp-coupon-expires { font-size: 12px; color: var(--ddp-gray-500); margin-top: 8px; }

/* ===== REVIEWS ===== */
.ddp-reviews-summary { display: grid; grid-template-columns: auto 1fr; gap: 30px; margin-bottom: 24px; padding-bottom: 24px; border-bottom: 1px solid var(--ddp-gray-100); }
.ddp-reviews-overall { text-align: center; }
.ddp-overall-rating { font-size: 52px; font-weight: 800; display: block; letter-spacing: -0.04em; color: var(--ddp-gray-900); }
.ddp-overall-count { display: block; color: var(--ddp-gray-500); font-size: 14px; }
.ddp-rating-breakdown { display: flex; flex-direction: column; gap: 8px; }
.ddp-rating-bar { display: flex; align-items: center; gap: 12px; }
.ddp-bar-label { width: 30px; font-size: 14px; font-weight: 600; }
.ddp-bar-track { flex: 1; height: 8px; background: var(--ddp-gray-100); border-radius: 4px; overflow: hidden; }
.ddp-bar-fill { height: 100%; background: linear-gradient(90deg,#f59e0b,#fbbf24); border-radius: 4px; }
.ddp-bar-count { width: 30px; font-size: 13px; color: var(--ddp-gray-500); text-align: right; }
.ddp-review-form-wrap { background: var(--ddp-gray-50); padding: 24px; border-radius: var(--ddp-radius-lg); margin-bottom: 24px; border: 1px solid var(--ddp-gray-100); }
.ddp-star-input { display: flex; gap: 4px; }
.ddp-star-label { cursor: pointer; }
.ddp-star-label input { display: none; }
.ddp-star-label svg { color: var(--ddp-gray-300); transition: color var(--ddp-transition); }
.ddp-star-label:hover svg, .ddp-star-label input:checked ~ svg { color: var(--ddp-warning); fill: var(--ddp-warning); }
.ddp-review-card { padding: 20px 0; border-bottom: 1px solid var(--ddp-gray-100); }
.ddp-review-header { display: flex; gap: 12px; margin-bottom: 12px; }
.ddp-review-avatar img { width: 48px; height: 48px; border-radius: 12px; }
.ddp-review-meta { flex: 1; }
.ddp-review-date { font-size: 13px; color: var(--ddp-gray-400); margin-left: 12px; }
.ddp-review-title { margin: 0 0 8px; font-size: 16px; font-weight: 700; }
.ddp-review-content { color: var(--ddp-gray-600); line-height: 1.7; }
.ddp-owner-reply { background: var(--ddp-gray-50); padding: 16px; border-radius: var(--ddp-radius); margin-top: 16px; border-left: 4px solid var(--ddp-primary); }
.ddp-reply-btn { background: none; border: none; color: var(--ddp-primary); cursor: pointer; font-size: 14px; margin-top: 12px; font-weight: 600; font-family: var(--ddp-font); }
.ddp-reply-form { margin-top: 12px; }
.ddp-review-report { background: none; border: none; cursor: pointer; color: var(--ddp-gray-400); }
.ddp-no-reviews { text-align: center; padding: 40px; color: var(--ddp-gray-400); }

/* ===== SIDEBAR ===== */
.ddp-sidebar-card { background: #fff; padding: 22px; border-radius: var(--ddp-radius-lg); box-shadow: var(--ddp-shadow); margin-bottom: 20px; border: 1px solid var(--ddp-gray-100); }
.ddp-sidebar-card h3 { margin: 0 0 16px; font-size: 16px; font-weight: 700; }
.ddp-contact-btn { display: flex; align-items: center; gap: 12px; padding: 14px; background: var(--ddp-gray-50); border-radius: var(--ddp-radius); margin-bottom: 10px; text-decoration: none; color: var(--ddp-gray-700); transition: all var(--ddp-transition); font-weight: 500; border: 1px solid transparent; }
.ddp-contact-btn:hover { background: var(--ddp-gray-100); border-color: var(--ddp-gray-200); }
.ddp-contact-phone { background: var(--ddp-primary); color: #fff; border-color: transparent; }
.ddp-contact-phone:hover { background: var(--ddp-primary-dark); color: #fff; }
.ddp-social-links { display: flex; gap: 8px; }
.ddp-social-link { width: 42px; height: 42px; border-radius: 12px; background: var(--ddp-gray-50); display: flex; align-items: center; justify-content: center; text-decoration: none; color: var(--ddp-gray-600); font-weight: 700; font-size: 14px; border: 1px solid var(--ddp-gray-100); transition: all var(--ddp-transition); }
.ddp-social-facebook:hover { background: #1877f2; color: #fff; border-color: #1877f2; }
.ddp-social-instagram:hover { background: #e4405f; color: #fff; border-color: #e4405f; }
.ddp-social-twitter:hover { background: #000; color: #fff; border-color: #000; }
.ddp-social-linkedin:hover { background: #0a66c2; color: #fff; border-color: #0a66c2; }
.ddp-hours { white-space: pre-line; font-size: 14px; color: var(--ddp-gray-600); line-height: 1.8; }
.ddp-contact-form .ddp-field { margin-bottom: 12px; }
.ddp-mini-stats { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 16px; }
.ddp-mini-stat { text-align: center; padding: 14px; background: var(--ddp-gray-50); border-radius: var(--ddp-radius); border: 1px solid var(--ddp-gray-100); }
.ddp-mini-stat-value { display: block; font-size: 24px; font-weight: 800; letter-spacing: -0.02em; }
.ddp-mini-stat-label { font-size: 11px; color: var(--ddp-gray-500); font-weight: 600; text-transform: uppercase; letter-spacing: 0.04em; }

/* ===== MODAL ===== */
.ddp-modal { position: fixed; inset: 0; background: rgba(15,23,42,0.5); backdrop-filter: blur(4px); display: flex; align-items: center; justify-content: center; z-index: 1000; }
.ddp-modal-content { background: #fff; padding: 32px; border-radius: var(--ddp-radius-xl); max-width: 420px; width: 90%; position: relative; box-shadow: var(--ddp-shadow-xl); }
.ddp-modal-close { position: absolute; top: 16px; right: 16px; background: none; border: none; font-size: 24px; cursor: pointer; color: var(--ddp-gray-400); }
.ddp-share-buttons { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin: 20px 0; }
.ddp-share-btn { padding: 12px; border-radius: var(--ddp-radius); text-align: center; text-decoration: none; color: #fff; font-weight: 600; font-size: 14px; }
.ddp-share-facebook { background: #1877f2; }
.ddp-share-twitter { background: #000; }
.ddp-share-linkedin { background: #0a66c2; }
.ddp-share-email { background: var(--ddp-gray-600); }
.ddp-share-link { display: flex; gap: 8px; }
.ddp-share-link input { flex: 1; padding: 10px; border: 1.5px solid var(--ddp-gray-200); border-radius: var(--ddp-radius); font-family: var(--ddp-font); }
.ddp-share-link button { padding: 10px 18px; background: var(--ddp-primary); color: #fff; border: none; border-radius: var(--ddp-radius); cursor: pointer; font-weight: 600; }

/* ===== MANAGE PAGES ===== */
.ddp-manage-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; }
.ddp-manage-panel { background: #fff; padding: 24px; border-radius: var(--ddp-radius-lg); box-shadow: var(--ddp-shadow); border: 1px solid var(--ddp-gray-100); }
.ddp-manage-panel h2 { margin: 0 0 20px; font-weight: 700; }
.ddp-term-list { max-height: 500px; overflow-y: auto; }
.ddp-term-item { display: flex; align-items: center; gap: 12px; padding: 12px 8px; border-bottom: 1px solid var(--ddp-gray-100); border-radius: 8px; transition: background var(--ddp-transition); }
.ddp-term-item:hover { background: var(--ddp-gray-50); }
.ddp-term-child { padding-left: 28px; }
.ddp-term-icon { font-size: 20px; }
.ddp-term-name { flex: 1; font-weight: 500; }
.ddp-term-count { color: var(--ddp-gray-400); font-size: 13px; font-weight: 600; }
.ddp-term-edit, .ddp-term-delete { background: none; border: none; cursor: pointer; color: var(--ddp-gray-400); font-size: 13px; font-family: var(--ddp-font); font-weight: 500; }
.ddp-term-delete:hover { color: var(--ddp-danger); }
.ddp-term-edit:hover { color: var(--ddp-primary); }

/* ===== ADMIN DASHBOARD ===== */
.ddp-admin-grid { display: grid; grid-template-columns: 2fr 1fr; gap: 24px; }
.ddp-admin-panel { background: #fff; padding: 24px; border-radius: var(--ddp-radius-lg); box-shadow: var(--ddp-shadow); border: 1px solid var(--ddp-gray-100); }
.ddp-admin-panel h2 { margin: 0 0 16px; font-weight: 700; }
.ddp-pending-item { display: flex; justify-content: space-between; align-items: center; padding: 14px 0; border-bottom: 1px solid var(--ddp-gray-100); }
.ddp-pending-info strong { display: block; font-weight: 600; }
.ddp-pending-info small { color: var(--ddp-gray-400); font-size: 13px; }
.ddp-pending-actions { display: flex; gap: 8px; }
.ddp-quick-links { display: grid; gap: 8px; }
.ddp-quick-link { display: block; padding: 14px; background: var(--ddp-gray-50); border-radius: var(--ddp-radius); text-decoration: none; color: var(--ddp-gray-700); transition: all var(--ddp-transition); font-weight: 500; border: 1px solid transparent; }
.ddp-quick-link:hover { background: var(--ddp-primary-light); color: var(--ddp-primary); border-color: var(--ddp-primary-glow); }

/* ===== PRICING PAGE ===== */
.ddp-pricing-header { text-align: center; margin-bottom: 40px; }
.ddp-pricing-header h1 { font-size: 38px; margin-bottom: 8px; font-weight: 800; letter-spacing: -0.03em; }
.ddp-pricing-header p { color: var(--ddp-gray-500); font-size: 17px; }
.ddp-pricing-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 24px; }
.ddp-pricing-card { background: #fff; padding: 36px; border-radius: var(--ddp-radius-xl); box-shadow: var(--ddp-shadow); text-align: center; position: relative; border: 1.5px solid var(--ddp-gray-100); transition: all 0.3s cubic-bezier(0.4,0,0.2,1); }
.ddp-pricing-card:hover { box-shadow: var(--ddp-shadow-lg); }
.ddp-pricing-featured { border: 2px solid var(--ddp-primary); transform: scale(1.04); box-shadow: var(--ddp-shadow-lg), 0 0 0 4px var(--ddp-primary-glow); }
.ddp-pricing-card h2 { margin: 0 0 16px; font-weight: 700; }
.ddp-pricing-price { margin-bottom: 16px; }
.ddp-pricing-features { list-style: none; padding: 0; margin: 0 0 28px; text-align: left; }
.ddp-pricing-features li { padding: 10px 0; padding-left: 28px; position: relative; border-bottom: 1px solid var(--ddp-gray-50); font-size: 15px; color: var(--ddp-gray-600); }
.ddp-pricing-features li::before { content: '✓'; position: absolute; left: 0; color: var(--ddp-success); font-weight: 700; }

/* ===== ANALYTICS ===== */
.ddp-analytics-header { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 24px; }
.ddp-chart-container { height: 250px; }

/* ===== ACCOUNT PAGE ===== */
.ddp-account-header { display: flex; align-items: center; gap: 20px; margin-bottom: 28px; }
.ddp-account-header img { border-radius: 50%; border: 3px solid var(--ddp-gray-100); }
.ddp-account-header h1 { margin: 0; font-weight: 700; }
.ddp-account-header small { color: var(--ddp-gray-500); }
.ddp-account-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; }
.ddp-favorites-list { display: flex; flex-direction: column; gap: 10px; }
.ddp-favorite-item { display: flex; align-items: center; gap: 12px; padding: 12px; background: var(--ddp-gray-50); border-radius: var(--ddp-radius); border: 1px solid var(--ddp-gray-100); }
.ddp-favorite-item img { width: 48px; height: 48px; border-radius: 10px; object-fit: cover; }
.ddp-remove-favorite { margin-left: auto; background: none; border: none; font-size: 18px; cursor: pointer; color: var(--ddp-gray-400); }
.ddp-account-links { margin-top: 24px; display: flex; gap: 12px; }

/* ===== EMPTY STATES ===== */
.ddp-empty, .ddp-empty-state { text-align: center; padding: 60px 40px; color: var(--ddp-gray-500); }
.ddp-empty-state svg, .ddp-empty svg { margin-bottom: 16px; color: var(--ddp-gray-300); }
.ddp-empty-state h3, .ddp-empty h3 { margin: 0 0 8px; color: var(--ddp-gray-700); font-weight: 700; }
.ddp-empty p { margin-bottom: 20px; }

/* ===== PAGINATION ===== */
.ddp-pagination { display: flex; justify-content: center; gap: 6px; margin-top: 36px; }
.ddp-pagination a, .ddp-pagination span { padding: 10px 16px; border: 1.5px solid var(--ddp-gray-200); border-radius: 10px; text-decoration: none; color: var(--ddp-gray-700); font-weight: 600; font-size: 14px; transition: all var(--ddp-transition); }
.ddp-pagination a:hover { border-color: var(--ddp-primary); color: var(--ddp-primary); background: var(--ddp-primary-light); }
.ddp-pagination .current { background: var(--ddp-primary); border-color: var(--ddp-primary); color: #fff; box-shadow: 0 2px 8px rgba(79,70,229,0.3); }

/* ===== SPINNER ===== */
.ddp-spin { animation: ddp-spin 1s linear infinite; }
@keyframes ddp-spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }

/* ===== RESPONSIVE ===== */
@media (max-width: 900px) {
    .ddp-single-content { grid-template-columns: 1fr; }
    .ddp-admin-grid { grid-template-columns: 1fr; }
    .ddp-manage-grid { grid-template-columns: 1fr; }
    .ddp-account-grid { grid-template-columns: 1fr; }
    .ddp-stats-4 { grid-template-columns: repeat(2, 1fr); }
    .ddp-auth-page { flex-direction: column; }
    .ddp-steps { flex-wrap: wrap; justify-content: flex-start; }
    .ddp-step:not(:last-child)::after { display: none; }
    .ddp-listing-header-main { flex-direction: column; }
    .ddp-listing-header-actions { width: 100%; justify-content: flex-start; }
    .ddp-reviews-summary { grid-template-columns: 1fr; }
}

@media (max-width: 600px) {
    .ddp-grid { grid-template-columns: 1fr; }
    .ddp-field-row, .ddp-field-row-3 { grid-template-columns: 1fr; }
    .ddp-stats { grid-template-columns: 1fr 1fr; }
    .ddp-search-main { flex-direction: column; }
    .ddp-search-main .ddp-btn { width: 100%; }
    .ddp-filters-row { flex-direction: column; }
    .ddp-filters-row .ddp-select { width: 100%; }
    .ddp-dashboard-header { flex-direction: column; align-items: flex-start; }
    .ddp-image-row { grid-template-columns: 1fr; }
    .ddp-payment-methods { grid-template-columns: 1fr; }
    .ddp-pricing-featured { transform: none; }
    .ddp-results-bar { flex-direction: column; align-items: flex-start; }
    .ddp-results-controls { width: 100%; justify-content: space-between; }
}

/* =============================================
   MAP MARKERS — GPS pin style
   ============================================= */
.ddp-marker {
    background: transparent !important;
    border: none !important;
}
.ddp-marker-inner {
    width: 28px;
    height: 36px;
    display: block;
    filter: drop-shadow(0 2px 4px rgba(0,0,0,0.3));
    transition: transform 0.15s ease-out;
    cursor: pointer;
}
.ddp-marker-inner svg {
    width: 100%;
    height: 100%;
    display: block;
    /* Pin teardrop fill: primary indigo for normal listings */
    fill: var(--ddp-primary);
}
.ddp-marker:hover .ddp-marker-inner {
    transform: scale(1.15) translateY(-2px);
}
.ddp-marker-featured .ddp-marker-inner svg {
    /* Featured listings: warning gold */
    fill: #d97706;
}
.ddp-marker-single .ddp-marker-inner svg {
    fill: var(--ddp-primary);
}

/* Marker clusters — override leaflet.markercluster defaults */
.ddp-cluster {
    background: transparent !important;
    border: none !important;
}
.ddp-cluster .ddp-cluster-inner {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 100%;
    border-radius: 50%;
    color: #fff;
    font-weight: 700;
    font-family: var(--ddp-font);
    background: var(--ddp-primary);
    border: 3px solid #fff;
    box-shadow: 0 2px 8px rgba(0,0,0,0.3), 0 0 0 4px rgba(79,70,229,0.25);
    transition: transform 0.15s ease-out;
}
.ddp-cluster:hover .ddp-cluster-inner {
    transform: scale(1.08);
}
.ddp-cluster-sm .ddp-cluster-inner { font-size: 13px; background: var(--ddp-primary); }
.ddp-cluster-md .ddp-cluster-inner { font-size: 14px; background: #7c3aed; box-shadow: 0 2px 8px rgba(0,0,0,0.3), 0 0 0 4px rgba(124,58,237,0.25); }
.ddp-cluster-lg .ddp-cluster-inner { font-size: 15px; background: #ec4899; box-shadow: 0 2px 8px rgba(0,0,0,0.3), 0 0 0 4px rgba(236,72,153,0.25); }
.ddp-cluster-count { line-height: 1; }
/* Spiderfy lines and leg endpoints */
.leaflet-cluster-anim .leaflet-marker-icon,
.leaflet-cluster-anim .leaflet-marker-shadow {
    transition: transform 0.25s ease-out, opacity 0.25s ease-in;
}

/* =============================================
   ACCESSIBILITY — keyboard focus visibility
   Applies a visible focus ring to every interactive control. Uses
   :focus-visible so the ring only appears for keyboard users, not mouse
   clicks, on browsers that support it. Required for WCAG 2.4.7.
   ============================================= */
.ddp-btn:focus-visible,
.ddp-card-category:focus-visible,
.ddp-card-link:focus-visible,
.ddp-card-phone:focus-visible,
.ddp-card-title a:focus-visible,
.ddp-action-btn:focus-visible,
.ddp-view-btn:focus-visible,
.ddp-map-type-btn:focus-visible,
.ddp-clear-filters:focus-visible,
.ddp-back-link:focus-visible,
.ddp-auth-footer a:focus-visible,
.ddp-pagination a:focus-visible {
    outline: 2px solid var(--ddp-primary);
    outline-offset: 2px;
    box-shadow: 0 0 0 4px rgba(79, 70, 229, 0.25);
    border-radius: var(--ddp-radius);
}

/* Honor user's motion preferences (WCAG 2.3.3) */
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        transition-duration: 0.01ms !important;
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
    }
    .ddp-card:hover { transform: none; }
    .ddp-btn-primary:hover { transform: none; }
}

/* Screen-reader-only utility — for visually hidden labels */
.ddp-sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

/* ── Near Me / radius controls ─────────────────────────────────────────── */
.ddp-near-active {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .6rem;
    margin-top: .85rem;
    padding: .65rem .9rem;
    background: rgba(255, 255, 255, .92);
    border-radius: 10px;
}
.ddp-near-label {
    font-size: .9rem;
    color: #003b49;
    font-weight: 600;
}
.ddp-radius-select {
    min-width: 6.5rem;
}
.ddp-near-clear {
    border: 0;
    background: none;
    padding: .25rem .4rem;
    font-size: .875rem;
    font-weight: 600;
    cursor: pointer;
    border-radius: 4px;
    text-decoration: underline;
}
.ddp-near-clear:link,
.ddp-near-clear:visited { color: #1d4289; background: transparent; }
.ddp-near-clear:hover,
.ddp-near-clear:active { color: #fff; background: #1d4289; text-decoration: none; }
.ddp-near-clear:focus-visible { outline: 3px solid #ffc845; outline-offset: 2px; }

#ddp-locate-me.active { color: #fff; background: #1d4289; border-color: #1d4289; }
#ddp-locate-me.active:hover,
#ddp-locate-me.active:focus { color: #fff; background: #1b365d; }

/* Fallback image sits where a real photo would, same crop behaviour. */
.ddp-card-image .ddp-default-image {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

/* "You are here" marker for radius searches */
.ddp-you-are-here { background: none; border: 0; }
.ddp-you-pin {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    border-radius: 50%;
    /* White glyph on navy, with a white ring so it stays legible over both
       street tiles and the darker satellite layer. */
    color: #fff;
    background: #1d4289;
    border: 3px solid #fff;
    box-shadow: 0 2px 6px rgba(0, 0, 0, .4);
}

/* ==================== Directory Users (v4.16.0) ==================== */
.ddp-manage-users .ddp-stats { margin: 20px 0 24px; }
.ddp-user-filters { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; margin-bottom: 20px; }
.ddp-user-filters .ddp-input { flex: 1 1 220px; min-width: 180px; }
.ddp-user-filters .ddp-select { flex: 0 1 180px; }
.ddp-check-inline { display: inline-flex; align-items: center; gap: 6px; font-size: 14px; color: var(--ddp-gray-700); }
.ddp-table-wrap { overflow-x: auto; }
.ddp-users-table { min-width: 760px; }
.ddp-user-cell { display: flex; align-items: center; gap: 12px; }
.ddp-user-avatar { border-radius: 50%; flex-shrink: 0; }
.ddp-user-cell strong { display: block; line-height: 1.3; }
.ddp-user-cell small { display: block; color: var(--ddp-gray-500); font-size: 12px; }
.ddp-count-breakdown { display: block; color: var(--ddp-gray-500); font-size: 12px; }
.ddp-muted { color: var(--ddp-gray-500); }
.ddp-badge-claim { background: #fef3c7; color: #92400e; margin-top: 4px; }
.ddp-badge-locked { background: var(--ddp-gray-100); color: var(--ddp-gray-700); }
.ddp-user-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.ddp-role-select { max-width: 170px; }
.ddp-pagination { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 20px; }
.ddp-page-num { display: inline-block; padding: 6px 12px; border-radius: var(--ddp-radius); border: 1px solid var(--ddp-gray-100); font-size: 14px; font-weight: 600; }
.ddp-page-num:link, .ddp-page-num:visited { color: var(--ddp-primary); background: #fff; text-decoration: none; }
.ddp-page-num:hover, .ddp-page-num:focus, .ddp-page-num:active { color: #fff; background: var(--ddp-primary); }
.ddp-page-current { color: #fff; background: var(--ddp-primary); border-color: var(--ddp-primary); }
.ddp-ql-icon { vertical-align: -3px; }
@media (max-width: 640px) {
  .ddp-user-filters { flex-direction: column; align-items: stretch; }
  .ddp-user-filters .ddp-select, .ddp-user-filters .ddp-input { flex: 1 1 auto; }
}

/* ============ Plugin page title suppression (v4.18.0) ============
   The plugin's own pages render their own headings inside the shortcode,
   so the theme's page title is a duplicate. Selectors cover the common
   theme families plus Elementor and the block theme title block.
   Scoped to .ddp-hide-page-title so nothing else on the site is touched. */
.ddp-hide-page-title .entry-title,
.ddp-hide-page-title .page-title,
.ddp-hide-page-title .page-header .entry-title,
.ddp-hide-page-title .entry-header .entry-title,
.ddp-hide-page-title header.entry-header > .entry-title,
.ddp-hide-page-title .wp-block-post-title,
.ddp-hide-page-title .elementor-page-title,
.ddp-hide-page-title .elementor-heading-title.elementor-page-title,
.ddp-hide-page-title .ast-single-post-order .entry-title,
.ddp-hide-page-title .site-main > article > .entry-header,
.ddp-hide-page-title .hentry > .entry-header > .entry-title,
.ddp-hide-page-title .single-featured-image-header,
.ddp-hide-page-title .td-page-title,
.ddp-hide-page-title .page-hero-title {
    display: none !important;
}
/* Some themes reserve vertical space in the header wrapper even once the
   heading itself is gone, leaving a visible gap above the content. */
.ddp-hide-page-title .page-header:empty,
.ddp-hide-page-title .entry-header:empty {
    display: none !important;
    margin: 0 !important;
    padding: 0 !important;
}
