
/* ==========================================
   VERSE — BLOG LISTING V2
   Compact / Atmospheric / Editorial
========================================== */

/* ==========================================
   01. THEME VARIABLES
========================================== */

.verse-blog {
    --verse-bg: #080b20;
    --verse-text: #f5f3ff;
    --verse-muted: #b4b8d3;

    --verse-pink: #ff397c;
    --verse-cyan: #39dcff;
    --verse-purple: #894aff;

    --verse-surface: #14162e;
    --verse-line: rgba(150, 150, 210, .28);

    margin: 0;
    color: var(--verse-text);
    background: var(--verse-bg);
    background-image: none;

    font: 500 16px/1.7 "DM Sans", sans-serif;

    -webkit-font-smoothing: antialiased;
}

/* LIGHT MODE */

html[data-theme="light"] .verse-blog {
    --verse-bg: #f0e7f8;
    --verse-text: #17112f;
    --verse-muted: #514c6e;

    --verse-pink: #e80065;
    --verse-cyan: #007da8;
    --verse-purple: #7543d9;

    --verse-surface: #e4d9f4;
    --verse-line: rgba(60, 40, 100, .23);
}

/* ==========================================
   02. GLOBAL RESETS
========================================== */

.verse-blog *,
.verse-blog *::before,
.verse-blog *::after {
    box-sizing: border-box;
}

.verse-blog .effect {
    opacity: 1;
    animation: none;
    clip-path: none;
    transform: none;
    overflow: clip;
}

.verse-blog img {
    image-rendering: auto;
}

.verse-blog h1,
.verse-blog h2,
.verse-blog h3 {
    font-family: "Barlow Condensed", sans-serif;
    font-weight: 900;
    letter-spacing: -.045em;
    overflow-wrap: normal;
}

.verse-blog .eyebrow {
    margin: 0 0 24px;

    color: var(--verse-cyan);

    font: 800 11px/1.5 "DM Sans", sans-serif;
    letter-spacing: .16em;
}

.verse-blog .eyebrow::before {
    content: none;
}

/* ==========================================
   03. NAVIGATION
========================================== */

.verse-blog .navbar {
    position: relative;
    z-index: 20;

    max-width: 1440px;

    padding:
        22px
        clamp(20px, 5vw, 70px);

    border-bottom: 1px solid var(--verse-line);
}

.verse-blog .logo {
    color: var(--verse-text);

    font: 900 25px/1 "Barlow Condensed", sans-serif;

    letter-spacing: -.03em;
    text-transform: uppercase;
}

.verse-blog .logo img {
    width: 42px;
    height: 42px;

    object-fit: cover;
    border-radius: 50%;

    box-shadow:
        -2px 0 var(--verse-cyan),
         2px 0 var(--verse-pink);
}

.verse-blog .navbar nav a {
    color: var(--verse-muted);

    font: 800 12px "DM Sans", sans-serif;

    letter-spacing: .04em;
    text-transform: uppercase;

    transition: color .2s ease;
}

.verse-blog .navbar nav a:hover,
.verse-blog .navbar nav a[aria-current="page"] {
    color: var(--verse-pink);
}

.verse-blog .theme-toggle {
    padding: 8px 12px;

    color: var(--verse-text);
    background: transparent;

    border: 1px solid var(--verse-purple);
    box-shadow: none;

    font: 800 11px "DM Sans", sans-serif;

    letter-spacing: .05em;
}

.verse-blog .theme-toggle:hover,
.verse-blog .theme-toggle:focus-visible {
    color: var(--verse-cyan);
    border-color: var(--verse-cyan);
    box-shadow: none;
}

/* ==========================================
   04. COMPACT BLOG HERO
========================================== */

.verse-blog .page-hero {
    position: relative;
    isolation: isolate;

    display: block;

    width: 100%;
    max-width: 1440px;
    min-height: auto;

    margin: 0 auto;

    padding:
        65px
        clamp(20px, 5vw, 70px)
        45px;

    text-align: left;

    overflow: hidden;

    background: transparent;
    border: none;
    box-shadow: none;
}

.verse-blog .blog-hero-content {
    position: relative;
    z-index: 2;
}

/* ==========================================
   05. HERO ATMOSPHERE
========================================== */

.verse-blog .verse-atmosphere {
    position: absolute;
    z-index: -1;

    inset: 0;

    overflow: hidden;
    pointer-events: none;

    background:
        radial-gradient(
            ellipse at 85% 15%,
            rgba(136, 45, 255, .20),
            transparent 48%
        ),

        radial-gradient(
            ellipse at 5% 80%,
            rgba(236, 26, 108, .10),
            transparent 45%
        ),

        radial-gradient(
            ellipse at 75% 95%,
            rgba(25, 155, 255, .10),
            transparent 45%
        );
}

/* Subtle print texture */

.verse-blog .verse-atmosphere::after {
    content: "";

    position: absolute;
    inset: 0;

    background-image:
        radial-gradient(
            rgba(255, 255, 255, .18) .7px,
            transparent .9px
        );

    background-size: 6px 6px;
    opacity: .12;
}

/* Atmospheric orbs */

.verse-blog .verse-orb {
    position: absolute;

    border-radius: 50%;

    filter: blur(90px);
    opacity: .25;

    animation: blogFloat 13s ease-in-out infinite alternate;
}

.verse-blog .orb-one {
    width: 350px;
    height: 350px;

    top: -60%;
    right: -5%;

    background: #ad35ff;
}

.verse-blog .orb-two {
    width: 250px;
    height: 250px;

    bottom: -80%;
    left: -10%;

    background: #ed256c;

    animation-delay: -4s;
}

.verse-blog .orb-three {
    width: 280px;
    height: 280px;

    bottom: -80%;
    right: 20%;

    background: #126bff;

    animation-delay: -8s;
}

@keyframes blogFloat {
    from {
        transform: translate(0, 0) scale(1);
    }

    to {
        transform: translate(25px, -25px) scale(1.1);
    }
}

/* ==========================================
   06. HERO TYPOGRAPHY
========================================== */

.verse-blog .verse-heading {
    display: flex;
    flex-wrap: wrap;

    align-items: baseline;

    column-gap: .15em;
    row-gap: 0;

    width: 100%;
    max-width: 100%;

    margin: 0;

    color: var(--verse-text);

    font-family: "Barlow Condensed", sans-serif;

    font-size: clamp(55px, 7vw, 105px);
    font-weight: 900;

    line-height: .95;
    letter-spacing: -.055em;

    text-transform: uppercase;
}

/* Reset inherited H1 decorations */

.verse-blog .verse-heading::before,
.verse-blog .verse-heading::after {
    content: none;
}

/* Heading fragments */

.verse-blog .heading-line {
    display: inline-block;
    width: auto;

    margin: 0;
}

/* SEO NOTES */

.verse-blog .heading-line:first-child {
    color: var(--verse-text);

    text-shadow:
        -2px 0 var(--verse-cyan),
         2px 0 var(--verse-pink);
}

/* Ampersand */

.verse-blog .heading-shift {
    margin: 0;

    color: var(--verse-pink);

    text-shadow:
        -3px 1px var(--verse-cyan),
         3px -1px var(--verse-purple);
}

/* EXPERIMENTS */

.verse-blog .heading-final {
    margin: 0;

    color: var(--verse-text);

    text-shadow:
        -2px 0 var(--verse-purple),
         2px 0 var(--verse-cyan);
}

.verse-blog .period {
    color: var(--verse-pink);
}

/* HERO DESCRIPTION */

.verse-blog .blog-hero-description {
    max-width: 650px;

    margin: 25px 0 0;

    color: var(--verse-muted);

    font: 500 16px/1.7 "DM Sans", sans-serif;
}

/* HERO BOTTOM */

.verse-blog .blog-hero-bottom {
    display: flex;
    justify-content: space-between;
    align-items: center;

    flex-wrap: wrap;
    gap: 15px;

    margin-top: 35px;
    padding-top: 15px;

    border-top: 1px solid var(--verse-line);

    color: var(--verse-muted);

    font: 800 10px "DM Sans", sans-serif;

    letter-spacing: .13em;
}

.verse-blog .blog-hero-bottom span:last-child {
    color: var(--verse-cyan);
}

/* Remove oversized decorative background word */

.verse-blog .hero-background-word {
    display: none;
}

/* ==========================================
   07. BLOG ARCHIVE
========================================== */

.verse-blog .blog-list {
    display: block;

    width: 100%;
    max-width: 1440px;

    margin: 0 auto;

    padding:
        55px
        clamp(20px, 5vw, 70px)
        100px;

    border-top: 1px solid var(--verse-line);
}

/* Archive heading */

.verse-blog .blog-list-header {
    display: flex;

    justify-content: space-between;
    align-items: end;

    flex-wrap: wrap;
    gap: 25px;

    margin-bottom: 35px;
}

.verse-blog .blog-list-header .eyebrow {
    margin-bottom: 18px;
}

.verse-blog .blog-list-header h2 {
    margin: 0;

    color: var(--verse-text);

    font: 900 clamp(48px, 5vw, 72px)/.9 "Barlow Condensed", sans-serif;

    letter-spacing: -.055em;
    text-transform: uppercase;
}

.verse-blog .blog-list-header h2 span {
    color: var(--verse-pink);

    text-shadow:
        -2px 0 var(--verse-cyan);
}

.verse-blog .blog-count {
    padding-bottom: 5px;

    color: var(--verse-muted);

    font: 800 11px "DM Sans", sans-serif;

    letter-spacing: .14em;
    white-space: nowrap;
}

/* ==========================================
   08. BLOG GRID
========================================== */

.verse-blog .blog-grid {
    display: grid;

    grid-template-columns:
        repeat(2, minmax(0, 1fr));

    gap: 25px;
    align-items: stretch;
}

/* ==========================================
   09. ARTICLE CARDS
========================================== */

.verse-blog .blog-card {
    position: relative;
    isolation: isolate;

    display: flex;
    flex-direction: column;

    width: 100%;
    min-width: 0;
    min-height: 370px;

    margin: 0;
    padding: 30px;

    background:
        linear-gradient(
            145deg,
            rgba(137, 74, 255, .13),
            transparent 75%
        ),
        var(--verse-surface);

    border: 1px solid var(--verse-line);
    border-radius: 0;

    box-shadow: none;

    overflow: hidden;

    transition:
        transform .3s ease,
        border-color .3s ease;
}

.verse-blog .blog-card:hover {
    transform: translateY(-7px);

    background-color: var(--verse-surface);
    border-color: var(--verse-cyan);

    box-shadow: none;
}

/* Card metadata */

.verse-blog .blog-card-top {
    position: relative;
    z-index: 2;

    display: flex;

    justify-content: space-between;
    align-items: center;

    flex-wrap: wrap;
    gap: 15px;

    margin-bottom: 45px;
}

.verse-blog .blog-index {
    color: var(--verse-cyan);

    font: 800 10px "DM Sans", sans-serif;
    letter-spacing: .14em;
}

.verse-blog .blog-category {
    padding: 6px 12px;

    color: var(--verse-pink);
    background: rgba(255, 57, 124, .08);

    border: 1px solid var(--verse-pink);

    font: 800 10px "DM Sans", sans-serif;
    letter-spacing: .12em;
}

/* ==========================================
   10. ARTICLE CONTENT
========================================== */

.verse-blog .blog-card-content {
    position: relative;
    z-index: 2;

    flex: 1;
}

.verse-blog .blog-card h3 {
    margin: 0 0 20px;

    font: 900 clamp(42px, 4.2vw, 65px)/.92 "Barlow Condensed", sans-serif;

    letter-spacing: -.045em;
    text-transform: uppercase;
}

.verse-blog .blog-card h3 a {
    color: var(--verse-text);

    text-decoration: none;

    transition: color .2s ease;
}

.verse-blog .blog-card h3 a:hover {
    color: var(--verse-cyan);
}

.verse-blog .blog-card h3 span {
    color: var(--verse-pink);
}

/* Article summary */

.verse-blog .blog-card-content > p {
    max-width: 460px;

    margin: 0 0 35px;

    color: var(--verse-muted);

    font: 500 15px/1.75 "DM Sans", sans-serif;
}

/* ==========================================
   11. READ MORE LINK
========================================== */

.verse-blog .blog-read-more {
    position: relative;
    z-index: 2;

    display: flex;

    justify-content: space-between;
    align-items: center;

    gap: 20px;

    width: 100%;

    margin: auto 0 0;
    padding: 18px 0 0;

    color: var(--verse-text);
    background: transparent;

    border: none;
    border-top: 1px solid var(--verse-line);
    border-radius: 0;

    box-shadow: none;

    font: 800 11px "DM Sans", sans-serif;
    letter-spacing: .1em;

    text-decoration: none;

    transition: color .2s ease;
}

.verse-blog .blog-read-more span:last-child {
    color: var(--verse-pink);

    font-size: 26px;
    line-height: 1;

    transition: transform .2s ease;
}

.verse-blog .blog-read-more:hover {
    color: var(--verse-cyan);

    background: transparent;
    box-shadow: none;

    transform: none;
}

.verse-blog .blog-read-more:hover span:last-child {
    transform: translate(4px, -4px);
}

/* ==========================================
   12. BACKGROUND ARTICLE NUMBER
========================================== */

.verse-blog .blog-card-background {
    position: absolute;
    z-index: -1;

    right: -10px;
    bottom: 45px;

    color: var(--verse-purple);

    font: 900 210px/.8 "Barlow Condensed", sans-serif;

    letter-spacing: -.08em;

    opacity: .10;
    pointer-events: none;
}

/* ==========================================
   13. ARCHIVE FOOTER
========================================== */

.verse-blog .blog-list-bottom {
    display: flex;

    justify-content: space-between;
    align-items: center;

    margin-top: 65px;
    padding-top: 20px;

    border-top: 1px solid var(--verse-line);

    color: var(--verse-muted);

    font: 800 10px "DM Sans", sans-serif;

    letter-spacing: .14em;
}

.verse-blog .blog-list-bottom span:last-child {
    color: var(--verse-pink);
    font-size: 30px;
}

/* ==========================================
   14. CTA
========================================== */

.verse-blog .blog-cta {
    position: relative;
    isolation: isolate;

    max-width: 1440px;

    margin: 0 auto;
    padding: 110px 30px;

    text-align: center;

    border-top: 1px solid var(--verse-line);

    overflow: hidden;
}

.verse-blog .cta-atmosphere {
    position: absolute;
    z-index: -1;

    inset: 0;

    background:
        radial-gradient(
            ellipse at 50% 80%,
            rgba(255, 57, 124, .18),
            transparent 55%
        ),

        radial-gradient(
            ellipse at 75% 20%,
            rgba(57, 220, 255, .10),
            transparent 50%
        );
}

.verse-blog .blog-cta h2 {
    margin: 0 auto 40px;

    color: var(--verse-text);

    font: 900 clamp(75px, 11vw, 145px)/.8 "Barlow Condensed", sans-serif;

    letter-spacing: -.065em;
}

.verse-blog .blog-cta h2 span {
    color: var(--verse-pink);

    text-shadow:
        -3px 0 var(--verse-cyan),
         3px 0 var(--verse-purple);
}

/* ==========================================
   15. BUTTONS
========================================== */

.verse-blog .button {
    display: inline-flex;

    justify-content: space-between;
    align-items: center;

    gap: 35px;

    padding: 16px 23px;

    border: 1px solid transparent;
    border-radius: 0;

    font: 800 12px "DM Sans", sans-serif;

    letter-spacing: .06em;
    text-decoration: none;

    transition: transform .2s ease;
}

.verse-blog .button.primary {
    color: #fff;

    background: var(--verse-pink);

    box-shadow:
        4px 4px 0 var(--verse-cyan);
}

.verse-blog .button span {
    font-size: 21px;
    line-height: .7;
}

.verse-blog .button:hover {
    transform: translateY(-4px);

    box-shadow:
        4px 4px 0 var(--verse-cyan);
}

.verse-blog .cta-endnote {
    display: block;

    margin-top: 70px;

    color: var(--verse-muted);

    font: 800 10px "DM Sans", sans-serif;

    letter-spacing: .17em;
}

/* ==========================================
   16. FOOTER
========================================== */

.verse-blog .retro-footer {
    padding: 40px 25px;

    color: var(--verse-muted);

    background: rgba(0, 0, 0, .2);

    border-top: 1px solid var(--verse-line);

    font-family: "DM Sans", sans-serif;
}

.verse-blog .footer-nav a {
    color: var(--verse-text);

    font: 800 12px "DM Sans", sans-serif;

    letter-spacing: .08em;
}

.verse-blog .footer-nav a:hover {
    color: var(--verse-pink);
}

.verse-blog .footer-link-icon {
    color: var(--verse-text);
}

.verse-blog .footer-link-icon svg {
    fill: currentColor;
}

.verse-blog .footer-copy {
    color: var(--verse-muted);

    font: 500 12px "DM Sans", sans-serif;
}

/* ==========================================
   17. TABLET
========================================== */

@media (max-width: 800px) {

    .verse-blog .navbar {
        flex-wrap: wrap;
    }

    .verse-blog .navbar nav {
        width: 100%;

        flex-wrap: wrap;
        gap: 15px;
    }

    .verse-blog .page-hero {
        padding:
            60px
            clamp(20px, 5vw, 45px)
            40px;
    }

    .verse-blog .verse-heading {
        font-size: clamp(58px, 8vw, 85px);
    }

    .verse-blog .blog-grid {
        grid-template-columns: 1fr;
    }

    .verse-blog .blog-card {
        min-height: 340px;
    }

    .verse-blog .blog-list {
        padding:
            50px
            clamp(20px, 5vw, 45px)
            85px;
    }
}

/* ==========================================
   18. MOBILE
========================================== */

@media (max-width: 520px) {

    /* HERO */

    .verse-blog .page-hero {
        padding:
            45px
            22px
            30px;
    }

    .verse-blog .eyebrow {
        margin-bottom: 20px;
        font-size: 10px;
    }

    .verse-blog .verse-heading {
        font-size: clamp(44px, 11vw, 65px);

        column-gap: .12em;
        row-gap: .03em;

        line-height: .95;
    }

    .verse-blog .heading-shift {
        margin: 0;
    }

    .verse-blog .blog-hero-description {
        margin-top: 20px;

        font-size: 14px;
        line-height: 1.7;
    }

    .verse-blog .blog-hero-bottom {
        margin-top: 25px;
        padding-top: 14px;

        flex-direction: column;
        align-items: flex-start;

        gap: 10px;

        font-size: 9px;
    }

    /* ARCHIVE */

    .verse-blog .blog-list {
        padding:
            40px
            22px
            75px;
    }

    .verse-blog .blog-list-header {
        flex-direction: column;
        align-items: flex-start;

        gap: 18px;

        margin-bottom: 30px;
    }

    .verse-blog .blog-list-header h2 {
        font-size: clamp(50px, 12vw, 70px);
    }

    .verse-blog .blog-count {
        font-size: 10px;
    }

    /* ARTICLE CARDS */

    .verse-blog .blog-card {
        min-height: 330px;
        padding: 25px;
    }

    .verse-blog .blog-card-top {
        margin-bottom: 40px;
    }

    .verse-blog .blog-card h3 {
        font-size: clamp(42px, 10vw, 58px);
    }

    .verse-blog .blog-card-content > p {
        font-size: 14px;
    }

    .verse-blog .blog-card-background {
        font-size: 160px;
    }

    .verse-blog .blog-list-bottom {
        margin-top: 50px;
    }

    /* CTA */

    .verse-blog .blog-cta {
        padding: 90px 22px;
    }

    .verse-blog .blog-cta h2 {
        font-size: clamp(65px, 14vw, 100px);
    }

    .verse-blog .cta-endnote {
        margin-top: 55px;
        font-size: 9px;
    }
}

/* ==========================================
   19. ACCESSIBILITY
========================================== */

@media (prefers-reduced-motion: reduce) {

    .verse-blog *,
    .verse-blog *::before,
    .verse-blog *::after {
        animation: none !important;
        transition: none !important;
    }
}
