/* =========================================================
   Internal pages � hero + subnav + about
   Scoped under common page shell (also remapped in block editor).
   ========================================================= */

.dw-wrap {
    width: 100%;
    max-width: var(--dw-container);
    margin: 0 auto;
    padding: 0 24px;
}

/* ---------------------------------------------------------
   Page hero
   --------------------------------------------------------- */
.dw-page-hero {
    --dw-page-hero-h: clamp(168px, 22vw, 240px);
    position: relative;
    color: #fff;
    background:
        linear-gradient(135deg, var(--dw-navy) 0%, color-mix(in srgb, var(--dw-navy) 70%, var(--dw-primary)) 55%, var(--dw-primary) 100%);
    overflow: hidden;
}

.dw-page-hero-main {
    position: relative;
    min-height: var(--dw-page-hero-h);
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
}

.dw-page-hero-bg {
    position: absolute;
    inset: 0;
    background-position: center;
    background-size: cover;
    background-repeat: no-repeat;
    z-index: 0;
}

.dw-page-hero.has-bg .dw-page-hero-main::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 1;
    background:
        linear-gradient(180deg, rgba(18, 36, 63, .35) 0%, rgba(18, 36, 63, .72) 100%),
        linear-gradient(115deg, color-mix(in srgb, var(--dw-navy) 78%, transparent) 0%, color-mix(in srgb, var(--dw-primary) 45%, transparent) 100%);
    pointer-events: none;
}

.dw-page-hero-body,
.dw-page-hero-foot {
    position: relative;
    z-index: 2;
}

.dw-page-hero-body {
    padding: 52px 24px 28px;
}

.dw-page-hero-body h1 {
    margin: 0;
    color: #fff;
    font-size: clamp(28px, 3.4vw, 42px);
    font-weight: 800;
    letter-spacing: -.02em;
    line-height: 1.25;
    text-shadow: 0 2px 18px rgba(0, 0, 0, .18);
}

.dw-page-hero-foot {
    padding: 0 24px 22px;
}

/* Breadcrumb inside hero */
.dw-page-hero .dw-breadcrumb ol {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px 0;
    margin: 0;
    padding: 0;
    list-style: none;
}

.dw-page-hero .dw-breadcrumb li {
    display: inline-flex;
    align-items: center;
    font-size: 13px;
    line-height: 1.4;
    color: rgba(255, 255, 255, .72);
}

.dw-page-hero .dw-breadcrumb li:not(:last-child)::after {
    content: "/";
    margin: 0 10px;
    color: rgba(255, 255, 255, .38);
}

.dw-page-hero .dw-breadcrumb a {
    color: rgba(255, 255, 255, .78);
}

.dw-page-hero .dw-breadcrumb a:hover {
    color: #fff;
}

.dw-page-hero .dw-breadcrumb li[aria-current="page"] span,
.dw-page-hero .dw-breadcrumb li:last-child span {
    color: #fff;
    font-weight: 600;
}

/* ---------------------------------------------------------
   Page subnav (sibling menus under same parent)
   --------------------------------------------------------- */
.dw-page-subnav {
    position: relative;
    z-index: 5;
    margin-top: -1px;
    background: #fff;
    border-top: 1px solid var(--dw-line);
    border-bottom: 1px solid var(--dw-line);
}

.dw-page-subnav .dw-wrap {
    max-width: var(--dw-container);
    margin: 0 auto;
    padding: 0 24px;
}

.dw-page-subnav-list {
    display: flex;
    align-items: stretch;
    gap: 0;
    list-style: none;
    margin: 0;
    padding: 0;
    overflow-x: auto;
    scrollbar-width: none;
    -webkit-overflow-scrolling: touch;
}

.dw-page-subnav-list::-webkit-scrollbar {
    display: none;
}

.dw-page-subnav-list li {
    flex: 1 1 0;
    min-width: 0;
    border-right: 1px solid var(--dw-line);
}

.dw-page-subnav-list li:first-child {
    border-left: 1px solid var(--dw-line);
}

.dw-page-subnav-list a {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 58px;
    padding: 16px 20px;
    border-radius: 0;
    color: var(--dw-ink);
    font-size: 15px;
    font-weight: 500;
    line-height: 1.35;
    white-space: nowrap;
    text-align: center;
    text-decoration: none;
    position: relative;
    background: transparent;
    transition: color .2s ease;
}

.dw-page-subnav-list a:hover {
    color: var(--dw-primary);
    background: transparent;
}

.dw-page-subnav-list li.is-current a,
.dw-page-subnav-list a[aria-current="page"] {
    color: var(--dw-primary);
    font-weight: 700;
    background: transparent;
}

.dw-page-subnav-list li.is-current a::after,
.dw-page-subnav-list a[aria-current="page"]::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: 3px;
    background: var(--dw-primary);
}

/* ---------------------------------------------------------
   Page body shell
   --------------------------------------------------------- */
.dw-page-body {
    padding: 0;
    background: #fff;
}

.dw-page-article {
    margin: 0;
}

.dw-page-blocks {
    max-width: none;
    margin: 0;
    padding: 0;
}

.dw-page-blocks > *:first-child {
    margin-top: 0;
}

.dw-page-blocks img {
    max-width: 100%;
    height: auto;
    display: block;
}

/* ---------------------------------------------------------
   About page sections (????)
   --------------------------------------------------------- */
.dw-page-blocks .dw-about {
    padding: 88px 0;
    background: #fff;
}

.dw-page-blocks .dw-about--last {
    padding-bottom: 96px;
}

.dw-page-blocks .dw-about-grid {
    display: grid;
    grid-template-columns: minmax(0, 1.05fr) minmax(0, .95fr);
    gap: 48px 64px;
    align-items: center;
}

.dw-page-blocks .dw-about--reverse .dw-about-grid {
    grid-template-columns: minmax(0, .95fr) minmax(0, 1.05fr);
}

.dw-page-blocks .dw-about-eyebrow {
    margin: 0 0 14px;
    color: var(--dw-primary);
    font-size: 13px;
    font-weight: 800;
    letter-spacing: .14em;
    text-transform: uppercase;
}

.dw-page-blocks .dw-about-title {
    margin: 0 0 18px;
    color: var(--dw-ink);
    font-size: clamp(26px, 2.8vw, 36px);
    font-weight: 800;
    line-height: 1.35;
    letter-spacing: -.02em;
}

.dw-page-blocks .dw-about-rule {
    display: block;
    width: 48px;
    height: 2px;
    margin: 0 0 20px;
    background: #535353;
    border-radius: 2px;
}

.dw-page-blocks .dw-about-desc {
    margin: 0 0 32px;
    color: var(--dw-text);
    font-size: 16px;
    line-height: 1.8;
}

.dw-page-blocks .dw-about-media {
    min-width: 0;
    border-radius: 18px;
    overflow: hidden;
    box-shadow: var(--dw-shadow);
    background: var(--dw-bg);
}

.dw-page-blocks .dw-about-media .wp-block-image,
.dw-page-blocks .dw-about-media figure {
    margin: 0;
    margin-bottom: 0;
}

.dw-page-blocks .dw-about-media .wp-block-image,
.dw-page-blocks .dw-about-media .wp-block-image img,
.dw-page-blocks .dw-about-media figure,
.dw-page-blocks .dw-about-media img {
    margin-bottom: 0 !important;
}

.dw-page-blocks .dw-about-media img {
    width: 100%;
    aspect-ratio: 4 / 3;
    object-fit: cover;
    margin: 0;
}

/* Block pattern: columns grid overrides WP flex */
.dw-page-blocks .dw-about-grid.wp-block-columns {
    display: grid;
    gap: 48px 64px;
}

.dw-page-blocks .dw-about-grid.wp-block-columns:not(.is-not-stacked-on-mobile) > .wp-block-column {
    flex-basis: auto !important;
}

/* 이미지를 텍스트 칼럼 높이에 꽉 차게 (2단 레이아웃에서만) */
@media (min-width: 1025px) {
    .dw-page-blocks .dw-about-grid {
        align-items: stretch;
    }

    .dw-page-blocks .dw-about-media {
        display: flex;
    }

    .dw-page-blocks .dw-about-media .wp-block-image,
    .dw-page-blocks .dw-about-media figure {
        width: 100%;
        height: 100%;
    }

    .dw-page-blocks .dw-about-media img {
        height: 100%;
        aspect-ratio: auto;
    }
}

.dw-page-blocks .dw-about-values {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 20px 18px;
}

.dw-page-blocks .dw-about-value {
    min-width: 0;
}

.dw-page-blocks .dw-about-value strong {
    display: block;
    margin: 10px 0 6px;
    color: var(--dw-ink);
    font-size: 15px;
    font-weight: 700;
    line-height: 1.35;
}

.dw-page-blocks .dw-about-value > span:last-child {
    display: block;
    color: var(--dw-muted);
    font-size: 13px;
    line-height: 1.55;
}

.dw-page-blocks .dw-about-ico {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: color-mix(in srgb, var(--dw-ink) 72%, #fff);
    line-height: 0;
}

.dw-page-blocks .dw-about-ico svg {
    width: 28px;
    height: 28px;
    display: block;
    stroke-width: 1.8;
    flex-shrink: 0;
}

.dw-page-blocks .dw-about-service .dw-about-ico svg,
.dw-page-blocks .dw-about-why .dw-about-ico svg {
    width: 26px;
    height: 26px;
}

.dw-page-blocks .dw-about-services {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 22px 28px;
}

.dw-page-blocks .dw-about-service {
    display: grid;
    grid-template-columns: 40px minmax(0, 1fr);
    gap: 12px;
    align-items: start;
}

.dw-page-blocks .dw-about-service strong {
    display: block;
    margin: 0 0 4px;
    color: var(--dw-ink);
    font-size: 16px;
    font-weight: 700;
    line-height: 1.35;
}

.dw-page-blocks .dw-about-service span:last-child {
    display: block;
    color: var(--dw-muted);
    font-size: 14px;
    line-height: 1.55;
}

.dw-page-blocks .dw-about-why {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: 18px;
}

.dw-page-blocks .dw-about-why li {
    display: grid;
    grid-template-columns: 40px minmax(0, 1fr);
    gap: 12px;
    align-items: start;
}

.dw-page-blocks .dw-about-why strong {
    display: block;
    margin: 0 0 4px;
    color: var(--dw-ink);
    font-size: 16px;
    font-weight: 700;
    line-height: 1.35;
}

.dw-page-blocks .dw-about-why span:last-child {
    display: block;
    color: var(--dw-muted);
    font-size: 14px;
    line-height: 1.55;
}

/* ---------------------------------------------------------
   Responsive
   --------------------------------------------------------- */
@media (max-width: 1024px) {
    .dw-page-blocks .dw-about-grid,
    .dw-page-blocks .dw-about--reverse .dw-about-grid,
    .dw-page-blocks .dw-about-grid.wp-block-columns {
        grid-template-columns: 1fr;
        gap: 32px;
    }

    /* reverse 섹션도 모바일에선 텍스트 먼저, 이미지 아래로 (다른 섹션과 통일) */
    .dw-page-blocks .dw-about--reverse .dw-about-media {
        order: 1;
    }

    .dw-page-blocks .dw-about-values {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 22px 16px;
    }
}

@media (max-width: 860px) {
    .dw-page-hero {
        --dw-page-hero-h: 160px;
    }

    .dw-page-hero-body {
        padding: 40px 18px 20px;
    }

    .dw-page-hero-foot {
        padding: 0 18px 16px;
    }

    .dw-page-hero-body h1 {
        font-size: clamp(24px, 6.5vw, 32px);
    }

    .dw-page-subnav .dw-wrap {
        padding: 0 18px;
    }

    .dw-page-subnav-list li {
        flex: 0 0 auto;
        min-width: 140px;
    }

    .dw-page-subnav-list a {
        min-height: 52px;
        padding: 14px 16px;
        font-size: 14px;
    }

    .dw-wrap {
        padding-left: 18px;
        padding-right: 18px;
    }

    .dw-page-blocks .dw-about,
    .dw-page-blocks .dw-about--first {
        padding: 52px 0;
    }

    .dw-page-blocks .dw-about--last {
        padding-bottom: 64px;
    }

    .dw-page-blocks .dw-about-title {
        font-size: clamp(22px, 6vw, 28px);
    }

    .dw-page-blocks .dw-about-services {
        grid-template-columns: 1fr;
        gap: 18px;
    }

    .dw-page-blocks .dw-about-media img {
        aspect-ratio: 16 / 10;
    }
}

@media (max-width: 520px) {
    .dw-page-blocks .dw-about-values {
        grid-template-columns: 1fr 1fr;
    }
}

/* =========================================================
   블록 패턴 섹션 (리드 / 아이콘박스 / 통계 / split / 패널)
   .dw-page-blocks 아래로 스코프 → 페이지에 삽입 시 정상 렌더.
   ========================================================= */
.dw-page-blocks .dw-block { padding: 72px 0; }
/* 인접 블록 패딩 중복 제거(합산 방지). 배경색 섹션(bleed)은 배경이 위로 붙으므로 제외. */
/* 인접 섹션 패딩 중복(간격 두 배) 제거.
   단 '앞 섹션'이 배경색(bleed)이면 제외 → bleed 밴드 다음 섹션은 위 패딩을 유지해 색 경계와 간격 확보. */
.dw-page-blocks .dw-block:not(.dw-block--bleed) + .dw-block:not(.dw-block--bleed),
.dw-page-blocks .dw-about + .dw-about,
.dw-page-blocks .dw-block:not(.dw-block--bleed) + .dw-about,
.dw-page-blocks .dw-about + .dw-block:not(.dw-block--bleed) { padding-top: 0; }
.dw-page-blocks .dw-block-first { padding-top: 56px; }
.dw-page-blocks .dw-block--center { text-align: center; }
.dw-page-blocks .dw-block--bleed { background: var(--dw-bg); }

/* 리드 문구 */
.dw-page-blocks .dw-lead {
    margin: 0 auto 14px;
    max-width: 820px;
    color: var(--dw-ink);
    font-size: clamp(24px, 2.6vw, 34px);
    font-weight: 800;
    line-height: 1.4;
    letter-spacing: -.02em;
}
.dw-page-blocks .dw-lead-sub {
    margin: 0 auto;
    max-width: 720px;
    color: var(--dw-text);
    font-size: 16px;
    line-height: 1.8;
}
.dw-page-blocks .dw-accent { color: var(--dw-primary); }

/* 그리드 공통 (wp-block-columns 위에 grid 강제) */
.dw-page-blocks .dw-grid { display: grid; gap: 24px; margin: 0; }
.dw-page-blocks .dw-grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.dw-page-blocks .dw-grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.dw-page-blocks .dw-grid--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.dw-page-blocks .dw-grid > .wp-block-column { margin: 0; flex-basis: auto !important; }

/* 아이콘 박스 */
.dw-page-blocks .dw-box {
    padding: 32px 24px;
    background: #fff;
    border: 1px solid var(--dw-line);
    border-radius: var(--dw-radius);
    box-shadow: var(--dw-shadow-sm);
    text-align: center;
}
.dw-page-blocks .dw-box-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 56px;
    height: 56px;
    margin-bottom: 16px;
    color: var(--dw-primary);
    background: var(--dw-primary-light);
    border-radius: 14px;
}
.dw-page-blocks .dw-box h3 { margin: 0 0 8px; color: var(--dw-ink); font-size: 18px; font-weight: 700; }
.dw-page-blocks .dw-box p { margin: 0; color: var(--dw-muted); font-size: 14px; line-height: 1.7; }

/* 숫자 통계 */
.dw-page-blocks .dw-block--stats { background: var(--dw-bg); }
.dw-page-blocks .dw-stats-head { text-align: center; margin-bottom: 40px; }
.dw-page-blocks .dw-stats-eyebrow {
    margin: 0 0 8px;
    color: var(--dw-primary);
    font-size: 13px;
    font-weight: 800;
    letter-spacing: .14em;
    text-transform: uppercase;
}
.dw-page-blocks .dw-stats-title { margin: 0; color: var(--dw-ink); font-size: clamp(24px, 2.6vw, 32px); font-weight: 800; }
.dw-page-blocks .dw-stat { text-align: center; }
.dw-page-blocks .dw-stat-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 52px;
    height: 52px;
    margin-bottom: 12px;
    color: var(--dw-primary);
    background: #fff;
    border-radius: 14px;
    box-shadow: var(--dw-shadow-sm);
}
.dw-page-blocks .dw-stat strong { display: block; color: var(--dw-ink); font-size: clamp(26px, 3vw, 34px); font-weight: 800; line-height: 1.1; }
.dw-page-blocks .dw-stat span { display: block; margin-top: 6px; color: var(--dw-muted); font-size: 14px; }

/* 이미지 + 텍스트 (split) */
.dw-page-blocks .dw-split { display: grid; grid-template-columns: 1fr 1fr; gap: 48px; align-items: center; margin: 0; }
.dw-page-blocks .dw-split > .wp-block-column { margin: 0; flex-basis: auto !important; }
.dw-page-blocks .dw-split-media img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 18px; box-shadow: var(--dw-shadow); margin: 0; }
.dw-page-blocks .dw-split-body h2 { margin: 0 0 16px; color: var(--dw-ink); font-size: clamp(24px, 2.6vw, 32px); font-weight: 800; }
.dw-page-blocks .dw-split-body p { margin: 0 0 16px; color: var(--dw-text); font-size: 16px; line-height: 1.8; }

/* Vision / Mission 패널 */
.dw-page-blocks .dw-panel { display: grid; grid-template-columns: 1fr 1fr; gap: 48px; align-items: start; margin: 0; }
.dw-page-blocks .dw-panel > .wp-block-column { margin: 0; flex-basis: auto !important; }
.dw-page-blocks .dw-panel-item { display: grid; grid-template-columns: 48px 1fr; gap: 16px; align-items: start; }
.dw-page-blocks .dw-panel-item + .dw-panel-item { margin-top: 28px; }
.dw-page-blocks .dw-panel-item-ico {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 48px;
    height: 48px;
    color: var(--dw-primary);
    background: var(--dw-primary-light);
    border-radius: 12px;
}
.dw-page-blocks .dw-panel-item-body h3 { margin: 0 0 6px; color: var(--dw-ink); font-size: 18px; font-weight: 700; }
.dw-page-blocks .dw-panel-item-body p { margin: 0; color: var(--dw-muted); font-size: 14px; line-height: 1.7; }
.dw-page-blocks .dw-panel-media img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 18px; box-shadow: var(--dw-shadow); margin: 0; }
.dw-page-blocks .dw-panel-quote { margin: 0 0 28px; color: var(--dw-ink); font-size: clamp(24px, 2.4vw, 30px); font-weight: 800; line-height: 1.35; letter-spacing: -.01em; }

/* 아이콘 SVG 크기 통일 */
.dw-page-blocks .dw-box-icon svg,
.dw-page-blocks .dw-stat-icon svg,
.dw-page-blocks .dw-panel-item-ico svg { width: 26px; height: 26px; display: block; }

/* 패턴 섹션 반응형 */
@media (max-width: 1024px) {
    .dw-page-blocks .dw-grid--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 860px) {
    .dw-page-blocks .dw-block { padding: 52px 0; }
    .dw-page-blocks .dw-grid--3,
    .dw-page-blocks .dw-grid--2 { grid-template-columns: 1fr; }
    .dw-page-blocks .dw-split,
    .dw-page-blocks .dw-panel { grid-template-columns: 1fr; gap: 28px; }
    /* 모바일: 이미지는 무조건 텍스트 아래로 */
    .dw-page-blocks .dw-split .dw-split-media { order: 1; }
}
@media (max-width: 520px) {
    .dw-page-blocks .dw-grid--4 { grid-template-columns: 1fr 1fr; }
}

/* ---------------------------------------------------------
   Scroll reveal — boxes rise one-by-one on wheel
   --------------------------------------------------------- */
/* 숨김 상태는 JS 가 있는 프런트엔드에서만 (html.dw-js) 적용.
   → 블록 에디터/패턴 프리뷰/무JS 환경에서는 항상 보임(텍스트 안 보임 방지). */
:where(html.dw-js) .dw-page-blocks .dw-reveal,
:where(html.dw-js) .dw-page-blocks .dw-box,
:where(html.dw-js) .dw-page-blocks .dw-stat,
:where(html.dw-js) .dw-page-blocks .dw-panel-item,
:where(html.dw-js) .dw-page-blocks .dw-about-value,
:where(html.dw-js) .dw-page-blocks .dw-about-service,
:where(html.dw-js) .dw-page-blocks .dw-about-why > li {
    opacity: 0;
    transform: translateY(28px);
    transition: opacity .7s cubic-bezier(.22, 1, .36, 1), transform .7s cubic-bezier(.22, 1, .36, 1);
    transition-delay: var(--dw-reveal-delay, 0s);
}

/* is-inview 가 붙으면 opacity:1 이 정적으로 확정 → 애니메이션 실행 여부와 무관하게 항상 보임
   (탭 비활성/포커스 전에도 '안 보이는 상태에 갇힘' 없음). 등장 모션은 transition 이 담당. */
.dw-page-blocks .dw-reveal.is-inview,
.dw-page-blocks .dw-box.is-inview,
.dw-page-blocks .dw-stat.is-inview,
.dw-page-blocks .dw-panel-item.is-inview,
.dw-page-blocks .dw-about-value.is-inview,
.dw-page-blocks .dw-about-service.is-inview,
.dw-page-blocks .dw-about-why > li.is-inview {
    opacity: 1;
    transform: none;
}

@media (prefers-reduced-motion: reduce) {
    .dw-page-blocks .dw-reveal,
    .dw-page-blocks .dw-box,
    .dw-page-blocks .dw-stat,
    .dw-page-blocks .dw-panel-item,
    .dw-page-blocks .dw-about-value,
    .dw-page-blocks .dw-about-service,
    .dw-page-blocks .dw-about-why > li {
        opacity: 1;
        transform: none;
        transition: none;
    }
}

/* ---------------------------------------------------------
   스크롤 리빌 OFF (Customizer 「페이지 효과」에서 끔)
   --------------------------------------------------------- */
body.dw-reveal-off .dw-page-blocks .dw-reveal,
body.dw-reveal-off .dw-page-blocks .dw-box,
body.dw-reveal-off .dw-page-blocks .dw-stat,
body.dw-reveal-off .dw-page-blocks .dw-panel-item,
body.dw-reveal-off .dw-page-blocks .dw-about-value,
body.dw-reveal-off .dw-page-blocks .dw-about-service,
body.dw-reveal-off .dw-page-blocks .dw-about-why > li {
    opacity: 1 !important;
    transform: none !important;
    animation: none !important;
}

/* ---------------------------------------------------------
   split: 텍스트 세로 중앙 정렬 + 버튼(채운형) 디자인
   --------------------------------------------------------- */
.dw-page-blocks .dw-split-body {
    display: flex;
    flex-direction: column;
    justify-content: center;
}
.dw-page-blocks .dw-split-body .dw-btn {
    align-self: flex-start;
    margin-top: 10px;
    background: var(--dw-primary);
    color: #fff;
    box-shadow: 0 8px 20px rgba(0, 120, 212, .30);
}
.dw-page-blocks .dw-split-body .dw-btn:hover {
    background: var(--dw-primary-dark);
    color: #fff;
    transform: translateY(-2px);
}

/* Vision/Mission 좌측 항목을 이미지 높이에 맞춰 세로 중앙 정렬 (균형) */
.dw-page-blocks .dw-panel-text {
    display: flex;
    flex-direction: column;
    justify-content: center;
}

/* =========================================================
   CEO 인사말
   ========================================================= */
.dw-page-blocks .dw-ceo {
    padding: 88px 0;
    background: #fff;
}
.dw-page-blocks .dw-ceo-grid {
    display: grid;
    grid-template-columns: minmax(0, .82fr) minmax(0, 1.18fr);
    gap: 48px 60px;
    align-items: center;
}
.dw-page-blocks .dw-ceo-grid.wp-block-columns { display: grid; }
.dw-page-blocks .dw-ceo-grid > .wp-block-column { margin: 0; flex-basis: auto !important; }

.dw-page-blocks .dw-ceo-media {
    min-width: 0;
    border-radius: 18px;
    overflow: hidden;
    box-shadow: var(--dw-shadow);
    background: var(--dw-bg);
}
.dw-page-blocks .dw-ceo-media .wp-block-image,
.dw-page-blocks .dw-ceo-media figure { margin: 0; }
.dw-page-blocks .dw-ceo-media img {
    width: 100%;
    aspect-ratio: 4 / 5;
    object-fit: cover;
    margin: 0;
}

.dw-page-blocks .dw-ceo-eyebrow {
    margin: 0 0 14px;
    color: var(--dw-primary);
    font-size: 13px;
    font-weight: 800;
    letter-spacing: .14em;
    text-transform: uppercase;
}
.dw-page-blocks .dw-ceo-title {
    margin: 0 0 18px;
    color: var(--dw-ink);
    font-size: clamp(26px, 2.8vw, 36px);
    font-weight: 800;
    line-height: 1.35;
    letter-spacing: -.02em;
}
.dw-page-blocks .dw-ceo-body p:not(.dw-ceo-eyebrow):not(.dw-ceo-sign) {
    margin: 0 0 16px;
    color: var(--dw-text);
    font-size: 16px;
    line-height: 1.85;
}
.dw-page-blocks .dw-ceo-sign {
    margin: 26px 0 0;
    color: var(--dw-ink);
    display: flex;
    align-items: baseline;
    gap: 10px;
}
.dw-page-blocks .dw-ceo-sign .dw-ceo-role { font-size: 15px; color: var(--dw-muted); }
.dw-page-blocks .dw-ceo-sign .dw-ceo-name { font-size: 22px; font-weight: 800; letter-spacing: .06em; }

@media (max-width: 1024px) {
    .dw-page-blocks .dw-ceo-grid,
    .dw-page-blocks .dw-ceo-grid.wp-block-columns {
        grid-template-columns: 1fr;
        gap: 28px;
    }
    /* 모바일: 이미지는 무조건 텍스트 아래로 */
    .dw-page-blocks .dw-ceo-media { order: 1; }
    .dw-page-blocks .dw-ceo-media img { aspect-ratio: 4 / 3; }
}

/* =========================================================
   연혁 (History) — 좌 타임라인 / 우 큰 이미지(sticky)
   ========================================================= */
.dw-page-blocks .dw-history {
    padding: 88px 0;
    background: #fff;
}
.dw-page-blocks .dw-history-eyebrow {
    margin: 0 0 14px;
    color: var(--dw-primary);
    font-size: 13px;
    font-weight: 800;
    letter-spacing: .14em;
    text-transform: uppercase;
}
.dw-page-blocks .dw-history-title {
    margin: 0 0 16px;
    color: var(--dw-ink);
    font-size: clamp(26px, 2.8vw, 36px);
    font-weight: 800;
    line-height: 1.35;
    letter-spacing: -.02em;
}
.dw-page-blocks .dw-history-sub {
    margin: 0 0 44px;
    max-width: 620px;
    color: var(--dw-text);
    font-size: 16px;
    line-height: 1.8;
}

/* 2단 레이아웃 */
.dw-page-blocks .dw-history-layout {
    display: grid;
    grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr);
    gap: 60px;
    align-items: start;
}
.dw-page-blocks .dw-history-layout.wp-block-columns { display: grid; }
.dw-page-blocks .dw-history-layout > .wp-block-column { margin: 0; flex-basis: auto !important; }
.dw-page-blocks .dw-history-media {
    align-self: start;   /* 타임라인 높이로 늘어나지 않고 이미지 비율만큼만 차지 */
    position: sticky;
    top: 96px;
    border-radius: 18px;
    overflow: hidden;
    box-shadow: var(--dw-shadow);
    background: var(--dw-bg);
}
.dw-page-blocks .dw-history-media .wp-block-image,
.dw-page-blocks .dw-history-media figure { margin: 0; }
.dw-page-blocks .dw-history-media img {
    width: 100%;
    aspect-ratio: 4 / 5;   /* PC 최소 4:5 세로 비율 */
    object-fit: cover;
    margin: 0;
    display: block;
}

/* 좌측 연결 레일 */
.dw-page-blocks .dw-history-track { position: relative; }
.dw-page-blocks .dw-history-track::before {
    content: "";
    position: absolute;
    left: 6px;
    top: 8px;
    bottom: 8px;
    width: 2px;
    background: var(--dw-line);
}

/* 시대(단) 구분 헤더 */
.dw-page-blocks .dw-history-era {
    position: relative;
    padding: 0 0 20px 40px;
    display: flex;
    align-items: baseline;
    gap: 12px;
}
.dw-page-blocks .dw-history-era:not(:first-child) { margin-top: 12px; }
.dw-page-blocks .dw-history-era::before {
    content: "";
    position: absolute;
    left: 0;
    top: 3px;
    width: 14px;
    height: 14px;
    border-radius: 4px;
    background: var(--dw-primary);
    box-shadow: 0 0 0 4px var(--dw-primary-light);
}
.dw-page-blocks .dw-history-era-range {
    color: var(--dw-primary);
    font-size: 19px;
    font-weight: 800;
    letter-spacing: .01em;
}
.dw-page-blocks .dw-history-era-name {
    color: var(--dw-ink);
    font-size: 15px;
    font-weight: 700;
}

/* 타임라인 항목 */
.dw-page-blocks .dw-history-list {
    list-style: none;
    margin: 0 0 8px;
    padding: 0;
}
.dw-page-blocks .dw-history-item {
    position: relative;
    padding: 0 0 26px 40px;
}
.dw-page-blocks .dw-history-item:last-child { padding-bottom: 4px; }
.dw-page-blocks .dw-history-item::before {
    content: "";
    position: absolute;
    left: 1px;
    top: 6px;
    width: 12px;
    height: 12px;
    border-radius: 50%;
    background: #fff;
    border: 3px solid var(--dw-primary);
}
.dw-page-blocks .dw-history-year {
    display: block;
    margin: 0 0 4px;
    color: var(--dw-primary);
    font-size: 20px;
    font-weight: 800;
    line-height: 1.1;
}
.dw-page-blocks .dw-history-body strong {
    display: block;
    margin: 0 0 5px;
    color: var(--dw-ink);
    font-size: 17px;
    font-weight: 700;
    line-height: 1.4;
}
.dw-page-blocks .dw-history-body span {
    display: block;
    color: var(--dw-muted);
    font-size: 15px;
    line-height: 1.7;
}

/* 반응형: 모바일은 1단 + 이미지 아래로 */
@media (max-width: 1024px) {
    .dw-page-blocks .dw-history-layout {
        grid-template-columns: 1fr;
        gap: 40px;
    }
    .dw-page-blocks .dw-history-media {
        position: static;
        order: 1;
    }
    .dw-page-blocks .dw-history-media img { aspect-ratio: 16 / 10; }
}

/* =========================================================
   FAQ 자주 묻는 질문 (아코디언 · <details>)
   ========================================================= */
.dw-page-blocks .dw-faq {
    padding: 88px 0;
    background: #fff;
}
.dw-page-blocks .dw-faq-eyebrow {
    margin: 0 0 14px;
    color: var(--dw-primary);
    font-size: 13px;
    font-weight: 800;
    letter-spacing: .14em;
    text-transform: uppercase;
}
.dw-page-blocks .dw-faq-title {
    margin: 0 0 16px;
    color: var(--dw-ink);
    font-size: clamp(26px, 2.8vw, 36px);
    font-weight: 800;
    line-height: 1.35;
    letter-spacing: -.02em;
}
.dw-page-blocks .dw-faq-sub {
    margin: 0 0 40px;
    color: var(--dw-text);
    font-size: 16px;
    line-height: 1.8;
}
.dw-page-blocks .dw-faq-list {
    max-width: 840px;
    border-top: 1px solid var(--dw-line);
}
.dw-page-blocks .dw-faq-item {
    border-bottom: 1px solid var(--dw-line);
}
/* 질문 = 네이티브 details 의 summary (클릭해서 직접 편집) */
.dw-page-blocks .dw-faq-item > summary {
    list-style: none;
    cursor: pointer;
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 24px 6px;
    color: var(--dw-ink);
    font-size: 17px;
    font-weight: 700;
    line-height: 1.5;
    transition: color .15s ease;
}
.dw-page-blocks .dw-faq-item > summary::-webkit-details-marker { display: none; }
.dw-page-blocks .dw-faq-item > summary::marker { content: ""; }
.dw-page-blocks .dw-faq-item > summary:hover { color: var(--dw-primary); }
/* Q 라벨 + 쉐브론은 가상요소로 → summary 는 순수 편집 텍스트만 남김 */
.dw-page-blocks .dw-faq-item > summary::before {
    content: "Q";
    flex: none;
    color: var(--dw-primary);
    font-size: 18px;
    font-weight: 800;
}
.dw-page-blocks .dw-faq-item > summary::after {
    content: "";
    margin-left: auto;
    flex: none;
    width: 10px;
    height: 10px;
    border-right: 2px solid var(--dw-muted);
    border-bottom: 2px solid var(--dw-muted);
    transform: translateY(-3px) rotate(45deg);
    transition: transform .2s ease, border-color .2s ease;
}
.dw-page-blocks .dw-faq-item[open] > summary::after {
    transform: translateY(2px) rotate(-135deg);
    border-color: var(--dw-primary);
}
/* 답변 = details 내부 블록(문단·목록 등) */
.dw-page-blocks .dw-faq-item > :not(summary) {
    margin: 0;
    padding: 2px 6px 8px 34px;
    color: var(--dw-muted);
    font-size: 15px;
    line-height: 1.8;
    max-width: 760px;
}
.dw-page-blocks .dw-faq-item > :last-child {
    padding-bottom: 26px;
}

/* FAQ 블록 전체를 페이지 중앙에 배치(내부 텍스트는 좌측 유지). max-width는 뒤에서 통일. */
.dw-page-blocks .dw-faq-eyebrow,
.dw-page-blocks .dw-faq-title,
.dw-page-blocks .dw-faq-sub,
.dw-page-blocks .dw-faq-list {
    max-width: 840px;
    margin-inline: auto;
}

/* =========================================================
   조직도 (Org chart) — nexfin 카드+연결선
   .dw-org-branch 개수(3·5개 등)에 따라 JS가 --dw-org-cols / 선 좌표를 맞춤
   ========================================================= */
.dw-page-blocks .dw-org-eyebrow {
    margin: 0 0 14px;
    color: var(--dw-primary);
    font-size: 13px;
    font-weight: 800;
    letter-spacing: .14em;
    text-transform: uppercase;
    text-align: center;
}
.dw-page-blocks .dw-org-section {
    position: relative;
    padding-bottom: 88px;
}
.dw-page-blocks .dw-org-section::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: 96px;
    background: linear-gradient(to bottom, transparent, #fff);
    pointer-events: none;
}
.dw-page-blocks .dw-org {
    --dw-org-gap: 12px;
    --dw-org-cols: 1;
    --dw-org-line: color-mix(in srgb, var(--dw-primary) 35%, transparent);
    --dw-org-ceo-x: 50%;
    position: relative;
    max-width: 1080px;
    margin: 0 auto;
    padding: 8px 0 16px;
}
.dw-page-blocks .dw-org-head {
    text-align: center;
    position: relative;
    z-index: 2;
}
.dw-page-blocks .dw-org--linked .dw-org-head::after {
    content: "";
    position: absolute;
    left: var(--dw-org-ceo-x, 50%);
    bottom: -22px;
    width: 2px;
    height: 23px;
    background: var(--dw-org-line);
    transform: translateX(-50%);
    z-index: 0;
}
.dw-page-blocks .dw-org-tree {
    position: relative;
    display: grid;
    grid-template-columns: repeat(var(--dw-org-cols), minmax(0, 1fr));
    gap: var(--dw-org-gap);
    padding-top: 44px;
    margin-top: 0;
}
.dw-page-blocks .dw-org-tree--linked::before {
    content: "";
    position: absolute;
    top: 22px;
    left: var(--dw-org-line-start, 10%);
    right: var(--dw-org-line-end, 10%);
    height: 2px;
    background: var(--dw-org-line);
    z-index: 0;
}
.dw-page-blocks .dw-org-branch {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 12px;
    z-index: 1;
    min-width: 0;
}
.dw-page-blocks .dw-org-tree--linked .dw-org-branch::before {
    content: "";
    position: absolute;
    top: -21px;
    left: 50%;
    width: 2px;
    height: 23px;
    background: var(--dw-org-line);
    transform: translateX(-50%);
    z-index: 0;
}
.dw-page-blocks .dw-org-branch > .dw-org-card {
    width: 100%;
}
.dw-page-blocks .dw-org-card {
    position: relative;
    z-index: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    gap: 4px;
    min-height: 118px;
    padding: 20px 12px 18px;
    background: #fff;
    border: 1px solid var(--dw-line);
    border-radius: var(--dw-radius);
    box-shadow: var(--dw-shadow-sm);
    box-sizing: border-box;
    transition: transform .28s ease, box-shadow .28s ease, border-color .28s ease;
}
.dw-page-blocks .dw-org-card:hover {
    transform: translateY(-4px);
    border-color: color-mix(in srgb, var(--dw-primary) 35%, var(--dw-line));
    box-shadow: 0 14px 32px rgba(18, 36, 63, .1);
}
.dw-page-blocks .dw-org-card--ceo {
    display: inline-block;
    width: auto;
    min-width: 220px;
    min-height: auto;
    padding: 22px 32px 20px;
    background: linear-gradient(135deg, var(--dw-primary) 0%, var(--dw-primary-dark) 100%);
    border-color: transparent;
    color: #fff;
    box-shadow: 0 14px 36px rgba(0, 120, 212, .28);
    vertical-align: top;
}
.dw-page-blocks .dw-org-card--ceo .dw-org-label,
.dw-page-blocks .dw-org-card--ceo .dw-org-role {
    color: rgba(255, 255, 255, .85);
}
.dw-page-blocks .dw-org-card--ceo .dw-org-name {
    color: #fff;
    font-size: 22px;
    display: block;
}
.dw-page-blocks .dw-org-card--ceo:hover {
    transform: translateY(-4px);
    box-shadow: 0 18px 42px rgba(0, 120, 212, .34);
}
.dw-page-blocks .dw-org-label {
    font-size: 12px;
    font-weight: 700;
    color: var(--dw-primary);
    letter-spacing: -.01em;
    white-space: nowrap;
}
.dw-page-blocks .dw-org-name {
    font-size: 17px;
    font-weight: 800;
    color: var(--dw-ink);
    letter-spacing: -.02em;
    line-height: 1.3;
}
.dw-page-blocks .dw-org-role {
    font-size: 12px;
    font-weight: 600;
    color: var(--dw-muted);
}
.dw-page-blocks .dw-org-teams {
    position: relative;
    z-index: 1;
    display: flex;
    flex-direction: column;
    width: 100%;
    list-style: none;
    margin: 0;
    padding: 10px 8px;
    background: #fff;
    border: 1px solid var(--dw-line);
    border-radius: 12px;
    box-shadow: var(--dw-shadow-sm);
    box-sizing: border-box;
}
.dw-page-blocks .dw-org-tree--linked .dw-org-branch > .dw-org-teams::before {
    content: "";
    position: absolute;
    top: -13px;
    left: 50%;
    width: 2px;
    height: 13px;
    background: var(--dw-org-line);
    transform: translateX(-50%);
}
.dw-page-blocks .dw-org-teams li {
    flex: 1 1 auto;
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 36px;
    padding: 8px 4px;
    font-size: 13px;
    font-weight: 600;
    color: var(--dw-text);
    line-height: 1.35;
    text-align: center;
    white-space: nowrap;
    border-bottom: 1px solid var(--dw-line);
}
.dw-page-blocks .dw-org-teams li:last-child {
    border-bottom: none;
}

@media (max-width: 1024px) {
    .dw-page-blocks .dw-org-tree {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}
@media (max-width: 620px) {
    .dw-page-blocks .dw-org-tree {
        grid-template-columns: 1fr;
        padding-top: 16px;
    }
    .dw-page-blocks .dw-org--linked .dw-org-head::after,
    .dw-page-blocks .dw-org-tree--linked::before,
    .dw-page-blocks .dw-org-tree--linked .dw-org-branch::before,
    .dw-page-blocks .dw-org-tree--linked .dw-org-branch > .dw-org-teams::before {
        display: none;
    }
    .dw-page-blocks .dw-org-card {
        min-height: auto;
    }
    .dw-page-blocks .dw-org-section {
        padding-bottom: 48px;
    }
}


/* =========================================================
   오시는 길 (Location / Map)
   ========================================================= */
.dw-page-blocks .dw-map {
    padding: 88px 0;
    background: #fff;
}
.dw-page-blocks .dw-map-eyebrow {
    margin: 0 0 14px;
    color: var(--dw-primary);
    font-size: 13px;
    font-weight: 800;
    letter-spacing: .14em;
    text-transform: uppercase;
}
.dw-page-blocks .dw-map-title {
    margin: 0 0 40px;
    color: var(--dw-ink);
    font-size: clamp(26px, 2.8vw, 36px);
    font-weight: 800;
    line-height: 1.35;
    letter-spacing: -.02em;
}
.dw-page-blocks .dw-map-grid {
    display: grid;
    grid-template-columns: minmax(0, 1.15fr) minmax(0, .85fr);
    gap: 44px;
    align-items: stretch;
}
.dw-page-blocks .dw-map-frame {
    border-radius: 18px;
    overflow: hidden;
    box-shadow: var(--dw-shadow);
    background: var(--dw-bg);
    min-height: 400px;
}
.dw-page-blocks .dw-map-frame iframe {
    display: block;
    width: 100%;
    height: 100%;
    min-height: 400px;
    border: 0;
}
.dw-page-blocks .dw-map-info {
    align-self: center;
}
.dw-page-blocks .dw-map-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: 22px;
}
.dw-page-blocks .dw-map-list > li {
    display: grid;
    grid-template-columns: 44px minmax(0, 1fr);
    gap: 14px;
    align-items: start;
}
.dw-page-blocks .dw-map-ico {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    border-radius: 12px;
    background: var(--dw-primary-light);
    color: var(--dw-primary);
}
.dw-page-blocks .dw-map-ico svg { width: 22px; height: 22px; display: block; }
.dw-page-blocks .dw-map-list strong {
    display: block;
    margin: 0 0 3px;
    color: var(--dw-ink);
    font-size: 14px;
    font-weight: 700;
}
.dw-page-blocks .dw-map-list > li > div > span {
    display: block;
    color: var(--dw-muted);
    font-size: 15px;
    line-height: 1.6;
}
.dw-page-blocks .dw-map-transit {
    margin-top: 28px;
    padding-top: 24px;
    border-top: 1px solid var(--dw-line);
    display: grid;
    gap: 12px;
}
.dw-page-blocks .dw-map-transit > div {
    font-size: 14px;
    color: var(--dw-text);
    line-height: 1.6;
}
.dw-page-blocks .dw-map-transit strong {
    display: inline-block;
    min-width: 52px;
    margin-right: 8px;
    color: var(--dw-primary);
    font-weight: 700;
}
@media (max-width: 900px) {
    .dw-page-blocks .dw-map-grid { grid-template-columns: 1fr; gap: 28px; }
    .dw-page-blocks .dw-map-frame,
    .dw-page-blocks .dw-map-frame iframe { min-height: 300px; }
}

/* =========================================================
   포트폴리오 (CPT) — 아카이브 그리드 + 필터 + 단일
   ========================================================= */
.dw-portfolio { padding-top: 56px; padding-bottom: 90px; }
.dw-pf-filter { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 36px; }
.dw-pf-tab {
    cursor: pointer;
    padding: 9px 18px;
    border-radius: 999px;
    border: 1px solid var(--dw-line);
    background: #fff;
    color: var(--dw-text);
    font-size: 14px;
    font-weight: 600;
    transition: all .15s ease;
}
.dw-pf-tab:hover { border-color: var(--dw-primary); color: var(--dw-primary); }
.dw-pf-tab.is-active { background: var(--dw-primary); border-color: var(--dw-primary); color: #fff; }
.dw-pf-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 28px; }
.dw-pf-card {
    display: flex;
    flex-direction: column;
    text-decoration: none;
    border-radius: 16px;
    overflow: hidden;
    background: #fff;
    border: 1px solid var(--dw-line);
    box-shadow: var(--dw-shadow-sm);
    transition: transform .2s ease, box-shadow .2s ease;
}
.dw-pf-card:hover { transform: translateY(-4px); box-shadow: var(--dw-shadow); }
.dw-pf-thumb { position: relative; display: block; aspect-ratio: 4 / 3; background: var(--dw-bg); overflow: hidden; }
.dw-pf-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.dw-pf-thumb-empty { display: block; width: 100%; height: 100%; background: linear-gradient(135deg, #e8eef6, #dbe6f2); }
.dw-pf-year {
    position: absolute; top: 12px; left: 12px;
    padding: 4px 12px; border-radius: 999px;
    background: rgba(18, 36, 63, .72); color: #fff; font-size: 12px; font-weight: 700; line-height: 16px;
}
/* 산업군 뱃지 — 썸네일 우측 상단(연도와 유사한 pill, 파란색으로 구분) */
.dw-pf-thumb .dw-pf-cat {
    position: absolute; top: 12px; right: 12px;
    padding: 4px 12px; border-radius: 999px;
    background: var(--dw-primary); color: #fff; font-size: 12px; font-weight: 700; line-height: 16px;
    letter-spacing: 0; text-transform: none;
}
.dw-pf-body { display: flex; flex-direction: column; gap: 6px; padding: 18px 20px 22px; }
.dw-pf-cat { color: var(--dw-primary); font-size: 12px; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; }
.dw-pf-title { color: var(--dw-ink); font-size: 17px; font-weight: 700; line-height: 1.4; }
.dw-pf-client { color: var(--dw-muted); font-size: 14px; }
.dw-pf-empty { color: var(--dw-muted); padding: 40px 0; text-align: center; }

/* 단일 */
.dw-pf-single { padding-top: 56px; padding-bottom: 90px; }
.dw-pf-single-grid { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr); gap: 44px; align-items: center; }
.dw-pf-single-media { border-radius: 18px; overflow: hidden; box-shadow: var(--dw-shadow); background: var(--dw-bg); }
.dw-pf-single-media img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; display: block; }
.dw-pf-single-info .dw-pf-cat { display: inline-block; margin-bottom: 10px; }
.dw-pf-single-title { margin: 0 0 22px; color: var(--dw-ink); font-size: clamp(24px, 2.6vw, 32px); font-weight: 800; line-height: 1.35; }
.dw-pf-meta { margin: 0; border-top: 1px solid var(--dw-line); }
.dw-pf-meta > div { display: grid; grid-template-columns: 120px 1fr; gap: 12px; padding: 14px 4px; border-bottom: 1px solid var(--dw-line); }
.dw-pf-meta dt { margin: 0; color: var(--dw-muted); font-size: 14px; font-weight: 700; }
.dw-pf-meta dd { margin: 0; color: var(--dw-ink); font-size: 15px; }
.dw-pf-content { margin: 48px 0 0; }
.dw-pf-single-foot { margin: 40px 0 0; }

@media (max-width: 900px) {
    .dw-pf-grid { grid-template-columns: repeat(2, 1fr); gap: 18px; }
    .dw-pf-single-grid { grid-template-columns: 1fr; gap: 28px; }
}
@media (max-width: 560px) {
    .dw-pf-grid { grid-template-columns: 1fr; }
}

/* =========================================================
   이미지 라이트박스
   ========================================================= */
.dw-lb {
    position: fixed;
    inset: 0;
    z-index: 9999;
    display: none;
    align-items: center;
    justify-content: center;
    padding: 32px;
    background: rgba(10, 16, 26, .92);
    cursor: zoom-out;
    opacity: 0;
    transition: opacity .2s ease;
}
.dw-lb.is-open {
    display: flex;
    opacity: 1;
}
.dw-lb-img {
    max-width: min(1100px, 92vw);
    max-height: 90vh;
    border-radius: 8px;
    box-shadow: 0 24px 70px rgba(0, 0, 0, .55);
    cursor: default;
}
.dw-lb-close {
    position: absolute;
    top: 20px;
    right: 24px;
    width: 44px;
    height: 44px;
    border: 0;
    border-radius: 50%;
    background: rgba(255, 255, 255, .12);
    color: #fff;
    font-size: 26px;
    line-height: 1;
    cursor: pointer;
    transition: background .15s ease;
}
.dw-lb-close:hover { background: rgba(255, 255, 255, .24); }

/* 확대 가능한 이미지 커서 힌트 */
.dw-pf-single-media img,
.dw-pf-content img,
.dw-lightbox img { cursor: zoom-in; }

/* =========================================================
   페이지네이션 (아카이브 하단 네비게이션)
   ========================================================= */
.dw-page-body .pagination { margin: 52px 0 0; }
.dw-page-body .pagination .nav-links {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
    gap: 8px;
}
.dw-page-body .pagination .page-numbers {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 44px;
    height: 44px;
    padding: 0 14px;
    border-radius: 11px;
    border: 1px solid var(--dw-line);
    background: #fff;
    color: var(--dw-text);
    font-size: 14px;
    font-weight: 600;
    text-decoration: none;
    transition: all .15s ease;
}
.dw-page-body .pagination a.page-numbers:hover {
    border-color: var(--dw-primary);
    color: var(--dw-primary);
    background: var(--dw-primary-light);
}
.dw-page-body .pagination .page-numbers.current {
    background: var(--dw-primary);
    border-color: var(--dw-primary);
    color: #fff;
    box-shadow: 0 6px 16px rgba(0, 120, 212, .28);
}
.dw-page-body .pagination .page-numbers.dots {
    border-color: transparent;
    background: transparent;
    min-width: 24px;
    padding: 0 4px;
    color: var(--dw-muted);
}
.dw-page-body .pagination .prev,
.dw-page-body .pagination .next { font-weight: 700; }
.dw-page-body .pagination .screen-reader-text { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }

/* 블로그(글) 목록 페이지네이션 — paginate_links(type=list) 대응 */
.dw-pagination { margin: 52px 0 0; }
.dw-pagination ul.page-numbers {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
    gap: 8px;
    list-style: none;
    margin: 0;
    padding: 0;
}
.dw-pagination li { margin: 0; }
.dw-pagination li .page-numbers {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 44px;
    height: 44px;
    padding: 0 14px;
    border-radius: 11px;
    border: 1px solid var(--dw-line);
    background: #fff;
    color: var(--dw-text);
    font-size: 14px;
    font-weight: 600;
    text-decoration: none;
    transition: all .15s ease;
}
.dw-pagination li a.page-numbers:hover {
    border-color: var(--dw-primary);
    color: var(--dw-primary);
    background: var(--dw-primary-light);
}
.dw-pagination li .page-numbers.current {
    background: var(--dw-primary);
    border-color: var(--dw-primary);
    color: #fff;
    box-shadow: 0 6px 16px rgba(0, 120, 212, .28);
}
.dw-pagination li .page-numbers.dots {
    border-color: transparent;
    background: transparent;
    min-width: 24px;
    padding: 0 4px;
    color: var(--dw-muted);
}
.dw-pagination li .prev,
.dw-pagination li .next { font-weight: 700; }

/* =========================================================
   블로그(글) 목록 — 카드형 그리드
   ========================================================= */
.dw-content-area--blog { padding: clamp(40px, 5vw, 68px) 0 84px; }
.dw-content-area--blog .dw-container {
    width: 100%;
    max-width: var(--dw-container);
    margin: 0 auto;
    padding: 0 24px;
}
.dw-blog-list {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 28px;
}
.dw-blog-item {
    display: flex;
    flex-direction: column;
    background: #fff;
    border: 1px solid var(--dw-line);
    border-radius: var(--dw-radius-lg);
    overflow: hidden;
    box-shadow: var(--dw-shadow-sm);
    transition: transform .2s ease, box-shadow .2s ease;
}
.dw-blog-item:hover {
    transform: translateY(-4px);
    box-shadow: var(--dw-shadow);
}
.dw-post-thumb {
    display: block;
    aspect-ratio: 16 / 12;
    overflow: hidden;
    background: var(--dw-primary-light);
}
.dw-post-thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.dw-blog-item__body {
    display: flex;
    flex-direction: column;
    gap: 10px;
    padding: 22px 22px 26px;
    flex: 1;
}
.dw-blog-item__meta {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 13px;
}
.dw-blog-item__cat {
    display: inline-flex;
    align-items: center;
    height: 24px;
    padding: 0 10px;
    border-radius: 999px;
    background: var(--dw-primary-light);
    color: var(--dw-primary-dark);
    font-weight: 700;
    font-size: 12px;
}
.dw-blog-item__date { color: var(--dw-muted); }
.dw-blog-item__title {
    margin: 0;
    font-size: 19px;
    line-height: 1.4;
    font-weight: 700;
}
.dw-blog-item__title a { color: var(--dw-ink); text-decoration: none; }
.dw-blog-item__title a:hover { color: var(--dw-primary); }
.dw-blog-item__excerpt {
    margin: 0;
    color: var(--dw-muted);
    font-size: 14.5px;
    line-height: 1.65;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.dw-blog-list > .dw-pagination { grid-column: 1 / -1; }
.dw-blog-item--empty {
    grid-column: 1 / -1;
    text-align: center;
    padding: 60px 20px;
}

@media (max-width: 992px) {
    .dw-blog-list { grid-template-columns: repeat(2, 1fr); gap: 22px; }
}
@media (max-width: 600px) {
    .dw-blog-list { grid-template-columns: 1fr; }
}

/* =========================================================
   단일 글(single) — 본문 + 이전/다음 + 댓글
   ========================================================= */
.dw-content-area--single .dw-main-col { max-width: 880px; margin: 0 auto; }
.dw-content-area--single .dw-card-post {

}
.dw-single-meta {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 22px;
    font-size: 14px;
}
.dw-single-cat {
    display: inline-flex;
    align-items: center;
    height: 27px;
    padding: 0 13px;
    border-radius: 999px;
    background: var(--dw-primary-light);
    color: var(--dw-primary-dark);
    font-weight: 700;
    font-size: 12.5px;
    text-decoration: none;
    transition: all .15s ease;
}
.dw-single-cat:hover { background: var(--dw-primary); color: #fff; }
.dw-single-date { color: var(--dw-muted); }

.dw-content-area--single .dw-post-thumb {
    aspect-ratio: 16 / 12;
    border-radius: var(--dw-radius);
    overflow: hidden;
    margin: 0 0 34px;
    background: var(--dw-primary-light);
}
.dw-content-area--single .dw-post-thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.dw-entry-content { color: var(--dw-text); font-size: 16.5px; line-height: 1.85; }
.dw-entry-content p { margin: 0 0 1.3em; }
.dw-entry-content > *:last-child { margin-bottom: 0; }
.dw-entry-content h2 {
    font-size: clamp(21px, 3vw, 26px);
    font-weight: 800;
    color: var(--dw-ink);
    line-height: 1.3;
    margin: 1.8em 0 .6em;
}
.dw-entry-content h3 {
    font-size: 20px;
    font-weight: 700;
    color: var(--dw-ink);
    margin: 1.6em 0 .5em;
}
.dw-entry-content a { color: var(--dw-primary); text-decoration: none; text-underline-offset: 3px; }
.dw-entry-content a:hover { text-decoration: underline; }
/* 버튼·블록 링크는 밑줄 제외 */
.dw-entry-content .wp-block-button__link,
.dw-entry-content .wp-element-button,
.dw-entry-content .wp-block-button__link:hover,
.dw-entry-content .wp-element-button:hover { text-decoration: none; }
.dw-entry-content ul, .dw-entry-content ol { margin: 0 0 1.3em; padding-left: 1.4em; }
.dw-entry-content li { margin: .45em 0; }
.dw-entry-content img { max-width: 100%; height: 100%; border-radius: var(--dw-radius); }
/* 본문 이미지 기본 좌측 정렬 — 특이성을 낮게 유지해 패턴별 정렬 규칙이 우선하도록 함 */
.dw-entry-content figure { text-align: left; }
.dw-entry-content figure img { margin-left: 0; margin-right: auto; object-position: left center; }
/* 에디터에서 가운데/오른쪽 정렬을 지정한 경우는 그대로 존중 */
.dw-entry-content figure.aligncenter { text-align: center; }
.dw-entry-content figure.aligncenter img { margin-left: auto; margin-right: auto; }
.dw-entry-content figure.alignright { text-align: right; }
.dw-entry-content figure.alignright img { margin-left: auto; margin-right: 0; }
/* 모바일: 본문 이미지 4:3 고정 */
@media (max-width: 781px) {
    .dw-entry-content figure img {
        width: 100%;
        aspect-ratio: 4 / 3;
        height: auto;
        object-fit: cover;
        object-position: left center;
    }
}
.dw-entry-content blockquote {
    margin: 1.6em 0;
    padding: 14px 22px;
    border-left: 4px solid var(--dw-primary);
    background: var(--dw-bg);
    border-radius: 0 10px 10px 0;
    color: var(--dw-ink);
}
.dw-entry-content blockquote p:last-child { margin-bottom: 0; }
.dw-entry-content code {
    background: var(--dw-bg);
    padding: 2px 7px;
    border-radius: 6px;
    font-size: .9em;
}
.dw-entry-content hr { border: 0; border-top: 1px solid var(--dw-line); margin: 2.2em 0; }

/* 이전/다음 글 */
.dw-post-nav {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 16px;
    margin-top: 30px;
}
.dw-post-nav a {
    display: flex;
    flex-direction: column;
    gap: 6px;
    padding: 18px 22px;
    background: #fff;
    border: 1px solid var(--dw-line);
    border-radius: var(--dw-radius);
    text-decoration: none;
    transition: all .15s ease;
}
.dw-post-nav a:hover { border-color: var(--dw-primary); box-shadow: var(--dw-shadow-sm); transform: translateY(-2px); }
.dw-post-nav a.is-next { text-align: right; align-items: flex-end; }
.dw-post-nav__label { font-size: 12.5px; color: var(--dw-muted); font-weight: 700; }
.dw-post-nav__title {
    font-size: 15px;
    color: var(--dw-ink);
    font-weight: 600;
    line-height: 1.4;
    display: -webkit-box;
    -webkit-line-clamp: 1;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

/* 목록으로 */
.dw-post-back { text-align: center; margin-top: 30px; }
.dw-post-back a {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    height: 48px;
    padding: 0 30px;
    border-radius: 999px;
    background: var(--dw-navy);
    color: #fff;
    text-decoration: none;
    font-weight: 700;
    transition: background .15s ease;
}
.dw-post-back a:hover { background: var(--dw-primary); }

/* 댓글 */
.dw-comments { max-width: 880px; margin: 44px auto 0; }
.dw-comments-area {
    background: #fff;
    border: 1px solid var(--dw-line);
    border-radius: var(--dw-radius-lg);
    box-shadow: var(--dw-shadow-sm);
    padding: clamp(24px, 4vw, 40px);
}
.dw-comments-area .comments-title {
    font-size: 19px;
    font-weight: 800;
    color: var(--dw-ink);
    margin: 0 0 22px;
}
.dw-comments-area .comment-list { list-style: none; margin: 0 0 28px; padding: 0; }
.dw-comments-area .comment-list ol.children { list-style: none; margin: 16px 0 0; padding-left: clamp(16px, 4vw, 40px); }
.dw-comments-area .comment-body {
    padding: 18px 0;
    border-top: 1px solid var(--dw-line);
}
.dw-comments-area .comment-list > li:first-child > .comment-body { border-top: 0; }
.dw-comments-area .comment-author { display: flex; align-items: center; gap: 10px; margin-bottom: 8px; }
.dw-comments-area .comment-author .avatar { border-radius: 50%; }
.dw-comments-area .comment-author .fn { font-weight: 700; color: var(--dw-ink); font-style: normal; }
.dw-comments-area .comment-metadata { font-size: 12.5px; color: var(--dw-muted); margin-bottom: 8px; }
.dw-comments-area .comment-metadata a { color: var(--dw-muted); text-decoration: none; }
.dw-comments-area .comment-content { color: var(--dw-text); line-height: 1.75; }
.dw-comments-area .reply { margin-top: 8px; }
.dw-comments-area .reply a {
    display: inline-flex;
    align-items: center;
    height: 32px;
    padding: 0 14px;
    border-radius: 999px;
    background: var(--dw-primary-light);
    color: var(--dw-primary-dark);
    font-size: 13px;
    font-weight: 700;
    text-decoration: none;
}
.dw-comments-area .reply a:hover { background: var(--dw-primary); color: #fff; }

.dw-comments-area .comment-respond { margin-top: 8px; }
.dw-comments-area .comment-reply-title { font-size: 18px; font-weight: 800; color: var(--dw-ink); margin: 0 0 16px; }
.dw-comments-area .logged-in-as, .dw-comments-area .comment-notes { font-size: 13.5px; color: var(--dw-muted); margin-bottom: 16px; }
.dw-comments-area .comment-form label { display: block; font-size: 13.5px; font-weight: 700; color: var(--dw-ink); margin-bottom: 6px; }
.dw-comments-area .comment-form input[type="text"],
.dw-comments-area .comment-form input[type="email"],
.dw-comments-area .comment-form input[type="url"],
.dw-comments-area .comment-form textarea {
    width: 100%;
    padding: 12px 14px;
    border: 1px solid var(--dw-line);
    border-radius: 10px;
    background: var(--dw-bg);
    font-family: inherit;
    font-size: 15px;
    color: var(--dw-ink);
    transition: border-color .15s ease, background .15s ease;
}
.dw-comments-area .comment-form input:focus,
.dw-comments-area .comment-form textarea:focus {
    outline: none;
    border-color: var(--dw-primary);
    background: #fff;
}
.dw-comments-area .comment-form textarea { min-height: 130px; resize: vertical; }
.dw-comments-area .comment-form p { margin: 0 0 16px; }
.dw-comments-area .form-submit .submit {
    display: inline-flex;
    align-items: center;
    height: 48px;
    padding: 0 32px;
    border: 0;
    border-radius: 999px;
    background: var(--dw-primary);
    color: #fff;
    font-weight: 700;
    font-size: 15px;
    cursor: pointer;
    transition: background .15s ease;
}
.dw-comments-area .form-submit .submit:hover { background: var(--dw-primary-dark); }

@media (max-width: 600px) {
    .dw-post-nav { grid-template-columns: 1fr; }
    .dw-post-nav a.is-next { text-align: left; align-items: flex-start; }
}

/* =========================================================
   포트폴리오 퀵뷰 (카드 클릭 → 페이지 이동 없이 상세)
   ========================================================= */
.dw-qv {
    position: fixed;
    inset: 0;
    z-index: 9998;
    display: none;
    align-items: flex-start;
    justify-content: center;
    padding: 40px 20px;
    background: rgba(10, 16, 26, .70);
    overflow-y: auto;
}
.dw-qv.is-open { display: flex; }
.dw-qv-panel {
    position: relative;
    width: 100%;
    max-width: 920px;
    margin: auto;
    background: #fff;
    border-radius: 18px;
    padding: 40px;
    box-shadow: 0 30px 80px rgba(0, 0, 0, .40);
}
.dw-qv-close {
    position: absolute;
    top: 16px;
    right: 16px;
    width: 40px;
    height: 40px;
    border: 0;
    border-radius: 50%;
    background: var(--dw-bg);
    color: var(--dw-ink);
    font-size: 24px;
    line-height: 1;
    cursor: pointer;
    transition: background .15s ease;
    z-index: 1;
}
.dw-qv-close:hover { background: var(--dw-line); }
.dw-qv-loading { padding: 60px 0; text-align: center; color: var(--dw-muted); }
.dw-qv-spinner {
    display: inline-block;
    width: 42px;
    height: 42px;
    border: 4px solid var(--dw-line);
    border-top-color: var(--dw-primary);
    border-radius: 50%;
    animation: dw-spin .7s linear infinite;
}
@keyframes dw-spin { to { transform: rotate(360deg); } }
/* 퀵뷰 안에서는 상세 그리드 여백 축소 */
.dw-qv-body .dw-pf-single-grid { gap: 32px; }
.dw-qv-body .dw-pf-content { margin-top: 32px; }
@media (max-width: 640px) {
    .dw-qv-panel { padding: 28px 20px; }
}

/* =========================================================
   인증서 & 특허 (Certificates) — 이미지 그리드 + 라이트박스
   ========================================================= */
.dw-page-blocks .dw-cert { padding: 88px 0; background: #fff; }
.dw-page-blocks .dw-cert-eyebrow {
    margin: 0 0 14px;
    color: var(--dw-primary);
    font-size: 13px;
    font-weight: 800;
    letter-spacing: .14em;
    text-transform: uppercase;
    text-align: center;
}
.dw-page-blocks .dw-cert-title {
    margin: 0 0 14px;
    color: var(--dw-ink);
    font-size: clamp(26px, 2.8vw, 36px);
    font-weight: 800;
    line-height: 1.35;
    letter-spacing: -.02em;
    text-align: center;
}
.dw-page-blocks .dw-cert-sub {
    margin: 0 auto 44px;
    max-width: 620px;
    color: var(--dw-text);
    font-size: 16px;
    line-height: 1.8;
    text-align: center;
}
.dw-page-blocks .dw-cert-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 28px;
}
.dw-page-blocks .dw-cert-item { margin: 0; }
.dw-page-blocks .dw-cert-thumb {
    display: block;
    border: 1px solid var(--dw-line);
    border-radius: 12px;
    overflow: hidden;
    background: #fff;
    box-shadow: var(--dw-shadow-sm);
    transition: transform .2s ease, box-shadow .2s ease;
}
.dw-page-blocks .dw-cert-item:hover .dw-cert-thumb {
    transform: translateY(-3px);
    box-shadow: var(--dw-shadow);
}
.dw-page-blocks .dw-cert-thumb img {
    width: 100%;
    aspect-ratio: 3 / 4;
    object-fit: contain;
    background: var(--dw-bg);
    display: block;
    cursor: zoom-in;
}
/* Customizer → 인증서 → '칸에 꽉 채우기' 선택 시 */
.dw-cert-fit-cover .dw-page-blocks .dw-cert-thumb img { object-fit: cover; }
.dw-page-blocks .dw-cert-item figcaption {
    margin-top: 14px;
    text-align: center;
    font-size: 14px;
    font-weight: 600;
    color: var(--dw-ink);
    line-height: 1.5;
}
/* 인증서 목록 블록(dwp/cert): PC 한 줄 장 수 */
@media (min-width: 901px) {
    .dw-page-blocks .dw-cert-grid.dwp-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .dw-page-blocks .dw-cert-grid.dwp-cols-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 22px; }
}
/* 편집 화면 전용(dwp): 사진 누르면 바꾸기, 빈 칸, 추가 버튼 */
.dw-page-blocks .dwp-pick { cursor: pointer; }
.dw-page-blocks .dwp-pick.is-empty { display: flex; align-items: center; justify-content: center; aspect-ratio: 3 / 4; border-style: dashed; }
.dw-page-blocks .dwp-pick-empty { font-size: 14px; font-weight: 700; color: var(--dw-primary); }
.dw-page-blocks .dwp-add { margin-top: 28px; text-align: center; }
@media (max-width: 900px) {
    .dw-page-blocks .dw-cert-grid { grid-template-columns: repeat(3, 1fr); gap: 20px; }
}
@media (max-width: 640px) {
    .dw-page-blocks .dw-cert-grid { grid-template-columns: repeat(2, 1fr); }
}

/* =========================================================
   뉴스 (News) — 분류 필터 + 리스트형 아카이브 + 단일
   ========================================================= */
.dw-news { padding-top: 56px; padding-bottom: 90px; }

/* 분류 필터 탭 (포트폴리오와 동일 톤) */
.dw-news-filter {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin: 0 0 28px;
}
.dw-news-tab {
    padding: 9px 20px;
    min-height: 44px;
    border: 1px solid var(--dw-line);
    border-radius: 999px;
    background: #fff;
    color: var(--dw-text);
    font-size: 14px;
    font-weight: 600;
    line-height: 1.2;
    cursor: pointer;
    transition: all .18s ease;
}
.dw-news-tab:hover { border-color: var(--dw-primary); color: var(--dw-primary); }
.dw-news-tab.is-active { background: var(--dw-primary); border-color: var(--dw-primary); color: #fff; }

/* 리스트 */
.dw-news-list {
    list-style: none;
    margin: 0;
    padding: 0;
    border-top: 2px solid var(--dw-ink);
}
.dw-news-item { border-bottom: 1px solid var(--dw-line); }
.dw-news-row {
    display: flex;
    align-items: center;
    gap: 28px;
    padding: 26px 8px;
    color: inherit;
    text-decoration: none;
    transition: background .18s ease;
}
.dw-news-row:hover { background: var(--dw-bg); }

.dw-news-thumb {
    flex: 0 0 auto;
    width: 148px;
    height: 96px;
    border-radius: 10px;
    overflow: hidden;
    background: var(--dw-bg);
}
.dw-news-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }

.dw-news-main { flex: 1 1 auto; min-width: 0; }
.dw-news-meta { display: flex; align-items: center; gap: 8px; margin-bottom: 9px; }
.dw-news-cat {
    display: inline-block;
    padding: 4px 12px;
    border-radius: 999px;
    background: color-mix(in srgb, var(--dw-primary) 12%, #fff);
    color: var(--dw-primary);
    font-size: 12px;
    font-weight: 700;
    line-height: 16px;
}
.dw-news-new {
    display: inline-block;
    padding: 4px 12px;
    border-radius: 999px;
    background: #d03a22;
    color: #fff;
    font-size: 12px;
    font-weight: 800;
    letter-spacing: .04em;
    line-height: 16px;
}
.dw-news-title {
    display: block;
    color: var(--dw-ink);
    font-size: 19px;
    font-weight: 700;
    line-height: 1.45;
    letter-spacing: -.01em;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    transition: color .18s ease;
}
.dw-news-row:hover .dw-news-title { color: var(--dw-primary); }
.dw-news-excerpt {
    display: block;
    margin-top: 6px;
    color: var(--dw-text);
    font-size: 14.5px;
    line-height: 1.6;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.dw-news-date {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    gap: 18px;
    color: var(--dw-muted);
    font-size: 14px;
    font-variant-numeric: tabular-nums;
}
.dw-news-arrow {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    border: 1px solid var(--dw-line);
    border-radius: 50%;
    color: var(--dw-muted);
    font-size: 15px;
    transition: all .18s ease;
}
.dw-news-row:hover .dw-news-arrow {
    border-color: var(--dw-primary);
    background: var(--dw-primary);
    color: #fff;
    transform: translateX(2px);
}
.dw-news-empty { padding: 60px 0; text-align: center; color: var(--dw-muted); }

/* 단일 뉴스 */
.dw-news-single { padding-top: 56px; padding-bottom: 90px; max-width: 860px; }
.dw-news-single-head {
    padding-bottom: 26px;
    margin-bottom: 32px;
    border-bottom: 1px solid var(--dw-line);
}
.dw-news-single-meta { display: flex; align-items: center; gap: 12px; margin-bottom: 16px; }
.dw-news-single-date { color: var(--dw-muted); font-size: 14px; font-variant-numeric: tabular-nums; }
.dw-news-single-title {
    margin: 0;
    color: var(--dw-ink);
    font-size: clamp(24px, 3vw, 34px);
    font-weight: 800;
    line-height: 1.35;
    letter-spacing: -.02em;
}
.dw-news-single-media {
    margin: 0 0 32px;
    border-radius: 14px;
    overflow: hidden;
}
.dw-news-single-media img { width: 100%; height: auto; display: block; }
.dw-news-content { color: var(--dw-text); font-size: 16px; line-height: 1.85; }
.dw-news-content > * + * { margin-top: 1.1em; }

/* 이전/다음 */
.dw-news-nav {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 14px;
    margin: 48px 0 0;
    padding-top: 28px;
    border-top: 1px solid var(--dw-line);
}
.dw-news-nav-link {
    display: flex;
    flex-direction: column;
    gap: 6px;
    padding: 18px 20px;
    border: 1px solid var(--dw-line);
    border-radius: 12px;
    text-decoration: none;
    transition: border-color .18s ease, background .18s ease;
}
.dw-news-nav-link:hover { border-color: var(--dw-primary); background: var(--dw-bg); }
.dw-news-nav-next { text-align: right; }
.dw-news-nav-label { color: var(--dw-muted); font-size: 12px; font-weight: 700; letter-spacing: .04em; }
.dw-news-nav-title {
    color: var(--dw-ink);
    font-size: 15px;
    font-weight: 600;
    line-height: 1.5;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.dw-news-single-foot { margin-top: 40px; text-align: center; }

@media (max-width: 760px) {
    /* 모바일: 썸네일을 위로(전체폭) 올리고 세로 배치 */
    .dw-news-row { flex-direction: column; align-items: stretch; gap: 12px; padding: 20px 4px; }
    .dw-news-thumb { width: 100%; height: auto; aspect-ratio: 16 / 9; }
    .dw-news-title { font-size: 16px; white-space: normal; }
    .dw-news-excerpt { display: none; }
    .dw-news-date { flex-direction: row; align-items: center; justify-content: space-between; width: 100%; gap: 10px; font-size: 13px; }
    .dw-news-nav { grid-template-columns: 1fr; }
    .dw-news-nav-next { text-align: left; }
}

/* =========================================================
   패턴 공통: 좌측 정렬 섹션 헤더
   ========================================================= */
.dw-page-blocks .dw-shead { text-align: left; margin: 0 0 32px; }
.dw-page-blocks .dw-shead .dw-shead-eyebrow {
    margin: 0 0 14px;
    color: var(--dw-primary);
    font-size: 13px;
    font-weight: 800;
    letter-spacing: .14em;
    text-transform: uppercase;
}
.dw-page-blocks .dw-shead h2 {
    margin: 0 0 16px;
    color: var(--dw-ink);
    font-size: clamp(26px, 2.8vw, 36px);
    font-weight: 800;
    line-height: 1.35;
    letter-spacing: -.02em;
}
.dw-page-blocks .dw-shead p {
    margin: 0;
    max-width: 720px;
    color: var(--dw-text);
    font-size: 16px;
    line-height: 1.8;
}

/* =========================================================
   패턴: 고객사/회원사 로고 그리드
   ========================================================= */
.dw-page-blocks .dw-logos { gap: 20px; }
.dw-page-blocks .dw-logos .wp-block-image,
.dw-page-blocks .dw-logos figure {
    margin: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    height: 140px;
    padding: 26px;
    background: #fff;
    border: 1px solid var(--dw-line);
    border-radius: var(--dw-radius);
    box-shadow: var(--dw-shadow-sm);
    transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}
.dw-page-blocks .dw-logos .wp-block-image:hover,
.dw-page-blocks .dw-logos figure:hover {
    transform: translateY(-3px);
    box-shadow: var(--dw-shadow);
    border-color: var(--dw-primary-light);
}
.dw-page-blocks .dw-logos .wp-block-image img,
.dw-page-blocks .dw-logos figure img {
    max-width: 100%;
    max-height: 88px;
    width: auto;
    height: auto;
    object-fit: contain;
    filter: grayscale(1);
    opacity: .8;
    transition: filter .2s ease, opacity .2s ease;
}
.dw-page-blocks .dw-logos .wp-block-image:hover img,
.dw-page-blocks .dw-logos figure:hover img { filter: none; opacity: 1; }

/* =========================================================
   패턴: 문의상담 CTA 배너
   ========================================================= */
.dw-page-blocks .dw-cta {
    background: linear-gradient(135deg, var(--dw-navy), var(--dw-primary));
    color: #fff;
    border-radius: var(--dw-radius-lg);
    padding: clamp(28px, 5vw, 52px);
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 26px;
}
.dw-page-blocks .dw-cta-text { max-width: 660px; }
.dw-page-blocks .dw-cta .dw-cta-eyebrow {
    display: inline-block;
    font-size: 13px;
    font-weight: 700;
    letter-spacing: .08em;
    color: rgba(255, 255, 255, .85);
    margin: 0 0 8px;
}
.dw-page-blocks .dw-cta h2 {
    color: #fff;
    font-size: clamp(22px, 3vw, 30px);
    font-weight: 800;
    line-height: 1.3;
    margin: 0 0 10px;
}
.dw-page-blocks .dw-cta p { color: rgba(255, 255, 255, .9); margin: 0; font-size: 15.5px; line-height: 1.7; }
.dw-page-blocks .dw-cta-info {
    display: flex;
    flex-wrap: wrap;
    gap: 8px 22px;
    margin: 16px 0 0;
    font-size: 15px;
    font-weight: 600;
}
.dw-page-blocks .dw-cta-info span { display: inline-flex; align-items: center; gap: 7px; color: #fff; }
.dw-page-blocks .dw-cta-actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 20px; }
.dw-page-blocks .dw-cta .dw-btn { background: #fff; color: var(--dw-primary-dark); border: 0; text-decoration: none; }
.dw-page-blocks .dw-cta .dw-btn:hover { background: var(--dw-primary-light); color: var(--dw-primary-dark); }
.dw-page-blocks .dw-cta .dw-btn--ghost { background: transparent; color: #fff; border: 1.5px solid rgba(255, 255, 255, .6); }
.dw-page-blocks .dw-cta .dw-btn--ghost:hover { background: rgba(255, 255, 255, .14); color: #fff; }
@media (max-width: 720px) {
    .dw-page-blocks .dw-cta { flex-direction: column; align-items: flex-start; }
}

/* 고객사 로고 — 갤러리(Gallery) 블록 방식 대응 */
.dw-page-blocks .dw-logos.wp-block-gallery.has-nested-images { gap: 20px; }
.dw-page-blocks .dw-logos.wp-block-gallery.has-nested-images figure.wp-block-image {
    margin: 0;
    flex: 1 1 calc(25% - 15px);
    max-width: calc(25% - 15px);
    height: 140px;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 26px;
    background: #fff;
    border: 1px solid var(--dw-line);
    border-radius: var(--dw-radius);
    box-shadow: var(--dw-shadow-sm);
    transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}
.dw-page-blocks .dw-logos.wp-block-gallery.has-nested-images figure.wp-block-image:hover {
    transform: translateY(-3px);
    box-shadow: var(--dw-shadow);
    border-color: var(--dw-primary-light);
}
.dw-page-blocks .dw-logos.wp-block-gallery.has-nested-images figure.wp-block-image img {
    width: auto !important;
    height: auto !important;
    max-width: 100%;
    max-height: 88px;
    object-fit: contain;
    border-radius: 0;
    filter: grayscale(1);
    opacity: .8;
    transition: filter .2s ease, opacity .2s ease;
}
.dw-page-blocks .dw-logos.wp-block-gallery.has-nested-images figure.wp-block-image:hover img {
    filter: none;
    opacity: 1;
}
@media (max-width: 900px) {
    .dw-page-blocks .dw-logos.wp-block-gallery.has-nested-images figure.wp-block-image {
        flex-basis: calc(50% - 10px);
        max-width: calc(50% - 10px);
    }
}

/* =========================================================
   패턴: 문의 폼 섹션 (Contact Form 7 등 숏코드 폼)
   ========================================================= */
.dw-page-blocks .dw-form-card {
    max-width: 780px;
    margin: 0;
    background: #fff;
    border: 1px solid var(--dw-line);
    border-radius: var(--dw-radius-lg);
    box-shadow: var(--dw-shadow-sm);
    padding: clamp(24px, 4vw, 44px);
}
.dw-page-blocks .dw-form-card .wpcf7 { margin: 0; }
.dw-page-blocks .dw-form-card p { margin: 0 0 16px; }
.dw-page-blocks .dw-form-card label { display: block; font-weight: 700; color: var(--dw-ink); font-size: 14px; margin-bottom: 6px; }
.dw-page-blocks .dw-form-card input[type="text"],
.dw-page-blocks .dw-form-card input[type="email"],
.dw-page-blocks .dw-form-card input[type="tel"],
.dw-page-blocks .dw-form-card input[type="url"],
.dw-page-blocks .dw-form-card input[type="number"],
.dw-page-blocks .dw-form-card input[type="date"],
.dw-page-blocks .dw-form-card select,
.dw-page-blocks .dw-form-card textarea {
    width: 100%;
    padding: 12px 14px;
    border: 1px solid var(--dw-line);
    border-radius: 10px;
    background: var(--dw-bg);
    font-family: inherit;
    font-size: 15px;
    color: var(--dw-ink);
    transition: border-color .15s ease, background .15s ease;
}
.dw-page-blocks .dw-form-card input:focus,
.dw-page-blocks .dw-form-card select:focus,
.dw-page-blocks .dw-form-card textarea:focus {
    outline: none;
    border-color: var(--dw-primary);
    background: #fff;
}
.dw-page-blocks .dw-form-card textarea { min-height: 140px; resize: vertical; }
.dw-page-blocks .dw-form-card .wpcf7-submit,
.dw-page-blocks .dw-form-card button[type="submit"],
.dw-page-blocks .dw-form-card input[type="submit"] {
    width: auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    height: 50px;
    margin-top: 6px;
    padding: 0 34px;
    border: 0;
    border-radius: 999px;
    background: var(--dw-primary);
    color: #fff;
    font-weight: 700;
    font-size: 15px;
    cursor: pointer;
    transition: background .15s ease;
}
.dw-page-blocks .dw-form-card .wpcf7-submit:hover,
.dw-page-blocks .dw-form-card input[type="submit"]:hover { background: var(--dw-primary-dark); }
.dw-page-blocks .dw-form-card .wpcf7-spinner { margin-left: 10px; }
.dw-page-blocks .dw-form-card .wpcf7-not-valid-tip { color: #d0202e; font-size: 13px; margin-top: 4px; }
.dw-page-blocks .dw-form-card .wpcf7-response-output { margin: 16px 0 0 !important; border-radius: 10px; font-size: 14px; }

/* 문의 폼 — 폼 + 우측 이미지 2단 */
.dw-page-blocks .dw-form-split { gap: 28px; align-items: stretch; margin: 0; }
.dw-page-blocks .dw-form-split > .wp-block-column { margin: 0; }
.dw-page-blocks .dw-form-split .dw-form-card { max-width: none; height: 100%; }
.dw-page-blocks .dw-form-media { display: flex; }
.dw-page-blocks .dw-form-media .wp-block-image { margin: 0; width: 100%; }
.dw-page-blocks .dw-form-media img {
    width: 100%;
    height: 100%;
    min-height: 300px;
    object-fit: cover;
    border-radius: var(--dw-radius-lg);
    display: block;
}
@media (max-width: 781px) {
    .dw-page-blocks .dw-form-media img { min-height: 220px; }
}

/* CTA 연락처 아이콘 (흰색 SVG) */
.dw-page-blocks .dw-cta-info span svg { width: 17px; height: 17px; flex-shrink: 0; }

/* =========================================================
   일반(클래식) 페이지 본문 — 가독성 컬럼 + 표 디자인
   (개인정보처리방침 · 이메일무단수집거부 · 이용약관 등)
   ========================================================= */
.dw-page-blocks > p,
.dw-page-blocks > h2,
.dw-page-blocks > h3,
.dw-page-blocks > h4,
.dw-page-blocks > ul,
.dw-page-blocks > ol,
.dw-page-blocks > blockquote,
.dw-page-blocks > figure,
.dw-page-blocks > table,
.dw-page-blocks > .wp-block-table,
.dw-page-blocks > hr {
    max-width: 960px;
    margin-left: auto;
    margin-right: auto;
    padding-left: 20px;
    padding-right: 20px;
    box-sizing: border-box;
}
.dw-page-blocks > h2 { margin-top: 1.6em; }

/* 표 */
.dw-page-blocks table {
    width: 100%;
    border-collapse: collapse;
    margin: 22px auto;
    font-size: 15px;
    line-height: 1.6;
    background: #fff;
}
.dw-page-blocks table th,
.dw-page-blocks table td {
    border: 1px solid var(--dw-line);
    padding: 12px 14px;
    text-align: left;
    vertical-align: top;
}
.dw-page-blocks table thead th,
.dw-page-blocks table th {
    background: var(--dw-table-head, #e2ebf3);
    color: var(--dw-ink);
    font-weight: 700;
}
.dw-page-blocks table tbody tr:nth-child(even) td { background: #f8fbfe; }
.dw-page-blocks .wp-block-table { overflow-x: auto; }
.dw-page-blocks .wp-block-table table { margin: 0; }
@media (max-width: 600px) {
    .dw-page-blocks table { font-size: 13.5px; }
    .dw-page-blocks table th,
    .dw-page-blocks table td { padding: 9px 10px; }
}

/* =========================================================
   법적 고지 본문 (.dw-policy) — 개인정보처리방침 · 이용약관 공통
   ========================================================= */
.dw-page-blocks .dw-policy,
.dw-page-blocks .dw-notice {
    max-width: 920px;
    margin: 0 auto;
    text-align: left;
}
.dw-page-blocks .dw-notice p { margin: 0 0 1.1em; color: var(--dw-text); line-height: 1.8; }
.dw-page-blocks .dw-policy > *:first-child { margin-top: 0; }
.dw-page-blocks .dw-policy h3 {
    margin: 1.9em 0 .5em;
    font-size: 19px;
    font-weight: 800;
    color: var(--dw-ink);
    line-height: 1.4;
}
.dw-page-blocks .dw-policy p { margin: 0 0 1.1em; color: var(--dw-text); line-height: 1.8; }
.dw-page-blocks .dw-policy ol,
.dw-page-blocks .dw-policy ul { margin: 0 0 1.2em; padding-left: 1.4em; }
.dw-page-blocks .dw-policy li { margin: .45em 0; line-height: 1.75; }
.dw-page-blocks .dw-policy table { margin: 20px 0 24px; }

/* =========================================================
   별점 후기 — 후기 1건 = 글 1개 + 별점
   ========================================================= */
.dw-stars { display: inline-flex; gap: 2px; line-height: 1; white-space: nowrap; }
.dw-star { font-size: 15px; color: #DCDCE2; }
.dw-star::before { content: "\2605"; }
.dw-star.is-on { color: #FFB100; }
.dw-star.is-half {
    background: linear-gradient(90deg, #FFB100 50%, #DCDCE2 50%);
    -webkit-background-clip: text; background-clip: text; color: transparent;
}

.dw-reviews { margin: 0; }

/* 요약 */
.dw-reviews .dw-review-summary {
    display: flex; flex-wrap: wrap; align-items: center;
    gap: clamp(16px, 4vw, 48px);
    padding: clamp(18px, 3vw, 26px) clamp(20px, 4vw, 32px);
    margin: 0 0 28px;
    border: 1px solid var(--dw-line);
    border-radius: var(--dw-radius);
    background: var(--dw-bg-soft, #f8fafc);
}
.dw-review-avg { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.dw-review-avg > strong { font-size: 38px; font-weight: 900; line-height: 1; color: var(--dw-ink); letter-spacing: -1px; }
.dw-review-avg .dw-review-of { font-size: 15px; color: var(--dw-muted); font-weight: 700; }
.dw-review-avg .dw-star { font-size: 18px; }
.dw-review-avg em { font-style: normal; font-size: 13.5px; color: var(--dw-muted); }
.dw-review-dist { list-style: none; margin: 0; padding: 0; flex: 1 1 260px; min-width: 220px; }
.dw-review-dist li { display: flex; align-items: center; gap: 10px; font-size: 12.5px; color: var(--dw-muted); }
.dw-review-dist li + li { margin-top: 4px; }
.dw-rd-k { width: 14px; text-align: right; font-weight: 700; color: var(--dw-text); }
.dw-rd-k::after { content: "\2605"; color: #FFB100; margin-left: 2px; }
.dw-rd-bar { flex: 1; height: 6px; border-radius: 99px; background: rgba(0,0,0,.07); overflow: hidden; }
.dw-rd-bar i { display: block; height: 100%; border-radius: 99px; background: #FFB100; }
.dw-rd-n { width: 22px; text-align: right; font-variant-numeric: tabular-nums; }

/* 목록 */
.dw-review-list { display: grid; gap: 14px; margin: 0 0 26px; }
.dw-review-card {
    padding: clamp(16px, 2.4vw, 22px) clamp(18px, 3vw, 26px);
    border: 1px solid var(--dw-line);
    border-radius: var(--dw-radius);
    background: #fff;
}
.dw-review-foot {
    display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
    margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--dw-line);
}
.dw-review-foot .dw-star { font-size: 16px; }
.dw-review-who { display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; }
.dw-review-name { font-weight: 700; color: var(--dw-ink); font-size: 14px; }
.dw-review-date { font-size: 12.5px; color: var(--dw-muted); }
.dw-reviews .dw-review-title { font-size: 17px; font-weight: 800; margin: 0 0 8px; line-height: 1.4; }
.dw-reviews .dw-review-title a { color: var(--dw-ink); text-decoration: none; }
.dw-reviews .dw-review-title a:hover { color: var(--dw-primary); }
.dw-review-text { color: var(--dw-text); line-height: 1.75; font-size: 15px; }
.dw-review-text > *:last-child { margin-bottom: 0; }
.dw-review-empty { color: var(--dw-muted); padding: 28px 0; text-align: center; }

/* 안내 문구 */
.dw-review-flash { margin: 0 0 18px; padding: 12px 16px; border-radius: var(--dw-radius); font-size: 14px; font-weight: 600; }
.dw-review-flash.is-ok { background: rgba(16,185,129,.10); color: #0f7a5a; }
.dw-review-flash.is-err { background: rgba(220,38,38,.08); color: #b32d2e; }

/* 목록 카드 하단 별점 */
.dw-blog-item__rate {
    display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
    margin: auto 0 0; padding-top: 12px; border-top: 1px solid var(--dw-line);
}
.dw-blog-item__rate .dw-star { font-size: 16px; }
.dw-blog-item__by { font-size: 13px; font-weight: 700; color: var(--dw-text); }

/* 상세 히어로 — 제목 아래 별점 + 작성자 */
.dw-page-hero-body .dw-hero-rate {
    display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
    margin: 12px 0 0; color: #fff;
}
.dw-page-hero-body .dw-hero-rate .dw-star { font-size: 21px; color: rgba(255,255,255,.38); }
.dw-page-hero-body .dw-hero-rate .dw-star.is-on { color: #FFC53D; }
.dw-page-hero-body .dw-hero-rate .dw-star.is-half {
    background: linear-gradient(90deg, #FFC53D 50%, rgba(255,255,255,.38) 50%);
    -webkit-background-clip: text; background-clip: text; color: transparent;
}
.dw-page-hero-body .dw-hero-rate-by { font-size: 15px; font-weight: 800; color: #545454; }

/* 작성 폼 */
.dw-review-write {
    margin: 34px 0 0;
    padding: clamp(20px, 3vw, 30px) clamp(20px, 4vw, 32px);
    border: 1px solid var(--dw-line);
    border-radius: var(--dw-radius);
    background: var(--dw-bg-soft, #f8fafc);
}
.dw-reviews .dw-review-write-title { font-size: 19px; font-weight: 800; color: var(--dw-ink); margin: 0 0 6px; }
.dw-review-write-note { font-size: 13.5px; color: var(--dw-muted); margin: 0 0 20px; }
.dw-review-form .dw-hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.dw-review-form .dw-field { margin: 0 0 16px; }
.dw-review-form .dw-field-row { display: flex; gap: 16px; flex-wrap: wrap; }
.dw-review-form .dw-field-row .dw-field { flex: 1 1 220px; }
.dw-review-form label { display: block; font-size: 13.5px; font-weight: 700; color: var(--dw-ink); margin-bottom: 6px; }
.dw-review-form .required { color: #dc2626; }
.dw-review-form input[type="text"],
.dw-review-form input[type="email"],
.dw-review-form textarea {
    width: 100%; box-sizing: border-box;
    padding: 11px 14px; font: inherit; font-size: 15px; color: var(--dw-ink);
    background: #fff; border: 1px solid var(--dw-line); border-radius: 10px;
    transition: border-color .15s ease, box-shadow .15s ease;
}
.dw-review-form input[type="text"]:focus,
.dw-review-form input[type="email"]:focus,
.dw-review-form textarea:focus {
    outline: none; border-color: var(--dw-primary);
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--dw-primary) 18%, transparent);
}
.dw-review-form textarea { resize: vertical; min-height: 130px; line-height: 1.7; }
.dw-review-submit { margin: 4px 0 0; }

/* 별점 입력 */
.dw-rate-field { display: flex; align-items: center; flex-wrap: wrap; gap: 12px; margin: 0 0 20px; }
.dw-review-form .dw-rate-legend { font-size: 13.5px; font-weight: 700; color: var(--dw-ink); margin: 0; }
.dw-rate-input { display: inline-flex; flex-direction: row-reverse; justify-content: flex-end; gap: 3px; }
.dw-rate-input input {
    position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
    overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}
.dw-review-form .dw-rate-input label,
.dw-rate-input label {
    display: block; margin: 0; cursor: pointer; font-size: 30px; line-height: 1;
    color: #DCDCE2; transition: color .12s ease, transform .12s ease;
}
.dw-rate-input label::before { content: "\2605"; }
.dw-review-form .dw-rate-input input:checked ~ label,
.dw-review-form .dw-rate-input label:hover,
.dw-review-form .dw-rate-input label:hover ~ label,
.dw-rate-input input:checked ~ label,
.dw-rate-input label:hover,
.dw-rate-input label:hover ~ label { color: #FFB100; }
.dw-rate-input:hover input:checked ~ label { color: #FFD27A; }
.dw-rate-input label:hover { transform: scale(1.1); }
.dw-rate-input input:focus-visible + label { outline: 2px solid var(--dw-primary); outline-offset: 2px; border-radius: 3px; }

@media (max-width: 600px) {
    .dw-reviews .dw-review-summary { gap: 16px; }
    .dw-review-avg > strong { font-size: 32px; }
    .dw-review-form .dw-rate-input label,
    .dw-rate-input label { font-size: 32px; }
}

/* 리뷰 대표 이미지 폴백 */
.dw-post-thumb--default { position: relative; overflow: hidden; }
.dw-post-thumb--default .dw-thumb-default { width: 100%; height: 100%; object-fit: cover; display: block; }
.dw-post-thumb--default .dw-thumb-default { filter: saturate(.85); }
.dw-thumb-empty {
    display: block; width: 100%; height: 100%; min-height: 180px;
    background:
        radial-gradient(circle at 30% 30%, color-mix(in srgb, var(--dw-primary) 16%, #fff) 0%, transparent 60%),
        linear-gradient(135deg, color-mix(in srgb, var(--dw-primary) 8%, #fff) 0%, var(--dw-bg-soft, #f4f6f9) 100%);
    position: relative;
}
.dw-thumb-empty::after {
    content: "\2605"; position: absolute; inset: 0;
    display: flex; align-items: center; justify-content: center;
    font-size: 44px; color: color-mix(in srgb, var(--dw-primary) 28%, #fff);
}

/* 리뷰 목록 화면 — 요약/폼은 그리드 전체 폭 */
.dw-blog-list > .dw-reviews { grid-column: 1 / -1; }
.dw-reviews--archive .dw-review-summary { margin-bottom: 4px; }
.dw-reviews--archive .dw-review-write { margin-top: 10px; }
.dw-review-form .dw-field-file input[type="file"] {
    width: 100%; box-sizing: border-box; padding: 10px 12px; font: inherit; font-size: 14px;
    background: #fff; border: 1px dashed var(--dw-line); border-radius: 10px; cursor: pointer;
}
.dw-review-form .dw-field-file input[type="file"]::file-selector-button {
    margin-right: 12px; padding: 7px 14px; font: inherit; font-size: 13.5px; font-weight: 700;
    color: var(--dw-ink); background: var(--dw-bg-soft, #f1f5f9);
    border: 1px solid var(--dw-line); border-radius: 8px; cursor: pointer;
}
.dw-review-form .dw-field-hint { display: block; margin-top: 6px; font-size: 12.5px; color: var(--dw-muted); }

/* 리뷰 쓰기 — CTA 줄 + 팝업 */
.dw-review-cta {
    display: flex; align-items: center; justify-content: space-between;
    gap: 20px; flex-wrap: wrap;
}
.dw-review-cta-txt { flex: 1 1 260px; }
.dw-review-cta .dw-review-write-title { margin: 0 0 4px; }
.dw-review-cta .dw-review-write-note { margin: 0; }
.dw-review-open { flex: none; white-space: nowrap; }

.dw-review-modal {
    width: min(620px, calc(100vw - 32px));
    max-height: min(88vh, 900px);
    padding: 0; border: 0; border-radius: var(--dw-radius-lg, 16px);
    background: #fff; color: var(--dw-text);
    box-shadow: 0 30px 80px rgba(0,0,0,.28);
    overflow: hidden;
}
.dw-review-modal::backdrop { background: rgba(15,23,42,.55); backdrop-filter: blur(2px); }
.dw-review-modal:not([open]) { display: none; }
.dw-review-modal-in { display: flex; flex-direction: column; max-height: inherit; }
.dw-review-modal-head {
    display: flex; align-items: center; justify-content: space-between; gap: 12px;
    padding: 18px clamp(20px, 4vw, 28px);
    border-bottom: 1px solid var(--dw-line); flex: none;
}
.dw-review-modal-head h3 { margin: 0; font-size: 18px; font-weight: 800; color: var(--dw-ink); }
.dw-review-close {
    flex: none; width: 34px; height: 34px; line-height: 1; font-size: 24px;
    display: grid; place-items: center; cursor: pointer;
    color: var(--dw-muted); background: transparent;
    border: 1px solid transparent; border-radius: 9px;
    transition: background .15s ease, color .15s ease;
}
.dw-review-close:hover { background: var(--dw-bg-soft, #f1f5f9); color: var(--dw-ink); }
.dw-review-modal .dw-review-form {
    padding: clamp(20px, 4vw, 28px);
    overflow-y: auto; -webkit-overflow-scrolling: touch;
}
.dw-review-modal .dw-review-submit {
    display: flex; gap: 10px; justify-content: flex-end; margin: 8px 0 0;
}
.dw-btn-ghost {
    background: transparent; color: var(--dw-muted);
    border: 1px solid var(--dw-line);
}
.dw-btn-ghost:hover { background: var(--dw-bg-soft, #f1f5f9); color: var(--dw-ink); }
body.dw-modal-open { overflow: hidden; }

@media (max-width: 600px) {
    .dw-review-cta { flex-direction: column; align-items: stretch; }
    .dw-review-open { width: 100%; }
    .dw-review-modal { width: 100vw; max-width: 100vw; max-height: 100vh; border-radius: 0; }
    .dw-review-modal .dw-review-submit { flex-direction: column-reverse; }
    .dw-review-modal .dw-review-submit .dw-btn { width: 100%; }
}

/* =========================================================
   일반 블록 버전 (2026-10 고객 편집형)
   예전 '사용자 지정 HTML' 덩어리를 그룹·문단·목록·버튼·이미지 블록과
   도어웹 아이콘/지도 블록으로 바꾼 마크업용. 예전 마크업 규칙은 그대로 두어
   이미 만든 고객 페이지도 같은 모양을 유지한다.
   ========================================================= */
.dw-page-blocks .dw-icon-block { margin: 0; line-height: 0; }
.dw-page-blocks .dw-icon-block.has-text-align-center { text-align: center; }
.dw-page-blocks .dw-icon-block.has-text-align-right { text-align: right; }
.dw-page-blocks .dw-icon-plain { display: inline-flex; line-height: 0; }
.dw-page-blocks .dw-icon-plain svg { width: 20px; height: 20px; display: block; }

/* 그룹(세로 쌓기) 중 예전 구조처럼 블록으로 보여야 하는 것 */
.dw-page-blocks .dw-stats-head,
.dw-page-blocks .dw-history-list,
.dw-page-blocks .dw-history-item,
.dw-page-blocks .dw-history-body,
.dw-page-blocks .dw-panel-item-body,
.dw-page-blocks .dw-map-row-body,
.dw-page-blocks .dw-map-info,
.dw-page-blocks .dw-about-value,
.dw-page-blocks .dw-about-body,
.dw-page-blocks .dw-org,
.dw-page-blocks .dw-org-head { display: block; }
.dw-page-blocks .wp-block-group.dw-cta-info { flex-direction: row; align-items: center; }

/* 통계 숫자 */
.dw-page-blocks .dw-stat > p.dw-stat-num { margin: 0; color: var(--dw-ink); font-size: clamp(26px, 3vw, 34px); font-weight: 800; line-height: 1.1; }
.dw-page-blocks .dw-stat > p.dw-stat-label { margin: 6px 0 0; color: var(--dw-muted); font-size: 14px; }
.dw-page-blocks .dw-stat > .dw-icon-block + p { margin-top: 0; }
.dw-page-blocks .dw-stats-head > * { margin-top: 0; }

/* split 버튼 */
.dw-page-blocks .dw-split-body .wp-block-buttons { margin: 10px 0 0; }
.dw-page-blocks .dw-btn-block .wp-block-button__link,
.dw-page-blocks .dw-cta-fill .wp-block-button__link,
.dw-page-blocks .dw-cta-ghost .wp-block-button__link {
    display: inline-flex; align-items: center; gap: 8px; padding: 14px 26px; border-radius: 10px;
    font-weight: 700; font-size: 15px; line-height: 1; border: 2px solid transparent; white-space: nowrap;
    text-decoration: none; transition: all .2s ease;
}
.dw-page-blocks .dw-btn-block .wp-block-button__link { background: var(--dw-primary); color: #fff; box-shadow: 0 8px 20px rgba(0, 120, 212, .30); }
.dw-page-blocks .dw-btn-block .wp-block-button__link:hover { background: var(--dw-primary-dark); color: #fff; transform: translateY(-2px); }

/* Vision/Mission 패널 */
.dw-page-blocks .dw-panel-item > * { margin: 0; }
.dw-page-blocks .dw-panel-item-body > * { margin-top: 0; }

/* 구분선(짧은 선) */
.dw-page-blocks hr.dw-about-rule,
.dw-page-blocks .wp-block-separator.dw-about-rule {
    display: block; width: 48px; height: 2px; margin: 0 0 20px; padding: 0;
    background: #535353; border: 0; border-radius: 2px; opacity: 1;
}

/* CEO 서명 */
.dw-page-blocks p.dw-ceo-sign { margin-top: 0; }

/* 연혁 */
.dw-page-blocks p.dw-history-era { margin: 0; }
.dw-page-blocks p.dw-history-era:not(:first-child) { margin-top: 12px; }
.dw-page-blocks .dw-history-list > .dw-history-item { margin: 0; }
.dw-page-blocks .dw-history-item > * { margin: 0; }
.dw-page-blocks p.dw-history-year { margin: 0 0 4px; }
.dw-page-blocks .dw-history-body > * { margin: 0; }
.dw-page-blocks .dw-history-head { margin: 0 0 5px; color: var(--dw-ink); font-size: 17px; font-weight: 700; line-height: 1.4; }
.dw-page-blocks .dw-history-text { margin: 0; color: var(--dw-muted); font-size: 15px; line-height: 1.7; }

/* 조직도 */
.dw-page-blocks .dw-org-card > p { margin: 0; }
.dw-page-blocks .dw-org-card > .dw-org-name { display: block; }
.dw-page-blocks .dw-org-head > .dw-org-card--ceo { margin: 0; }
.dw-page-blocks .dw-org-branch > * { margin: 0; }
.dw-page-blocks ul.dw-org-teams { margin: 0; }

/* 오시는 길 */
.dw-page-blocks .dw-map-grid > * { margin: 0; }
.dw-page-blocks .dw-map-frame { position: relative; min-height: var(--dw-map-h, 400px); }
.dw-page-blocks .dw-map-frame iframe { min-height: var(--dw-map-h, 400px); }
.dw-page-blocks .dw-map-frame--empty { display: grid; place-items: center; color: var(--dw-muted); font-size: 14px; }
.dw-page-blocks .dw-map-list > .dw-map-row { margin: 0; display: grid; grid-template-columns: 44px minmax(0, 1fr); gap: 14px; align-items: start; }
.dw-page-blocks .dw-map-list { display: grid; gap: 37px; }
.dw-page-blocks .dw-map-row-body > * { margin: 0; }
.dw-page-blocks .dw-map-k { margin: 0 0 3px; color: var(--dw-ink); font-size: 14px; font-weight: 700; }
.dw-page-blocks .dw-map-v { color: var(--dw-muted); font-size: 15px; line-height: 1.6; }
.dw-page-blocks .dw-map-transit > p { margin: 0; font-size: 14px; color: var(--dw-text); line-height: 1.6; }
@media (max-width: 900px) {
    .dw-page-blocks .dw-map-frame,
    .dw-page-blocks .dw-map-frame iframe { min-height: min(var(--dw-map-h, 300px), 300px); }
}

/* 인증서 갤러리(워드프레스 기본 갤러리) */
/* 일부 스킨은 .dw-lightbox 를 확대 창(position:fixed)에 쓰므로 갤러리에서는 무효화 */
.dw-page-blocks .wp-block-gallery.dw-lightbox { position: static; inset: auto; z-index: auto; padding: 0; place-items: normal; }
.dw-page-blocks .wp-block-gallery.dw-cert-grid {
    display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 28px; margin: 0;
}
.dw-page-blocks .wp-block-gallery.dw-cert-grid > figure.wp-block-image.dw-cert-item {
    width: auto !important; margin: 0 !important; display: block; flex: none;
}
.dw-page-blocks .wp-block-gallery.dw-cert-grid .dw-cert-item img {
    width: 100%; height: auto !important; aspect-ratio: 3 / 4; object-fit: contain; background: var(--dw-bg);
    border: 1px solid var(--dw-line); border-radius: 12px; box-shadow: var(--dw-shadow-sm);
    transition: transform .2s ease, box-shadow .2s ease; cursor: zoom-in; flex: none;
}
.dw-cert-fit-cover .dw-page-blocks .wp-block-gallery.dw-cert-grid .dw-cert-item img { object-fit: cover; }
.dw-page-blocks .wp-block-gallery.dw-cert-grid .dw-cert-item:hover img { transform: translateY(-3px); box-shadow: var(--dw-shadow); }
.dw-page-blocks .wp-block-gallery.dw-cert-grid .dw-cert-item figcaption {
    position: static !important; margin: 14px 0 0; padding: 0 !important; background: none !important;
    color: var(--dw-ink) !important; text-align: center; font-size: 14px; font-weight: 600; line-height: 1.5;
    text-shadow: none; max-height: none; overflow: visible;
}
.dw-page-blocks .wp-block-gallery.dw-cert-grid .dw-cert-item::before { display: none; }
@media (max-width: 900px) { .dw-page-blocks .wp-block-gallery.dw-cert-grid { grid-template-columns: repeat(3, 1fr); gap: 20px; } }
@media (max-width: 640px) { .dw-page-blocks .wp-block-gallery.dw-cert-grid { grid-template-columns: repeat(2, 1fr); } }

/* 문의 CTA */
.dw-page-blocks .dw-cta-info > .dw-cta-info-item { margin: 0; display: inline-flex; flex-direction: row; align-items: center; gap: 7px; color: #fff; }
.dw-page-blocks .dw-cta-info-item > * { margin: 0 !important; }
.dw-page-blocks .dw-cta-info-item svg { width: 17px; height: 17px; }
.dw-page-blocks .dw-cta-info-item p { color: #fff; font-size: 15px; font-weight: 600; }
.dw-page-blocks .wp-block-buttons.dw-cta-actions { gap: 12px; margin-top: 20px; }
.dw-page-blocks .dw-cta-fill .wp-block-button__link { background: #fff; color: var(--dw-primary-dark); border: 0; }
.dw-page-blocks .dw-cta-fill .wp-block-button__link:hover { background: var(--dw-primary-light); color: var(--dw-primary-dark); }
.dw-page-blocks .dw-cta-ghost .wp-block-button__link { background: transparent; color: #fff; border: 1.5px solid rgba(255, 255, 255, .6); }
.dw-page-blocks .dw-cta-ghost .wp-block-button__link:hover { background: rgba(255, 255, 255, .14); color: #fff; }

/* 회사소개(가치·사업·강점) */
.dw-page-blocks .dw-about-values > .dw-about-value,
.dw-page-blocks .dw-about-services > .dw-about-service,
.dw-page-blocks .dw-about-why > .dw-about-why-item { margin: 0; }
.dw-page-blocks .dw-about-value > p,
.dw-page-blocks .dw-about-body > p { margin: 0; }
.dw-page-blocks .dw-about-value > .dw-about-k { margin: 10px 0 6px; color: var(--dw-ink); font-size: 15px; font-weight: 700; line-height: 1.35; }
.dw-page-blocks .dw-about-value > .dw-about-v { color: var(--dw-muted); font-size: 13px; line-height: 1.55; }
.dw-page-blocks .dw-about-why { display: grid; gap: 33px; }
.dw-page-blocks .dw-about-why-item { display: grid; grid-template-columns: 40px minmax(0, 1fr); gap: 12px; align-items: start; }
.dw-page-blocks .dw-about-body > .dw-about-k { margin: 0 0 4px; color: var(--dw-ink); font-size: 16px; font-weight: 700; line-height: 1.35; }
.dw-page-blocks .dw-about-body > .dw-about-v { color: var(--dw-muted); font-size: 14px; line-height: 1.55; }
.dw-page-blocks .dw-about-service .dw-about-ico svg,
.dw-page-blocks .dw-about-why-item .dw-about-ico svg { width: 26px; height: 26px; }

/* 제목만 있는 섹션(섹션 · 제목) 바로 아래 카드 섹션과 사이가 너무 벌어지지 않게 */
.dw-page-blocks .dw-block:has(.dw-shead):not(:has(.dw-shead ~ *)):not(:has(.dw-grid, .wp-block-columns, table, figure, form, details, .wp-block-buttons)) { padding-bottom: 12px; }
