/* Back-to-top button, flash messages and shared blocks (cookie consent is in consent.css). */
/* Back to top: square button bottom-left so it never collides with WhatsApp. */
.zn-totop {
    position: fixed;
    left: 24px; bottom: 24px;
    z-index: 990;
    width: 48px; height: 48px;
    display: inline-flex; align-items: center; justify-content: center;
    border: 0;
    background: var(--primary);
    color: var(--white);
    opacity: 0;
    visibility: hidden;
    transform: translateY(16px);
    transition: all 0.3s var(--ease);
}
.zn-totop.is-visible { opacity: 1; visibility: visible; transform: none; }
.zn-totop:hover { background: var(--secondary); }

/* Django messages shown above page content. */
.zn-messages { padding-top: 24px; }
/* Notices in the site's language: white card, brand bar and icon, never
   the stock green and red boxes. */
.zn-messages .alert, .alert-danger {
    position: relative; display: flex; align-items: center; gap: 14px; padding: 16px 48px 16px 18px;
    border: 1px solid var(--border); border-left: 4px solid var(--secondary); border-radius: 0;
    background: var(--white); color: var(--secondary); font-weight: 500; box-shadow: var(--shadow);
}
.zn-messages .alert::before, .alert-danger::before { font: 900 18px 'Font Awesome 6 Free'; content: '05a'; color: var(--secondary); }
.zn-messages .alert-success::before { content: '058'; color: var(--primary); }
.zn-messages .alert-error, .zn-messages .alert-danger, .zn-messages .alert-warning, .alert-danger { border-left-color: var(--primary); }
.zn-messages .alert-error::before, .zn-messages .alert-danger::before, .zn-messages .alert-warning::before, .alert-danger::before { content: '06a'; color: var(--primary); }
.zn-messages .alert .btn-close { top: 50%; transform: translateY(-50%); padding: 12px; }

/* Sidebar call-to-action box (articles, services, careers). */
.zn-quote-box { position: relative; overflow: hidden; padding: 50px 30px; text-align: center; background: repeating-linear-gradient(120deg, transparent 0 26px, rgba(255, 255, 255, 0.03) 26px 27px), var(--secondary); color: rgba(255, 255, 255, 0.8); }
.zn-quote-box__icon { width: 80px; height: 80px; margin: 0 auto 20px; display: flex; align-items: center; justify-content: center; border-radius: 50%; background: var(--primary); color: var(--white); font-size: 36px; box-shadow: 0 0 0 10px rgba(255, 255, 255, 0.08); }
.zn-quote-box h2 { color: var(--white); font-size: 24px; margin-bottom: 8px; }
.zn-quote-box__phone { display: block; margin: 10px 0 24px; color: var(--white); font-size: 22px; font-weight: 700; }
.zn-quote-box__phone:hover { color: var(--primary); }

/* Blue strip (newsletter-two on the reference) with call box and button. */
.zn-cta-band { position: relative; overflow: hidden; padding: 68px 0 70px; background-color: var(--secondary); }
.zn-cta-band::before { content: ''; position: absolute; left: -120px; top: -260px; width: 520px; height: 520px; border-radius: 50%; background: rgba(255, 255, 255, 0.04); }
.zn-cta-band::after { content: ''; position: absolute; right: 8%; top: 0; bottom: 0; width: 140px; background: rgba(255, 255, 255, 0.04); transform: skewX(-30deg); }
.zn-cta-band .container { position: relative; z-index: 2; display: flex; align-items: center; justify-content: space-between; gap: 30px; flex-wrap: wrap; }
.zn-cta-band h2 { margin: 0; max-width: 560px; color: var(--white); font-size: 40px; font-weight: 700; }
.zn-cta-band__actions { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.zn-cta-band__call { display: flex; align-items: center; gap: 14px; height: 56px; padding: 0 22px; background: var(--white); color: var(--secondary); font-weight: 600; }
.zn-cta-band__call .zn-icon { color: var(--primary); font-size: 22px; }
.zn-cta-band__call:hover { color: var(--primary); }
@media (max-width: 767px) { .zn-cta-band h2 { font-size: 32px; } }
