/* Zenith Webmaster - Custom Styles */

/* ===== Base ===== */
:root {
    --zw-primary: #2563eb;
    --zw-secondary: #1e293b;
}

html {
    scroll-behavior: smooth;
}

body {
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
    color: var(--zw-text, #334155);
    line-height: 1.7;
}

a {
    color: var(--zw-primary);
}

a:hover {
    color: var(--zw-secondary);
}

/* ===== Navbar ===== */
.zw-navbar {
    background-color: var(--zw-navbar, var(--zw-secondary));
    padding: 0.75rem 0;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
}

.zw-logo {
    height: 40px;
    width: auto;
    object-fit: contain;
}

.zw-brand-name {
    font-size: 1.25rem;
    font-weight: 700;
    letter-spacing: 0.02em;
}

.zw-navbar .nav-link {
    color: rgba(255, 255, 255, 0.85);
    font-weight: 500;
    padding: 0.5rem 1rem;
    transition: color 0.2s;
}

.zw-navbar .nav-link:hover,
.zw-navbar .nav-link.active {
    color: #ffffff;
}

/* ===== Hero ===== */
.zw-hero {
    background: linear-gradient(135deg, var(--zw-secondary) 0%, var(--zw-accent, var(--zw-primary)) 100%);
    color: #ffffff;
    padding: 5rem 0;
    min-height: 50vh;
    display: flex;
    align-items: center;
}

.zw-hero-title {
    font-size: 2.75rem;
    font-weight: 800;
    line-height: 1.2;
    margin-bottom: 1.5rem;
}

.zw-hero-title p {
    margin: 0;
}

.zw-hero-text {
    font-size: 1.15rem;
    opacity: 0.9;
    line-height: 1.8;
}

.zw-hero-text p {
    margin-bottom: 0.75rem;
}

.zw-hero-text ul,
.zw-hero-text ol {
    padding-left: 1.25rem;
}

.zw-hero-image {
    max-height: 400px;
    width: auto;
}

/* ===== Sections ===== */
.zw-section {
    padding: 5rem 0;
    background-color: var(--zw-section-bg, #ffffff);
}

.zw-section-alt {
    background-color: var(--zw-section-alt, #f8fafc);
}

.zw-section-title {
    font-size: 2rem;
    font-weight: 700;
    color: var(--zw-heading, var(--zw-secondary));
    margin-bottom: 1.5rem;
}

.zw-section-title p {
    margin: 0;
}

.zw-section-text {
    font-size: 1.05rem;
    color: var(--zw-text, #475569);
}

.zw-section-text h3 {
    font-size: 1.3rem;
    font-weight: 600;
    color: var(--zw-heading, var(--zw-secondary));
    margin-top: 1.5rem;
    margin-bottom: 0.75rem;
}

.zw-section-text ul,
.zw-section-text ol {
    padding-left: 1.25rem;
}

.zw-section-text strong {
    color: var(--zw-heading, var(--zw-secondary));
}

/* ===== Page Header (multi-page sub-pages) ===== */
.zw-page-header {
    background: linear-gradient(135deg, var(--zw-secondary) 0%, var(--zw-accent, var(--zw-primary)) 100%);
    color: #ffffff;
    padding: 3rem 0;
}

.zw-page-title {
    font-size: 2.5rem;
    font-weight: 800;
    margin: 0;
}

/* ===== Gallery ===== */
.zw-gallery-section {
    padding: 5rem 0;
    background-color: var(--zw-section-alt, #f8fafc);
}

.zw-gallery-thumb {
    width: 100%;
    height: 200px;
    object-fit: cover;
    transition: transform 0.3s, box-shadow 0.3s;
    cursor: pointer;
}

.zw-gallery-thumb:hover {
    transform: scale(1.03);
    box-shadow: 0 8px 25px rgba(0, 0, 0, 0.15);
}

.zw-video-thumb {
    width: 100%;
    height: 200px;
    background-color: var(--zw-secondary);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: background-color 0.3s;
}

.zw-video-thumb:hover {
    background-color: var(--zw-accent, var(--zw-primary));
}

.zw-video-name {
    color: #ffffff;
    font-size: 0.85rem;
    margin-top: 0.5rem;
    opacity: 0.8;
}

/* ===== Footer ===== */
.zw-footer {
    background-color: var(--zw-footer, var(--zw-secondary));
    color: rgba(255, 255, 255, 0.8);
    padding: 3rem 0 1.5rem;
}

.zw-footer-brand {
    color: #ffffff;
    font-weight: 700;
    font-size: 1.25rem;
    margin-bottom: 0.75rem;
}

.zw-footer-heading {
    color: #ffffff;
    font-weight: 600;
    font-size: 1.1rem;
    margin-bottom: 0.75rem;
}

.zw-footer-text {
    font-size: 0.95rem;
    margin-bottom: 0.5rem;
}

.zw-footer-text a {
    color: rgba(255, 255, 255, 0.8);
    text-decoration: none;
}

.zw-footer-text a:hover {
    color: #ffffff;
    text-decoration: underline;
}

.zw-social-links {
    display: flex;
    gap: 1rem;
}

.zw-social-icon {
    color: rgba(255, 255, 255, 0.7);
    transition: color 0.2s, transform 0.2s;
}

.zw-social-icon:hover {
    color: #ffffff;
    transform: scale(1.15);
}

.zw-footer-divider {
    border-color: rgba(255, 255, 255, 0.15);
    margin: 1.5rem 0 1rem;
}

.zw-copyright {
    font-size: 0.85rem;
    color: rgba(255, 255, 255, 0.5);
    margin: 0;
}

/* Maintainer badge */
.zw-maintainer {
    font-size: 0.8rem;
    color: rgba(255, 255, 255, 0.4);
    margin: 0;
}

.zw-maintainer a {
    color: rgba(255, 255, 255, 0.55);
    text-decoration: none;
    transition: color 0.2s;
}

.zw-maintainer a:hover {
    color: rgba(255, 255, 255, 0.85);
    text-decoration: none;
}

.zw-footer-bottom--inline {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.75rem;
    flex-wrap: wrap;
}

.zw-footer-bottom--inline .zw-footer-separator {
    color: rgba(255, 255, 255, 0.25);
    font-size: 0.75rem;
}

/* ===== Responsive ===== */
@media (max-width: 991.98px) {
    .zw-hero {
        padding: 3rem 0;
        min-height: auto;
    }

    .zw-hero-title {
        font-size: 2rem;
    }

    .zw-section {
        padding: 3rem 0;
    }

    .zw-section-title {
        font-size: 1.75rem;
    }
}

@media (max-width: 575.98px) {
    .zw-hero-title {
        font-size: 1.75rem;
    }

    .zw-hero-image {
        max-height: 250px;
    }

    .zw-gallery-thumb,
    .zw-video-thumb {
        height: 150px;
    }

    .zw-page-title {
        font-size: 1.75rem;
    }
}

/* ===== Mouse Effects ===== */
.zw-tilt-target {
    transition: transform 0.15s ease-out;
    will-change: transform;
}

.zw-parallax-target {
    transition: transform 0.2s ease-out;
    will-change: transform;
}

.zw-glow-target {
    transition: box-shadow 0.2s ease-out;
    will-change: box-shadow;
}

@media (hover: none) {
    .zw-tilt-target,
    .zw-parallax-target,
    .zw-glow-target {
        transition: none !important;
        will-change: auto !important;
    }
}

/* ===== Cursor Footsteps ===== */
.zw-footstep {
    position: fixed;
    pointer-events: none;
    background-size: contain;
    background-repeat: no-repeat;
    z-index: 9999;
    animation: zw-footstep-fade var(--zw-foot-fade, 5s) ease-out forwards;
}

@keyframes zw-footstep-fade {
    from { opacity: var(--zw-foot-opacity, 0.7); }
    to { opacity: 0; }
}

/* ===== Cursor Pesky Fly ===== */
.zw-pesky-fly {
    position: fixed;
    pointer-events: none;
    z-index: 9998;
    width: 15px;
    height: 15px;
    background-size: contain;
    background-repeat: no-repeat;
    image-rendering: pixelated;
}

.zw-fly-trail {
    position: fixed;
    pointer-events: none;
    z-index: 9997;
    width: 4px;
    height: 4px;
    border-radius: 50%;
    animation: zw-fly-trail-fade var(--zw-fly-trail-fade, 2s) ease-out forwards;
}

@keyframes zw-fly-trail-fade {
    from { opacity: 0.6; }
    to { opacity: 0; }
}

/* ===== Parallax Depth ===== */
.zw-depth-layer {
    transition: transform var(--zw-depth-spring, 250ms) cubic-bezier(0.25, 0.46, 0.45, 0.94);
    will-change: transform;
}

.zw-depth-active .zw-depth-layer {
    transition: none;
}

/* ===== Smooth Parallax ===== */
.zw-smooth-layer {
    transition: transform var(--zw-smooth-dur, 1s) cubic-bezier(0.19, 1, 0.22, 1);
    will-change: transform;
}

/* ===== Particle Swarm ===== */
.zw-particle-canvas {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    pointer-events: none;
    z-index: 9996;
}

/* ===== Mutant Cursor ===== */
.zw-mutant-cursor {
    position: fixed;
    pointer-events: none;
    z-index: 10000;
}

.zw-mutant-cursor__lines {
    transform: scale(0.8) rotate(0);
    transform-origin: 0.5em 0.5em;
    transition: all var(--zw-mc-transition, 0.6s) cubic-bezier(0.76, -0.53, 0.32, 1.4);
}

.zw-mutant-cursor__lines line {
    transition: all var(--zw-mc-transition, 0.6s) cubic-bezier(0.76, -0.53, 0.32, 1.4);
    transform-origin: 0.5em 0.5em;
}

.zw-mutant-cursor__lines line:nth-of-type(1) {
    transform: rotate(45deg);
}

.zw-mutant-cursor__lines line:nth-of-type(2) {
    transform: scaleX(0.65) translateY(-0.35em);
}

.zw-mutant-cursor__lines line:nth-of-type(3) {
    transform: scaleY(0.65) rotate(90deg) translateY(0.35em);
}

.zw-mutant-cursor--action {
    animation: zw-mc-bounce 1s linear infinite;
}

.zw-mutant-cursor--close .zw-mutant-cursor__lines {
    transform: scale(0.8) rotate(360deg);
}

.zw-mutant-cursor--close .zw-mutant-cursor__lines line:nth-child(1) {
    transform: rotate(45deg);
}

.zw-mutant-cursor--close .zw-mutant-cursor__lines line:nth-child(2) {
    transform: scaleX(0) translateY(0);
}

.zw-mutant-cursor--close .zw-mutant-cursor__lines line:nth-child(3) {
    transform: scaleY(1) rotate(-45deg) translateY(0);
}

@keyframes zw-mc-bounce {
    30% { transform: translate(0.5em, 0.5em); }
    40% { transform: translate(0, 0); }
    50% { transform: translate(0.25em, 0.25em); }
    60%, 100% { transform: translate(0, 0); }
}

.zw-mutant-active,
.zw-mutant-active *,
.zw-mutant-active *:hover {
    cursor: none !important;
}

/* ===== Rainbow Trail ===== */
.zw-rainbow-container {
    position: fixed;
    pointer-events: none;
    z-index: 9994;
    animation: zw-rainbow-scale var(--zw-rb-scale-dur, 0.5s) linear forwards;
    transform: scale(0);
    opacity: 0;
}

.zw-rainbow-inner {
    border-radius: var(--zw-rb-radius, 10px);
    filter: hue-rotate(0deg);
    animation: zw-rainbow-hue var(--zw-rb-hue-dur, 2.5s) linear infinite;
    height: 100%;
    width: 100%;
}

@keyframes zw-rainbow-hue {
    50% { filter: hue-rotate(1000deg); }
    100% { filter: hue-rotate(2000deg); transform: rotate(360deg); }
}

@keyframes zw-rainbow-scale {
    50% { transform: scale(0.5); opacity: 1; }
    100% { transform: scale(0.25); opacity: 0; }
}

/* ===== Bubble Trail ===== */
.zw-bubble {
    position: fixed;
    pointer-events: none;
    z-index: 9995;
    border-radius: 50%;
    will-change: transform, opacity;
}

/* ===== Expanding Rings ===== */
.zw-expanding-ring {
    position: fixed;
    pointer-events: none;
    z-index: 9995;
    border-radius: 50%;
    border-style: solid;
    animation: zw-ring-expand var(--zw-ring-dur, 2s) ease-out forwards;
}

@keyframes zw-ring-expand {
    from {
        width: var(--zw-ring-start, 10px);
        height: var(--zw-ring-start, 10px);
        border-width: 1px;
        opacity: var(--zw-ring-opacity, 1);
    }
    to {
        width: var(--zw-ring-end, 200px);
        height: var(--zw-ring-end, 200px);
        border-width: 50px;
        opacity: 0;
    }
}

/* ===== Rotating Cursor ===== */
.zw-rotating-cursor {
    position: fixed;
    pointer-events: none;
    z-index: 10000;
    will-change: transform;
}

.zw-rotating-cursor svg {
    will-change: transform;
    transition: transform var(--zw-rc-rotation, 0.1s) linear;
}

.zw-rotating-active,
.zw-rotating-active *,
.zw-rotating-active *:hover {
    cursor: none !important;
}
