/* =========================================================
   Paran Penguin Content Search V2
   Clean CSS
   ---------------------------------------------------------
   사용 위치:
   /modules/otoshop_content/skins/default/buy/css/item_search.css

   전제:
   1) 기존 item_search.css 안에 임시로 붙였던 pp-v2 관련 CSS는 제거
   2) item_search.html에서 item_search.css 단독 로드
   3) 모바일 Masonry는 JS에서 실행하지 않는 구조 유지
========================================================= */

html,
body{
    overflow-x: clip;
}

@supports not (overflow: clip) {
    html,
    body{
        overflow-x: hidden;
    }
}

:root {
    --pp-v2-primary: #0C318F;
    --pp-v2-primary-2: #0c318f;
    --pp-v2-text: #333;
    --pp-v2-muted: #777;
    --pp-v2-light: #f5f6f8;
    --pp-v2-line: #dfe5ef;
    --pp-v2-card-line: #e2e4ea;
    --pp-v2-radius: 12px;
    --pp-v2-gap: 24px;
}
.art_con,
.art_con > .art_content{
    padding: 0.3rem 10px !important;
}

/* =========================================================
   Base / Layout
========================================================= */

.pp-search-v2,
.pp-search-v2 * {
    box-sizing: border-box;
}

.pp-search-v2 {
    width: min(90vw, 1728px);
    max-width: calc(100vw - 40px);
    margin: 0;
    padding: 56px 0 100px;
    position: relative;
    left: 50%;
    transform: translateX(-50%);
    overflow: visible;
}

.pp-search-v2__notice {
    margin-bottom: 18px;
    color: var(--pp-v2-primary);
    font-size: 13px;
    font-weight: 700;
}

/* =========================================================
   Home Hero
========================================================= */

.pp-v2-home-hero {
    margin: 0 auto 24px;
    text-align: center;
}

.pp-v2-home-icon {
    margin-bottom: 6px;
    color: var(--pp-v2-primary);
    font-size: 32px;
    line-height: 1;
}

.pp-v2-home-hero h2 {
    margin: 0;
    color: var(--pp-v2-text);
    font-size: 28px;
    font-weight: 900;
    line-height: 1.25;
}

/* =========================================================
   Search Form
========================================================= */

.pp-v2-search-form {
    position: sticky;
    top: 70px;
    z-index: 50;
    width: min(920px, 100%);
    margin: 0 auto 18px;
    padding: 10px 0;
    background: #fff;
    isolation: isolate;
}

.pp-v2-search-form::before {
    content: "";
    position: absolute;
    top: 0;
    bottom: 0;
    left: calc(50% - 50vw);
    right: calc(50% - 50vw);
    background: #fff;
    z-index: -1;
    pointer-events: none;
}

.pp-v2-search-box {
    position: relative;
    z-index: 1;
    display: flex;
    align-items: center;
    width: 100%;
    height: 54px;
    padding: 0 7px 0 0;
    border: 1px solid var(--pp-v2-primary);
    border-radius: 999px;
    background: #fff;
    overflow: hidden;
}

.pp-v2-search-category {
    width: 150px;
    height: 100%;
    flex: 0 0 150px;
    padding: 0 32px 0 22px;
    border: 0;
    outline: 0;
    background-color: #fff;
    color: #333;
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
    appearance: none;
    -webkit-appearance: none;
    background-image:
        linear-gradient(45deg, transparent 50%, #333 50%),
        linear-gradient(135deg, #333 50%, transparent 50%);
    background-position:
        calc(100% - 18px) 50%,
        calc(100% - 13px) 50%;
    background-size: 5px 5px;
    background-repeat: no-repeat;
}

.pp-v2-search-divider {
    width: 1px;
    height: 24px;
    flex: 0 0 1px;
    background: #d8ddea;
}

.pp-v2-search-box input {
    flex: 1 1 auto;
    min-width: 0;
    height: 100%;
    padding: 0 16px;
    border: 0;
    outline: 0;
    background: transparent;
    color: #333;
    font-size: 16px;
}

.pp-v2-search-box input::placeholder {
    color: #aaa;
}

.pp-v2-search-box button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 42px;
    height: 42px;
    flex: 0 0 42px;
    border: 0;
    border-radius: 50%;
    background: var(--pp-v2-primary);
    color: #fff;
    cursor: pointer;
}

/* =========================================================
   Result Title / Count / Sort
========================================================= */

.pp-v2-result-control {
    display: block;
    margin: 28px 0 18px;
}

.pp-v2-result-title h2 {
    margin: 0 0 8px;
    color: var(--pp-v2-text);
    font-size: 28px;
    font-weight: 900;
    line-height: 1.25;
}

.pp-v2-result-subrow {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    width: 100%;
}

.pp-v2-result-count-text {
    color: var(--pp-v2-muted);
    font-size: 16px;
    font-weight: 500;
    line-height: 1.4;
}

.pp-v2-result-count-text strong {
    color: var(--pp-v2-primary);
    font-weight: 900;
}

.pp-v2-result-desc,
.pp-v2-result-title p {
    margin: 0;
    color: var(--pp-v2-muted);
    font-size: 14px;
    line-height: 1.45;
}

.pp-v2-sort-wrap {
    flex: 0 0 auto;
}

.pp-v2-sort-select {
    min-width: 104px;
    height: 32px;
    padding: 0 28px 0 12px;
    border: 1px solid #e3e8f0;
    border-radius: 999px;
    background-color: #fff;
    color: var(--pp-v2-muted);
    font-size: 12px;
    font-weight: 600;
    line-height: 32px;
    cursor: pointer;
    outline: 0;
    appearance: none;
    -webkit-appearance: none;
    background-image:
        linear-gradient(45deg, transparent 50%, #333 50%),
        linear-gradient(135deg, #333 50%, transparent 50%);
    background-position:
        calc(100% - 15px) 50%,
        calc(100% - 11px) 50%;
    background-size: 4px 4px;
    background-repeat: no-repeat;
    opacity: 0.9;
}

.pp-v2-sort-select:focus {
    border-color: var(--pp-v2-primary);
    color: var(--pp-v2-primary);
    opacity: 1;
}

/* =========================================================
   2nd Keyword Chips
========================================================= */

.pp-v2-filter-row {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 0 0 28px;
}

.pp-v2-filter-category {
    height: 38px;
    min-width: 126px;
    padding: 0 38px 0 16px;
    border: 1px solid var(--pp-v2-line);
    border-radius: 999px;
    background-color: #fff;
    color: var(--pp-v2-text);
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
    outline: 0;
    appearance: none;
    -webkit-appearance: none;
    background-image:
        linear-gradient(45deg, transparent 50%, #333 50%),
        linear-gradient(135deg, #333 50%, transparent 50%);
    background-position:
        calc(100% - 19px) 50%,
        calc(100% - 14px) 50%;
    background-size: 5px 5px;
    background-repeat: no-repeat;
}

.pp-v2-keyword-nav {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px;
    min-width: 0;
    margin: 0 0 28px;
}

.pp-v2-filter-row .pp-v2-keyword-nav {
    flex: 1 1 auto;
    margin: 0;
}

.pp-v2-keyword-chip {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 56px;
    height: 36px;
    padding: 0 16px;
    border: 1px solid var(--pp-v2-line);
    border-radius: 999px;
    background: #fff;
    color: #333;
    font-size: 14px;
    font-weight: 700;
    cursor: pointer;
}

.pp-v2-keyword-chip:hover {
    border-color: var(--pp-v2-primary);
    color: var(--pp-v2-primary);
}

.pp-v2-keyword-chip.active {
    border-color: var(--pp-v2-primary-2);
    background: var(--pp-v2-primary-2);
    color: #fff;
}

/* =========================================================
   Product Card Base
========================================================= */

.pp-v2-grid {
    display: grid;
    gap: var(--pp-v2-gap);
    width: 100%;
}

.pp-v2-grid--default {
    grid-template-columns: repeat(4, minmax(0, 1fr));
}

.pp-v2-grid--ppt {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.pp-v2-grid--icon {
    grid-template-columns: repeat(8, minmax(0, 1fr));
    gap: 18px;
}

.pp-v2-card {
    display: block;
    overflow: hidden;
    border: 1px solid var(--pp-v2-card-line);
    border-radius: 10px;
    background: #fff;
    color: inherit;
    text-decoration: none;
    box-sizing: border-box;
}

.pp-v2-card:hover {
    color: inherit;
    text-decoration: none;
}

.pp-v2-grid--ppt .pp-v2-card {
    border-radius: 8px;
}

.pp-v2-thumb {
    position: relative;
    overflow: hidden;
    background: var(--pp-v2-light);
}

.pp-v2-grid--default .pp-v2-thumb {
    aspect-ratio: 4 / 3;
}

.pp-v2-grid--ppt .pp-v2-thumb,
.pp-v2-section-grid--ppt .pp-v2-thumb {
    aspect-ratio: 16 / 9;
}

.pp-v2-grid--icon .pp-v2-thumb,
.pp-v2-section-grid--icon .pp-v2-thumb,
.pp-v2-section-grid--png .pp-v2-thumb {
    aspect-ratio: 1 / 1;
}

.pp-v2-thumb img {
    display: block;
    width: 100%;
    height: 100%;
}

.pp-v2-grid--default .pp-v2-thumb img,
.pp-v2-grid--ppt .pp-v2-thumb img,
.pp-v2-section-grid--ppt .pp-v2-thumb img,
.pp-v2-section-grid--default .pp-v2-thumb img {
    object-fit: cover;
}

.pp-v2-grid--icon .pp-v2-thumb img,
.pp-v2-section-grid--icon .pp-v2-thumb img,
.pp-v2-section-grid--png .pp-v2-thumb img {
    object-fit: contain;
    object-position: center;
}

.pp-v2-info {
    padding: 13px 16px 14px;
    background: #fff;
}

.pp-v2-title {
    overflow: hidden;
    display: -webkit-box;
    min-height: 22px;
    color: var(--pp-v2-text);
    font-size: 16px;
    font-weight: 600;
    line-height: 1.45;
    -webkit-line-clamp: 1;
    -webkit-box-orient: vertical;
}

.pp-v2-bottom-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    margin-top: 5px;
}

.pp-v2-meta {
    display: flex;
    align-items: center;
    gap: 4px;
    flex: 1 1 auto;
    min-width: 0;
    margin: 0;
    color: var(--pp-v2-muted);
    font-size: 14px;
    line-height: 1;
    white-space: nowrap;
    overflow: hidden;
}

.pp-v2-meta span {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
}

.pp-v2-bookmark {
    position: absolute;
    right: 12px;
    bottom: 10px;
    z-index: 4;
    width: 24px;
    height: 28px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    pointer-events: none;
}

.pp-v2-bookmark img {
    display: block;
    width: 22px;
    height: auto;
}

.pp-v2-thumb-badge {
    position: absolute;
    left: 10px;
    bottom: 10px;
    z-index: 3;
    max-width: calc(100% - 58px);
    height: 24px;
    padding: 0 10px;
    border-radius: 999px;
    background: rgba(255,255,255,0.95);
    color: #333;
    font-size: 12px;
    font-weight: 700;
    line-height: 24px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* =========================================================
   PPT Color Chips
========================================================= */

.pp-v2-color-option-area {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 6px;
    flex: 0 0 auto;
    margin: 0;
    padding: 0;
    line-height: 1;
}

.pp-v2-color-chip {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 18px;
    height: 18px;
    flex: 0 0 18px;
    padding: 0;
    border: 1px solid rgba(0,0,0,0.14);
    border-radius: 4px;
    background: transparent;
    box-sizing: border-box;
    overflow: hidden;
    font-size: 0;
    line-height: 0;
}

.pp-v2-color-chip > span {
    display: block;
    width: 18px;
    height: 16px;
    border: 1px solid #e1e1e1;
    border-radius: 3px;
    box-sizing: border-box;
}

.pp-v2-color-chip.active,
.pp-v2-color-chip:hover {
    border-color: rgba(0,0,0,0.55);
}

/* =========================================================
   PPT Swiper
========================================================= */

.pp-v2-thumb--swiper {
    position: relative;
}

.pp-v2-thumb--swiper .pp-v2-thumb-fallback {
    position: absolute;
    inset: 0;
    z-index: 1;
    opacity: 1;
    visibility: visible;
    transition: opacity 0.18s ease;
}

.pp-v2-thumb--swiper .pp-v2-thumb-fallback img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.pp-v2-item-swiper {
    position: absolute;
    inset: 0;
    z-index: 2;
    display: block;
    width: 100%;
    height: 100%;
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.18s ease;
}

.pp-v2-thumb.is-swiper-ready .pp-v2-item-swiper {
    opacity: 1;
    visibility: visible;
}

.pp-v2-thumb.is-swiper-ready .pp-v2-thumb-fallback {
    opacity: 0;
    visibility: hidden;
}

.pp-v2-item-swiper swiper-slide,
.pp-v2-item-swiper img {
    width: 100%;
    height: 100%;
}

.pp-v2-item-swiper img {
    display: block;
    object-fit: cover;
}

.pp-v2-slide-btn {
    display: none;
    align-items: center;
    justify-content: center;
    position: absolute;
    top: 50%;
    z-index: 8;
    width: 34px;
    height: 34px;
    margin-top: -17px;
    border-radius: 50%;
    background: rgba(255,255,255,0.92);
    border: 1px solid rgba(0,0,0,0.08);
    color: #333;
    font-size: 25px;
    line-height: 1;
    cursor: pointer;
    user-select: none;
    opacity: 0;
    transition: opacity 0.18s ease;
}

.pp-v2-slide-prev {
    left: 12px;
}

.pp-v2-slide-next {
    right: 12px;
}

.pp-v2-thumb.has-v2-slides .pp-v2-slide-btn {
    display: flex;
}

.pp-v2-thumb.has-v2-slides:hover .pp-v2-slide-btn {
    opacity: 1;
}

.pp-v2-slide-count {
    display: none;
    position: absolute;
    top: 10px;
    right: 10px;
    z-index: 8;
    height: 22px;
    padding: 0 8px;
    border-radius: 999px;
    background: rgba(255,255,255,0.94);
    border: 1px solid rgba(0,0,0,0.08);
    color: #555;
    font-size: 11px;
    font-weight: 700;
    line-height: 22px;
}

.pp-v2-thumb.has-v2-slides .pp-v2-slide-count {
    display: block;
}

/* =========================================================
   Masonry
========================================================= */

.pp-v2-grid--masonry {
    display: block;
    position: relative;
    width: 100%;
}

.pp-v2-grid--masonry .pp-v2-grid-sizer,
.pp-v2-grid--masonry > .pp-v2-card {
    width: calc((100% - 72px) / 4);
}

.pp-v2-grid--masonry > .pp-v2-card {
    margin-bottom: 24px;
}

.pp-v2-grid--masonry.pp-v2-grid--icon .pp-v2-grid-sizer,
.pp-v2-grid--masonry.pp-v2-grid--icon > .pp-v2-card {
    width: calc((100% - 126px) / 8);
}

.pp-v2-grid--masonry.pp-v2-grid--icon > .pp-v2-card {
    margin-bottom: 18px;
}

.pp-v2-grid--masonry .pp-v2-thumb {
    aspect-ratio: auto;
}

.pp-v2-grid--masonry .pp-v2-thumb img {
    height: auto;
    object-fit: initial;
}

.pp-v2-grid--masonry.pp-v2-grid--icon .pp-v2-thumb {
    aspect-ratio: 1 / 1;
}

.pp-v2-grid--masonry.pp-v2-grid--icon .pp-v2-thumb img {
    width: 100%;
    height: 100%;
    object-fit: contain;
}

/* =========================================================
   Ads
========================================================= */

.pp-v2-ad-card {
    position: relative;
    overflow: hidden;
    background: #fff;
}

.pp-v2-ad-card .pp-v2-info {
    display: none;
}

.pp-v2-ad-visual {
    position: relative;
    width: 100%;
    min-height: 300px;
    background: #fff;
    overflow: hidden;
    border-bottom: 1px solid #f1f1f1;
}

.pp-v2-grid--icon .pp-v2-ad-visual {
    min-height: 240px;
    aspect-ratio: 1 / 1;
}

.pp-v2-ad-unit,
.pp-v2-ad-visual .adsbygoogle,
.pp-v2-ad-visual iframe {
    display: block;
    width: 100%;
    height: 100%;
    min-height: 240px;
    background: #fff;
}

.pp-v2-grid--default .pp-v2-ad-unit,
.pp-v2-grid--default .pp-v2-ad-visual .adsbygoogle,
.pp-v2-grid--default .pp-v2-ad-visual iframe {
    min-height: 300px;
}

.pp-v2-grid--icon .pp-v2-ad-unit,
.pp-v2-grid--icon .pp-v2-ad-visual .adsbygoogle,
.pp-v2-grid--icon .pp-v2-ad-visual iframe {
    min-height: 240px;
}

.pp-v2-ad-badge {
    position: absolute;
    top: 10px;
    left: 10px;
    z-index: 5;
    height: 22px;
    padding: 0 9px;
    border-radius: 999px;
    background: rgba(255,255,255,0.92);
    border: 1px solid #e0e4ec;
    color: #7f8898;
    font-size: 11px;
    font-weight: 700;
    line-height: 22px;
    pointer-events: none;
}

/* =========================================================
   Overview Sections
========================================================= */

.pp-v2-overview {
    display: flex;
    flex-direction: column;
    gap: 42px;
    margin-top: 28px;
}

.pp-v2-overview-section {
    width: 100%;
}

.pp-v2-section-head {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 14px;
}

.pp-v2-section-head h3 {
    display: flex;
    align-items: baseline;
    gap: 6px;
    margin: 0;
    color: var(--pp-v2-text);
    font-size: 22px;
    font-weight: 600;
    border-top: none;
}

.pp-v2-section-head h3 span {
    color: var(--pp-v2-primary);
    font-size: 16px;
    font-weight: 600;
}

.pp-v2-section-head a {
    color: var(--pp-v2-primary);
    font-size: 14px;
    font-weight: 600;
    text-decoration: none;
}

.pp-v2-section-grid {
    display: grid;
    gap: var(--pp-v2-gap);
}

.pp-v2-section-grid--ppt {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.pp-v2-section-grid--default {
    grid-template-columns: repeat(4, minmax(0, 1fr));
}

.pp-v2-section-grid--icon {
    grid-template-columns: repeat(8, minmax(0, 1fr));
    gap: 18px;
}

.pp-v2-section-grid--icon {
    grid-template-columns: repeat(8, minmax(0, 1fr));
    gap: 18px;
}

.pp-v2-section-grid--png {
    grid-template-columns: repeat(6, minmax(0, 1fr));
    gap: 18px;
}

.pp-v2-overview .pp-v2-section-grid--icon > .pp-v2-card {
    display: flex;
    flex-direction: column;
    height: auto;
}

.pp-v2-overview .pp-v2-section-grid--icon .pp-v2-info {
    min-height: 88px;
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
}

.pp-v2-overview .pp-v2-section-grid--icon .pp-v2-title {
    min-height: 40px;
    font-size: 14px;
    line-height: 1.4;
    -webkit-line-clamp: 2;
}

.pp-v2-overview .pp-v2-section-grid--icon .pp-v2-meta {
    margin-top: 8px;
    font-size: 12px;
    line-height: 1.3;
}

.pp-v2-section-loading,
.pp-v2-section-empty {
    grid-column: 1 / -1;
    min-height: 140px;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    border: 1px solid #edf0f5;
    border-radius: 14px;
    background: #fff;
    color: var(--pp-v2-muted);
    font-size: 14px;
    font-weight: 700;
}

.pp-v2-loading-spinner {
    width: 18px;
    height: 18px;
    border: 2px solid #dce4ff;
    border-top-color: var(--pp-v2-primary);
    border-radius: 50%;
    animation: pp-v2-spin 0.75s linear infinite;
}

@keyframes pp-v2-spin {
    to {
        transform: rotate(360deg);
    }
}

/* =========================================================
   Empty / Infinite Loading
========================================================= */

.pp-v2-empty {
    padding: 80px 20px;
    border: 1px solid #eee;
    border-radius: var(--pp-v2-radius);
    color: #888;
    text-align: center;
}

.pp-v2-empty--category,
.pp-v2-overview-empty {
    margin-top: 28px;
}

.pp-v2-empty strong,
.pp-v2-overview-empty strong {
    display: block;
    margin-bottom: 8px;
    color: #333;
    font-size: 18px;
    font-weight: 600;
}

.pp-v2-empty p,
.pp-v2-overview-empty p {
    margin: 0;
    color: #888;
    font-size: 14px;
    line-height: 1.5;
}

.pp-v2-infinite-loading,
.pp-v2-infinite-end {
    display: none;
    width: 100%;
    padding: 60px 0 80px;
    color: #888;
    font-size: 14px;
    text-align: center;
}

.pp-v2-infinite-loading.is-active,
.pp-v2-infinite-end.is-active {
    display: block;
}

.pp-v2-infinite-sentinel {
    width: 100%;
    height: 1px;
}

/* =========================================================
   Tablet
========================================================= */

@media (max-width: 1200px) and (min-width: 901px) {
    .pp-v2-grid--default,
    .pp-v2-section-grid--default {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    .pp-v2-grid--icon,
    .pp-v2-section-grid--icon,
    .pp-v2-section-grid--png {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }

    .pp-v2-grid--masonry .pp-v2-grid-sizer,
    .pp-v2-grid--masonry > .pp-v2-card {
        width: calc((100% - 48px) / 3);
    }

    .pp-v2-grid--masonry.pp-v2-grid--icon .pp-v2-grid-sizer,
    .pp-v2-grid--masonry.pp-v2-grid--icon > .pp-v2-card {
        width: calc((100% - 54px) / 4);
    }
}

/* =========================================================
   Mobile: 421px ~ 900px
========================================================= */

@media (max-width: 900px) {
    .art_con, .art_con > .art_content{
        padding: 0.3rem 10px !important;
    }
    .pp-search-v2 {
        width: 100%;
        max-width: 100%;
        margin: 0;
        padding: 28px 18px 90px;
        left: auto;
        transform: none;
        overflow: visible;
    }

    .pp-search-v2__notice {
        margin-bottom: 14px;
        font-size: 12px;
        line-height: 1.45;
    }

    .pp-v2-home-hero {
        margin-bottom: 18px;
    }

    .pp-v2-home-icon {
        font-size: 28px;
    }

    .pp-v2-home-hero h2 {
        font-size: 24px;
    }

    .pp-v2-search-form {
        top: 48px;
        width: 100%;
        margin-bottom: 16px;
        padding: 8px 0;
    }

    .pp-v2-search-box {
        height: 42px;
        min-height: 42px;
        padding: 0 2px 0 0;
        border-radius: 999px;
        flex-wrap: nowrap;
    }

    .pp-v2-search-category {
        width: 108px;
        flex: 0 0 108px;
        height: 100%;
        padding: 0 28px 0 16px;
        border-bottom: 0;
        line-height: 42px;
        font-size: 13px;
        background-position:
            calc(100% - 17px) 50%,
            calc(100% - 12px) 50%;
    }

    .pp-v2-search-divider {
        display: block;
    }

    .pp-v2-search-box input {
        width: auto;
        height: 100%;
        flex: 1 1 auto;
        min-width: 0;
        padding: 0 10px 0 14px;
        font-size: 14px;
    }

    .pp-v2-search-box button {
        width: 40px;
        height: 40px;
        flex: 0 0 40px;
        margin: 0;
    }

    .pp-v2-result-control {
        margin: 22px 0 16px;
    }

    .pp-v2-result-title h2 {
        font-size: 24px;
        line-height: 1.3;
    }

    .pp-v2-result-subrow {
        align-items: center;
        gap: 10px;
    }

    .pp-v2-result-count-text {
        font-size: 13px;
    }

    .pp-v2-result-subrow .pp-v2-sort-select,
    .pp-v2-sort-select {
        min-width: 86px;
        height: 28px;
        padding: 0 24px 0 10px;
        font-size: 11.5px;
        line-height: 28px;
    }

    .pp-v2-filter-row {
        gap: 8px;
        margin-bottom: 20px;
        overflow: hidden;
    }

    .pp-v2-filter-category {
        flex: 0 0 96px;
        min-width: 96px;
        height: 36px;
        padding: 0 28px 0 14px;
        font-size: 13px;
        background-position:
            calc(100% - 17px) 50%,
            calc(100% - 12px) 50%;
    }

    .pp-v2-keyword-nav,
    .pp-v2-filter-row .pp-v2-keyword-nav {
        flex-wrap: nowrap;
        overflow-x: auto;
        overflow-y: hidden;
        gap: 8px;
        margin-bottom: 20px;
        padding-bottom: 4px;
        -webkit-overflow-scrolling: touch;
        scrollbar-width: none;
    }

    .pp-v2-keyword-nav::-webkit-scrollbar {
        display: none;
    }

    .pp-v2-keyword-chip {
        flex: 0 0 auto;
        height: 34px;
        padding: 0 14px;
        font-size: 13px;
    }

    .pp-v2-grid--default,
    .pp-v2-grid--ppt,
    .pp-v2-section-grid--ppt,
    .pp-v2-section-grid--default {
        grid-template-columns: 1fr;
        gap: 12px;
    }

    .pp-v2-grid--icon,
    .pp-v2-section-grid--icon,
    .pp-v2-section-grid--png {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 12px;
    }

    /* 모바일 Masonry: 광고도 한 칸 크기로 유지하면서 빈 공간 없이 쌓기 */
    .pp-v2-grid--masonry {
        display: block;
        position: relative;
        height: auto !important;
        column-count: 1;
        column-gap: 16px;
        gap: 0;
        font-size: 0;
    }

    .pp-v2-grid--masonry.pp-v2-grid--icon {
        display: block;
        column-count: 2;
        column-gap: 12px;
    }

    .pp-v2-grid--masonry .pp-v2-grid-sizer {
        display: none !important;
    }

    .pp-v2-grid--masonry > .pp-v2-card {
        display: inline-block;
        vertical-align: top;
        position: relative !important;
        top: auto !important;
        left: auto !important;
        right: auto !important;
        bottom: auto !important;
        transform: none !important;
        width: 100% !important;
        max-width: 100% !important;
        margin: 0 0 16px !important;
        font-size: 14px;
        break-inside: avoid;
        page-break-inside: avoid;
        -webkit-column-break-inside: avoid;
    }

    .pp-v2-grid--masonry.pp-v2-grid--icon > .pp-v2-card {
        margin-bottom: 12px !important;
    }

    /* 아이콘 상품은 광고 높이에 끌려가지 않고 항상 정사각형 유지 */
    .pp-v2-grid--masonry.pp-v2-grid--icon > .pp-v2-card:not(.pp-v2-ad-card) .pp-v2-thumb {
        width: 100%;
        height: auto !important;
        min-height: 0 !important;
        aspect-ratio: 1 / 1 !important;
    }

    .pp-v2-grid--masonry.pp-v2-grid--icon > .pp-v2-card:not(.pp-v2-ad-card) .pp-v2-thumb img {
        width: 100%;
        height: 100% !important;
        object-fit: contain !important;
        object-position: center;
    }

    /* 모바일 아이콘 광고: 240px 고정 느낌 제거, 카드 한 칸 안에서만 표시 */
    .pp-v2-grid--masonry.pp-v2-grid--icon > .pp-v2-ad-card {
        grid-column: auto !important;
        width: 100% !important;
        height: auto !important;
        min-height: 0 !important;
    }

    .pp-v2-grid--masonry.pp-v2-grid--icon > .pp-v2-ad-card .pp-v2-ad-visual {
        width: 100%;
        height: auto !important;
        min-height: 0 !important;
        aspect-ratio: 1 / 1.35 !important;
        border-bottom: 0;
    }

    .pp-v2-grid--masonry.pp-v2-grid--icon > .pp-v2-ad-card .pp-v2-ad-unit,
    .pp-v2-grid--masonry.pp-v2-grid--icon > .pp-v2-ad-card .pp-v2-ad-visual .adsbygoogle,
    .pp-v2-grid--masonry.pp-v2-grid--icon > .pp-v2-ad-card .pp-v2-ad-visual iframe {
        width: 100% !important;
        height: 100% !important;
        min-height: 0 !important;
    }

    .pp-v2-info {
        padding: 10px;
    }

    .pp-v2-title {
        min-height: 14px;
        font-size: 14px;
        line-height: 1.4;
        -webkit-line-clamp: 1;
    }

    .pp-v2-meta {
        font-size: 12px;
    }

    .pp-v2-color-option-area,
    .pp-v2-slide-btn,
    .pp-v2-slide-count {
        display: none;
    }

    .pp-v2-section-loading,
    .pp-v2-section-empty {
        min-height: 120px;
        font-size: 13px;
    }
}

/* =========================================================
   Small Mobile: 0 ~ 420px
========================================================= */

@media (max-width: 420px) {
    .pp-search-v2 {
        padding-left: 0;
        padding-right: 0;
    }

    .pp-v2-home-hero h2,
    .pp-v2-result-title h2 {
        font-size: 22px;
    }

    .pp-v2-search-category {
        width: 96px;
        flex-basis: 96px;
        padding-left: 14px;
        padding-right: 24px;
    }

    .pp-v2-search-box input {
        padding-left: 12px;
        font-size: 13px;
    }

    .pp-v2-search-box button {
        width: 36px;
        height: 36px;
        flex-basis: 36px;
    }

    .pp-v2-grid--masonry.pp-v2-grid--icon {
        column-gap: 10px;
    }

    .pp-v2-grid--masonry.pp-v2-grid--icon > .pp-v2-card {
        margin-bottom: 10px !important;
    }

    .pp-v2-grid--icon .pp-v2-info,
    .pp-v2-section-grid--icon .pp-v2-info {
        padding: 9px 10px 11px;
    }

    .pp-v2-grid--icon .pp-v2-title,
    .pp-v2-section-grid--icon .pp-v2-title {
        font-size: 12.5px;
    }
}

/* =========================================================
   Search V2 Category Browser - Tag Style
========================================================= */

.pp-v2-category-browser {
    margin: 0 0 16px;
}

.pp-v2-category-browser-head {
    margin-bottom: 6px;
}

.pp-v2-category-browser-track {
    display: grid;
    grid-template-columns: repeat(7, minmax(0, 1fr));
    gap: 10px;
    width: 100%;
}

.pp-v2-browser-card {
    display: inline-flex;
    align-items: center;
    gap: 9px;
    width: 100%;
    min-width: 0;
    min-height: 42px;
    padding: 0 14px;
    border: 1px solid var(--pp-v2-line);
    border-radius: 999px;
    background: #fff;
    color: #333;
    text-decoration: none;
    box-sizing: border-box;
    transition: none;
}

.pp-v2-browser-card:hover {
    border-color: var(--pp-v2-primary);
    color: var(--pp-v2-primary);
    text-decoration: none;
    box-shadow: none;
    transform: none;
}

.pp-v2-browser-card.is-active {
    border-color: var(--pp-v2-primary-2);
    background: var(--pp-v2-primary-2);
    color: #fff;
}

.pp-v2-browser-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
    flex: 0 0 24px;
    border-radius: 50%;
    background: #f3f6ff;
    color: var(--pp-v2-primary);
    font-size: 12px;
}

.pp-v2-browser-card.is-active .pp-v2-browser-icon {
    background: rgba(255, 255, 255, 0.18);
    color: #fff;
}

.pp-v2-browser-text {
    display: flex;
    align-items: center;
    min-width: 0;
}

.pp-v2-browser-text strong {
    display: block;
    overflow: hidden;
    color: inherit;
    font-size: 14px;
    font-weight: 700;
    line-height: 1.2;
    white-space: nowrap;
    text-overflow: ellipsis;
}

.pp-v2-browser-count {
    display: none;
}

/* 태블릿 */
@media (max-width: 1200px) and (min-width: 901px) {
    .pp-v2-category-browser-track {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}

/* 모바일 */
@media (max-width: 900px) {
    .pp-v2-category-browser {
        margin: 0 0 10px;
        position: relative;
    }

    .pp-v2-category-browser::before {
        content: "";
        position: absolute;
        left: -18px;
        bottom: 0;
        width: 10px;
        height: 40px;
        z-index: 5;
        pointer-events: none;
        background: #fff;
    }


    .pp-v2-category-browser-head {
        margin-bottom: 10px;
    }

    .pp-v2-category-browser-track {
        display: flex;
        flex-wrap: nowrap;
        overflow-x: auto;
        overflow-y: hidden;
        gap: 8px;
        width: 100%;
        max-width: 100%;
        margin: 0;
        padding: 0 0 4px;
        -webkit-overflow-scrolling: touch;
        scrollbar-width: none;
    }

    .pp-v2-category-browser-track::-webkit-scrollbar {
        display: none;
    }

    .pp-v2-browser-card {
        flex: 0 0 auto;
        width: auto;
        min-width: 92px;
        min-height: 36px;
        padding: 0 13px;
        gap: 7px;
    }

    .pp-v2-browser-icon {
        width: 22px;
        height: 22px;
        flex-basis: 22px;
        font-size: 11px;
    }

    .pp-v2-browser-text strong {
        font-size: 13px;
    }
}

@media (max-width: 420px) {
    .pp-v2-category-browser-track {
        margin-left: 0;
        margin-right: 0;
        padding-left: 0;
        padding-right: 0;
    }

    .pp-v2-category-browser::before {
        left: -14px;
    }

    .pp-v2-category-browser::after {
        right: -14px;
    }

    .pp-v2-browser-card {
        min-width: 86px;
    }
}

/* =========================================================
   Search V2 Filter Sort
========================================================= */

.pp-v2-filter-sort-wrap {
    flex: 0 0 auto;
    margin-left: auto;
}

.pp-v2-filter-sort-select {
    height: 36px;
    min-width: 108px;
    padding: 0 30px 0 13px;
    border: 1px solid #dfe5ef;
    border-radius: 999px;
    background-color: #fff;
    color: #666;
    font-size: 13px;
    font-weight: 700;
    line-height: 36px;
    cursor: pointer;
    outline: none;
    appearance: none;
    -webkit-appearance: none;
    background-image:
        linear-gradient(45deg, transparent 50%, #333 50%),
        linear-gradient(135deg, #333 50%, transparent 50%);
    background-position:
        calc(100% - 16px) 50%,
        calc(100% - 11px) 50%;
    background-size: 5px 5px, 5px 5px;
    background-repeat: no-repeat;
}

.pp-v2-filter-sort-select:focus {
    border-color: #0C318F;
    color: #0C318F;
}

/* 모바일 */
@media (max-width: 900px) {
    .pp-v2-filter-row {
        flex-wrap: wrap;
    }

    .pp-v2-filter-row .pp-v2-keyword-nav {
        flex: 1 1 0;
    }

    .pp-v2-filter-sort-wrap {
        width: 100%;
        display: flex;
        justify-content: flex-end;
        margin-left: 0;
        margin-top: 8px;
    }

    .pp-v2-filter-sort-select {
        min-width: 88px;
        height: 29px;
        padding: 0 24px 0 10px;
        font-size: 11.5px;
        line-height: 29px;
        color: #777;
        background-position:
            calc(100% - 14px) 50%,
            calc(100% - 10px) 50%;
        background-size: 4px 4px, 4px 4px;
    }
}

/* =========================================================
   Search V2 Top Compact
========================================================= */

.pp-search-v2 {
    padding-top: 0px;
}

.pp-search-v2__notice {
    margin-bottom: 16px;
}

.pp-v2-home-hero {
    margin: 0 auto 20px;
    text-align: center;
}

.pp-v2-home-symbol {
    display: block;
    width: 34px;
    height: 34px;
    margin: 0 auto 7px;
    object-fit: contain;
}

.pp-v2-home-hero h2 {
    margin: 0;
    color: #333;
    font-size: 28px;
    font-weight: 700;
    line-height: 1.25;
}

.pp-v2-search-form {
    margin-top: 0;
    margin-bottom: 20px;
}

.pp-v2-category-browser {
    margin-top: 0;
}

.pp-v2-overview {
    margin-top: 0;
}

@media (max-width: 900px) {

    .pp-search-v2__notice {
        margin-bottom: 12px;
    }

    .pp-v2-home-hero {
        margin-bottom: 10px;
    }

    .pp-v2-home-symbol {
        width: 28px;
        height: 28px;
        margin-bottom: 6px;
    }

    .pp-v2-home-hero h2 {
        font-size: 23px;
    }

    .pp-v2-search-form {
        margin-bottom: 10px;
    }
}

/* =========================================================
   Search V2 Visual Only Cards - Final Override
   이미지 / 아이콘 / PNG / 폰트 정보영역 숨김
========================================================= */

/* 카테고리 상세 페이지 */
.pp-v2-card--visual-only .pp-v2-info {
    display: none !important;
}

/* 전체 요약 화면 */
.pp-v2-overview-section[data-category-srl="396049"] .pp-v2-info,
.pp-v2-overview-section[data-category-srl="396545"] .pp-v2-info,
.pp-v2-overview-section[data-category-srl="396553"] .pp-v2-info,
.pp-v2-overview-section[data-category-srl="396561"] .pp-v2-info {
    display: none !important;
}

/* 아이콘 / PNG / 폰트 / 이미지 카드에서 썸네일만 자연스럽게 */
.pp-v2-card--visual-only .pp-v2-thumb {
    border-radius: inherit;
}

/* 전체 요약 화면의 아이콘/PNG도 썸네일만 보이도록 */
.pp-v2-overview-section[data-category-srl="396545"] .pp-v2-thumb,
.pp-v2-overview-section[data-category-srl="396553"] .pp-v2-thumb {
    border-radius: inherit;
}

/* =========================================================
   Search V2 Mobile Filter UI
========================================================= */

.pp-v2-mobile-filter-bar,
.pp-v2-mobile-filter-panel {
    display: none;
}

@media (max-width: 900px) {
    .pp-v2-filter-row {
        display: none;
    }

    .pp-v2-mobile-filter-bar {
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 12px;
        margin: 0 0 12px;
    }

    .pp-v2-mobile-filter-open {
        display: inline-flex;
        align-items: center;
        gap: 8px;
        height: 38px;
        padding: 0 14px;
        border: 1px solid #dfe5ef;
        border-radius: 999px;
        background: #fff;
        color: #333;
        font-size: 14px;
        font-weight: 600;
        cursor: pointer;
    }

    .pp-v2-mobile-filter-open i {
        color: #0C318F;
        font-size: 14px;
    }

    .pp-v2-mobile-sort-label {
        display: inline-flex;
        align-items: center;
        gap: 6px;
        color: #777;
        font-size: 13px;
        font-weight: 700;
    }

    .pp-v2-mobile-quick-sort {
        height: 34px;
        min-width: 92px;
        padding: 0 26px 0 11px;
        border: 1px solid #dfe5ef;
        border-radius: 999px;
        background-color: #fff;
        color: #333;
        font-size: 13px;
        font-weight: 600;
        outline: none;
        appearance: none;
        -webkit-appearance: none;
        background-image:
            linear-gradient(45deg, transparent 50%, #333 50%),
            linear-gradient(135deg, #333 50%, transparent 50%);
        background-position:
            calc(100% - 14px) 50%,
            calc(100% - 10px) 50%;
        background-size: 4px 4px, 4px 4px;
        background-repeat: no-repeat;
    }

    .pp-v2-mobile-filter-panel.is-open {
        display: block;
    }

    .pp-v2-mobile-filter-dim {
        position: fixed;
        inset: 0;
        z-index: 9000;
        background: rgba(0, 0, 0, 0.48);
    }

    .pp-v2-mobile-filter-sheet {
        position: fixed;
        left: 0;
        right: 0;
        bottom: 0;
        z-index: 9001;
        max-height: 82vh;
        padding: 22px 22px 92px;
        border-radius: 18px 18px 0 0;
        background: #fff;
        overflow-y: auto;
        box-sizing: border-box;
        box-shadow: 0 -12px 32px rgba(0,0,0,0.16);
    }

    .pp-v2-mobile-filter-head {
        display: flex;
        align-items: center;
        justify-content: space-between;
        margin-bottom: 22px;
        padding-bottom: 18px;
        border-bottom: 1px solid #e8ebf2;
    }

    .pp-v2-mobile-filter-head strong {
        color: #333;
        font-size: 22px;
        font-weight: 900;
    }

    .pp-v2-mobile-filter-close {
        width: 34px;
        height: 34px;
        border: 0;
        background: transparent;
        color: #333;
        font-size: 22px;
        cursor: pointer;
    }

    .pp-v2-mobile-filter-section {
        padding: 0 0 22px;
        margin-bottom: 22px;
        border-bottom: 1px solid #edf0f5;
    }

    .pp-v2-mobile-filter-section h4 {
        margin: 0 0 14px;
        color: #333;
        font-size: 16px;
        font-weight: 700;
    }

    .pp-v2-mobile-filter-select {
        width: 100%;
        height: 44px;
        padding: 0 38px 0 14px;
        border: 1px solid #dfe5ef;
        border-radius: 10px;
        background-color: #fff;
        color: #333;
        font-size: 14px;
        font-weight: 600;
        outline: none;
        appearance: none;
        -webkit-appearance: none;
        background-image:
            linear-gradient(45deg, transparent 50%, #333 50%),
            linear-gradient(135deg, #333 50%, transparent 50%);
        background-position:
            calc(100% - 18px) 50%,
            calc(100% - 13px) 50%;
        background-size: 5px 5px, 5px 5px;
        background-repeat: no-repeat;
    }

    .pp-v2-mobile-keyword-list {
        display: flex;
        flex-wrap: wrap;
        gap: 8px;
    }

    .pp-v2-mobile-keyword-chip {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        height: 36px;
        padding: 0 14px;
        border: 1px solid #dfe5ef;
        border-radius: 999px;
        background: #fff;
        color: #333;
        font-size: 13px;
        font-weight: 600;
        cursor: pointer;
    }

    .pp-v2-mobile-keyword-chip.active {
        border-color: #0C318F;
        background: #0C318F;
        color: #fff;
    }

    .pp-v2-mobile-filter-actions {
        position: fixed;
        left: 0;
        right: 0;
        bottom: 0;
        z-index: 9002;
        display: flex;
        gap: 10px;
        padding: 14px 18px;
        background: #fff;
        border-top: 1px solid #edf0f5;
        box-shadow: 0 -8px 20px rgba(0,0,0,0.06);
        box-sizing: border-box;
    }

    .pp-v2-mobile-filter-reset,
    .pp-v2-mobile-filter-apply {
        height: 46px;
        border: 0;
        border-radius: 10px;
        font-size: 16px;
        font-weight: 700;
        cursor: pointer;
    }

    .pp-v2-mobile-filter-reset {
        flex: 0 0 96px;
        background: #f2f4f8;
        color: #555;
    }

    .pp-v2-mobile-filter-apply {
        flex: 1 1 auto;
        background: #0C318F;
        color: #fff;
    }

    body.pp-v2-filter-open {
        overflow: hidden;
    }
}

/* =========================================================
   Search V2 Mobile Filter Slide Animation
   필터 바텀시트 아래 → 위 애니메이션
========================================================= */

@media (max-width: 900px) {
    .pp-v2-mobile-filter-panel {
        display: block;
        visibility: hidden;
        pointer-events: none;
    }

    .pp-v2-mobile-filter-panel.is-open {
        visibility: visible;
        pointer-events: auto;
    }

    .pp-v2-mobile-filter-dim {
        opacity: 0;
        transition: opacity 0.22s ease;
    }

    .pp-v2-mobile-filter-panel.is-open .pp-v2-mobile-filter-dim {
        opacity: 1;
    }

    .pp-v2-mobile-filter-sheet {
        transform: translateY(105%);
        opacity: 0.98;
        transition:
            transform 0.28s cubic-bezier(0.22, 1, 0.36, 1),
            opacity 0.2s ease;
        will-change: transform;
    }

    .pp-v2-mobile-filter-panel.is-open .pp-v2-mobile-filter-sheet {
        transform: translateY(0);
        opacity: 1;
    }

    .pp-v2-mobile-filter-actions {
        transform: translateY(105%);
        transition: transform 0.28s cubic-bezier(0.22, 1, 0.36, 1);
        will-change: transform;
    }

    .pp-v2-mobile-filter-panel.is-open .pp-v2-mobile-filter-actions {
        transform: translateY(0);
    }
}

/* =========================================================
   Masonry 광고 높이 보정
   - 상품 정렬 방식은 그대로 유지
   - 광고 카드만 과하게 커지는 문제 보정
========================================================= */

@media (min-width: 901px) {
    /* 기본 Masonry 광고: 너무 길어지지 않게 4:3 정도로 제한 */
    .pp-v2-grid--masonry:not(.pp-v2-grid--icon) .pp-v2-ad-visual {
        min-height: 0 !important;
        aspect-ratio: 4 / 3 !important;
        border-bottom: 0 !important;
    }

    .pp-v2-grid--masonry:not(.pp-v2-grid--icon) .pp-v2-ad-unit,
    .pp-v2-grid--masonry:not(.pp-v2-grid--icon) .pp-v2-ad-visual .adsbygoogle,
    .pp-v2-grid--masonry:not(.pp-v2-grid--icon) .pp-v2-ad-visual iframe {
        width: 100% !important;
        height: 100% !important;
        min-height: 0 !important;
        max-height: 100% !important;
    }

    /* 아이콘 Masonry 광고: 상품 카드처럼 정사각형 안에만 표시 */
    .pp-v2-grid--masonry.pp-v2-grid--icon .pp-v2-ad-visual {
        min-height: 0 !important;
        aspect-ratio: 1 / 1.35 !important;
        border-bottom: 0 !important;
    }

    .pp-v2-grid--masonry.pp-v2-grid--icon .pp-v2-ad-unit,
    .pp-v2-grid--masonry.pp-v2-grid--icon .pp-v2-ad-visual .adsbygoogle,
    .pp-v2-grid--masonry.pp-v2-grid--icon .pp-v2-ad-visual iframe {
        width: 100% !important;
        height: 100% !important;
        min-height: 0 !important;
        max-height: 100% !important;
    }
}

/* =========================================================
   Product Detail AJAX Modal
   검색페이지의 바깥 모달, 팝업 레이어만 담당
========================================================= */

/* 모달은 body 바로 아래에 배치되는 것을 전제로 함 */
body > .pp-item-modal,
body > .pp-item-modal * {
    box-sizing: border-box;
}

body > .pp-item-modal {
    position: fixed !important;
    inset: 0 !important;
    z-index: 999999;

    display: block;
    width: 100%;
    height: 100%;

    visibility: hidden;
    opacity: 0;
    pointer-events: none;

    transform: none !important;
    transition:
        opacity 0.2s ease,
        visibility 0.2s ease;
}

body > .pp-item-modal.is-active {
    visibility: visible;
    opacity: 1;
    pointer-events: auto;
}

/* 현재 보던 페이지 전체를 덮는 dim */
body > .pp-item-modal > .pp-item-modal__dim {
    position: absolute !important;
    inset: 0 !important;
    z-index: 0;

    width: auto !important;
    height: auto !important;
    min-height: 0 !important;

    background: rgba(0, 0, 0, 0.42);
}

/* 실제 상품 상세 패널 */
body > .pp-item-modal .pp-item-modal__panel {
    position: absolute;
    top: 16px;
    bottom: 16px;
    left: 50%;
    z-index: 1;

    width: min(1360px, calc(100vw - 80px));
    height: auto;
    overflow: hidden;

    border-radius: 14px;
    background: #fff;
    box-shadow: 0 24px 80px rgba(0, 0, 0, 0.28);

    opacity: 0;
    transform: translateX(-50%) translateY(12px);

    transition:
        transform 0.24s cubic-bezier(0.22, 1, 0.36, 1),
        opacity 0.2s ease;
}

body > .pp-item-modal.is-active .pp-item-modal__panel {
    opacity: 1;
    transform: translateX(-50%) translateY(0);
}

/* 상세 콘텐츠 스크롤 영역 */
body > .pp-item-modal .pp-item-modal__body {
    position: relative;
    width: 100%;
    height: 100%;
    padding: 30px 0 0;

    overflow-x: hidden;
    overflow-y: auto;

    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;

    background: #fff;
    opacity: 0;

    transition: opacity 0.18s ease;
}

body > .pp-item-modal .pp-item-modal__body.is-loaded {
    opacity: 1;
}

/* 상단 닫기 버튼 전용 배경 */
body > .pp-item-modal .pp-item-modal__panel::before {
    content: "";
    position: absolute;
    top: 0;
    right: 0;
    left: 0;
    z-index: 115;

    height: 32px;

    border: 0;
    background: #fff;

    pointer-events: none;
}

/* 상품 상세 닫기 버튼 */
body > .pp-item-modal .pp-item-modal__close {
    position: absolute;
    top: 6px;
    right: 8px;
    z-index: 130;

    display: inline-flex;
    align-items: center;
    justify-content: center;

    width: 24px;
    height: 24px;
    padding: 0;

    border: 0;
    border-radius: 50%;

    background: rgba(0, 0, 0, 0.72);
    color: #fff;

    line-height: 1;
    cursor: pointer;
}

body > .pp-item-modal .pp-item-modal__close svg {
    display: block;
    width: 20px;
    height: 20px;
}

/* AJAX 로딩 */
body > .pp-item-modal .pp-item-modal__loading {
    position: absolute;
    inset: 0;
    z-index: 90;

    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 14px;

    background: #fff;
    color: #555;

    font-size: 15px;
    font-weight: 600;

    pointer-events: none;
}

body > .pp-item-modal .pp-item-modal__loading.is-hidden {
    display: none;
}

body > .pp-item-modal .pp-item-modal__spinner {
    width: 28px;
    height: 28px;

    border: 3px solid #dce4ff;
    border-top-color: #0c318f;
    border-radius: 50%;

    animation: pp-item-modal-spin 0.75s linear infinite;
}

body > .pp-item-modal .pp-item-modal-error {
    display: flex;
    align-items: center;
    justify-content: center;

    min-height: 360px;
    padding: 40px 20px;

    color: #777;
    font-size: 15px;
    font-weight: 600;
    text-align: center;
}

/*
 * 상품 모달이 열려도 배경 페이지의 레이아웃과 스크롤 위치는 바꾸지 않는다.
 * 실제 스크롤 차단은 item_search.html의 wheel/touch/scroll 이벤트가 담당한다.
 */
html.pp-item-modal-open,
body.pp-item-modal-open {
    position: static !important;
    top: auto !important;
    right: auto !important;
    bottom: auto !important;
    left: auto !important;

    width: auto !important;
    height: auto !important;

    overflow-y: auto !important;
    overscroll-behavior: none !important;
}

@keyframes pp-item-modal-spin {
    to {
        transform: rotate(360deg);
    }
}

/* =========================================================
   Mobile Product Detail Modal
========================================================= */

@media (max-width: 768px) {
    body > .pp-item-modal > .pp-item-modal__dim {
        background: rgba(0, 0, 0, 0.5);
    }

    body > .pp-item-modal .pp-item-modal__panel {
        top: 8px !important;
        right: 8px !important;
        bottom: calc(8px + env(safe-area-inset-bottom)) !important;
        left: 8px !important;

        width: auto !important;
        height: auto !important;
        padding: 15px !important;

        border-radius: 15px !important;
        background: #fff !important;
        box-shadow: 0 18px 50px rgba(0, 0, 0, 0.28);

        transform: translateY(16px);
    }

    body > .pp-item-modal.is-active .pp-item-modal__panel {
        transform: translateY(0);
    }

    body > .pp-item-modal .pp-item-modal__panel::before {
        height: 32px;
        border: 0;
    }

    body > .pp-item-modal .pp-item-modal__body {
        width: 100% !important;
        height: 100% !important;
        padding-top: 16px;

        border-radius: 10px !important;
        background: #fff !important;

        overflow-x: hidden !important;
        overflow-y: auto !important;
    }

    body > .pp-item-modal .pp-item-modal__close {
        top: 8px !important;
        right: 9px !important;

        width: 20px;
        height: 20px;
    }

    body > .pp-item-modal .pp-item-modal__close svg {
        width: 16px;
        height: 16px;
    }

    body > .pp-item-modal .pp-item-modal-page {
        width: 100% !important;
        max-width: 100% !important;
        min-height: 100%;
        margin: 0 !important;

        border-radius: 10px !important;
        background: #fff !important;
    }

    body > .pp-item-modal .pp-item-modal-page .item_area_wd,
    body > .pp-item-modal .pp-item-modal-page .item_area {
        width: 100% !important;
        max-width: 100% !important;
    }

    body > .pp-item-modal .pp-item-modal-page .pp-modal-sticky-header {
        width: 100% !important;
        margin-left: 0 !important;
        margin-right: 0 !important;
        padding-right: 0 !important;
    }

    body > .pp-item-modal .pp-item-modal-page .pp-modal-bottom-buy {
        /* left: 15px !important;
        right: 15px !important; */

        width: auto !important;
        max-width: none !important;
    }
}

/* =========================================================
   AJAX Download Popup
========================================================= */

body > .pp-ajax-download-modal {
    position: fixed !important;
    inset: 0 !important;
    z-index: 1000005 !important;

    width: 100% !important;
    height: 100% !important;
    max-width: none !important;
    margin: 0 !important;
}

body > .pp-ajax-download-modal.uk-open {
    display: block !important;
}

body > .pp-ajax-download-modal .uk-modal-dialog {
    position: relative;
    z-index: 1;
}

/* =========================================================
   AJAX Payment Popup
========================================================= */

body > .pp-ajax-payment-modal {
    position: fixed !important;
    inset: 0 !important;
    z-index: 1000010 !important;

    width: 100% !important;
    height: 100% !important;
    max-width: none !important;
    margin: 0 !important;
}

body > .pp-ajax-payment-modal.uk-open {
    display: block !important;
}

body > .pp-ajax-payment-modal .uk-modal-dialog {
    position: relative;
    z-index: 1;
}

/* =========================================================
   AJAX Masterpack Popup
========================================================= */

body > .pp-ajax-masterpack-popup {
    position: fixed !important;
    inset: 0 !important;
    z-index: 1000008 !important;

    display: flex !important;
    align-items: center;
    justify-content: center;

    padding: 28px 18px;

    box-sizing: border-box;
    visibility: hidden;
    opacity: 0;
    pointer-events: none;

    transition:
        opacity 0.22s ease,
        visibility 0.22s ease;
}

body > .pp-ajax-masterpack-popup.is-open {
    visibility: visible;
    opacity: 1;
    pointer-events: auto;
}

body > .pp-ajax-masterpack-popup .masterpack-popup-dim {
    position: absolute;
    inset: 0;
    z-index: 0;

    background: rgba(0, 0, 0, 0.52);
}

body > .pp-ajax-masterpack-popup .masterpack-popup-box {
    position: relative;
    z-index: 1;

    top: auto !important;

    width: min(620px, calc(100vw - 36px));
    max-width: 620px;
    max-height: calc(100vh - 56px);
    margin: 0;

    overflow: hidden;
    border-radius: 18px;

    background: #fff;
    box-shadow: 0 24px 80px rgba(0, 0, 0, 0.28);

    opacity: 0;
    transform: translateY(24px) scale(0.985) !important;

    transition:
        transform 0.28s cubic-bezier(0.22, 1, 0.36, 1),
        opacity 0.2s ease;
}

body > .pp-ajax-masterpack-popup.is-open .masterpack-popup-box {
    opacity: 1;
    transform: translateY(0) scale(1) !important;
}

body > .pp-ajax-masterpack-popup .masterpack-popup-close {
    position: absolute;
    top: 12px;
    right: 12px;
    z-index: 5;

    display: inline-flex;
    align-items: center;
    justify-content: center;

    width: 34px;
    height: 34px;
    padding: 0;

    border: 0;
    border-radius: 50%;

    background: rgba(20, 20, 20, 0.88);
    color: #fff;

    cursor: pointer;
}

body > .pp-ajax-masterpack-popup .masterpack-popup-close svg {
    width: 18px;
    height: 18px;
}

body > .pp-ajax-masterpack-popup .masterpack-popup-image {
    width: auto;
    margin: 14px 14px 0;

    overflow: hidden;
    border-radius: 11px;
    background: #f5f5f5;
}

body > .pp-ajax-masterpack-popup .masterpack-popup-image img {
    display: block;
    width: 100%;
    height: auto;
    max-height: 430px;

    object-fit: contain;
    object-position: center;

    background: #fff;
}

body > .pp-ajax-masterpack-popup .masterpack-popup-buttons {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;

    padding: 16px 18px 18px;
}

body > .pp-ajax-masterpack-popup .masterpack-single-buy,
body > .pp-ajax-masterpack-popup .masterpack-plus-link {
    display: inline-flex;
    align-items: center;
    justify-content: center;

    min-width: 0;
    min-height: 52px;
    padding: 0 16px;

    border-radius: 8px;

    font-size: 15px;
    font-weight: 700;
    line-height: 1.3;
    text-align: center;
    text-decoration: none;

    cursor: pointer;
}

body > .pp-ajax-masterpack-popup .masterpack-single-buy {
    width: 100%;

    border: 1px solid #dfe3ea;
    background: #fff;
    color: #666;
}

body > .pp-ajax-masterpack-popup .masterpack-single-buy:hover {
    border-color: #aeb6c6;
    background: #f7f8fa;
    color: #333;
}

body > .pp-ajax-masterpack-popup .masterpack-plus-link {
    border: 1px solid #0b318f;
    background: #0b318f;
    color: #fff;
}

body > .pp-ajax-masterpack-popup .masterpack-plus-link:hover {
    background: #08266f;
    color: #fff;
}

@media (max-width: 640px) {
    body > .pp-ajax-masterpack-popup {
        padding:
            18px
            12px
            calc(18px + env(safe-area-inset-bottom));
    }

    body > .pp-ajax-masterpack-popup .masterpack-popup-box {
        width: 100%;
        max-height: calc(
            100dvh -
            36px -
            env(safe-area-inset-bottom)
        );

        overflow-y: auto;
        border-radius: 15px;
    }

    body > .pp-ajax-masterpack-popup .masterpack-popup-image {
        margin: 12px 12px 0;
        border-radius: 9px;
    }

    body > .pp-ajax-masterpack-popup .masterpack-popup-image img {
        max-height: 52vh;
    }

    body > .pp-ajax-masterpack-popup .masterpack-popup-buttons {
        grid-template-columns: 1fr;
        gap: 8px;

        padding: 13px 14px 15px;
    }

    body > .pp-ajax-masterpack-popup .masterpack-single-buy,
    body > .pp-ajax-masterpack-popup .masterpack-plus-link {
        min-height: 48px;
        font-size: 14px;
    }

    body > .pp-ajax-masterpack-popup .masterpack-popup-close {
        top: 9px;
        right: 9px;

        width: 32px;
        height: 32px;
    }
}

/* 스크롤바가 사라져도 기존 자리 유지 */
html {
    scrollbar-gutter: stable;
}

/* UIkit이 추가하는 15px 중복 보정 제거 */
html.pp-item-modal-open.uk-modal-page,
html.uk-modal-page {
    padding-right: 0 !important;
}