/*
 * Knight Zhou Blog - Blue Black UI refresh
 * Minimal-intrusion override for Hexo Theme Matery.
 * Only presentation styles are changed; content, routes and Hexo logic stay intact.
 */

:root {
    --kz-bg: #070a10;
    --kz-bg-soft: #0a0f18;
    --kz-surface: #0f1622;
    --kz-surface-2: #131c2b;
    --kz-surface-3: #182335;
    --kz-border: rgba(132, 164, 212, .14);
    --kz-border-strong: rgba(116, 163, 236, .26);
    --kz-text: #edf3fc;
    --kz-text-soft: #b8c3d5;
    --kz-muted: #7f8ca1;
    --kz-primary: #4d8dff;
    --kz-primary-strong: #2f72eb;
    --kz-primary-soft: rgba(77, 141, 255, .14);
    --kz-cyan: #6bd6ff;
    --kz-shadow: 0 20px 60px rgba(0, 0, 0, .28);
    --kz-radius: 16px;
    --kz-radius-sm: 10px;
}

html {
    background: var(--kz-bg);
    scroll-behavior: smooth;
}

body {
    color: var(--kz-text-soft);
    background:
        radial-gradient(circle at 12% -10%, rgba(48, 101, 205, .18), transparent 34rem),
        radial-gradient(circle at 88% 0%, rgba(31, 91, 175, .12), transparent 28rem),
        var(--kz-bg);
    font-family: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
    letter-spacing: .01em;
}

::selection {
    color: #fff;
    background: rgba(77, 141, 255, .7);
}

a {
    color: var(--kz-text);
    transition: color .2s ease, background .2s ease, border-color .2s ease, transform .2s ease, opacity .2s ease;
}

a:hover {
    color: var(--kz-cyan);
}

/* ---------- navigation ---------- */
.navbar-fixed,
.navbar-fixed nav {
    height: 64px;
}

#headNav {
    height: 64px;
    line-height: 64px;
    background: rgba(7, 10, 16, .82) !important;
    border-bottom: 1px solid var(--kz-border);
    box-shadow: none !important;
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
}

#navContainer.container {
    width: min(92%, 1240px);
    max-width: 1240px;
}

#headNav .brand-logo {
    height: 64px;
}

#headNav .brand-logo a {
    display: inline-flex;
    align-items: center;
    gap: 9px;
    height: 64px;
    padding: 0;
    color: var(--kz-text) !important;
}

#headNav .brand-logo a::before {
    content: "KZ";
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    border: 1px solid rgba(109, 166, 255, .38);
    border-radius: 10px;
    color: #dfeaff;
    background: linear-gradient(145deg, rgba(76, 139, 255, .24), rgba(30, 73, 147, .12));
    box-shadow: inset 0 0 18px rgba(77, 141, 255, .08);
    font-size: 12px;
    font-weight: 800;
    letter-spacing: .1em;
}

#headNav .logo-span {
    color: var(--kz-text) !important;
    font-size: 16px;
    font-weight: 650;
    letter-spacing: .02em;
}

#headNav .nav-menu > li > a {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    height: 38px;
    margin: 13px 2px;
    padding: 0 13px;
    border-radius: 9px;
    color: var(--kz-muted) !important;
    line-height: 38px;
    font-size: 14px;
}

#headNav .nav-menu > li > a:hover,
#headNav .nav-menu > li.active > a {
    color: var(--kz-text) !important;
    background: rgba(255, 255, 255, .055);
}

#headNav .nav-menu i {
    color: inherit !important;
}

#headNav .sub-nav {
    min-width: 160px;
    padding: 7px;
    border: 1px solid var(--kz-border);
    border-radius: 12px;
    background: rgba(14, 20, 31, .98) !important;
    box-shadow: var(--kz-shadow);
}

#headNav .sub-nav li a {
    border-radius: 8px;
    color: var(--kz-text-soft) !important;
}

#headNav .sub-nav li a:hover {
    background: var(--kz-primary-soft) !important;
    color: #fff !important;
}

.sidenav-trigger {
    color: var(--kz-text) !important;
}

/* ---------- home hero ---------- */
.forum-hero {
    position: relative;
    overflow: hidden;
    min-height: 345px;
    margin-top: 0;
    border-bottom: 1px solid var(--kz-border);
    background:
        linear-gradient(110deg, rgba(10, 15, 25, .98) 15%, rgba(12, 25, 48, .92) 100%),
        var(--kz-bg-soft);
}

.forum-hero::before,
.forum-hero::after {
    content: "";
    position: absolute;
    pointer-events: none;
    border-radius: 999px;
    filter: blur(2px);
}

.forum-hero::before {
    top: -190px;
    right: -80px;
    width: 520px;
    height: 520px;
    border: 1px solid rgba(93, 151, 255, .12);
    box-shadow:
        0 0 0 70px rgba(70, 127, 229, .025),
        0 0 0 140px rgba(70, 127, 229, .018);
}

.forum-hero::after {
    right: 14%;
    bottom: -120px;
    width: 310px;
    height: 310px;
    background: radial-gradient(circle, rgba(66, 131, 255, .17), transparent 68%);
}

.forum-hero__inner {
    position: relative;
    z-index: 2;
    width: min(92%, 1240px) !important;
    max-width: 1240px !important;
    padding: 72px 0 38px;
}

.forum-hero__eyebrow {
    display: flex;
    align-items: center;
    gap: 9px;
    margin-bottom: 18px;
    color: #8ba4c7;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .16em;
}

.forum-hero__dot {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: var(--kz-primary);
    box-shadow: 0 0 18px rgba(77, 141, 255, .78);
}

.forum-hero__content {
    max-width: 760px;
}

.forum-hero__content h1 {
    margin: 0 0 14px;
    color: #f5f8ff;
    font-size: clamp(34px, 4vw, 54px);
    font-weight: 760;
    line-height: 1.15;
    letter-spacing: -.035em;
}

.forum-hero__content p {
    margin: 0;
    color: #91a0b6;
    font-size: 16px;
    line-height: 1.8;
}

.forum-hero__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-top: 27px;
}

.forum-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    min-height: 42px;
    padding: 0 16px;
    border: 1px solid var(--kz-border-strong);
    border-radius: 10px;
    color: var(--kz-text) !important;
    background: rgba(255, 255, 255, .035);
    font-size: 13px;
    font-weight: 600;
}

.forum-btn:hover {
    transform: translateY(-1px);
    border-color: rgba(112, 166, 255, .48);
    background: rgba(255, 255, 255, .065);
}

.forum-btn--primary {
    border-color: #4d8dff;
    background: linear-gradient(135deg, #417fef, #2d62c7);
    box-shadow: 0 10px 26px rgba(45, 98, 199, .22);
}

.forum-btn--primary:hover {
    color: #fff !important;
    background: linear-gradient(135deg, #5194ff, #326cd7);
}




/* ---------- global containers / cards ---------- */
.content {
    padding-top: 54px;
}

.home-content {
    padding-top: 32px;
}

.container {
    max-width: 1240px;
}

.card {
    border: 1px solid var(--kz-border);
    border-radius: var(--kz-radius);
    color: var(--kz-text-soft);
    background: rgba(15, 22, 34, .94);
    box-shadow: none;
}

.card:hover {
    box-shadow: none;
}

.card .card-content {
    color: var(--kz-text-soft);
}

hr {
    border: 0;
    border-top: 1px solid var(--kz-border);
}

/* ---------- home note ---------- */
.home-note {
    display: flex;
    align-items: center;
    gap: 16px;
    min-height: 78px;
    margin-bottom: 40px;
    padding: 16px 20px;
    border: 1px solid var(--kz-border);
    border-radius: 14px;
    background: linear-gradient(90deg, rgba(77, 141, 255, .08), rgba(17, 25, 39, .82) 40%);
}

.home-note__icon {
    display: flex;
    flex: 0 0 auto;
    align-items: center;
    justify-content: center;
    width: 42px;
    height: 42px;
    border: 1px solid rgba(97, 155, 255, .2);
    border-radius: 11px;
    color: #8db6ff;
    background: rgba(77, 141, 255, .09);
}

.home-note__body {
    min-width: 0;
}

.home-note__label {
    display: block;
    margin-bottom: 3px;
    color: #7197cf;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .12em;
}

.home-note__body p {
    margin: 0;
    color: #c2ccda;
    font-size: 14px;
}

/* ---------- article feed ---------- */
.forum-feed-heading {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 20px;
    margin-bottom: 17px;
}

.forum-section-kicker {
    display: block;
    margin-bottom: 4px;
    color: #587db5;
    font-size: 10px;
    font-weight: 800;
    letter-spacing: .18em;
}

.forum-feed-heading h2 {
    margin: 0;
    color: var(--kz-text);
    font-size: 24px;
    font-weight: 700;
    letter-spacing: -.02em;
}




.forum-article-grid {
    width: min(92%, 1240px) !important;
    max-width: 1240px !important;
}

.forum-article-grid .article-row {
    margin-right: -10px;
    margin-left: -10px;
}

.forum-article-grid .article {
    padding: 10px !important;
}

.forum-post-card,
#articles .article > .card,
.cd-timeline-content .card {
    overflow: hidden;
    height: 100%;
    margin: 0;
    border-radius: 14px;
    background: var(--kz-surface);
    transition: transform .22s ease, border-color .22s ease, background .22s ease;
}

.forum-post-card:hover,
#articles .article > .card:hover,
.cd-timeline-content .card:hover {
    transform: translateY(-3px);
    border-color: rgba(104, 157, 240, .3);
    background: #111a29;
}

.forum-post-card__cover,
#articles .card-image {
    display: block;
    overflow: hidden;
}

.forum-post-card .card-image {
    position: relative;
    overflow: hidden;
    height: 184px;
    background: #0a0f18;
}

.forum-post-card .card-image::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, rgba(0, 0, 0, 0) 45%, rgba(2, 5, 10, .25));
    pointer-events: none;
}

.forum-post-card .card-image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    opacity: .88;
    transition: transform .45s ease, opacity .3s ease;
}

.forum-post-card:hover .card-image img {
    transform: scale(1.018);
    opacity: 1;
}

.forum-post-card .card-content {
    padding: 17px 18px 16px !important;
}

.forum-post-card__meta {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    min-height: 18px;
    margin-bottom: 10px;
    color: #68778d;
    font-size: 11px;
}

.forum-post-card__meta span,
.forum-post-card__meta a {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    min-width: 0;
    color: #738198;
}

.forum-post-card__meta a:hover {
    color: #91b8ff;
}

.forum-post-card__title {
    display: block;
}

.forum-post-card__title h3 {
    display: -webkit-box;
    overflow: hidden;
    min-height: 46px;
    margin: 0 0 9px;
    color: #e8eef8;
    font-size: 16px;
    font-weight: 650;
    line-height: 1.45;
    letter-spacing: -.01em;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
}

.forum-post-card__title:hover h3 {
    color: #a9c7ff;
}

.forum-post-card .summary {
    display: -webkit-box;
    overflow: hidden;
    min-height: 60px;
    margin-bottom: 14px;
    color: #7f8da3;
    font-size: 12.5px;
    line-height: 1.65;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 3;
}

.forum-post-card__tags,
.article-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
}

.forum-post-card__tags .chip,
.article-tag .chip,
.article-tags .chip,
.chip-container .chip,
.chip {
    height: 25px;
    margin: 0;
    padding: 0 9px;
    border: 1px solid rgba(100, 149, 225, .14);
    border-radius: 7px;
    color: #8194af !important;
    background: rgba(74, 118, 186, .08) !important;
    font-size: 10.5px;
    line-height: 23px;
}

.chip:hover,
.article-tags a:hover .chip,
.article-tag a:hover .chip {
    color: #b9d0f7 !important;
    border-color: rgba(100, 149, 225, .3);
    background: rgba(74, 118, 186, .15) !important;
}

/* Legacy article cards on category/tag/archive pages */
#articles:not(.forum-article-grid) .card-image {
    height: 190px;
}

#articles:not(.forum-article-grid) .card-image img,
.cd-timeline-content .card-image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    opacity: .82;
}

#articles:not(.forum-article-grid) .card-image .card-title,
.cd-timeline-content .card-image .card-title {
    width: 100%;
    padding: 20px 18px 15px;
    color: #f4f7fc;
    background: linear-gradient(transparent, rgba(5, 8, 13, .86));
    font-size: 16px;
    font-weight: 650;
    line-height: 1.45;
}

#articles:not(.forum-article-grid) .article-content,
.cd-timeline-content .article-content {
    color: var(--kz-muted);
}

.publish-info,
.publish-info a,
.post-info,
.post-info a,
.post-cate,
.post-cate a {
    color: #75849a !important;
}

/* ---------- inner page / post covers ---------- */
.bg-cover,
.post-cover,
.about-cover {
    position: relative;
    overflow: hidden;
    height: 250px !important;
    min-height: 250px;
    background-color: #0b1220 !important;
    background-position: center 42% !important;
    background-size: cover !important;
}

.bg-cover::before,
.post-cover::before,
.about-cover::before {
    content: "";
    position: absolute;
    z-index: 0;
    inset: 0;
    background:
        linear-gradient(180deg, rgba(6, 10, 17, .58), rgba(6, 11, 20, .9)),
        linear-gradient(90deg, rgba(31, 76, 150, .2), transparent 62%);
}

.bg-cover .container,
.post-cover .container,
.about-cover .container {
    position: relative;
    z-index: 1;
}

.bg-cover .brand,
.post-cover .brand {
    margin-top: 50px;
}

.bg-cover .brand .title,
.post-cover .post-title {
    color: #f3f6fb !important;
    text-shadow: none !important;
}

.bg-cover .brand .title {
    font-size: 30px !important;
    font-weight: 700;
}

.bg-cover .brand .description {
    margin-top: 10px;
    color: #8ea0b9 !important;
    font-size: 14px !important;
    text-shadow: none !important;
}

.post-cover .post-title {
    max-width: 920px;
    margin: 0 auto;
    font-size: clamp(25px, 3vw, 39px) !important;
    font-weight: 720;
    line-height: 1.35;
    letter-spacing: -.025em;
}

/* ---------- post page ---------- */
.post-container,
main.container.content {
    max-width: 1200px;
}

#artDetail > .card,
#aboutme > .card,
#contact > .card,
.toc-widget.card {
    border: 1px solid var(--kz-border) !important;
    border-radius: var(--kz-radius) !important;
    background: rgba(15, 22, 34, .96) !important;
    box-shadow: none !important;
}

#artDetail .article-info {
    padding: 23px 26px 16px !important;
}

#artDetail .article-card-content {
    padding: 25px 30px 31px !important;
}

#articleContent {
    color: #b9c3d1;
    font-size: 15.5px;
    line-height: 1.88;
}

#articleContent p,
#articleContent li {
    color: #b6c0ce;
}

#articleContent h1,
#articleContent h2,
#articleContent h3,
#articleContent h4,
#articleContent h5,
#articleContent h6 {
    color: #edf3fc;
    font-weight: 680;
    letter-spacing: -.015em;
}

#articleContent h1,
#articleContent h2 {
    border-bottom-color: var(--kz-border) !important;
}

#articleContent a {
    color: #72a7ff;
    border-bottom-color: rgba(114, 167, 255, .24);
}

#articleContent a:hover {
    color: #a7c9ff;
}

#articleContent blockquote {
    border-left: 3px solid #4d8dff;
    color: #98a8be;
    background: rgba(77, 141, 255, .055);
}

#articleContent table {
    overflow: hidden;
    border: 1px solid var(--kz-border);
    border-radius: 10px;
    color: #b9c4d4;
    background: #0c121d;
}

#articleContent table th {
    color: #dce7f7;
    background: #141e2e;
}

#articleContent table td,
#articleContent table th {
    border-color: var(--kz-border) !important;
}

#articleContent code:not([class*="language-"]) {
    padding: 2px 6px;
    border: 1px solid rgba(104, 155, 234, .15);
    border-radius: 5px;
    color: #9fc1ff;
    background: #111a29;
}

#articleContent pre,
#articleContent pre[class*="language-"],
#articleContent code[class*="language-"] {
    border-color: var(--kz-border) !important;
    background: #090e16 !important;
}

#articleContent img {
    border-radius: 10px;
}

/* TOC */
.toc-widget {
    color: var(--kz-text-soft);
}

.toc-widget .toc-title,
.toc-widget .toc-title i,
.toc-widget a {
    color: #8795a9 !important;
}

.toc-widget a:hover,
.toc-widget .is-active-link {
    color: #8db6ff !important;
}

.toc-widget .is-active-link::before {
    background: var(--kz-primary) !important;
}

/* ---------- archive timeline ---------- */
#cd-timeline::before {
    background: rgba(94, 132, 187, .17) !important;
}

.cd-timeline-img {
    border-color: #111a29 !important;
    color: #dce8fb !important;
    background: #233450 !important;
    box-shadow: 0 0 0 4px #0b1019 !important;
}

.cd-timeline-img.year {
    background: #315fae !important;
}

.cd-timeline-img.month {
    background: #274a80 !important;
}

.cd-timeline-content::before {
    border-right-color: var(--kz-border) !important;
}

/* ---------- category/tag/about widgets ---------- */
.tag-title,
.category-title,
.about-container .title,
.card-title {
    color: var(--kz-text);
}

.tag-cloud a,
.category-cloud a,
.categories-container a {
    color: var(--kz-text-soft);
}

.profile .avatar-img {
    border: 3px solid rgba(100, 149, 225, .16);
    box-shadow: 0 14px 38px rgba(0, 0, 0, .28);
}

.about-container .career,
.about-container .introduction {
    color: var(--kz-muted);
}

/* ---------- search ---------- */
#searchModal,
.modal {
    border: 1px solid var(--kz-border);
    border-radius: 14px;
    color: var(--kz-text-soft);
    background: #101824;
    box-shadow: var(--kz-shadow);
}

.modal-overlay {
    background: #02050a;
}

#searchModal .search-header,
#searchModal .search-result-list,
#searchModal .search-result-title,
#searchModal .search-result {
    color: var(--kz-text-soft) !important;
}

#searchModal input,
input[type="text"],
input[type="email"],
textarea {
    color: #dbe5f4 !important;
    border-bottom-color: rgba(118, 151, 201, .22) !important;
}

#searchModal input:focus,
input[type="text"]:focus,
input[type="email"]:focus,
textarea:focus {
    border-bottom-color: #4d8dff !important;
    box-shadow: 0 1px 0 0 #4d8dff !important;
}

/* ---------- comments ---------- */
.valine-thread,
.vwrap,
.vcard,
.vcontent,
.vhead,
.vinput,
.vbtn {
    color: var(--kz-text-soft) !important;
}

.vwrap,
.vcard {
    border-color: var(--kz-border) !important;
    background: transparent !important;
}

.vinput,
.vtextarea {
    color: #c8d2e0 !important;
    background: transparent !important;
}

/* ---------- mobile navigation ---------- */
.sidenav,
.side-nav {
    color: var(--kz-text-soft);
    background: #0d141f !important;
}

.sidenav .mobile-head,
.side-nav .mobile-head {
    background: linear-gradient(145deg, #121f33, #0b111c) !important;
}

.sidenav a,
.side-nav a,
.mobile-menu-list a {
    color: #aab6c8 !important;
}

.sidenav a:hover,
.side-nav a:hover {
    color: #fff !important;
    background: rgba(77, 141, 255, .08) !important;
}

/* ---------- pagination ---------- */
.pagination li a,
.pagination li span {
    color: #7e8ca0 !important;
}

.pagination li.active {
    border-radius: 8px;
    background: #2f67c7 !important;
}

.pagination li.active a {
    color: #fff !important;
}

/* ---------- footer ---------- */
.page-footer,
.page-footer.bg-color {
    margin-top: 54px;
    padding-top: 26px;
    border-top: 1px solid var(--kz-border);
    color: #657287 !important;
    background: #070a10 !important;
}

.page-footer .copy-right,
.page-footer .copy-right a,
.page-footer .social-link a,
.page-footer .white-color {
    color: #748197 !important;
}

.page-footer .copy-right a:hover,
.page-footer .social-link a:hover {
    color: #a9c7ff !important;
}

.progress-bar {
    background: linear-gradient(90deg, #2f72eb, #6aa9ff) !important;
}

#backTop .btn-floating {
    border: 1px solid rgba(100, 149, 225, .22);
    background: #17243a !important;
    box-shadow: none;
}

/* ---------- remove old visual noise ---------- */
.index-card,
.carousel.index-cover,
.cover-social-link,
.github-corner,
.github-link {
    box-shadow: none !important;
}

.waves-effect .waves-ripple {
    opacity: .08;
}

/* ---------- responsive ---------- */
@media only screen and (min-width: 1280px) {
    .forum-article-grid .article {
        width: 25% !important;
    }
}

@media only screen and (max-width: 992px) {
    #navContainer.container,
    .forum-hero__inner,
    .forum-article-grid {
        width: 92% !important;
    }

    .forum-hero {
        min-height: 315px;
    }

    .forum-hero__inner {
        padding-top: 58px;
    }

    .forum-feed-heading {
        align-items: flex-start;
    }

    .bg-cover,
    .post-cover,
    .about-cover {
        height: 220px !important;
        min-height: 220px;
    }

    #artDetail .article-card-content {
        padding: 22px !important;
    }
}

@media only screen and (max-width: 600px) {
    #headNav .logo-span {
        font-size: 14px;
    }

    #headNav .brand-logo a::before {
        width: 31px;
        height: 31px;
        border-radius: 9px;
        font-size: 10px;
    }

    .forum-hero {
        min-height: auto;
    }

    .forum-hero__inner {
        padding: 46px 0 30px;
    }

    .forum-hero__content h1 {
        font-size: 32px;
    }

    .forum-hero__content p {
        font-size: 14px;
    }


    .home-content {
        padding-top: 22px;
    }

    .home-note {
        width: 92%;
        margin-bottom: 30px;
        padding: 14px;
    }

    .forum-feed-heading {
        width: 92%;
        flex-direction: column;
        gap: 10px;
    }


    .forum-article-grid .article {
        padding: 8px 0 !important;
    }

    .forum-post-card .card-image {
        height: 205px;
    }

    .bg-cover,
    .post-cover,
    .about-cover {
        height: 190px !important;
        min-height: 190px;
    }

    .bg-cover .brand,
    .post-cover .brand {
        margin-top: 33px;
    }

    .post-cover .post-title {
        font-size: 24px !important;
    }

    #artDetail .article-info,
    #artDetail .article-card-content {
        padding-right: 16px !important;
        padding-left: 16px !important;
    }

    #articleContent {
        font-size: 15px;
    }
}

/* ========================================================================== */
/* V2 atmospheric refinement - 2026-09                                        */
/* Removes redundant home shortcuts and adds subtle mist/glass depth.         */
/* ========================================================================== */

:root {
    --kz-violet: #8b7dff;
    --kz-violet-soft: rgba(139, 125, 255, .12);
    --kz-cyan-soft: rgba(107, 214, 255, .10);
    --kz-glow-blue: rgba(77, 141, 255, .18);
    --kz-glow-violet: rgba(139, 125, 255, .13);
    --kz-glass: rgba(13, 20, 32, .78);
    --kz-glass-strong: rgba(15, 23, 37, .9);
}

body {
    background:
        radial-gradient(ellipse at 10% -8%, rgba(58, 111, 226, .22), transparent 34rem),
        radial-gradient(ellipse at 88% 12%, rgba(111, 84, 220, .13), transparent 30rem),
        radial-gradient(ellipse at 48% 104%, rgba(37, 129, 209, .10), transparent 34rem),
        linear-gradient(180deg, #070a10 0%, #080c14 42%, #070a10 100%);
    background-attachment: fixed;
}

/* A subtle atmospheric layer behind page content. No particles and no clicks. */
.content {
    position: relative;
    isolation: isolate;
    overflow: hidden;
}

.content::before,
.content::after {
    content: "";
    position: absolute;
    z-index: 0;
    width: 36rem;
    height: 36rem;
    border-radius: 50%;
    pointer-events: none;
    filter: blur(86px);
    opacity: .34;
    will-change: transform;
}

.content::before {
    top: 5rem;
    left: -24rem;
    background: radial-gradient(circle, rgba(69, 131, 255, .28), transparent 68%);
    animation: kzMistLeft 22s ease-in-out infinite alternate;
}

.content::after {
    top: 28rem;
    right: -25rem;
    background: radial-gradient(circle, rgba(120, 94, 238, .19), transparent 70%);
    animation: kzMistRight 26s ease-in-out infinite alternate;
}

.content > * {
    position: relative;
    z-index: 1;
}

@keyframes kzMistLeft {
    from { transform: translate3d(0, 0, 0) scale(1); }
    to   { transform: translate3d(10rem, 7rem, 0) scale(1.08); }
}

@keyframes kzMistRight {
    from { transform: translate3d(0, 0, 0) scale(1); }
    to   { transform: translate3d(-11rem, -5rem, 0) scale(1.1); }
}

@keyframes kzHeroBreath {
    0%, 100% { transform: translate3d(0, 0, 0) scale(1); opacity: .72; }
    50%      { transform: translate3d(-18px, 12px, 0) scale(1.06); opacity: 1; }
}

@keyframes kzCoverDrift {
    from { transform: translate3d(-2%, -1%, 0); }
    to   { transform: translate3d(2%, 2%, 0); }
}

/* ---------- home: cleaner hero, no category/tag/archive shortcut strip ---------- */
.forum-hero {
    min-height: 326px;
    border-bottom: 1px solid rgba(112, 158, 231, .12);
    background:
        linear-gradient(112deg, rgba(7, 11, 18, .98) 8%, rgba(10, 20, 38, .96) 60%, rgba(13, 18, 34, .98) 100%),
        var(--kz-bg-soft);
}

.forum-hero::before {
    top: -245px;
    right: -120px;
    width: 610px;
    height: 610px;
    border-color: rgba(113, 166, 255, .09);
    box-shadow:
        0 0 0 86px rgba(71, 128, 232, .022),
        0 0 0 172px rgba(110, 92, 222, .014);
    animation: kzHeroBreath 14s ease-in-out infinite;
}

.forum-hero::after {
    right: 10%;
    bottom: -155px;
    width: 410px;
    height: 410px;
    filter: blur(10px);
    background:
        radial-gradient(circle at 42% 42%, rgba(87, 153, 255, .22), transparent 48%),
        radial-gradient(circle at 62% 62%, rgba(133, 112, 255, .13), transparent 64%);
    animation: kzHeroBreath 18s ease-in-out infinite reverse;
}

.forum-hero__inner {
    padding: 74px 0 58px;
}

.forum-hero__content h1 {
    text-shadow: 0 0 34px rgba(80, 136, 239, .10);
}

.forum-hero__content p {
    max-width: 680px;
    color: #9aa9be;
}

.forum-btn {
    border-color: rgba(116, 164, 239, .24);
    background: rgba(17, 27, 43, .54);
    backdrop-filter: blur(14px);
    -webkit-backdrop-filter: blur(14px);
}

.forum-btn:hover {
    transform: translateY(-2px);
    border-color: rgba(123, 174, 255, .5);
    box-shadow: 0 12px 28px rgba(0, 0, 0, .18);
}

.forum-btn--primary {
    border-color: rgba(86, 148, 255, .78);
    background: linear-gradient(135deg, rgba(64, 126, 239, .95), rgba(61, 92, 202, .95));
    box-shadow: 0 12px 30px rgba(52, 102, 210, .24), inset 0 1px 0 rgba(255, 255, 255, .13);
}


/* ---------- home note / section heading ---------- */
.home-note {
    position: relative;
    overflow: hidden;
    border-color: rgba(115, 159, 227, .16);
    background:
        linear-gradient(100deg, rgba(65, 126, 232, .10), rgba(17, 25, 39, .72) 42%, rgba(91, 73, 184, .055));
    box-shadow: 0 18px 55px rgba(0, 0, 0, .14), inset 0 1px 0 rgba(255, 255, 255, .025);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
}

.home-note::after {
    content: "";
    position: absolute;
    top: -80px;
    right: 6%;
    width: 180px;
    height: 180px;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(94, 145, 255, .14), transparent 70%);
    pointer-events: none;
}

.forum-feed-heading {
    align-items: center;
    margin-top: 4px;
    margin-bottom: 19px;
}

.forum-feed-status {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    min-height: 32px;
    padding: 0 11px;
    border: 1px solid rgba(109, 154, 224, .14);
    border-radius: 999px;
    color: #72849f;
    background: rgba(17, 25, 39, .46);
    font-size: 10.5px;
    font-weight: 700;
    letter-spacing: .11em;
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
}

.forum-feed-status__pulse {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: #62a1ff;
    box-shadow: 0 0 12px rgba(98, 161, 255, .7);
}


/* ---------- cards: glass + soft edge light ---------- */
.card,
.forum-post-card,
#articles .article > .card,
.cd-timeline-content .card {
    position: relative;
    border-color: rgba(121, 160, 216, .13);
    background:
        linear-gradient(150deg, rgba(20, 30, 47, .84), rgba(11, 17, 28, .9)) !important;
    box-shadow:
        0 18px 58px rgba(0, 0, 0, .16),
        inset 0 1px 0 rgba(255, 255, 255, .025);
    backdrop-filter: blur(14px);
    -webkit-backdrop-filter: blur(14px);
}

.card::before,
.forum-post-card::before,
#articles .article > .card::before,
.cd-timeline-content .card::before {
    content: "";
    position: absolute;
    z-index: 2;
    top: 0;
    right: 10%;
    left: 10%;
    height: 1px;
    background: linear-gradient(90deg, transparent, rgba(129, 180, 255, .24), rgba(155, 132, 255, .12), transparent);
    opacity: .72;
    pointer-events: none;
}

.forum-post-card:hover,
#articles .article > .card:hover,
.cd-timeline-content .card:hover {
    transform: translateY(-5px);
    border-color: rgba(119, 169, 247, .30);
    background:
        linear-gradient(150deg, rgba(23, 35, 55, .92), rgba(12, 19, 31, .94)) !important;
    box-shadow:
        0 24px 68px rgba(0, 0, 0, .24),
        0 0 34px rgba(63, 119, 226, .055),
        inset 0 1px 0 rgba(255, 255, 255, .035);
}

.forum-post-card .card-image::after,
#articles:not(.forum-article-grid) .card-image::after,
.cd-timeline-content .card-image::after {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    background:
        linear-gradient(180deg, rgba(5, 8, 14, .02) 32%, rgba(5, 8, 14, .76) 100%),
        linear-gradient(120deg, rgba(69, 128, 237, .07), transparent 55%);
}

#articles:not(.forum-article-grid) .card-image,
.cd-timeline-content .card-image {
    position: relative;
    overflow: hidden;
}

#articles:not(.forum-article-grid) .card-image img,
.cd-timeline-content .card-image img {
    transition: transform .5s ease, opacity .35s ease, filter .35s ease;
}

#articles:not(.forum-article-grid) .card:hover .card-image img,
.cd-timeline-content .card:hover .card-image img {
    transform: scale(1.02);
    opacity: .94;
}

/* ---------- inner-page covers: mist and faint grid ---------- */
.bg-cover,
.post-cover,
.about-cover {
    border-bottom: 1px solid rgba(111, 158, 228, .11);
}

.bg-cover::before,
.post-cover::before,
.about-cover::before {
    background:
        linear-gradient(180deg, rgba(5, 8, 15, .48), rgba(6, 11, 20, .91)),
        radial-gradient(ellipse at 25% 34%, rgba(54, 111, 219, .20), transparent 42%),
        radial-gradient(ellipse at 76% 48%, rgba(120, 88, 220, .11), transparent 40%);
}

.bg-cover::after,
.post-cover::after,
.about-cover::after {
    content: "";
    position: absolute;
    z-index: 0;
    inset: -12%;
    pointer-events: none;
    opacity: .26;
    background-image:
        linear-gradient(rgba(118, 155, 210, .045) 1px, transparent 1px),
        linear-gradient(90deg, rgba(118, 155, 210, .035) 1px, transparent 1px),
        radial-gradient(circle at 72% 32%, rgba(90, 151, 255, .22), transparent 20%);
    background-size: 44px 44px, 44px 44px, auto;
    mask-image: linear-gradient(to bottom, rgba(0,0,0,.72), transparent 88%);
    -webkit-mask-image: linear-gradient(to bottom, rgba(0,0,0,.72), transparent 88%);
    animation: kzCoverDrift 18s ease-in-out infinite alternate;
}

.bg-cover .brand .title,
.post-cover .post-title {
    text-shadow: 0 0 28px rgba(95, 148, 244, .12) !important;
}

/* ---------- post reading surface ---------- */
#artDetail > .card,
#aboutme > .card,
#contact > .card,
.toc-widget.card {
    border-color: rgba(120, 160, 219, .14) !important;
    background:
        linear-gradient(160deg, rgba(18, 27, 43, .92), rgba(10, 16, 26, .94)) !important;
    box-shadow:
        0 26px 76px rgba(0, 0, 0, .20),
        inset 0 1px 0 rgba(255, 255, 255, .025) !important;
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
}

#artDetail > .card {
    overflow: hidden;
}

#artDetail .article-info {
    background: linear-gradient(90deg, rgba(74, 132, 231, .045), transparent 55%);
}

#articleContent h2 {
    position: relative;
    margin-top: 2.1em;
    padding-bottom: .48em;
}

#articleContent h2::after {
    content: "";
    position: absolute;
    left: 0;
    bottom: -1px;
    width: 54px;
    height: 1px;
    background: linear-gradient(90deg, #5a94f2, rgba(139, 125, 255, .16));
}

#articleContent blockquote {
    border-left-color: #609bff;
    border-radius: 0 9px 9px 0;
    background: linear-gradient(90deg, rgba(77, 141, 255, .075), rgba(91, 75, 185, .028));
}

#articleContent img {
    box-shadow: 0 18px 55px rgba(0, 0, 0, .20);
}

.toc-widget.card {
    box-shadow: 0 18px 55px rgba(0, 0, 0, .17) !important;
}

/* ---------- category & tag overview ---------- */
#category-cloud,
#tags,
.archive-calendar,
#cd-timeline,
.about-container {
    width: min(92%, 1160px);
}

#category-cloud > .card,
#tags > .card,
.archive-calendar > .card {
    overflow: hidden;
    border-color: rgba(119, 162, 225, .15);
    background:
        radial-gradient(circle at 10% 0%, rgba(70, 132, 238, .10), transparent 28%),
        radial-gradient(circle at 92% 0%, rgba(126, 102, 238, .07), transparent 30%),
        linear-gradient(145deg, rgba(18, 28, 44, .90), rgba(10, 16, 27, .93)) !important;
}

#category-cloud .card-content,
#tags .card-content {
    padding: 28px 30px !important;
}

#category-cloud .tag-title,
#tags .tag-title {
    margin-bottom: 22px;
    color: #e7eef9;
    font-size: 22px;
    font-weight: 680;
    letter-spacing: -.015em;
}

#category-cloud .tag-title i,
#tags .tag-title i {
    color: #75a9ff;
}

.tag-chips {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 10px;
}

#category-cloud .chip,
#tags .chip {
    height: 34px;
    margin: 0 !important;
    padding: 0 13px;
    border: 1px solid rgba(112, 159, 232, .17) !important;
    border-radius: 10px;
    color: #9fb0c8 !important;
    background: rgba(66, 108, 172, .09) !important;
    line-height: 32px;
    box-shadow: inset 0 1px 0 rgba(255,255,255,.02);
}

#category-cloud .chip:hover,
#tags .chip:hover,
#category-cloud .chip-active,
#tags .chip-active {
    transform: translateY(-2px);
    border-color: rgba(112, 165, 247, .38) !important;
    color: #d8e7ff !important;
    background: linear-gradient(135deg, rgba(67, 125, 227, .20), rgba(101, 76, 196, .10)) !important;
    box-shadow: 0 10px 26px rgba(0,0,0,.13);
}

.tag-length {
    margin-left: 5px;
    color: #6d86aa;
}

/* jQCloud palette override for dark mode */
#tag-wordcloud a,
#tag-wordcloud span {
    text-shadow: 0 0 18px rgba(94, 148, 255, .08);
}

#tag-wordcloud .w10, #tag-wordcloud .w9 { color: #9fc4ff !important; }
#tag-wordcloud .w8,  #tag-wordcloud .w7 { color: #81aef6 !important; }
#tag-wordcloud .w6,  #tag-wordcloud .w5 { color: #8299d9 !important; }
#tag-wordcloud .w4,  #tag-wordcloud .w3 { color: #8c87c9 !important; }
#tag-wordcloud .w2,  #tag-wordcloud .w1 { color: #74849c !important; }

/* ---------- archive ---------- */
#cd-timeline::before {
    width: 2px !important;
    background: linear-gradient(to bottom, rgba(89, 147, 238, .08), rgba(92, 147, 232, .34), rgba(126, 100, 228, .15)) !important;
    box-shadow: 0 0 18px rgba(75, 133, 227, .07);
}

.cd-timeline-img {
    border: 1px solid rgba(128, 172, 242, .28) !important;
    background: linear-gradient(145deg, #223653, #17253a) !important;
    box-shadow: 0 0 0 5px rgba(9, 14, 23, .96), 0 0 22px rgba(72, 131, 227, .10) !important;
}

.cd-timeline-img.year {
    background: linear-gradient(145deg, #376dc4, #2c4f92) !important;
    box-shadow: 0 0 0 5px rgba(9, 14, 23, .96), 0 0 28px rgba(76, 139, 241, .15) !important;
}

.cd-timeline-img.month {
    background: linear-gradient(145deg, #2d527f, #223d61) !important;
}

/* ---------- about ---------- */
#aboutme > .card {
    overflow: hidden;
}

.profile .avatar-img {
    border-color: rgba(112, 164, 244, .22);
    box-shadow: 0 18px 58px rgba(0, 0, 0, .26), 0 0 32px rgba(79, 137, 235, .08);
}

.post-statis .statis {
    border-radius: 12px;
    transition: transform .2s ease, background .2s ease;
}

.post-statis .statis:hover {
    transform: translateY(-2px);
    background: rgba(77, 141, 255, .045);
}

.about-container .social-link a {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    margin: 4px;
    border: 1px solid rgba(113, 158, 227, .13);
    border-radius: 12px;
    background: rgba(255, 255, 255, .022);
}

.about-container .social-link a:hover {
    transform: translateY(-2px);
    border-color: rgba(112, 165, 247, .34);
    background: rgba(77, 141, 255, .075);
}

.post-charts .chart {
    border-radius: 14px;
    background: rgba(12, 19, 31, .34);
}

/* ---------- search & footer finishing ---------- */
#searchModal,
.modal {
    background:
        linear-gradient(150deg, rgba(20, 31, 49, .97), rgba(9, 15, 25, .98)) !important;
    backdrop-filter: blur(18px);
    -webkit-backdrop-filter: blur(18px);
}

.page-footer,
.page-footer.bg-color {
    background:
        radial-gradient(circle at 50% 0%, rgba(66, 122, 219, .055), transparent 30%),
        #070a10 !important;
}

#backTop .btn-floating {
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    box-shadow: 0 12px 30px rgba(0,0,0,.20);
}

@media only screen and (max-width: 992px) {
    .forum-hero {
        min-height: 300px;
    }

    .forum-hero__inner {
        padding: 60px 0 46px;
    }

    #category-cloud .card-content,
    #tags .card-content {
        padding: 24px 22px !important;
    }
}

@media only screen and (max-width: 600px) {
    .content::before,
    .content::after {
        width: 24rem;
        height: 24rem;
        filter: blur(70px);
        opacity: .24;
    }

    .forum-hero__inner {
        padding: 48px 0 38px;
    }

    .forum-feed-heading {
        flex-direction: row;
        align-items: center;
        gap: 12px;
    }

    .forum-feed-status {
        min-height: 28px;
        padding: 0 9px;
        font-size: 9.5px;
    }

    #category-cloud .card-content,
    #tags .card-content {
        padding: 22px 15px !important;
    }

    #category-cloud .tag-title,
    #tags .tag-title {
        font-size: 19px;
    }

    #category-cloud .chip,
    #tags .chip {
        height: 31px;
        padding: 0 10px;
        line-height: 29px;
    }
}

@media (prefers-reduced-motion: reduce) {
    .content::before,
    .content::after,
    .forum-hero::before,
    .forum-hero::after,
    .bg-cover::after,
    .post-cover::after,
    .about-cover::after {
        animation: none !important;
    }

    .card,
    .forum-post-card,
    #articles .article > .card,
    .forum-post-card img,
    #articles .card-image img {
        transition-duration: .01ms !important;
    }
}

/* =========================================================
 * V3 - Inner page continuity + full banner presentation
 * Keeps the V2 home page unchanged.
 * ========================================================= */

body {
    overflow-x: hidden;
}

/* Inner pages use a cinematic full-image layer instead of a 250px crop.
 * A blurred cover backdrop fills the viewport while the actual banner uses
 * object-fit: contain, so the artwork itself remains fully visible. */
.bg-cover.inner-cover {
    position: relative;
    height: clamp(520px, 72vh, 760px) !important;
    min-height: 520px !important;
    isolation: isolate;
    background-image: none !important;
    background-color: #08101a !important;
    border-bottom: 0 !important;
}

.inner-cover__media,
.inner-cover__backdrop,
.inner-cover__image {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    pointer-events: none;
}

.inner-cover__media {
    z-index: 0;
    overflow: hidden;
    background: #08101a;
}

.inner-cover__backdrop {
    inset: -8%;
    width: 116%;
    height: 116%;
    background-image: var(--kz-inner-cover-image);
    background-position: center center;
    background-size: cover;
    filter: blur(34px) brightness(.48) saturate(.92);
    transform: scale(1.08);
    opacity: .82;
}

.inner-cover__image {
    z-index: 1;
    object-fit: contain;
    object-position: center center;
    filter: brightness(.86) saturate(.94);
    opacity: .93;
}

.bg-cover.inner-cover::before {
    z-index: 2;
    background:
        linear-gradient(180deg, rgba(5, 8, 14, .16) 0%, rgba(5, 9, 16, .28) 48%, rgba(7, 11, 19, .78) 100%),
        radial-gradient(ellipse at 22% 30%, rgba(60, 118, 229, .12), transparent 44%),
        radial-gradient(ellipse at 80% 52%, rgba(123, 94, 224, .08), transparent 42%);
}

.bg-cover.inner-cover::after {
    z-index: 3;
    opacity: .16;
    mask-image: linear-gradient(to bottom, rgba(0,0,0,.46), transparent 88%);
    -webkit-mask-image: linear-gradient(to bottom, rgba(0,0,0,.46), transparent 88%);
}

.bg-cover.inner-cover .container {
    z-index: 4;
}

.bg-cover.inner-cover .brand {
    margin-top: 38px;
}

.bg-cover.inner-cover .brand .title {
    text-shadow: 0 2px 28px rgba(0, 0, 0, .42), 0 0 34px rgba(86, 143, 244, .14) !important;
}

.bg-cover.inner-cover .brand .description {
    color: rgba(222, 232, 247, .78) !important;
    text-shadow: 0 1px 16px rgba(0, 0, 0, .52) !important;
}

/* Remove the hard dark strip between banner and content. The first content
 * surface now floats slightly into the banner and the banner fades into the
 * same atmospheric background used by the page. */
.bg-cover.inner-cover + main.content {
    position: relative;
    z-index: 6;
    margin-top: -68px;
    padding-top: 0 !important;
    padding-bottom: 46px;
    overflow: visible;
}

.bg-cover.inner-cover + main.content::before {
    top: 0;
}

.bg-cover.inner-cover + main.content > :first-child {
    margin-top: 0 !important;
}

.bg-cover.inner-cover + main.content > .container:first-child,
.bg-cover.inner-cover + main.content > .archive-calendar:first-child,
.bg-cover.inner-cover + main.content > #category-cloud:first-child,
.bg-cover.inner-cover + main.content > #tags:first-child {
    filter: drop-shadow(0 24px 54px rgba(0, 0, 0, .20));
}

/* About: restore the original floating-avatar behavior without clipping it. */
#aboutme.about-container {
    margin-top: 0 !important;
}

#aboutme > .card {
    overflow: visible !important;
}

#aboutme > .card > .card-content {
    overflow: visible;
    padding: 34px 34px 30px !important;
}

#aboutme .profile,
#aboutme .profile .avatar {
    position: relative;
    z-index: 5;
}

#aboutme .profile .avatar {
    min-height: 88px;
}

#aboutme .profile .avatar-img {
    display: block;
    width: 156px;
    max-width: 156px;
    height: 156px;
    margin: 0 auto;
    border: 4px solid rgba(135, 181, 250, .26) !important;
    border-radius: 50%;
    object-fit: cover;
    object-position: center;
    transform: translate3d(0, -48%, 0);
    background: #0d1725;
    box-shadow:
        0 18px 58px rgba(0, 0, 0, .34),
        0 0 0 7px rgba(9, 15, 24, .68),
        0 0 42px rgba(79, 137, 235, .10);
}

#aboutme .profile .author {
    margin-top: -58px;
}

#aboutme .profile .author .title {
    color: #edf3fc !important;
    font-size: 1.65rem;
    font-weight: 700;
}

#aboutme .introduction {
    max-width: 760px;
    margin: 1.6rem auto 2rem;
    padding: 18px 22px;
    border: 1px solid rgba(119, 162, 225, .12);
    border-radius: 14px;
    color: #9fafc4;
    background:
        linear-gradient(105deg, rgba(75, 137, 242, .06), rgba(14, 22, 35, .36) 50%, rgba(116, 90, 211, .045));
    line-height: 1.8;
}

/* About lower sections are compact glass panels rather than large empty blocks. */
#aboutme .post-charts,
#aboutme .my-projects,
#aboutme .my-gallery {
    margin: 18px 0 0;
    padding: 24px 22px 18px;
    border: 1px solid rgba(119, 162, 225, .12);
    border-radius: 16px;
    background:
        radial-gradient(circle at 8% 0%, rgba(71, 132, 238, .07), transparent 28%),
        linear-gradient(145deg, rgba(14, 22, 35, .58), rgba(9, 15, 25, .38));
}

#aboutme .post-charts > .title,
#aboutme .my-projects > .title,
#aboutme .my-gallery > .title {
    margin: 0 0 18px;
    color: #dce8f8;
    font-size: 1.25rem;
    font-weight: 680;
}

#aboutme .post-charts .row,
#aboutme .my-projects .row,
#aboutme .my-gallery .row {
    margin-bottom: 0;
}

#aboutme .post-charts .chart {
    min-height: 300px;
    margin-bottom: 10px;
    border: 1px solid rgba(113, 157, 224, .09);
    border-radius: 13px;
    background: rgba(7, 12, 20, .22);
}

#aboutme .my-projects .row {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 14px;
}

#aboutme .my-projects .col {
    float: none;
    width: min(100%, 520px) !important;
    margin-left: 0 !important;
    padding: 0 !important;
}

#aboutme .my-projects .info {
    max-width: none;
    min-height: 178px;
    margin: 0;
    padding: 24px 24px 20px;
    border: 1px solid rgba(115, 159, 226, .11);
    border-radius: 14px;
    background: rgba(12, 20, 32, .46);
    transition: transform .22s ease, border-color .22s ease, background .22s ease;
}

#aboutme .my-projects .info:hover {
    transform: translateY(-3px);
    border-color: rgba(113, 165, 246, .26);
    background: rgba(16, 26, 42, .60);
}

#aboutme .my-projects .info .icon {
    width: 58px;
    height: 58px;
    line-height: 58px;
    border-radius: 15px;
    font-size: 1.35rem;
    box-shadow: 0 14px 34px rgba(0, 0, 0, .18);
}

#aboutme .my-projects .info .info-title {
    margin: 14px 0 7px;
}

#aboutme .my-projects .info .info-title a {
    color: #dbe8fa !important;
}

#aboutme .my-projects .info .info-desc {
    color: #8293aa;
}

#aboutme .my-gallery {
    max-width: none;
}

#aboutme .my-gallery .photo {
    margin: 0;
    padding: 7px;
}

#aboutme .my-gallery .img-item {
    position: relative;
    overflow: hidden;
    border: 1px solid rgba(115, 159, 226, .11);
    border-radius: 13px;
    background: #0a111c;
}

#aboutme .my-gallery .photo img {
    display: block;
    width: 100%;
    height: 210px;
    border-radius: 0;
    object-fit: cover;
    opacity: .88;
    transition: transform .45s ease, opacity .3s ease, filter .3s ease;
}

#aboutme .my-gallery .photo:hover img {
    transform: scale(1.035);
    opacity: 1;
    filter: saturate(1.04);
}

/* Avoid the old pulse animation from making gallery cards jump. */
#aboutme .my-gallery .photo.animated {
    animation: none !important;
}

@media only screen and (max-width: 992px) {
    .bg-cover.inner-cover {
        height: clamp(460px, 68vh, 620px) !important;
        min-height: 460px !important;
    }

    .bg-cover.inner-cover + main.content {
        margin-top: -52px;
    }

    #aboutme > .card > .card-content {
        padding: 30px 22px 24px !important;
    }
}

@media only screen and (max-width: 600px) {
    .bg-cover.inner-cover {
        height: clamp(330px, 76vw, 430px) !important;
        min-height: 330px !important;
    }

    .inner-cover__backdrop {
        filter: blur(24px) brightness(.48) saturate(.9);
    }

    .bg-cover.inner-cover .brand {
        margin-top: 18px;
    }

    .bg-cover.inner-cover .brand .title {
        font-size: 25px !important;
    }

    .bg-cover.inner-cover + main.content {
        margin-top: -34px;
        padding-bottom: 30px;
    }

    #aboutme > .card > .card-content {
        padding: 28px 14px 20px !important;
    }

    #aboutme .profile .avatar-img {
        width: 128px;
        max-width: 128px;
        height: 128px;
        transform: translate3d(0, -42%, 0);
    }

    #aboutme .profile .author {
        margin-top: -42px;
    }

    #aboutme .introduction {
        margin-top: 1.2rem;
        padding: 15px 14px;
    }

    #aboutme .post-charts,
    #aboutme .my-projects,
    #aboutme .my-gallery {
        padding: 19px 10px 12px;
    }

    #aboutme .my-gallery .photo img {
        height: 190px;
    }
}


/* =========================================================
 * V4 - Clean inner banners + stable archive cards
 * ========================================================= */

/* Inner-page banners are now image-only. Keep this defensive rule so that
 * stale generated HTML or cached templates cannot re-introduce cover text. */
.bg-cover.inner-cover .brand,
.bg-cover.inner-cover .title,
.bg-cover.inner-cover .description {
    display: none !important;
}

/* Without overlay copy, let the artwork breathe a little more. */
.bg-cover.inner-cover::before {
    background:
        linear-gradient(180deg, rgba(5, 8, 14, .08) 0%, rgba(5, 9, 16, .18) 58%, rgba(7, 11, 19, .72) 100%),
        radial-gradient(ellipse at 22% 30%, rgba(60, 118, 229, .09), transparent 44%),
        radial-gradient(ellipse at 80% 52%, rgba(123, 94, 224, .06), transparent 42%);
}

/* Archive cards must size themselves from their own content. The old
 * Materialize `col s12 m6` + inherited height:100% combination could make
 * cards on a sparse final archive page stretch unnaturally. */
.cd-timeline-content .archive-article {
    float: none !important;
    width: 100% !important;
    max-width: none !important;
    min-height: 0 !important;
    height: auto !important;
    padding: 0 !important;
    margin: 0 !important;
}

.cd-timeline-content,
.cd-timeline-content .archive-article,
.cd-timeline-content .archive-article > .card,
.cd-timeline-content .card {
    min-height: 0 !important;
    height: auto !important;
}

.cd-timeline-content .card {
    display: block !important;
}

.cd-timeline-content .card-image {
    height: 190px !important;
    min-height: 190px !important;
    max-height: 190px !important;
}

.cd-timeline-content .article-content,
.cd-timeline-content .article-tags {
    height: auto !important;
    min-height: 0 !important;
}

@media only screen and (max-width: 899px) {
    .cd-timeline-content .card-image {
        height: 180px !important;
        min-height: 180px !important;
        max-height: 180px !important;
    }
}


/* =========================================================
 * V5 - stable home feed + random recommendation + post cover
 * ========================================================= */

/* The former "Start reading" anchor was removed. The primary hero action is
 * now a real recommendation action, so no #articles hash or scroll side effect
 * can hide/reposition the site note. */
#dailyRecommendation {
    cursor: pointer;
}

/* Client-side home feed pagination: cards not belonging to the active page
 * are fully removed from layout, while the homepage shell stays mounted. */
.forum-article-grid .feed-card--hidden,
.forum-article-grid [hidden] {
    display: none !important;
}

.forum-feed-pagination {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    margin-top: 26px;
    margin-bottom: 8px;
}

.forum-feed-pagination__pages {
    display: flex;
    align-items: center;
    gap: 7px;
}

.forum-feed-pagination__btn,
.forum-feed-pagination__page {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 40px;
    height: 40px;
    padding: 0 12px;
    border: 1px solid rgba(113, 159, 226, .16);
    border-radius: 11px;
    color: #8fa2bc;
    background: linear-gradient(145deg, rgba(17, 27, 43, .78), rgba(9, 15, 25, .82));
    box-shadow: none;
    cursor: pointer;
    transition: transform .18s ease, border-color .18s ease, color .18s ease, background .18s ease;
}

.forum-feed-pagination__btn:hover:not(:disabled),
.forum-feed-pagination__page:hover,
.forum-feed-pagination__page.is-active {
    transform: translateY(-1px);
    border-color: rgba(102, 157, 245, .42);
    color: #eaf2ff;
    background: linear-gradient(145deg, rgba(48, 94, 172, .70), rgba(40, 61, 119, .72));
}

.forum-feed-pagination__page.is-active {
    box-shadow: 0 8px 24px rgba(34, 87, 177, .14);
}

.forum-feed-pagination__btn:disabled {
    opacity: .32;
    cursor: default;
}

.forum-feed-pagination__status {
    min-width: 52px;
    color: #64758d;
    font-size: 12px;
    letter-spacing: .08em;
    text-align: center;
}

/* Post covers now use the same full-artwork strategy as inner pages: a blurred
 * backdrop fills the viewport, the real image remains uncropped, and the article
 * card overlaps the fade so there is no hard dark seam. */
.post-cover.post-cover--cinematic {
    position: relative;
    height: clamp(440px, 60vh, 650px) !important;
    min-height: 440px !important;
    isolation: isolate;
    overflow: hidden;
    background-image: none !important;
    background-color: #08101a !important;
    border-bottom: 0 !important;
}

.post-cover__media,
.post-cover__backdrop,
.post-cover__image {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    pointer-events: none;
}

.post-cover__media {
    z-index: 0;
    overflow: hidden;
    background: #08101a;
}

.post-cover__backdrop {
    inset: -8%;
    width: 116%;
    height: 116%;
    background-image: var(--kz-post-cover-image);
    background-position: center;
    background-size: cover;
    filter: blur(34px) brightness(.43) saturate(.93);
    transform: scale(1.08);
    opacity: .86;
}

.post-cover__image {
    z-index: 1;
    object-fit: contain;
    object-position: center center;
    filter: brightness(.84) saturate(.96);
    opacity: .95;
}

.post-cover.post-cover--cinematic::before {
    z-index: 2;
    background:
        linear-gradient(180deg, rgba(5, 8, 14, .12) 0%, rgba(5, 9, 16, .20) 52%, rgba(7, 11, 19, .82) 100%),
        radial-gradient(ellipse at 22% 30%, rgba(60, 118, 229, .08), transparent 44%),
        radial-gradient(ellipse at 80% 52%, rgba(123, 94, 224, .06), transparent 42%);
}

.post-cover.post-cover--cinematic::after {
    z-index: 3;
    opacity: .14;
    mask-image: linear-gradient(to bottom, rgba(0,0,0,.38), transparent 88%);
    -webkit-mask-image: linear-gradient(to bottom, rgba(0,0,0,.38), transparent 88%);
}

.post-cover--cinematic .post-cover__content {
    position: relative;
    z-index: 4;
    height: 100%;
}

.post-cover--cinematic .brand {
    display: flex;
    align-items: flex-end;
    justify-content: center;
    min-height: calc(clamp(440px, 60vh, 650px) - 54px);
    margin-top: 0 !important;
    padding: 0 28px 48px;
}

.post-cover--cinematic .post-title {
    margin: 0 auto !important;
    padding: 14px 22px;
    border: 1px solid rgba(137, 177, 238, .13);
    border-radius: 14px;
    color: #f3f7fe !important;
    background: rgba(6, 11, 19, .34);
    backdrop-filter: blur(9px);
    -webkit-backdrop-filter: blur(9px);
    text-shadow: 0 2px 24px rgba(0, 0, 0, .58) !important;
}

.post-cover--cinematic + main.content {
    position: relative;
    z-index: 6;
    margin-top: -58px;
    padding-top: 0 !important;
    overflow: visible;
}

.post-cover--cinematic + main.content #artDetail {
    margin-top: 0 !important;
}

.post-cover--cinematic + main.content #artDetail > .card,
.post-cover--cinematic + main.content .toc-widget.card {
    box-shadow: 0 24px 58px rgba(0, 0, 0, .22) !important;
}

@media only screen and (max-width: 992px) {
    .post-cover.post-cover--cinematic {
        height: clamp(390px, 56vh, 540px) !important;
        min-height: 390px !important;
    }

    .post-cover--cinematic .brand {
        min-height: calc(clamp(390px, 56vh, 540px) - 42px);
        padding-bottom: 38px;
    }

    .post-cover--cinematic + main.content {
        margin-top: -46px;
    }
}

@media only screen and (max-width: 600px) {
    .forum-feed-pagination {
        width: 92%;
        flex-wrap: wrap;
        gap: 8px;
    }

    .forum-feed-pagination__btn,
    .forum-feed-pagination__page {
        min-width: 36px;
        height: 36px;
        padding: 0 10px;
        border-radius: 10px;
    }

    .post-cover.post-cover--cinematic {
        height: clamp(310px, 78vw, 410px) !important;
        min-height: 310px !important;
    }

    .post-cover__backdrop {
        filter: blur(24px) brightness(.43) saturate(.9);
    }

    .post-cover--cinematic .brand {
        min-height: calc(clamp(310px, 78vw, 410px) - 30px);
        padding: 0 10px 28px;
    }

    .post-cover--cinematic .post-title {
        padding: 10px 13px;
        font-size: 22px !important;
        border-radius: 11px;
    }

    .post-cover--cinematic + main.content {
        margin-top: -32px;
    }
}


/* Feed cards use a local reveal animation so client-side page changes never
 * depend on AOS having observed elements that were hidden during first load. */
.forum-article-grid .article:not([hidden]) {
    animation: kzFeedReveal .32s ease both;
}

@keyframes kzFeedReveal {
    from { opacity: 0; transform: translateY(8px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* Markdown images are blocks to remove the inline-image baseline gap as well. */
#articleContent img {
    display: block;
    max-width: 100%;
    height: auto;
    margin-left: auto;
    margin-right: auto;
}

@media (prefers-reduced-motion: reduce) {
    .forum-article-grid .article:not([hidden]) {
        animation: none !important;
    }
}

/* =========================================================
 * V5.1 - keep V5 cards, stabilize in-place paging, widen post hero
 * ========================================================= */

/* Each client-side page owns its own Materialize row. This preserves the V5
 * card sizing/columns exactly, but prevents hidden cards from participating in
 * float/grid calculations when switching to page 2. */
.forum-feed-page[hidden] {
    display: none !important;
}

.forum-feed-page {
    display: block;
    width: 100%;
    min-height: 0;
}

.forum-feed-page .article-row {
    margin-top: 0;
    margin-bottom: 0;
}

.forum-feed-page.is-active .article {
    visibility: visible;
    opacity: 1;
}

/* Pagination intentionally does not use <nav>, so Materialize's red navbar
 * theme can never leak into this control. */
.forum-feed-pagination {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: min(92%, 1240px) !important;
    max-width: 1240px !important;
    min-height: 0 !important;
    height: auto !important;
    margin: 28px auto 10px !important;
    padding: 0 !important;
    gap: 9px !important;
    line-height: 1 !important;
    border: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
}

.forum-feed-pagination__pages {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 9px;
}

.forum-feed-pagination__btn,
.forum-feed-pagination__page {
    box-sizing: border-box;
    display: inline-flex !important;
    flex: 0 0 42px;
    align-items: center !important;
    justify-content: center !important;
    width: 42px !important;
    min-width: 42px !important;
    max-width: 42px !important;
    height: 42px !important;
    min-height: 42px !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 1px solid rgba(118, 160, 222, .18) !important;
    border-radius: 11px !important;
    color: #8fa3be !important;
    background: rgba(12, 19, 30, .92) !important;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .025) !important;
    font-family: inherit;
    font-size: 14px !important;
    font-weight: 700;
    line-height: 1 !important;
    vertical-align: middle;
    cursor: pointer;
    transition: transform .18s ease, border-color .18s ease, color .18s ease, background .18s ease;
}

.forum-feed-pagination__btn svg {
    display: block;
    width: 19px;
    height: 19px;
    margin: 0;
    padding: 0;
    overflow: visible;
    fill: none;
    stroke: currentColor;
    stroke-width: 2.15;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.forum-feed-pagination__btn:hover:not(:disabled),
.forum-feed-pagination__page:hover {
    transform: translateY(-1px);
    border-color: rgba(105, 159, 240, .42) !important;
    color: #edf4ff !important;
    background: rgba(21, 34, 53, .98) !important;
}

.forum-feed-pagination__page.is-active {
    transform: none;
    border-color: rgba(103, 159, 248, .50) !important;
    color: #f1f6ff !important;
    background: linear-gradient(145deg, rgba(52, 91, 157, .88), rgba(37, 58, 103, .92)) !important;
    box-shadow: 0 8px 24px rgba(25, 66, 135, .16) !important;
}

.forum-feed-pagination__btn:disabled {
    opacity: .34;
    color: #66758a !important;
    cursor: default;
    transform: none !important;
}

/* The old x/y page counter is intentionally removed from markup. Keep this
 * defensive rule for cached HTML during local testing. */
.forum-feed-pagination__status {
    display: none !important;
}

/* Article hero: the sharp image now follows the same 90% / 1250px horizontal
 * envelope as .post-container (main article + TOC), leaving only a narrow mist
 * outside it. The source image keeps its aspect ratio and is cropped vertically
 * rather than distorted. */
.post-cover--cinematic .post-cover__image {
    top: 0;
    right: auto;
    bottom: 0;
    left: 50%;
    width: 90% !important;
    max-width: 1250px !important;
    height: 100% !important;
    transform: translateX(-50%);
    object-fit: cover !important;
    object-position: center center;
    opacity: .82;
    filter: brightness(.76) saturate(.92) contrast(1.02);
}

.post-cover--cinematic .post-cover__content {
    width: 90% !important;
    max-width: 1250px !important;
    margin-right: auto !important;
    margin-left: auto !important;
    padding-right: 0 !important;
    padding-left: 0 !important;
}

.post-cover--cinematic .brand {
    display: flex;
    align-items: center !important;
    justify-content: center !important;
    min-height: 100% !important;
    height: 100%;
    margin-top: 0 !important;
    padding: 0 34px !important;
}

.post-cover--cinematic .post-title {
    width: 100%;
    max-width: 1060px !important;
    margin: 0 auto !important;
    padding: 12px 18px !important;
    border: 0 !important;
    border-radius: 0 !important;
    color: #f5f8ff !important;
    background: rgba(5, 9, 16, .12) !important;
    backdrop-filter: blur(2px);
    -webkit-backdrop-filter: blur(2px);
    font-size: clamp(34px, 3.55vw, 54px) !important;
    font-weight: 800 !important;
    line-height: 1.22 !important;
    letter-spacing: -.025em;
    text-align: center !important;
    text-shadow:
        0 3px 22px rgba(0, 0, 0, .78),
        0 0 34px rgba(51, 104, 194, .22) !important;
}

@media only screen and (max-width: 992px) {
    .post-cover--cinematic .post-cover__image,
    .post-cover--cinematic .post-cover__content {
        width: 90% !important;
        max-width: none !important;
    }

    .post-cover--cinematic .brand {
        padding: 0 22px !important;
    }

    .post-cover--cinematic .post-title {
        font-size: clamp(30px, 5vw, 44px) !important;
    }
}

@media only screen and (max-width: 600px) {
    .forum-feed-pagination {
        width: 92% !important;
        flex-wrap: nowrap !important;
        gap: 7px !important;
    }

    .forum-feed-pagination__pages {
        gap: 7px;
    }

    .forum-feed-pagination__btn,
    .forum-feed-pagination__page {
        flex-basis: 38px;
        width: 38px !important;
        min-width: 38px !important;
        max-width: 38px !important;
        height: 38px !important;
        min-height: 38px !important;
        border-radius: 10px !important;
    }

    .forum-feed-pagination__btn svg {
        width: 17px;
        height: 17px;
    }

    .post-cover--cinematic .post-cover__image,
    .post-cover--cinematic .post-cover__content {
        width: 95% !important;
    }

    .post-cover--cinematic .brand {
        padding: 0 12px !important;
    }

    .post-cover--cinematic .post-title {
        padding: 8px 10px !important;
        font-size: clamp(25px, 7vw, 34px) !important;
        line-height: 1.25 !important;
    }
}

/* Keep the centered title vertically stable through the inherited Materialize row/col wrappers. */
.post-cover--cinematic .post-cover__content > .row,
.post-cover--cinematic .post-cover__content > .row > .col {
    height: 100%;
    margin-bottom: 0;
}

.post-cover--cinematic .brand {
    min-height: clamp(440px, 60vh, 650px) !important;
}

@media only screen and (max-width: 992px) {
    .post-cover--cinematic .brand {
        min-height: clamp(390px, 56vh, 540px) !important;
    }
}

@media only screen and (max-width: 600px) {
    .post-cover--cinematic .brand {
        min-height: clamp(310px, 78vw, 410px) !important;
    }
}

/* =========================================================
 * V5.2 - fix hidden-page Masonry residue + exact post-hero alignment
 * ========================================================= */

/* Home keeps the V5 Materialize card widths, but page rows themselves form a
 * normal wrapping flow. Masonry is disabled for #articles.forum-article-grid
 * in matery.js, so no absolute left/top coordinates or giant inline height can
 * survive when page 2 becomes visible. */
.forum-article-grid {
    height: auto !important;
}

.forum-feed-page .article-row {
    display: flex;
    flex-wrap: wrap;
    align-items: stretch;
    width: auto;
    height: auto !important;
}

.forum-feed-page .article {
    position: relative !important;
    top: auto !important;
    right: auto !important;
    bottom: auto !important;
    left: auto !important;
    display: flex;
    float: none !important;
    height: auto !important;
    opacity: 1 !important;
    transform: none;
}

.forum-feed-page .article > .forum-post-card,
.forum-feed-page .article > .card {
    width: 100%;
    min-height: 100%;
}

/* Exact article-cover geometry. The stage and the post body deliberately share
 * one desktop envelope: 90% width, max 1200px. This makes the sharp image's
 * left edge equal to the article card's left edge and its right edge equal to
 * the TOC card's right edge. The full-width blurred backdrop only fills the
 * atmosphere outside that aligned stage. */
.post-cover.post-cover--cinematic {
    display: flex;
    align-items: stretch;
    justify-content: center;
    padding: 0 !important;
}

.post-cover--cinematic .post-cover__backdrop {
    position: absolute;
    z-index: 0;
    inset: -8%;
    width: 116%;
    height: 116%;
    background-image: var(--kz-post-cover-image);
    background-position: center;
    background-size: cover;
    filter: blur(34px) brightness(.40) saturate(.90);
    transform: scale(1.08);
    opacity: .88;
    pointer-events: none;
}

.post-cover--cinematic .post-cover__stage {
    position: relative;
    z-index: 1;
    overflow: hidden;
    width: 90%;
    max-width: 1200px;
    height: 100%;
    margin: 0 auto;
    background: #08101a;
}

.post-cover--cinematic .post-cover__image {
    position: absolute;
    z-index: 1;
    inset: 0;
    width: 100% !important;
    max-width: none !important;
    height: 100% !important;
    transform: none !important;
    object-fit: cover !important;
    object-position: center center;
    opacity: .78;
    filter: brightness(.72) saturate(.92) contrast(1.03);
    pointer-events: none;
}

.post-cover--cinematic .post-cover__veil {
    position: absolute;
    z-index: 2;
    inset: 0;
    background:
        linear-gradient(180deg, rgba(4, 7, 12, .08) 0%, rgba(5, 9, 16, .15) 42%, rgba(7, 11, 19, .58) 100%),
        radial-gradient(ellipse at 50% 46%, rgba(52, 104, 195, .05), transparent 54%);
    pointer-events: none;
}

.post-cover--cinematic .post-cover__content {
    position: absolute;
    z-index: 3;
    inset: 0;
    width: 100% !important;
    max-width: none !important;
    height: 100%;
    margin: 0 !important;
    padding: 0 !important;
}

.post-cover--cinematic .post-cover__content > .row,
.post-cover--cinematic .post-cover__content > .row > .col {
    height: 100%;
    margin: 0;
    padding: 0;
}

.post-cover--cinematic .brand {
    display: flex;
    align-items: center !important;
    justify-content: center !important;
    width: 100%;
    min-height: 100% !important;
    height: 100% !important;
    margin: 0 !important;
    padding: 36px 54px !important;
}

.post-cover--cinematic .post-title {
    width: min(100%, 1080px);
    max-width: 1080px !important;
    margin: 0 auto !important;
    padding: 14px 22px !important;
    border: 0 !important;
    border-radius: 0 !important;
    color: #f5f8ff !important;
    background: rgba(5, 9, 16, .14) !important;
    backdrop-filter: blur(2px);
    -webkit-backdrop-filter: blur(2px);
    font-size: clamp(36px, 3.7vw, 56px) !important;
    font-weight: 800 !important;
    line-height: 1.22 !important;
    letter-spacing: -.025em;
    text-align: center !important;
    text-shadow:
        0 3px 24px rgba(0, 0, 0, .82),
        0 0 34px rgba(51, 104, 194, .20) !important;
}

@media only screen and (max-width: 992px) {
    .post-cover--cinematic .post-cover__stage {
        width: 90%;
        max-width: none;
    }

    .post-cover--cinematic .brand {
        padding: 28px 30px !important;
    }

    .post-cover--cinematic .post-title {
        font-size: clamp(30px, 5vw, 44px) !important;
    }
}

@media only screen and (max-width: 600px) {
    .post-cover--cinematic .post-cover__stage {
        width: 95%;
    }

    .post-cover--cinematic .brand {
        padding: 18px 14px !important;
    }

    .post-cover--cinematic .post-title {
        padding: 8px 10px !important;
        font-size: clamp(25px, 7vw, 34px) !important;
        line-height: 1.25 !important;
    }
}

/* Share one measurable shell between the post body and the cinematic stage so
 * their outer edges cannot drift at tablet/desktop breakpoints. */
.post-container,
.post-cover--cinematic .post-cover__stage {
    width: 90% !important;
    max-width: 1200px !important;
    margin-right: auto !important;
    margin-left: auto !important;
}

.post-cover--cinematic .post-cover__stage {
    z-index: 4;
}

@media only screen and (max-width: 600px) {
    .post-container,
    .post-cover--cinematic .post-cover__stage {
        width: 95% !important;
        max-width: none !important;
    }
}


/* =========================================================
 * V5.3 - deterministic feed order + left-to-right fill + hero nudge
 * ========================================================= */

/* Materialize gives every .row .col a margin-left:auto. In a flex row that
 * consumes all remaining space, so the final lone card on page 2 is pushed to
 * the far right. Neutralize only the home-feed columns and make the visual
 * flow explicit: left -> right, then next row. */
.forum-feed-page .article-row {
    direction: ltr !important;
    flex-direction: row !important;
    justify-content: flex-start !important;
    align-content: flex-start !important;
}

.forum-feed-page .article {
    margin-left: 0 !important;
    margin-right: 0 !important;
    order: initial !important;
}

/* The post body contains Materialize column gutters, so its visible cards sit
 * slightly to the right of the nominal .post-container edge. Nudge the V5.2
 * cinematic stage to the right to match that visible content envelope more
 * closely without changing the image crop or the article/TOC layout. */
@media only screen and (min-width: 993px) {
    .post-cover--cinematic .post-cover__stage {
        left: 14px;
    }

    .post-cover--cinematic .post-title {
        width: min(100%, 1120px);
        max-width: 1120px !important;
        font-size: clamp(44px, 4.25vw, 68px) !important;
        line-height: 1.16 !important;
    }
}

@media only screen and (min-width: 601px) and (max-width: 992px) {
    .post-cover--cinematic .post-cover__stage {
        left: 8px;
    }

    .post-cover--cinematic .post-title {
        font-size: clamp(36px, 5.6vw, 50px) !important;
    }
}

@media only screen and (max-width: 600px) {
    .post-cover--cinematic .post-cover__stage {
        left: 0;
    }
}

/* =========================================================
 * V5.4 - post hero final visual alignment + larger title
 * ========================================================= */

/* The visible article/TOC cards include Materialize gutters. Move only the
 * cinematic stage slightly farther right so the artwork visually shares the
 * same left/right envelope as the cards below. Homepage/feed styles are not
 * touched in this revision. */
@media only screen and (min-width: 993px) {
    .post-cover--cinematic .post-cover__stage {
        left: 26px;
    }

    .post-cover--cinematic .post-title {
        width: min(100%, 1160px);
        max-width: 1160px !important;
        padding: 14px 18px !important;
        font-size: clamp(50px, 4.8vw, 76px) !important;
        line-height: 1.12 !important;
        letter-spacing: -.03em;
    }
}

@media only screen and (min-width: 601px) and (max-width: 992px) {
    .post-cover--cinematic .post-cover__stage {
        left: 14px;
    }

    .post-cover--cinematic .post-title {
        width: min(100%, 920px);
        max-width: 920px !important;
        font-size: clamp(40px, 6.1vw, 56px) !important;
        line-height: 1.14 !important;
    }
}

@media only screen and (max-width: 600px) {
    .post-cover--cinematic .post-cover__stage {
        left: 0;
    }

    .post-cover--cinematic .post-title {
        font-size: clamp(27px, 7.5vw, 38px) !important;
    }
}

/* ========================================================================== */
/* V5 taxonomy hub + PJAX-safe visualization layout                           */
/* ========================================================================== */
.taxonomy-page-content {
    padding-bottom: 64px;
}

.taxonomy-hub {
    width: min(92%, 1160px) !important;
    margin-right: auto;
    margin-left: auto;
}

.taxonomy-hub [hidden] {
    display: none !important;
}

.taxonomy-overview {
    margin: 0 0 42px;
    overflow: hidden;
    border: 1px solid rgba(116, 163, 236, .17) !important;
    border-radius: 16px !important;
    background:
        radial-gradient(circle at 8% 0%, rgba(76, 141, 255, .12), transparent 32%),
        radial-gradient(circle at 92% 15%, rgba(132, 103, 240, .08), transparent 30%),
        linear-gradient(145deg, rgba(17, 27, 43, .94), rgba(9, 15, 25, .96)) !important;
    box-shadow: 0 24px 64px rgba(0, 0, 0, .19) !important;
}

.taxonomy-overview .card-content,
.taxonomy-overview {
    color: var(--kz-text-soft);
}

.taxonomy-overview {
    padding: 30px 34px 32px;
}

.taxonomy-overview__eyebrow,
.taxonomy-section__eyebrow {
    display: block;
    margin-bottom: 7px;
    color: #6f9ce4;
    font-size: 10px;
    font-weight: 750;
    letter-spacing: .16em;
    text-transform: uppercase;
}

.taxonomy-overview__main {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 32px;
}

.taxonomy-overview h1,
.taxonomy-section__heading h2,
.taxonomy-results__heading h2 {
    margin: 0;
    color: #e7eef9;
    font-weight: 720;
    letter-spacing: -.025em;
}

.taxonomy-overview h1 {
    font-size: 28px;
}

.taxonomy-overview p {
    max-width: 680px;
    margin: 10px 0 0;
    color: #8393aa;
    font-size: 14px;
    line-height: 1.75;
}

.taxonomy-overview__stats {
    display: flex;
    gap: 10px;
    flex: 0 0 auto;
}

.taxonomy-overview__stats span {
    min-width: 72px;
    padding: 10px 12px;
    border: 1px solid rgba(112, 158, 230, .14);
    border-radius: 10px;
    color: #71849f;
    background: rgba(64, 108, 175, .055);
    text-align: center;
    font-size: 11px;
}

.taxonomy-overview__stats strong {
    display: block;
    margin-bottom: 2px;
    color: #a9c8fa;
    font-size: 18px;
    font-weight: 720;
}

.taxonomy-section,
.taxonomy-results {
    scroll-margin-top: 94px;
}

.taxonomy-section {
    margin-bottom: 46px;
}

.taxonomy-section__heading,
.taxonomy-results__heading {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 22px;
    margin: 0 4px 16px;
}

.taxonomy-section__heading h2,
.taxonomy-results__heading h2 {
    font-size: 22px;
}

.taxonomy-section__jump {
    padding-bottom: 2px;
    color: #6f829e !important;
    font-size: 12px;
}

.taxonomy-section__jump:hover {
    color: #9ebfff !important;
}

.taxonomy-section__jump i {
    margin-left: 5px;
    font-size: 10px;
}

.taxonomy-pair {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 18px;
    align-items: stretch;
}

.taxonomy-hub .taxonomy-pair > .container,
.taxonomy-hub .taxonomy-pair > #category-cloud,
.taxonomy-hub .taxonomy-pair > #tags {
    width: 100% !important;
    max-width: none !important;
    margin: 0 !important;
}

/* Unified taxonomy widget motion: all four cards use the exact same inner-card hover
   animation. The wrapper keeps AOS on a separate element, so AOS and hover never
   compete for the same transform property. */
.taxonomy-hub .taxonomy-widget-wrap > .taxonomy-widget-card {
    height: 100%;
    margin: 0 !important;
    position: relative;
    transform: translate3d(0, 0, 0);
    backface-visibility: hidden;
    -webkit-font-smoothing: antialiased;
    transition:
        transform .24s cubic-bezier(.2, .75, .25, 1),
        border-color .24s ease,
        background .24s ease,
        box-shadow .24s ease !important;
    will-change: transform;
}

.taxonomy-hub .taxonomy-widget-wrap > .taxonomy-widget-card:hover {
    transform: translate3d(0, -5px, 0) !important;
    border-color: rgba(112, 165, 247, .30) !important;
    background:
        radial-gradient(circle at 88% 0%, rgba(116, 94, 225, .09), transparent 30%),
        linear-gradient(145deg, rgba(21, 33, 52, .95), rgba(10, 17, 28, .97)) !important;
    box-shadow:
        0 24px 58px rgba(0, 0, 0, .22),
        0 0 32px rgba(63, 119, 226, .055) !important;
}

.taxonomy-hub #category-cloud .card-content,
.taxonomy-hub #tags .card-content {
    height: 100%;
    padding: 24px 26px !important;
}

.taxonomy-hub #category-cloud .tag-title,
.taxonomy-hub #tags .tag-title {
    margin-bottom: 18px;
    text-align: left !important;
    font-size: 18px;
}

.taxonomy-hub .tag-chips {
    justify-content: flex-start;
}

.taxonomy-hub #category-radar,
.taxonomy-hub #tag-wordcloud {
    height: 320px;
}

.taxonomy-hub .category-radar-wrap .card,
.taxonomy-hub .tag-wordcloud-wrap .card {
    overflow: hidden;
    border: 1px solid rgba(116, 163, 236, .15) !important;
    background:
        radial-gradient(circle at 88% 0%, rgba(116, 94, 225, .07), transparent 30%),
        linear-gradient(145deg, rgba(16, 25, 40, .93), rgba(9, 15, 25, .95)) !important;
}

.taxonomy-hub [data-taxonomy-filter].taxonomy-filter-active .chip,
.taxonomy-hub .taxonomy-post-card__tags .taxonomy-filter-active,
.taxonomy-hub #tag-wordcloud a.taxonomy-filter-active {
    border-color: rgba(112, 165, 247, .48) !important;
    color: #dbe9ff !important;
    background: linear-gradient(135deg, rgba(66, 126, 232, .26), rgba(105, 79, 199, .13)) !important;
    box-shadow: 0 8px 24px rgba(34, 83, 158, .14);
}

.taxonomy-results {
    margin-top: 52px;
}

.taxonomy-results__heading {
    margin-bottom: 18px;
}

.taxonomy-results__heading p {
    margin: 5px 0 0;
    color: #687b96;
    font-size: 12px;
}

.taxonomy-clear {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    height: 34px;
    padding: 0 12px;
    border: 1px solid rgba(112, 159, 232, .16);
    border-radius: 9px;
    color: #8699b5;
    background: rgba(61, 101, 163, .07);
    cursor: pointer;
}

.taxonomy-clear:hover {
    border-color: rgba(112, 165, 247, .34);
    color: #bad1f7;
    background: rgba(65, 119, 211, .11);
}

.taxonomy-post-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 18px;
}

.taxonomy-post-card {
    min-width: 0;
    overflow: hidden;
    border: 1px solid rgba(113, 158, 227, .14);
    border-radius: 14px;
    background:
        linear-gradient(150deg, rgba(17, 27, 43, .92), rgba(9, 15, 25, .96));
    box-shadow: 0 16px 42px rgba(0, 0, 0, .14);
    transition: transform .22s ease, border-color .22s ease, box-shadow .22s ease;
}

.taxonomy-post-card:hover {
    transform: translateY(-4px);
    border-color: rgba(112, 165, 247, .28);
    box-shadow: 0 22px 50px rgba(0, 0, 0, .20);
}

.taxonomy-post-card__cover {
    display: block;
    height: 174px;
    overflow: hidden;
    background: #0b111b;
}

.taxonomy-post-card__cover img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    opacity: .82;
    transition: transform .32s ease, opacity .32s ease;
}

.taxonomy-post-card:hover .taxonomy-post-card__cover img {
    transform: scale(1.035);
    opacity: .9;
}

.taxonomy-post-card__body {
    padding: 17px 18px 18px;
}

.taxonomy-post-card__meta {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    color: #637691;
    font-size: 10px;
}

.taxonomy-post-card__meta span {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.taxonomy-post-card__meta i {
    margin-right: 5px;
    color: #7089ad;
}

.taxonomy-post-card h3 {
    min-height: 47px;
    margin: 12px 0 8px;
    font-size: 16px;
    font-weight: 680;
    line-height: 1.45;
}

.taxonomy-post-card h3 a {
    color: #dce7f7 !important;
}

.taxonomy-post-card h3 a:hover {
    color: #9ec1ff !important;
}

.taxonomy-post-card p {
    min-height: 40px;
    margin: 0;
    overflow: hidden;
    color: #71829a;
    font-size: 12px;
    line-height: 1.68;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
}

.taxonomy-post-card__tags {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-top: 14px;
}

.taxonomy-post-card__tags button {
    max-width: 120px;
    height: 25px;
    padding: 0 9px;
    overflow: hidden;
    border: 1px solid rgba(112, 159, 232, .13);
    border-radius: 999px;
    color: #6f84a2;
    background: rgba(63, 105, 169, .06);
    text-overflow: ellipsis;
    white-space: nowrap;
    cursor: pointer;
    font-size: 10px;
}

.taxonomy-post-card__tags button:hover {
    color: #a8c5f4;
    border-color: rgba(112, 165, 247, .28);
}

.taxonomy-empty {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 9px;
    min-height: 130px;
    border: 1px dashed rgba(112, 159, 232, .15);
    border-radius: 13px;
    color: #687b96;
    background: rgba(13, 21, 34, .48);
}

@media only screen and (max-width: 992px) {
    .taxonomy-pair {
        grid-template-columns: 1fr;
    }

    .taxonomy-post-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .taxonomy-overview__main {
        align-items: flex-start;
        flex-direction: column;
    }
}

@media only screen and (max-width: 600px) {
    .taxonomy-hub {
        width: 92% !important;
    }

    .taxonomy-overview {
        padding: 24px 20px;
    }

    .taxonomy-overview h1 {
        font-size: 24px;
    }

    .taxonomy-overview__stats {
        width: 100%;
    }

    .taxonomy-overview__stats span {
        flex: 1 1 0;
        min-width: 0;
    }

    .taxonomy-section__heading,
    .taxonomy-results__heading {
        align-items: flex-start;
        flex-direction: column;
    }

    .taxonomy-section__jump {
        display: none;
    }

    .taxonomy-post-grid {
        grid-template-columns: 1fr;
    }

    .taxonomy-post-card__cover {
        height: 200px;
    }
}

/* Taxonomy hub pagination: three desktop rows per page (9 cards) without page reload. */
.taxonomy-results-pagination {
    width: 100% !important;
    max-width: none !important;
    margin-top: 30px !important;
    margin-bottom: 0 !important;
}

.taxonomy-results-pagination[hidden] {
    display: none !important;
}

/* Keep the article-directory heading intentionally clean: no secondary copy below “全部文章”. */
.taxonomy-results__heading [data-taxonomy-result-meta] {
    display: none !important;
}

/* =========================================================
 * Reusable heat scale - article word count / future learning heatmaps
 * Shared palette: 0 = empty, 1 -> 4 = increasing intensity.
 * Article and future daily-note heatmaps can reuse the same colors with
 * different numeric thresholds; see scripts/heat_scale.js.
 * Palette intentionally matches the archive calendar intensity system.
 * ========================================================= */
:root {
    --kz-heat-0: #111a29;
    --kz-heat-1: #1d3151;
    --kz-heat-2: #295189;
    --kz-heat-3: #3675c7;
    --kz-heat-4: #68a5ff;
}

.kz-heat-cell {
    display: inline-block;
    width: 11px;
    height: 11px;
    flex: 0 0 11px;
    border: 1px solid rgba(112, 159, 232, .18);
    border-radius: 2px;
    background: var(--kz-heat-0);
    box-shadow: 0 0 0 1px rgba(0, 0, 0, .12) inset;
    transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}

.kz-heat-level-0 { background: var(--kz-heat-0); }
.kz-heat-level-1 { background: var(--kz-heat-1); }
.kz-heat-level-2 { background: var(--kz-heat-2); }
.kz-heat-level-3 { background: var(--kz-heat-3); }
.kz-heat-level-4 {
    background: var(--kz-heat-4);
    border-color: rgba(118, 176, 255, .34);
    box-shadow: 0 0 9px rgba(75, 139, 238, .16);
}

.forum-post-card__summary-row {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    min-height: 60px;
    margin-bottom: 14px;
}

.forum-post-card__summary-row .summary {
    flex: 1 1 auto;
    min-width: 0;
    margin-bottom: 0 !important;
}

/* Matery's legacy multiline-ellipsis trick created the white square seen on
 * home cards. The feed already uses line-clamp, so these pseudo elements are
 * unnecessary here and are replaced by the explicit heat cell above. */
.forum-post-card__summary-row .block-with-text::before,
.forum-post-card__summary-row .block-with-text::after {
    display: none !important;
    content: none !important;
}

.forum-post-card__heat {
    margin-top: 5px;
    cursor: help;
}

.forum-post-card:hover .forum-post-card__heat {
    transform: scale(1.12);
    border-color: rgba(127, 181, 255, .42);
}

/* =========================================================
 * V7.1 - Compact inner hero / taller canvas
 * Keeps the pre-Steam right-fade layout, but increases vertical room for artwork.
 * The home hero and post hero are intentionally untouched.
 * ========================================================= */
.bg-cover.inner-cover {
    position: relative;
    height: 500px !important;
    min-height: 500px !important;
    overflow: hidden;
    isolation: isolate;
    background:
        radial-gradient(circle at 12% 20%, rgba(55, 112, 219, .17), transparent 28rem),
        linear-gradient(110deg, #070b12 0%, #09111d 52%, #0a1321 100%) !important;
    border-bottom: 1px solid rgba(127, 165, 221, .11) !important;
}

.bg-cover.inner-cover.inner-cover--archive,
.bg-cover.inner-cover.inner-cover--contact {
    height: 480px !important;
    min-height: 480px !important;
}

.bg-cover.inner-cover.inner-cover--about {
    height: 540px !important;
    min-height: 540px !important;
}

.bg-cover.inner-cover.inner-cover--changelog {
    height: 420px !important;
    min-height: 420px !important;
}

.bg-cover.inner-cover .inner-cover__media {
    z-index: 0;
    inset: 0 0 0 36%;
    width: auto;
    height: 100%;
    overflow: hidden;
    background: transparent;
    -webkit-mask-image: linear-gradient(90deg, transparent 0%, rgba(0,0,0,.18) 12%, #000 39%, #000 100%);
    mask-image: linear-gradient(90deg, transparent 0%, rgba(0,0,0,.18) 12%, #000 39%, #000 100%);
}

.bg-cover.inner-cover .inner-cover__backdrop {
    inset: -10%;
    width: 120%;
    height: 120%;
    background-image: var(--kz-inner-cover-image);
    background-position: center center;
    background-size: cover;
    filter: blur(28px) brightness(.44) saturate(.92);
    transform: scale(1.06);
    opacity: .46;
}

.bg-cover.inner-cover .inner-cover__image {
    inset: 0;
    z-index: 1;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center center;
    filter: brightness(.70) saturate(.92) contrast(1.02);
    opacity: .82;
    transform: scale(1);
    transition: transform 8s ease, opacity .35s ease;
}

.bg-cover.inner-cover:hover .inner-cover__image {
    transform: scale(1.035);
}

.bg-cover.inner-cover::before {
    z-index: 2;
    background:
        linear-gradient(90deg, rgba(6, 10, 17, .98) 0%, rgba(7, 12, 20, .94) 34%, rgba(7, 12, 20, .48) 63%, rgba(7, 11, 18, .20) 100%),
        linear-gradient(180deg, rgba(6, 9, 15, .12) 0%, rgba(6, 10, 17, .28) 72%, rgba(7, 10, 16, .74) 100%);
}

.bg-cover.inner-cover::after {
    z-index: 3;
    opacity: .12;
    background-image:
        linear-gradient(rgba(124, 164, 224, .035) 1px, transparent 1px),
        linear-gradient(90deg, rgba(124, 164, 224, .025) 1px, transparent 1px);
    background-size: 48px 48px;
    mask-image: linear-gradient(90deg, #000 0%, transparent 72%);
    -webkit-mask-image: linear-gradient(90deg, #000 0%, transparent 72%);
}

.bg-cover.inner-cover .container.inner-hero__container {
    position: relative;
    z-index: 5;
    display: flex;
    align-items: center;
    width: min(92%, 1240px) !important;
    max-width: 1240px !important;
    height: 100%;
    padding-top: 68px;
}

.inner-hero__copy {
    width: min(54%, 650px);
}

.inner-hero__eyebrow {
    display: flex;
    align-items: center;
    gap: 9px;
    margin-bottom: 13px;
    color: #8298b9;
    font-size: 11px;
    font-weight: 750;
    letter-spacing: .17em;
}

.inner-hero__eyebrow > span {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: #4d8dff;
    box-shadow: 0 0 17px rgba(77, 141, 255, .74);
}

.inner-hero__copy h1 {
    margin: 0;
    color: #f4f8ff;
    font-size: clamp(32px, 3.2vw, 46px);
    font-weight: 780;
    line-height: 1.15;
    letter-spacing: -.035em;
    text-shadow: 0 10px 32px rgba(0, 0, 0, .36);
}

.inner-hero__copy p {
    max-width: 520px;
    margin: 13px 0 0;
    color: #97a8bf;
    font-size: 14px;
    line-height: 1.75;
}

.inner-hero__stats {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 20px;
}

.inner-hero__stats > span {
    display: inline-flex;
    align-items: baseline;
    gap: 6px;
    min-height: 31px;
    padding: 6px 10px;
    border: 1px solid rgba(120, 162, 224, .14);
    border-radius: 9px;
    background: rgba(12, 20, 32, .46);
    box-shadow: inset 0 1px rgba(255,255,255,.018);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
}

.inner-hero__stats strong {
    color: #dce9ff;
    font-size: 14px;
    font-weight: 750;
}

.inner-hero__stats em {
    color: #71839c;
    font-size: 11px;
    font-style: normal;
}

/* V4 intentionally hid old Matery brand copy. The new hero uses its own
 * namespace, so keep old cover copy hidden without hiding the new content. */
.bg-cover.inner-cover .brand,
.bg-cover.inner-cover .title,
.bg-cover.inner-cover .description {
    display: none !important;
}

/* The compact hero no longer needs the previous 68px cinematic overlap. */
.bg-cover.inner-cover + main.content {
    margin-top: -26px !important;
    padding-top: 0 !important;
}

.inner-cover--taxonomy + main.content.taxonomy-page-content {
    margin-top: 0 !important;
    padding-top: 34px !important;
}

.inner-cover--about + main.content {
    margin-top: -28px !important;
}

.inner-cover--changelog + main.content.changelog-page-content {
    margin-top: -58px !important;
}

/* The page identity now lives in the hero, so the taxonomy hub can begin
 * directly with categories instead of repeating the same title card. */
.taxonomy-page-content .taxonomy-hub {
    padding-top: 0;
}

@media only screen and (max-width: 992px) {
    .bg-cover.inner-cover,
    .bg-cover.inner-cover.inner-cover--archive,
    .bg-cover.inner-cover.inner-cover--contact,
    .bg-cover.inner-cover.inner-cover--about {
        height: 420px !important;
        min-height: 420px !important;
    }

    .bg-cover.inner-cover.inner-cover--changelog {
        height: 360px !important;
        min-height: 360px !important;
    }

    .bg-cover.inner-cover .inner-cover__media {
        left: 28%;
    }

    .bg-cover.inner-cover .container.inner-hero__container {
        padding-top: 58px;
    }

    .inner-hero__copy {
        width: 62%;
    }

    .inner-hero__copy h1 {
        font-size: clamp(30px, 5vw, 40px);
    }
}

@media only screen and (max-width: 600px) {
    .bg-cover.inner-cover,
    .bg-cover.inner-cover.inner-cover--archive,
    .bg-cover.inner-cover.inner-cover--contact,
    .bg-cover.inner-cover.inner-cover--about {
        height: 275px !important;
        min-height: 275px !important;
    }

    .bg-cover.inner-cover.inner-cover--changelog {
        height: 250px !important;
        min-height: 250px !important;
    }

    .bg-cover.inner-cover .inner-cover__media {
        left: 40%;
        inset: 0 0 0 40%;
        opacity: .76;
    }

    .bg-cover.inner-cover::before {
        background:
            linear-gradient(90deg, rgba(6, 10, 17, .99) 0%, rgba(7, 12, 20, .94) 55%, rgba(7, 12, 20, .48) 100%),
            linear-gradient(180deg, rgba(6, 9, 15, .08), rgba(7, 10, 16, .70));
    }

    .bg-cover.inner-cover .container.inner-hero__container {
        width: 90% !important;
        padding-top: 42px;
    }

    .inner-hero__copy {
        width: 78%;
    }

    .inner-hero__eyebrow {
        margin-bottom: 8px;
        font-size: 9px;
    }

    .inner-hero__copy h1 {
        font-size: 28px;
    }

    .inner-hero__copy p {
        margin-top: 8px;
        font-size: 12px;
        line-height: 1.55;
    }

    .inner-hero__stats {
        gap: 6px;
        margin-top: 12px;
    }

    .inner-hero__stats > span {
        min-height: 27px;
        padding: 4px 8px;
    }

    .inner-hero__stats strong {
        font-size: 12px;
    }

    .inner-hero__stats em {
        font-size: 10px;
    }

    .bg-cover.inner-cover + main.content,
    .inner-cover--about + main.content,
    .inner-cover--changelog + main.content.changelog-page-content {
        margin-top: -14px !important;
    }

    .inner-cover--taxonomy + main.content.taxonomy-page-content {
        margin-top: 0 !important;
        padding-top: 24px !important;
    }
}


/* =========================================================
 * V7.2 - Ratio-safe inner hero artwork
 * Banner assets are mostly ~3.10:1 (850x274 / 1920x620). The visual media
 * is now width-capped and the sharp layer uses contain so browser zoom-out
 * or ultra-wide viewports cannot stretch the artwork into a thin cropped strip.
 * ========================================================= */
.bg-cover.inner-cover {
    height: clamp(400px, 27vw, 520px) !important;
    min-height: 400px !important;
}

.bg-cover.inner-cover.inner-cover--archive,
.bg-cover.inner-cover.inner-cover--contact {
    height: clamp(390px, 26vw, 500px) !important;
    min-height: 390px !important;
}

.bg-cover.inner-cover.inner-cover--about {
    height: clamp(420px, 29vw, 560px) !important;
    min-height: 420px !important;
}

.bg-cover.inner-cover.inner-cover--changelog {
    height: clamp(360px, 24vw, 460px) !important;
    min-height: 360px !important;
}

/* Keep the picture close to the content shell on ultra-wide / zoomed-out
 * viewports instead of letting it grow with the full browser width. */
.bg-cover.inner-cover .inner-cover__media {
    inset: 0 max(0px, calc((100vw - 1720px) / 2)) 0 auto !important;
    left: auto !important;
    right: max(0px, calc((100vw - 1720px) / 2)) !important;
    width: min(72vw, 1560px) !important;
    max-width: 1560px;
    height: 100% !important;
    -webkit-mask-image: linear-gradient(90deg, transparent 0%, rgba(0,0,0,.16) 10%, #000 34%, #000 100%) !important;
    mask-image: linear-gradient(90deg, transparent 0%, rgba(0,0,0,.16) 10%, #000 34%, #000 100%) !important;
}

/* Archive uses the only 16:9 banner in this set, so a narrower media window
 * keeps that artwork visually balanced while still showing it in full. */
.bg-cover.inner-cover.inner-cover--archive .inner-cover__media {
    width: min(56vw, 1040px) !important;
    max-width: 1040px;
}

.bg-cover.inner-cover .inner-cover__backdrop {
    inset: -7% !important;
    width: 114% !important;
    height: 114% !important;
    background-position: center center !important;
    background-size: cover !important;
    filter: blur(26px) brightness(.44) saturate(.92) !important;
    transform: scale(1.045) !important;
    opacity: .50 !important;
}

/* The clear layer is never cropped. The blurred backdrop absorbs any spare
 * space, preserving the existing right-fade / glass aesthetic. */
.bg-cover.inner-cover .inner-cover__image {
    inset: 0 !important;
    width: 100% !important;
    height: 100% !important;
    object-fit: contain !important;
    object-position: right center !important;
    transform: none !important;
    filter: brightness(.72) saturate(.94) contrast(1.015) !important;
    opacity: .88 !important;
    transition: filter .4s ease, opacity .4s ease !important;
}

.bg-cover.inner-cover:hover .inner-cover__image {
    transform: none !important;
    filter: brightness(.76) saturate(.98) contrast(1.02) !important;
    opacity: .92 !important;
}

@media only screen and (max-width: 1200px) {
    .bg-cover.inner-cover .inner-cover__media {
        right: 0 !important;
        width: min(76vw, 1120px) !important;
    }

    .bg-cover.inner-cover.inner-cover--archive .inner-cover__media {
        width: min(62vw, 920px) !important;
    }
}

@media only screen and (max-width: 992px) {
    .bg-cover.inner-cover,
    .bg-cover.inner-cover.inner-cover--archive,
    .bg-cover.inner-cover.inner-cover--contact,
    .bg-cover.inner-cover.inner-cover--about {
        height: clamp(350px, 46vw, 430px) !important;
        min-height: 350px !important;
    }

    .bg-cover.inner-cover.inner-cover--changelog {
        height: clamp(320px, 42vw, 390px) !important;
        min-height: 320px !important;
    }

    .bg-cover.inner-cover .inner-cover__media,
    .bg-cover.inner-cover.inner-cover--archive .inner-cover__media {
        right: 0 !important;
        width: min(82vw, 900px) !important;
        max-width: 900px;
    }

    .bg-cover.inner-cover .container.inner-hero__container {
        padding-top: 50px !important;
    }
}

@media only screen and (max-width: 600px) {
    .bg-cover.inner-cover,
    .bg-cover.inner-cover.inner-cover--archive,
    .bg-cover.inner-cover.inner-cover--contact,
    .bg-cover.inner-cover.inner-cover--about {
        height: clamp(320px, 92vw, 390px) !important;
        min-height: 320px !important;
    }

    .bg-cover.inner-cover.inner-cover--changelog {
        height: clamp(300px, 86vw, 360px) !important;
        min-height: 300px !important;
    }

    /* On phones the complete artwork sits across the upper portion rather than
     * becoming a narrow right-hand sliver. Text occupies the lower dark field. */
    .bg-cover.inner-cover .inner-cover__media,
    .bg-cover.inner-cover.inner-cover--archive .inner-cover__media {
        inset: 0 0 auto 0 !important;
        left: 0 !important;
        right: 0 !important;
        width: 100% !important;
        max-width: none !important;
        height: 62% !important;
        opacity: .78;
        -webkit-mask-image: linear-gradient(180deg, #000 0%, rgba(0,0,0,.92) 58%, transparent 100%) !important;
        mask-image: linear-gradient(180deg, #000 0%, rgba(0,0,0,.92) 58%, transparent 100%) !important;
    }

    .bg-cover.inner-cover .inner-cover__image {
        object-position: center center !important;
    }

    .bg-cover.inner-cover::before {
        background:
            linear-gradient(180deg, rgba(6, 10, 17, .16) 0%, rgba(7, 12, 20, .58) 48%, rgba(6, 10, 17, .99) 82%, rgba(6, 10, 17, 1) 100%),
            linear-gradient(90deg, rgba(6, 10, 17, .72), rgba(7, 12, 20, .20)) !important;
    }

    .bg-cover.inner-cover .container.inner-hero__container {
        align-items: flex-end !important;
        width: 90% !important;
        padding: 0 0 30px !important;
    }

    .inner-hero__copy {
        width: 100% !important;
        max-width: 100% !important;
    }
}
