Style Reference Zodiac Compatibility

/* =============================================================================
   EZ HOROSCOPE - ZODIAC COMPATIBILITY BLOCK
   MYSTICAL THEME - Inspired by Soul Spot aesthetic
   =============================================================================
   
   A dreamy, spiritual color scheme featuring dusty blue-purples, soft lavenders,
   deep navy tones, and warm gold accents. Perfect for tarot, astrology, and
   spiritual wellness websites.
   
   TABLE OF CONTENTS:
   ------------------
   1. CSS Custom Properties (Variables)
   2. Block Container
   3. Form Styles
   4. Result Container
   5. Report Sections
   6. Lists
   7. Inline Hero Image
   8. Loading & Progress States
   9. RTL (Right-to-Left) Support
   10. Responsive Design
   11. Print Styles
   
   ============================================================================= */


/* =============================================================================
   1. CSS CUSTOM PROPERTIES (VARIABLES)
   ============================================================================= */

.ezhp-compatibility-block {
    
    /* -------------------------------------------------------------------------
       COLORS - MYSTICAL PALETTE
       ------------------------------------------------------------------------- */
    
    /* Primary - Deep mystical purple-blue */
    --ezhp-color-primary: #5D6B8A;
    
    /* Secondary - Warm gold accent */
    --ezhp-color-secondary: #C9A962;
    
    /* Tertiary - Soft lavender */
    --ezhp-color-tertiary: #9BA4C4;
    
    /* Quaternary - Deep navy */
    --ezhp-color-quaternary: #2D3142;
    
    /* Background colors */
    --ezhp-bg-primary: transparent;
    --ezhp-bg-secondary: rgba(93, 107, 138, 0.04);
    --ezhp-bg-accent: rgba(201, 169, 98, 0.06);
    --ezhp-bg-mystical: linear-gradient(135deg, rgba(93, 107, 138, 0.03) 0%, rgba(155, 164, 196, 0.05) 100%);
    --ezhp-bg-section: rgba(255, 255, 255, 0.4);
    
    /* Text colors */
    --ezhp-text-primary: #2D3142;
    --ezhp-text-secondary: #4F5D75;
    --ezhp-text-muted: rgba(45, 49, 66, 0.6);
    --ezhp-text-accent: #5D6B8A;
    --ezhp-text-light: #FFFFFF;
    
    /* Input/Form colors */
    --ezhp-input-bg: rgba(255, 255, 255, 0.8);
    --ezhp-input-border: var(--ezhp-color-tertiary);
    --ezhp-input-text: var(--ezhp-text-primary);
    --ezhp-input-focus-shadow: rgba(93, 107, 138, 0.25);
    
    /* Button colors */
    --ezhp-button-text: var(--ezhp-color-primary);
    --ezhp-button-border: var(--ezhp-color-primary);
    --ezhp-button-hover-bg: var(--ezhp-color-primary);
    --ezhp-button-hover-text: var(--ezhp-text-light);
    
    /* Progress bar colors */
    --ezhp-progress-track: rgba(155, 164, 196, 0.2);
    --ezhp-progress-fill: linear-gradient(90deg, var(--ezhp-color-tertiary), var(--ezhp-color-secondary));
    
    /* -------------------------------------------------------------------------
       TYPOGRAPHY
       ------------------------------------------------------------------------- */
    
    --ezhp-font-family-base: inherit;
    --ezhp-font-family-accent: "Cormorant Garamond", Georgia, "Times New Roman", serif;
    
    --ezhp-font-size-xs: 0.75rem;
    --ezhp-font-size-sm: 0.875rem;
    --ezhp-font-size-base: 1rem;
    --ezhp-font-size-lg: 1.125rem;
    --ezhp-font-size-xl: 1.25rem;
    --ezhp-font-size-2xl: 1.5rem;
    --ezhp-font-size-3xl: 1.75rem;
    
    --ezhp-font-weight-light: 300;
    --ezhp-font-weight-normal: 400;
    --ezhp-font-weight-medium: 500;
    --ezhp-font-weight-semibold: 600;
    --ezhp-font-weight-bold: 700;
    
    --ezhp-line-height-tight: 1.2;
    --ezhp-line-height-normal: 1.5;
    --ezhp-line-height-relaxed: 1.65;
    --ezhp-line-height-loose: 1.85;
    
    --ezhp-letter-spacing-wide: 0.025em;
    --ezhp-letter-spacing-wider: 0.05em;
    --ezhp-letter-spacing-widest: 0.1em;
    
    /* -------------------------------------------------------------------------
       SPACING
       ------------------------------------------------------------------------- */
    
    --ezhp-spacing-xs: 0.25rem;
    --ezhp-spacing-sm: 0.5rem;
    --ezhp-spacing-md: 1rem;
    --ezhp-spacing-lg: 1.5rem;
    --ezhp-spacing-xl: 2rem;
    --ezhp-spacing-2xl: 3rem;
    
    /* -------------------------------------------------------------------------
       BORDERS & SHADOWS
       ------------------------------------------------------------------------- */
    
    --ezhp-radius-sm: 4px;
    --ezhp-radius-md: 8px;
    --ezhp-radius-lg: 12px;
    --ezhp-radius-xl: 16px;
    
    --ezhp-border-width-thin: 1px;
    --ezhp-border-width-medium: 2px;
    
    --ezhp-shadow-sm: 0 1px 3px rgba(93, 107, 138, 0.06);
    --ezhp-shadow-md: 0 4px 12px rgba(93, 107, 138, 0.08);
    --ezhp-shadow-lg: 0 8px 24px rgba(93, 107, 138, 0.1);
    --ezhp-shadow-glow: 0 0 20px rgba(201, 169, 98, 0.2);
    
    /* -------------------------------------------------------------------------
       TRANSITIONS
       ------------------------------------------------------------------------- */
    
    --ezhp-transition-fast: 150ms ease;
    --ezhp-transition-normal: 250ms ease;
    --ezhp-transition-slow: 400ms ease;
}


/* =============================================================================
   2. BLOCK CONTAINER
   ============================================================================= */

.ezhp-compatibility-block {
    font-family: var(--ezhp-font-family-base);
    font-size: var(--ezhp-font-size-base);
    line-height: var(--ezhp-line-height-relaxed);
    color: var(--ezhp-text-primary);
    background: var(--ezhp-bg-primary);
}


/* =============================================================================
   3. FORM STYLES
   ============================================================================= */

.ezhp-compatibility-block .ezhp-form {
    margin: var(--ezhp-spacing-lg) 0 !important;
    padding: var(--ezhp-spacing-lg) !important;
    display: flex !important;
    flex-wrap: wrap !important;
    gap: var(--ezhp-spacing-md) !important;
    align-items: center !important;
    background: var(--ezhp-bg-mystical) !important;
    border-radius: var(--ezhp-radius-lg) !important;
    border: 1px solid rgba(155, 164, 196, 0.2) !important;
}

/* Form labels */
.ezhp-compatibility-block .ezhp-form label,
.ezhp-compatibility-block .ezhp-label-your,
.ezhp-compatibility-block .ezhp-label-their {
    font-family: var(--ezhp-font-family-accent) !important;
    font-size: var(--ezhp-font-size-base) !important;
    font-weight: var(--ezhp-font-weight-light) !important;
    font-style: italic !important;
    color: var(--ezhp-color-primary) !important;
}

/* Decorative element before labels */
.ezhp-compatibility-block .ezhp-label-your::before,
.ezhp-compatibility-block .ezhp-label-their::before {
    content: "✦ ";
    color: var(--ezhp-color-secondary);
    font-style: normal;
}

/* Select dropdowns */
.ezhp-compatibility-block select,
.ezhp-compatibility-block .ezhp-your-sign,
.ezhp-compatibility-block .ezhp-their-sign {
    padding: var(--ezhp-spacing-sm) var(--ezhp-spacing-md) !important;
    font-family: var(--ezhp-font-family-base) !important;
    font-size: var(--ezhp-font-size-base) !important;
    color: var(--ezhp-input-text) !important;
    background: var(--ezhp-input-bg) !important;
    border: 2px solid var(--ezhp-input-border) !important;
    border-radius: var(--ezhp-radius-md) !important;
    cursor: pointer;
    transition: border-color var(--ezhp-transition-fast),
                box-shadow var(--ezhp-transition-fast);
}

.ezhp-compatibility-block select:hover {
    border-color: var(--ezhp-color-primary) !important;
}

.ezhp-compatibility-block select:focus {
    outline: none !important;
    border-color: var(--ezhp-color-secondary) !important;
    box-shadow: 0 0 0 3px var(--ezhp-input-focus-shadow) !important;
}

/* Submit button - outlined mystical style */
.ezhp-compatibility-block .ezhp-fetch-button,
.ezhp-compatibility-block .wp-element-button,
.ezhp-compatibility-block .ezhp-button-compat {
    padding: var(--ezhp-spacing-sm) var(--ezhp-spacing-lg) !important;
    font-family: var(--ezhp-font-family-base) !important;
    font-size: var(--ezhp-font-size-sm) !important;
    font-weight: var(--ezhp-font-weight-medium) !important;
    text-transform: uppercase !important;
    letter-spacing: var(--ezhp-letter-spacing-wider) !important;
    color: var(--ezhp-button-text) !important;
    background: transparent !important;
    border: 2px solid var(--ezhp-button-border) !important;
    border-radius: var(--ezhp-radius-sm) !important;
    cursor: pointer;
    transition: all var(--ezhp-transition-normal) !important;
}

.ezhp-compatibility-block .ezhp-fetch-button:hover,
.ezhp-compatibility-block .wp-element-button:hover,
.ezhp-compatibility-block .ezhp-button-compat:hover {
    background: var(--ezhp-button-hover-bg) !important;
    color: var(--ezhp-button-hover-text) !important;
    transform: translateY(-2px);
    box-shadow: var(--ezhp-shadow-md);
    opacity: 1 !important;
}

.ezhp-compatibility-block .ezhp-fetch-button:focus,
.ezhp-compatibility-block .wp-element-button:focus {
    outline: none !important;
    box-shadow: 0 0 0 3px var(--ezhp-input-focus-shadow) !important;
}


/* =============================================================================
   4. RESULT CONTAINER
   ============================================================================= */

.ezhp-compatibility-block .ezhp-compatibility-result {
    margin-top: var(--ezhp-spacing-lg) !important;
}


/* =============================================================================
   5. REPORT SECTIONS
   =============================================================================
   Note: Uses !important to override base theme's inherit declarations
   ============================================================================= */

/* Individual sections - the API returns div.section elements */
.ezhp-compatibility-block .section,
.ezhp-compatibility-block .ezhp-compatibility-result .section,
.ezhp-compatibility-block .ezhp-compatibility-result > div.section {
    margin-bottom: var(--ezhp-spacing-xl) !important;
    padding: var(--ezhp-spacing-lg) !important;
    background: var(--ezhp-bg-section) !important;
    border-radius: var(--ezhp-radius-lg) !important;
    border-left: 3px solid var(--ezhp-color-tertiary) !important;
    box-shadow: var(--ezhp-shadow-sm) !important;
}

.ezhp-compatibility-block .section:last-child,
.ezhp-compatibility-block .ezhp-compatibility-result .section:last-child {
    margin-bottom: 0 !important;
}

/* Section headings (h2) with emoji icons */
.ezhp-compatibility-block h2,
.ezhp-compatibility-block .section h2,
.ezhp-compatibility-block .ezhp-compatibility-result h2 {
    font-family: var(--ezhp-font-family-accent) !important;
    font-size: var(--ezhp-font-size-2xl) !important;
    font-weight: var(--ezhp-font-weight-light) !important;
    font-style: italic !important;
    line-height: var(--ezhp-line-height-tight) !important;
    color: var(--ezhp-color-primary) !important;
    background: transparent !important;
    margin: 0 0 var(--ezhp-spacing-md) 0 !important;
    padding-bottom: var(--ezhp-spacing-sm) !important;
    border-bottom: 1px solid rgba(155, 164, 196, 0.3) !important;
}

/* H3 subheadings if present */
.ezhp-compatibility-block h3,
.ezhp-compatibility-block .section h3 {
    font-family: var(--ezhp-font-family-accent) !important;
    font-size: var(--ezhp-font-size-xl) !important;
    font-weight: var(--ezhp-font-weight-normal) !important;
    font-style: italic !important;
    color: var(--ezhp-color-primary) !important;
    background: transparent !important;
    margin: var(--ezhp-spacing-md) 0 var(--ezhp-spacing-sm) 0 !important;
}

/* Paragraphs */
.ezhp-compatibility-block p,
.ezhp-compatibility-block .section p,
.ezhp-compatibility-block .ezhp-compatibility-result p {
    font-family: var(--ezhp-font-family-base) !important;
    font-size: var(--ezhp-font-size-base) !important;
    line-height: var(--ezhp-line-height-loose) !important;
    color: var(--ezhp-text-secondary) !important;
    background: transparent !important;
    margin: 0 0 var(--ezhp-spacing-md) 0 !important;
}

.ezhp-compatibility-block p:last-child,
.ezhp-compatibility-block .section p:last-child {
    margin-bottom: 0 !important;
}

/* Strong/bold text (like compatibility percentage) */
.ezhp-compatibility-block strong,
.ezhp-compatibility-block .section strong {
    font-weight: var(--ezhp-font-weight-semibold) !important;
    color: var(--ezhp-text-primary) !important;
}

/* Compatibility percentage highlight */
.ezhp-compatibility-block .section p:first-of-type strong {
    font-size: var(--ezhp-font-size-lg) !important;
    color: var(--ezhp-color-secondary) !important;
}

/* Emphasis/italic text */
.ezhp-compatibility-block em,
.ezhp-compatibility-block .section em {
    font-style: italic !important;
    color: var(--ezhp-color-primary) !important;
}


/* =============================================================================
   6. LISTS
   ============================================================================= */

.ezhp-compatibility-block ul,
.ezhp-compatibility-block .section ul,
.ezhp-compatibility-block .ezhp-compatibility-result ul {
    margin: var(--ezhp-spacing-md) 0 !important;
    padding-left: var(--ezhp-spacing-lg) !important;
    list-style: none !important;
}

.ezhp-compatibility-block li,
.ezhp-compatibility-block .section li {
    font-family: var(--ezhp-font-family-base) !important;
    font-size: var(--ezhp-font-size-base) !important;
    line-height: var(--ezhp-line-height-relaxed) !important;
    color: var(--ezhp-text-secondary) !important;
    margin-bottom: var(--ezhp-spacing-sm) !important;
    padding-left: var(--ezhp-spacing-sm) !important;
    position: relative;
}

/* Custom list bullet using star */
.ezhp-compatibility-block li::before {
    content: "✧";
    position: absolute;
    left: calc(-1 * var(--ezhp-spacing-md));
    color: var(--ezhp-color-tertiary);
    font-size: var(--ezhp-font-size-sm);
}

.ezhp-compatibility-block li:last-child {
    margin-bottom: 0 !important;
}


/* =============================================================================
   7. INLINE HERO IMAGE
   ============================================================================= */

.ezhp-compatibility-block .ez-inline-hero-img {
    border-radius: var(--ezhp-radius-lg) !important;
    box-shadow: var(--ezhp-shadow-md) !important;
    transition: box-shadow var(--ezhp-transition-normal);
}

.ezhp-compatibility-block .ez-inline-hero-img:hover {
    box-shadow: var(--ezhp-shadow-lg) !important;
}

/* Wrap left */
.ezhp-compatibility-block .ez-inline-hero-img.ez-wrap-left {
    float: left !important;
    margin: 0 var(--ezhp-spacing-lg) var(--ezhp-spacing-lg) 0 !important;
}

/* Wrap right */
.ezhp-compatibility-block .ez-inline-hero-img.ez-wrap-right {
    float: right !important;
    margin: 0 0 var(--ezhp-spacing-lg) var(--ezhp-spacing-lg) !important;
}

/* Clear floats */
.ezhp-compatibility-block .ezhp-compatibility-result::after {
    content: "";
    display: block;
    clear: both;
}


/* =============================================================================
   8. LOADING & PROGRESS STATES
   ============================================================================= */

/* Progress bar container */
.ezhp-compatibility-block .ezhp-progress-container {
    width: 100%;
    height: 6px;
    background: var(--ezhp-progress-track) !important;
    overflow: hidden;
    border-radius: var(--ezhp-radius-sm);
    margin: var(--ezhp-spacing-md) 0;
    position: relative;
}

/* Progress bar fill */
.ezhp-compatibility-block .ezhp-progress-bar {
    position: absolute;
    height: 100%;
    width: 30%;
    background: var(--ezhp-progress-fill) !important;
    border-radius: var(--ezhp-radius-sm);
    animation: ezhp-compat-slide 1.5s ease-in-out infinite;
}

@keyframes ezhp-compat-slide {
    0% { left: -30%; }
    100% { left: 100%; }
}

/* Loading text */
.ezhp-compatibility-block .ezhp-compatibility-result > div:not(.section) {
    text-align: center;
    padding: var(--ezhp-spacing-md);
    color: var(--ezhp-text-muted);
    font-family: var(--ezhp-font-family-accent);
    font-style: italic;
}


/* =============================================================================
   9. RTL (RIGHT-TO-LEFT) SUPPORT
   ============================================================================= */

/* Base RTL wrapper */
.ezhp-compatibility-block[dir="rtl"] {
    text-align: right;
    direction: rtl;
}

/* Form layout for RTL */
.ezhp-compatibility-block[dir="rtl"] .ezhp-form {
    flex-direction: row-reverse !important;
}

/* Label decoration flip */
.ezhp-compatibility-block[dir="rtl"] .ezhp-label-your::before,
.ezhp-compatibility-block[dir="rtl"] .ezhp-label-their::before {
    content: " ✦";
}

.ezhp-compatibility-block[dir="rtl"] .ezhp-label-your::after,
.ezhp-compatibility-block[dir="rtl"] .ezhp-label-their::after {
    content: none;
}

/* Section border flip */
.ezhp-compatibility-block[dir="rtl"] .section {
    border-left: none !important;
    border-right: 3px solid var(--ezhp-color-tertiary) !important;
}

/* Headings RTL */
.ezhp-compatibility-block[dir="rtl"] h2,
.ezhp-compatibility-block[dir="rtl"] h3 {
    text-align: right !important;
}

/* Paragraphs RTL */
.ezhp-compatibility-block[dir="rtl"] p {
    text-align: right !important;
}

/* Lists RTL */
.ezhp-compatibility-block[dir="rtl"] ul {
    padding-left: 0 !important;
    padding-right: var(--ezhp-spacing-lg) !important;
}

.ezhp-compatibility-block[dir="rtl"] li {
    padding-left: 0 !important;
    padding-right: var(--ezhp-spacing-sm) !important;
}

.ezhp-compatibility-block[dir="rtl"] li::before {
    left: auto;
    right: calc(-1 * var(--ezhp-spacing-md));
}

/* Inline hero image float reversal for RTL */
.ezhp-compatibility-block[dir="rtl"] .ez-inline-hero-img.ez-wrap-left {
    float: right !important;
    margin: 0 0 var(--ezhp-spacing-lg) var(--ezhp-spacing-lg) !important;
}

.ezhp-compatibility-block[dir="rtl"] .ez-inline-hero-img.ez-wrap-right {
    float: left !important;
    margin: 0 var(--ezhp-spacing-lg) var(--ezhp-spacing-lg) 0 !important;
}

/* Progress bar RTL animation */
.ezhp-compatibility-block[dir="rtl"] .ezhp-progress-bar {
    animation: ezhp-compat-slide-rtl 1.5s ease-in-out infinite;
}

@keyframes ezhp-compat-slide-rtl {
    0% { right: -30%; left: auto; }
    100% { right: 100%; left: auto; }
}


/* =============================================================================
   10. RESPONSIVE DESIGN
   ============================================================================= */

@media (max-width: 768px) {
    .ezhp-compatibility-block {
        --ezhp-font-size-2xl: 1.375rem;
        --ezhp-font-size-3xl: 1.5rem;
        --ezhp-spacing-lg: 1.25rem;
        --ezhp-spacing-xl: 1.5rem;
    }
    
    .ezhp-compatibility-block .ezhp-form {
        padding: var(--ezhp-spacing-md) !important;
    }
    
    .ezhp-compatibility-block .section {
        padding: var(--ezhp-spacing-md) !important;
    }
    
    .ezhp-compatibility-block .ez-inline-hero-img {
        max-width: 50% !important;
    }
}

@media (max-width: 480px) {
    .ezhp-compatibility-block {
        --ezhp-font-size-lg: 1rem;
        --ezhp-font-size-xl: 1.125rem;
        --ezhp-font-size-2xl: 1.25rem;
        --ezhp-spacing-md: 0.75rem;
        --ezhp-spacing-lg: 1rem;
    }
    
    .ezhp-compatibility-block .ezhp-form {
        flex-direction: column !important;
        align-items: stretch !important;
    }
    
    .ezhp-compatibility-block select,
    .ezhp-compatibility-block .ezhp-fetch-button {
        width: 100% !important;
    }
    
    .ezhp-compatibility-block .ez-inline-hero-img {
        float: none !important;
        display: block !important;
        margin: 0 auto var(--ezhp-spacing-md) auto !important;
        max-width: 80% !important;
    }
    
    .ezhp-compatibility-block .ez-inline-hero-img.ez-wrap-left,
    .ezhp-compatibility-block .ez-inline-hero-img.ez-wrap-right {
        float: none !important;
        margin: 0 auto var(--ezhp-spacing-md) auto !important;
    }
    
    /* RTL mobile - stack form vertically */
    .ezhp-compatibility-block[dir="rtl"] .ezhp-form {
        flex-direction: column !important;
        align-items: stretch !important;
    }
}


/* =============================================================================
   11. PRINT STYLES
   ============================================================================= */

@media print {
    .ezhp-compatibility-block {
        font-size: 10pt;
        color: #000 !important;
        background: #fff !important;
    }
    
    .ezhp-compatibility-block .ezhp-form {
        display: none !important;
    }
    
    .ezhp-compatibility-block .section {
        background: none !important;
        box-shadow: none !important;
        border: none !important;
        border-left: 2px solid #000 !important;
        page-break-inside: avoid;
        padding: 1rem !important;
    }
    
    .ezhp-compatibility-block h2 {
        font-size: 14pt !important;
        color: #000 !important;
        font-style: normal !important;
        border-bottom-color: #000 !important;
    }
    
    .ezhp-compatibility-block p,
    .ezhp-compatibility-block li {
        color: #000 !important;
    }
    
    .ezhp-compatibility-block strong {
        color: #000 !important;
    }
    
    .ezhp-compatibility-block em {
        color: #333 !important;
    }
    
    .ezhp-compatibility-block li::before {
        color: #666;
    }
    
    .ezhp-compatibility-block .ezhp-progress-container {
        display: none !important;
    }
    
    .ezhp-compatibility-block .ez-inline-hero-img {
        box-shadow: none !important;
        border: 1px solid #ccc;
    }
}


/* =============================================================================
   END OF ZODIAC COMPATIBILITY BLOCK MYSTICAL THEME STYLESHEET
   
   COLOR REFERENCE:
   ----------------
   Primary (dusty blue-purple): #5D6B8A
   Secondary (warm gold): #C9A962
   Tertiary (soft lavender): #9BA4C4
   
   GOOGLE FONT SUGGESTION:
   -----------------------
   <link href="https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,300;0,400;0,600;1,300;1,400&display=swap" rel="stylesheet">
   
   ============================================================================= */