@import url('https://fonts.googleapis.com/css2?family=Source+Code+Pro:ital,wght@0,400..600;1,400..600&display=swap');

/* ===== CodePen Scroll Section ===== */

.codepen-section {
    position: relative;
    width: 100%;
    background: #131417;
    overflow: hidden;
}

.codepen-section-main {
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    width: 100%;
    max-width: 740px;
    height: 2000px;
    padding: 0px;
    margin-left: auto;
    margin-right: auto;
    overscroll-behavior: none;
}

.codepen-section-main cards {
    display: block;
    width: 300px;
    position: absolute;
    top: 0px;
    z-index: 10;
}
@media (min-width: 576px) {
    .codepen-section-main cards { transform: translateX(4vw); }
}

.codepen-section-main cards cardWrapper {
    display: block;
    position: relative;
    width: 300px;
    height: 450px;
    border-radius: 20px;
    margin-top: 25px;
    margin-bottom: 25px;
    overflow: clip;
}
@media (min-width: 576px) {
    .codepen-section-main cards cardWrapper:nth-child(odd) { transform: translateX(6vw); }
    .codepen-section-main cards cardWrapper:nth-child(even) { transform: translateX(-3vw); }
}

.codepen-section-main cards cardWrapper::before {
    position: absolute;
    content: " ";
    display: block;
    z-index: 0;
    width: inherit;
    height: inherit;
    border-radius: inherit;
    background-color: #0004;
    backdrop-filter: blur(8px);
}
.codepen-section-main cards cardWrapper::after {
    position: absolute;
    left: 0px;
    top: 0px;
    z-index: 0;
    content: " ";
    display: block;
    width: inherit;
    height: 450px;
    border-radius: 20px;
    background-image: url('data:image/svg+xml,<svg width="300" height="450" xmlns="http://www.w3.org/2000/svg"><defs><linearGradient id="cl2" gradientUnits="objectBoundingBox" x1="0" y1="0" x2="1" y2="1" gradientTransform="rotate(45)"><stop offset="20%25" stop-color="%23b169db"/><stop offset="45%25" stop-color="%23f7d152"/><stop offset="65%25" stop-color="%2346cf71"/><stop offset="85%25" stop-color="%230fbffa"/></linearGradient></defs><path fill="url(%23cl2)" stroke="none" d="M 20,0C 9,0 0,9 0,20v 410c 0,11 9,20 20,20h 130 130c 11,0 20,-9 20,-20V 20C 300,9 291,0 280,0Zm 1,1h 161l 95,2c 12,1 19,10 19,20L 299,175v 254c 0,11 -9,20 -20,20H 118l -95,-3c -10,0 -20,-8 -20,-20L 1,275V 22C 1,11 10,1 21,1Z" /></svg>');
    filter: blur(1px) saturate(1.2) brightness(1.2);
    opacity: 0.85;
}

.codepen-section-main cards cardWrapper card {
    display: block;
    width: 300px;
    height: 450px;
    border-radius: 20px;
    background-color: oklab(27.722% -0.00023 -0.01543 / 0.733);
    background: radial-gradient(closest-corner, oklab(27.722% -0.00023 -0.01543 / 0.067) 10%, oklab(27.722% -0.00023 -0.01543 / 0.733) 90%),
    linear-gradient(50deg, oklab(74.255% -0.1471 0.04911 / 0.133) 0%, transparent 25%, transparent 75%, oklab(66.807% 0.13215 -0.11718 / 0.133) 100%);
    color: #FFFFFF;
    position: relative;
    z-index: 1;
}

.codepen-section-main cards cardWrapper card header,
.codepen-section-main cards cardWrapper card code {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 100%;
    padding: 30px;
    text-overflow: clip;
    background-image: linear-gradient(-45deg, #912acd 20%, #e6b71d, #16a242, #03b0ea 70%);
    background-clip: text;
    -webkit-background-clip: text;
    color: transparent;
    text-shadow: none;
    text-align: left;
    filter: brightness(2);
    position: relative;
    z-index: 2;
}
.codepen-section-main cards cardWrapper card header.type,
.codepen-section-main cards cardWrapper card code.type {
    font-family: "Source Code Pro", monospace;
    font-optical-sizing: auto;
    font-style: normal;
}
.codepen-section-main cards cardWrapper card header {
    font-size: 34px;
    font-weight: 400;
}
.codepen-section-main cards cardWrapper card code {
    font-size: 14px;
    font-weight: 600;
    line-height: 20px;
}
.codepen-section-main cards cardWrapper card code dl { width: 260px; }
.codepen-section-main cards cardWrapper card code dd { margin-left: 20px; }

#cp-world3d {
    position: fixed;
    top: var(--cpTabletOffset, 0px);
    z-index: -1;
    perspective: 1000px;
    -webkit-perspective: 1000px;
    overflow: visible;
    width: 90vw;
    max-width: 1200px;
    padding-top: 5vw;
}
#cp-tablet {
    transform-style: preserve-3d;
    -webkit-transform-style: preserve-3d;
    transform-origin: 0% 50%;
    transform: rotateY(20deg);
    -webkit-transform: rotateY(20deg);
    position: relative;
    display: block;
    width: 100%;
    height: 150vh;
    padding: 40px;
    padding-left: 140px;
    background: linear-gradient(109.61deg, oklab(35.777% 0.00155 -0.01572) 4.26%, oklab(17.28% -0.00043 -0.00445) 84.84%);
    border-radius: 30px;
    opacity: 0.25;
}
#cp-tablet::before {
    position: absolute;
    left: 120px;
    top: 20px;
    right: 20px;
    bottom: 20px;
    content: "";
    display: block;
    background-color: #131417;
    border: thin solid #565a6488;
    border-radius: 20px;
}

#cpSvgPaths {
    position: absolute;
    top: 75px;
    z-index: 5;
    width: 740px;
    max-width: 100%;
    overflow-x: clip;
    height: 2000px;
    filter: blur(1px);
}
@media (min-width: 576px) {
    #cpSvgPaths {
        transform: translateX(6vw);
        -webkit-transform: translateX(6vw);
    }
}

#cpSvgPaths use {
    fill: none;
    stroke: url(#cpCl1);
    stroke-linecap: round;
    stroke-width: var(--dot);
    stroke-dashoffset: var(--cpStrokeDashoffset, 0);
}
#cpSvgPaths use[href="#cpLinePath01"] {
    --dot: 20px; --gap: 50px;
    stroke-dasharray: var(--dot) var(--gap) 120px var(--gap) var(--dot) var(--gap) 300px var(--gap) var(--dot) var(--gap) 150px var(--gap) var(--dot) 20000px;
}
#cpSvgPaths use[href="#cpLinePath02"] {
    --dot: 34px; --gap: 60px;
    stroke-dasharray: var(--dot) var(--gap) 120px var(--gap) var(--dot) var(--gap) 300px var(--gap) var(--dot) var(--gap) 150px var(--gap) var(--dot) 20000px;
}
#cpSvgPaths use[href="#cpLinePath03"] {
    --dot: 25px; --gap: 40px;
    stroke-dasharray: var(--dot) var(--gap) 120px var(--gap) var(--dot) var(--gap) 250px var(--gap) var(--dot) var(--gap) 150px var(--gap) var(--dot) 20000px;
}
#cpSvgPaths use[href="#cpLinePath04"] {
    --dot: 40px; --gap: 70px;
    stroke-dasharray: var(--dot) var(--gap) 100px var(--gap) var(--dot) var(--gap) 200px var(--gap) var(--dot) 20000px;
}
