div.cp-related-async{
    width: 100%;
    box-shadow: var(--shadow);
}

div.cp-related-async.is-loaded > div.cp-related-loading{
    display: none;
}

div.cp-related-async > div.cp-related-loading{
    width: 100%;
    border-radius: var(--rad);
    background-color: #fff;
    min-height: 140px;
}

div.cp-related-async > div.cp-related-loading > div.cp-related-loading-body{
    display: flex;
    align-items: center;
    justify-content: center;
    gap: .75em;
    min-height: 88px;
    padding: .75em 1em 1em;
}

div.cp-related-async > div.cp-related-loading > div.cp-related-loading-body > span.cp-related-spinner{
    width: 28px;
    height: 28px;
    border-radius: 50%;
    border: 3px solid rgba(0,0,0,.12);
    border-top-color: var(--red);
    animation: cp-related-spin .85s linear infinite;
    flex: 0 0 auto;
}

div.cp-related-async > div.cp-related-loading > div.cp-related-loading-body > p.cp-related-loading-text{
    margin: 0;
    font-size: .95em;
    line-height: 1.6;
}

div.cp-related-async.is-error > div.cp-related-loading > div.cp-related-loading-body > span.cp-related-spinner{
    animation: none;
    border-top-color: rgba(0,0,0,.12);
}

@keyframes cp-related-spin{
    to{ transform: rotate(360deg); }
}


div.cp-related-async > div.cp-related-wrap{
    opacity: 0;
    filter: blur(1.2px);
    will-change: opacity, filter;
}

div.cp-related-async.is-loaded > div.cp-related-wrap{
    animation: cp-related-fade-in .5s ease-out both;
}

@keyframes cp-related-fade-in{
    0%{
        opacity: 0;
        filter: blur(1.2px);
    }
    45%{
        opacity: .42;
        filter: blur(.8px);
    }
    100%{
        opacity: 1;
        filter: blur(0);
    }
}

div.cp-related-wrap{
    width: 100%;
    border-radius: var(--rad);
    background-color: #fff;
}

div.cp-related-wrap > ol.cp-related-list{
    padding: .5em;
    list-style: none;
    display: flex;
    flex-wrap: wrap;
    gap: 0.5em;
    margin: 0;
}

div.cp-related-wrap > ol.cp-related-list > li.cp-related-item{
    position: relative;
    width: 100%;
    margin: 2px 0;
}

/* カード全体リンク */
div.cp-related-wrap > ol.cp-related-list > li.cp-related-item > a.cp-related-cardlink{
    display: block;
    text-decoration: none;
    color: inherit;
    position: relative;
}

/* カード（外枠） */
div.cp-related-wrap > ol.cp-related-list > li.cp-related-item > a.cp-related-cardlink > div.cp-related-card{
    border: 2px #aaa solid;
    border-radius: var(--rad);
    padding: .75em .5em .25em;
    box-sizing: border-box;
    position: relative;
}

/* クリック可能の透かしアイコン */
div.cp-related-wrap > ol.cp-related-list > li.cp-related-item > a.cp-related-cardlink > div.cp-related-card > .cp-related-clickhint{
    position: absolute;
    right: .45em;
    bottom: .4em;
    width: 34px;
    height: 34px;
    transform: rotate(-45deg);
    opacity: .22;
    pointer-events: none;
    line-height: 1;
    z-index: 2;
    background: linear-gradient(90deg, rgba(0,140,255,.95), rgba(255,70,70,.95));
    -webkit-mask-image: var(--cp-tap-url);
    mask-image: var(--cp-tap-url);
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-position: center;
    mask-position: center;
    -webkit-mask-size: contain;
    mask-size: contain;
    transition: transform .25s ease, opacity .25s ease;
}

div.cp-related-wrap > ol.cp-related-list > li.cp-related-item > a.cp-related-cardlink:hover > div.cp-related-card > .cp-related-clickhint{
    transform: rotate(-45deg) scale(1.12);
    opacity: .28;
}

/* 左：画像 / 右：タイトル＋カテゴリ */
div.cp-related-wrap > ol.cp-related-list > li.cp-related-item > a.cp-related-cardlink > div.cp-related-card > div.cp-related-row{
    display: flex;
    align-items: flex-start;
    gap: .5em;
}

/* サムネ */
div.cp-related-wrap > ol.cp-related-list > li.cp-related-item div.cp-related-thumb{
    flex-shrink: 0;
}

div.cp-related-wrap > ol.cp-related-list > li.cp-related-item div.cp-related-thumb > img{
    width: 80px;
    height: 80px;
    aspect-ratio: 1 / 1;
    object-fit: cover;
    display: block;
    border-radius: 4px;
}

div.cp-related-wrap > ol.cp-related-list > li.cp-related-item div.cp-related-thumb > span:first-child{
    display: flex;
    border-radius: 4px;
}

/* 右側テキスト */
div.cp-related-wrap > ol.cp-related-list > li.cp-related-item div.cp-related-text{
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: .35em;
    margin-top: -.25em;
    margin-bottom: .25em;
}

div.cp-related-wrap > ol.cp-related-list > li.cp-related-item span.cp-related-post-title{
    font-size: 0.9em;
    line-height: 1.5;
    display: block;
    word-break: break-word;
}

div.cp-related-wrap > ol.cp-related-list > li.cp-related-item span.wpp-parent-cat-link{
    display: inline-flex;
    align-items: center;
    gap: 2px;
}

div.cp-related-wrap > ol.cp-related-list > li.cp-related-item span.wpp-parent-cat-link > span{
    font-size: .8em;
    color: #fff;
    padding: .25em .75em;
    background-color: var(--red);
    border-radius: var(--rad);
}

div.cp-related-wrap > ol.cp-related-list > li.cp-related-item span.wpp-parent-cat-link > span.wpp-parent-cat::before{
    content: "";
    width: .95em;
    height: .95em;
    margin-right: 4px;
    display: inline-block;
    vertical-align: -.12em;
    background-color: currentColor;
    -webkit-mask-image: url("icon/folder-regular.svg");
    mask-image: url("icon/folder-regular.svg");
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-position: center;
    mask-position: center;
    -webkit-mask-size: contain;
    mask-size: contain;
}

@media (min-width: 767px){
    div.cp-related-wrap > ol.cp-related-list > li.cp-related-item{
        width: calc(50% - 0.25em);
    }
}

@media screen and (min-width: 767px){
    div.cp-related-wrap > ol.cp-related-list{
        padding: 1em;
        gap: .25em .5em;
    }
}
