/* Migrated unchanged from the previous article template, then overlaid by the public v4 design system. */
    .ky-article-page { color: #172033; background: #fff; }
    .ky-article-shell { width: min(860px, calc(100% - 40px)); margin: 0 auto; }
    .ky-article-wide { width: min(1180px, calc(100% - 40px)); margin: 0 auto; }

    .ky-article-header { padding: 54px 0 30px; }
    .ky-article-category {
        display: inline-flex; align-items: center; gap: 7px; color: #c2410c;
        font-size: 10px; font-weight: 600; letter-spacing: .11em; text-transform: uppercase;
        text-decoration: none;
    }
    .ky-article-header h1 {
        max-width: 820px; margin: 13px 0 0; color: #172033;
        font-size: clamp(36px, 4.6vw, 52px); font-weight: 550; line-height: 1.08;
        letter-spacing: -.048em;
    }
    .ky-article-byline {
        display: flex; flex-wrap: wrap; align-items: center; gap: 12px 18px;
        margin-top: 22px; padding-top: 18px; border-top: 1px solid #edf1f5;
    }
    .ky-article-author { display: flex; align-items: center; gap: 9px; }
    .ky-article-author img,
    .ky-article-author__fallback {
        width: 32px; height: 32px; flex: 0 0 32px; border-radius: 50%;
    }
    .ky-article-author img { object-fit: cover; border: 1px solid #e6eaf0; }
    .ky-article-author__fallback {
        display: grid; place-items: center; color: #9a3412; background: #fff7ed;
        font-size: 10px; font-weight: 600;
    }
    .ky-article-author strong { display: block; color: #475467; font-size: 11px; font-weight: 600; }
    .ky-article-author span { display: block; margin-top: 1px; color: #98a2b3; font-size: 10px; }
    .ky-article-byline__meta { display: flex; align-items: center; gap: 8px; color: #8a95a5; font-size: 10.5px; }
    .ky-article-byline__dot { width: 3px; height: 3px; border-radius: 50%; background: #cbd2da; }

    .ky-article-cover {
        width: min(1020px, calc(100% - 40px)); margin: 0 auto 42px; overflow: hidden;
        border: 1px solid #e6eaf0; border-radius: 16px; background: #f7f8fa;
    }
    .ky-article-cover img { width: 100%; display: block; aspect-ratio: 16 / 8.5; object-fit: cover; }
    .ky-article-cover__fallback {
        min-height: 390px; display: grid; place-items: center; padding: 40px;
        color: #667085; background: #f8fafc; text-align: center;
    }
    .ky-article-cover__fallback span { max-width: 650px; font-size: 27px; font-weight: 550; line-height: 1.25; letter-spacing: -.035em; }

    .ky-ad-slot { margin: 20px 0; }

    .ky-article-content { padding-bottom: 18px; }

    .ky-article-footer-block {
        margin-top: 38px; padding-top: 24px; border-top: 1px solid #edf1f5;
    }
    .ky-article-tags { display: flex; flex-wrap: wrap; gap: 7px; }
    .ky-article-tags a {
        display: inline-flex; align-items: center; min-height: 29px; padding: 5px 9px;
        border: 1px solid #e6eaf0; border-radius: 7px; color: #667085; background: #fff;
        font-size: 10px; font-weight: 500; text-decoration: none;
    }
    .ky-article-tags a:hover { color: #c2410c; border-color: #fed7aa; background: #fffaf6; }

    .ky-article-engagement {
        display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between;
        gap: 14px; margin-top: 20px;
    }
    .ky-like-button {
        display: inline-flex; align-items: center; gap: 8px; min-height: 38px; padding: 0 12px;
        border: 1px solid #e5eaf0; border-radius: 9px; color: #667085; background: #fff;
        font-size: 11px; font-weight: 600; cursor: pointer; transition: .18s ease;
    }
    .ky-like-button:hover,
    .ky-like-button.liked { color: #dc2626; border-color: #fecaca; background: #fffafa; }
    .ky-like-button svg { width: 16px; height: 16px; }
    .ky-like-login { display: flex; align-items: center; gap: 10px; color: #8a95a5; font-size: 10.5px; }

    .ky-comments { padding: 56px 0 72px; }
    .ky-comments__head { margin-bottom: 24px; }
    .ky-comments__head span { color: #c2410c; font-size: 9px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; }
    .ky-comments__head h2 { margin: 6px 0 0; color: #172033; font-size: 24px; font-weight: 600; letter-spacing: -.03em; }
    .ky-comments__list { display: grid; gap: 0; border-top: 1px solid #edf1f5; }
    .ky-comment { padding: 22px 0; border-bottom: 1px solid #edf1f5; }
    .ky-comment__head { display: flex; align-items: center; gap: 10px; }
    .ky-comment__avatar,
    .ky-comment__avatar-fallback {
        width: 32px; height: 32px; flex: 0 0 32px; border-radius: 50%;
    }
    .ky-comment__avatar { object-fit: cover; border: 1px solid #e6eaf0; }
    .ky-comment__avatar-fallback { display: grid; place-items: center; color: #667085; background: #f3f5f7; font-size: 10px; font-weight: 600; }
    .ky-comment__person strong { display: block; color: #344054; font-size: 11px; font-weight: 600; }
    .ky-comment__person span { display: block; margin-top: 1px; color: #98a2b3; font-size: 9.5px; }
    .ky-comment__content { margin-top: 10px; color: #596579; font-size: 12.5px; line-height: 1.7; }
    .ky-comment__reply-button {
        margin-top: 10px; padding: 0; border: 0; color: #c2410c; background: transparent;
        font-size: 10.5px; font-weight: 600; cursor: pointer;
    }
    .ky-reply-form { margin-top: 14px; padding-left: 42px; }
    .ky-replies { display: grid; gap: 14px; margin-top: 18px; padding-left: 42px; }
    .ky-reply { padding: 14px 16px; border-left: 2px solid #edf1f5; background: #fafbfc; }
    .ky-comment-form { margin-top: 34px; padding-top: 28px; border-top: 1px solid #edf1f5; }
    .ky-comment-form h3 { margin: 0 0 12px; color: #172033; font-size: 17px; font-weight: 600; }
    .ky-comment-form textarea,
    .ky-reply-form textarea {
        width: 100%; min-height: 110px; padding: 12px 13px; border: 1px solid #dfe5ec;
        border-radius: 10px; outline: none; color: #344054; background: #fff; font-size: 12px; line-height: 1.6;
    }
    .ky-comment-form textarea:focus,
    .ky-reply-form textarea:focus { border-color: #fdba74; box-shadow: 0 0 0 3px rgba(249,115,22,.07); }
    .ky-comment-submit {
        display: inline-flex; align-items: center; justify-content: center; min-height: 40px; margin-top: 10px;
        padding: 0 14px; border: 1px solid #f97316; border-radius: 9px; color: #fff; background: #f97316;
        font-size: 11px; font-weight: 600; cursor: pointer;
    }
    .ky-comment-submit:hover { background: #ea580c; }
    .ky-comment-error { margin-top: 6px; color: #dc2626; font-size: 10px; }
    .ky-comments-empty { padding: 20px 0; color: #8a95a5; font-size: 12px; }
    .ky-comment-login { padding: 18px 0 0; color: #667085; font-size: 11px; }
    .ky-comment-login p { margin: 0 0 10px; }

    .ky-related { padding: 52px 0 70px; border-top: 1px solid #edf1f5; background: #fafbfc; }
    .ky-related__head { display: flex; align-items: end; justify-content: space-between; gap: 18px; margin-bottom: 20px; }
    .ky-related__head h2 { margin: 0; color: #172033; font-size: 22px; font-weight: 600; letter-spacing: -.03em; }
    .ky-related__head a { color: #c2410c; font-size: 10.5px; font-weight: 600; text-decoration: none; }
    .ky-related__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 22px; }

    .heart-animation { transition: all .3s ease; transform-origin: center; }
    .liked .heart-icon { fill: currentColor; stroke: currentColor; }
    @keyframes heartBounce { 0%{transform:scale(1)} 30%{transform:scale(1.25)} 60%{transform:scale(.92)} 100%{transform:scale(1)} }
    .heart-bounce { animation: heartBounce .5s ease; }

    @media (max-width: 820px) {
        .ky-related__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    }

    @media (max-width: 640px) {
        .ky-article-shell,
        .ky-article-wide,
        .ky-article-cover { width: min(100% - 28px, 1180px); }
        .ky-article-header { padding: 40px 0 24px; }
        .ky-article-header h1 { font-size: 34px; }
        .ky-article-cover { margin-bottom: 30px; border-radius: 12px; }
        .ky-article-cover__fallback { min-height: 240px; padding: 24px; }
        .ky-article-cover__fallback span { font-size: 21px; }
        #blog_description { font-size: 15px !important; line-height: 1.78 !important; }
        #blog_description h2 { font-size: 23px !important; }
        #blog_description h3 { font-size: 19px !important; }
        .ky-comments { padding: 42px 0 56px; }
        .ky-reply-form,
        .ky-replies { padding-left: 20px; }
        .ky-related__head { align-items: flex-start; flex-direction: column; }
        .ky-related__grid { grid-template-columns: 1fr; }
    }
/* Related project shelf */
/* Journal project shelf: shared by the listing and article detail views. */
.ky-journal-shelf{margin:14px 0 64px;padding:34px 0 0;border-top:1px solid #e4e7eb}
.ky-journal-shelf--article{margin:0;padding:52px 0 58px;border-top:1px solid #e4e7eb;background:#fafaf9}
.ky-journal-shelf__head{display:flex;align-items:end;justify-content:space-between;gap:24px;margin:0 0 24px}
.ky-journal-shelf__kicker{display:block;margin-bottom:8px;color:#bc4a17;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}
.ky-journal-shelf__head h2{margin:0;color:#182235;font-size:clamp(23px,2.6vw,31px);font-weight:650;line-height:1.2;letter-spacing:-.03em}
.ky-journal-shelf__head p{margin:8px 0 0;max-width:660px;color:#657084;font-size:13px;line-height:1.65}
.ky-journal-shelf__all{flex:0 0 auto;color:#a93c10;font-size:13px;font-weight:700;text-decoration:none}
.ky-journal-shelf__all:hover,.ky-journal-shelf__all:focus-visible{text-decoration:underline}
.ky-journal-shelf__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
.ky-journal-shelf__grid>*{min-width:0}
.ky-journal-product{display:flex;flex-direction:column;min-width:0;background:#fff;border:1px solid #e4e7eb;border-radius:9px;overflow:hidden}
.ky-journal-product__image{display:block;aspect-ratio:16/10;background:#eef0f2;overflow:hidden}
.ky-journal-product__image img{display:block;width:100%;height:100%;object-fit:cover}
.ky-journal-product__body{flex:1;display:flex;flex-direction:column;padding:17px 17px 15px}
.ky-journal-product__type{font-size:10px;color:#a34a21;font-weight:700;letter-spacing:.055em;text-transform:uppercase}
.ky-journal-product h3{margin:9px 0 0;font-size:17px;line-height:1.35;font-weight:650;color:#182235;letter-spacing:-.018em}
.ky-journal-product h3 a{color:inherit;text-decoration:none;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}
.ky-journal-product h3 a:hover,.ky-journal-product h3 a:focus-visible{color:#b94718;text-decoration:underline}
.ky-journal-product__body>p{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin:9px 0 0;color:#667085;font-size:12px;line-height:1.6}
.ky-journal-product__bottom{display:flex;justify-content:space-between;align-items:end;gap:12px;flex-wrap:wrap;margin-top:auto;padding-top:19px}
.ky-journal-product__prices{display:flex;flex-direction:column;gap:3px}
.ky-journal-product__regular{font-size:11px;color:#5e6879}
.ky-journal-product__regular.is-discounted{text-decoration:line-through;color:#8993a3}
.ky-journal-product__member{font-size:14px;color:#bc4a17;font-weight:750;line-height:1.35}
.ky-journal-product__free{color:#087556;font-size:15px}
.ky-journal-product__view{color:#182235;font-weight:700;font-size:12px;text-decoration:none;white-space:nowrap}
.ky-journal-product__view:hover,.ky-journal-product__view:focus-visible{text-decoration:underline;color:#b94718}
.ky-journal-membership{display:flex;justify-content:space-between;align-items:center;gap:25px;margin-top:22px;padding:21px 24px;background:#182235;color:#fff;border-radius:8px}
.ky-journal-membership__label{display:block;margin-bottom:6px;color:#fdba74;font-size:10px;font-weight:750;letter-spacing:.09em;text-transform:uppercase}
.ky-journal-membership strong{display:block;color:#fff;font-size:17px;font-weight:650;line-height:1.3}
.ky-journal-membership p{margin:5px 0 0;max-width:760px;color:#d0d7e3;font-size:12px;line-height:1.6}
.ky-journal-membership a{flex:0 0 auto;color:#fff;font-size:12px;font-weight:700;text-underline-offset:4px;text-decoration:underline}
.ky-journal-membership a:hover,.ky-journal-membership a:focus-visible{color:#fdba74}
@media(max-width:960px){.ky-journal-shelf__grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:640px){.ky-journal-shelf{margin-bottom:48px;padding-top:26px}.ky-journal-shelf--article{padding:35px 0 45px}.ky-journal-shelf__head{align-items:start;flex-direction:column;gap:12px;margin-bottom:17px}.ky-journal-shelf__grid{grid-template-columns:1fr;gap:14px}.ky-journal-membership{align-items:flex-start;flex-direction:column;gap:14px;padding:20px}.ky-journal-product__body{padding:15px}.ky-journal-product__bottom{padding-top:16px}}
