/* ==========================================================================
   components.css — Raviva Dental
   Styling for reusable partials in /components that appear on more than
   one page (see includes/header.php — loaded on every page, right after
   base.css, so these rules are always available regardless of which
   page-specific stylesheets are also loaded).
   ========================================================================== */

/* ---------- CTA banner (components/cta-banner.php) ----------------------
   Previously lived only in home.css, so the identical markup used on
   service pages, team.php, our-dentists.php and testimonials.php rendered
   completely unstyled there. Centralised here and loaded site-wide so the
   banner looks the same everywhere it's used. */
.cta-banner {
    background: linear-gradient(120deg, var(--brown) 25%, var(--brown-deep) 75%);
    color: var(--white);
    text-align: center;
    border-radius: 30px;
    max-width: 1180px;
    margin: 0 auto;
    padding: 70px 30px;
}

.cta-banner h2 { color: var(--white); }
.cta-banner p { color: rgba(255,255,255,0.85); max-width: 520px; margin: 0 auto 30px; }
.cta-banner .btn-outline { border-color: var(--white); color: var(--white); }
.cta-banner .btn-outline:hover { background: var(--white); color: var(--brown-deep); }

@media (max-width: 600px) {
    .cta-banner { padding: 50px 22px; border-radius: 20px; }
}

/* ---------- Image frames (components/image-frame.php) -------------------
   A consistent, responsive way to present photos anywhere on the site —
   clinic photos, team headshots, service photos, before/after shots, etc.
   Drop new images into assets/images/ (see the clinic/, team/, services/
   and frames/ subfolders) and wrap them with render_image_frame(). */
.img-frame {
    margin: 0;
    display: block;
    width: 100%;
}

.img-frame-inner {
    display: block;
    width: 100%;
    overflow: hidden;
    position: relative;
    background: var(--ice);
}

.img-frame-inner img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.img-frame figcaption {
    margin-top: 10px;
    font-size: 13px;
    color: var(--ink-soft);
    text-align: center;
}

/* Rounded — soft corners + shadow, the default site look */
.img-frame--rounded .img-frame-inner {
    border-radius: 20px;
    box-shadow: var(--shadow-soft);
}

/* Circle — for headshots / avatar-style photos */
.img-frame--circle .img-frame-inner {
    border-radius: 50%;
}

/* Accent — a bold border in the brand gold, for feature callouts */
.img-frame--accent .img-frame-inner {
    border: 6px solid var(--brown-mid);
    border-radius: 16px;
}

/* Polaroid — a playful tilted frame with a deep bottom margin, nice for
   informal clinic / team candid shots */
.img-frame--polaroid {
    background: var(--white);
    padding: 14px 14px 34px;
    border-radius: 6px;
    box-shadow: 0 12px 30px rgba(0,0,0,0.15);
    transform: rotate(-1.5deg);
    transition: transform 0.3s ease;
}

.img-frame--polaroid .img-frame-inner {
    border-radius: 2px;
}

.img-frame--polaroid:hover {
    transform: rotate(0deg) scale(1.02);
}

/* ---------- Responsive ---------- */
@media (max-width: 600px) {
    .img-frame--polaroid {
        transform: none;
        padding: 10px 10px 26px;
    }
    .img-frame--polaroid:hover { transform: none; }
    .img-frame--rounded .img-frame-inner,
    .img-frame--accent .img-frame-inner {
        border-radius: 14px;
    }
}

@media (prefers-reduced-motion: reduce) {
    .img-frame--polaroid { transition: none; }
}
