.la-rich {
    --bg:#fbfaf7;
    --paper:#fff;
    --ink:#273026;
    --muted:#6c7068;
    --line:#dfddd5;
    --sage:#69765b;
    --sage2:#46533d;
    --tint:#f3f5ee;
    --warm:#f5eee4;
    font-family:Pretendard,"Noto Sans KR",Arial,sans-serif;
    color:var(--ink);
    background:var(--bg);
    line-height:1.65
}

.la-rich,.la-rich * {
    box-sizing:border-box
}

.la-shell {
    width:min(1180px,calc(100% - 48px));
    margin:auto
}

.la-hero {
    min-height:465px;
    position:relative;
    overflow:hidden;
    background:linear-gradient(135deg,#f7f1e8,#efeee7)
}

.la-hero-image {
    position:absolute;
    inset:0;
    overflow:hidden;
    background-color:#eee7dc
}

/* DEV560 Hero mode contract.
   - classic-cover: frozen bathroom fan/dome/grout reference behavior.
   - layered-widefit: same Rich layout, service-owned pulled-back photo fit. */
.la-hero-image.is-classic-cover {
    background-image:var(--la-hero-url);
    background-repeat:no-repeat;
    background-size:var(--la-hero-size,cover);
    background-position:var(--la-hero-x,66%) var(--la-hero-y,50%)
}
.la-hero-image.is-classic-cover:before,
.la-hero-image.is-classic-cover:after {
    content:none!important
}

.la-hero-image.is-layered-widefit:before,
.la-hero-image.is-layered-widefit:after {
    content:"";
    position:absolute;
    inset:0;
    background-image:var(--la-hero-url);
    background-repeat:no-repeat;
    pointer-events:none
}
.la-hero-image.is-layered-widefit:before {
    inset:-3%;
    background-size:cover;
    background-position:var(--la-hero-x,100%) var(--la-hero-y,50%);
    filter:blur(12px) saturate(.86);
    transform:scale(1.04);
    opacity:var(--la-hero-ambient,.12)
}
.la-hero-image.is-layered-widefit:after {
    background-size:var(--la-hero-size,auto 96%);
    background-position:var(--la-hero-x,100%) var(--la-hero-y,50%);
    -webkit-mask-image:linear-gradient(90deg,transparent 0%,transparent var(--la-hero-sharp-fade-start,0%),#000 var(--la-hero-sharp-fade-end,0%),#000 100%);
    mask-image:linear-gradient(90deg,transparent 0%,transparent var(--la-hero-sharp-fade-start,0%),#000 var(--la-hero-sharp-fade-end,0%),#000 100%)
}

.la-hero.has-image:after {
    content:"";
    position:absolute;
    inset:0;
    z-index:1;
    pointer-events:none;
    background:linear-gradient(90deg,rgba(249,247,242,var(--la-ov0,.93)) 0%,rgba(249,247,242,var(--la-ov18,.86)) 18%,rgba(249,247,242,var(--la-ov34,.70)) 34%,rgba(249,247,242,var(--la-ov50,.46)) 50%,rgba(249,247,242,var(--la-ov66,.22)) 66%,rgba(249,247,242,var(--la-ov82,.07)) 82%,rgba(249,247,242,0) 100%)
}

.la-hero-inner {
    position:relative;
    z-index:2;
    padding:62px 0 50px
}

.la-crumb {
    display:none!important
}

.la-hero-copy {
    max-width:630px
}

.la-kicker {
    font-size:12px;
    font-weight:800;
    letter-spacing:.14em;
    color:var(--sage);
    margin:0 0 10px
}

.la-hero h1 {
    font-size:clamp(44px,4.35vw,56px);
    line-height:1.08;
    margin:0 0 16px;
    letter-spacing:-.045em
}

/* DEV682-H1: static Elementor /cases/ Hero keeps its visual title on KBoard
   detail routes after the server-side semantic H1 demotion. */
.la-hero .la-hero-title {
    font-size:clamp(44px,4.35vw,56px);
    line-height:1.08;
    margin:0 0 16px;
    letter-spacing:-.045em;
    font-weight:700
}

.la-hero-sub {
    font-size:21px;
    margin:0 0 14px
}

.la-lead {
    font-size:17px;
    line-height:1.72;
    color:#4f564d;
    max-width:620px
}

.la-btn {
    display:inline-flex;
    gap:16px;
    align-items:center;
    margin-top:28px;
    padding:13px 22px;
    border-radius:999px;
    background:var(--sage2);
    color:white;
    text-decoration:none;
    font-weight:700
}

.la-section {
    padding:76px 0;
    background:var(--paper);
    border-top:1px solid #f0efe9
}

.la-section.is-tint {
    background:var(--tint)
}

.la-section-head {
    display:block;
    margin-bottom:34px
}

.la-section-head.is-editorial-head {
    margin-bottom:26px
}

.la-num {
    display:none!important
}

.la-section h2 {
    font-size:32px;
    line-height:1.3;
    letter-spacing:-.035em;
    margin:0 0 10px
}

.la-section-desc {
    color:var(--muted);
    max-width:760px
}

.la-grid {
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:16px
}

.la-grid.stats {
    grid-template-columns:repeat(4,1fr)
}

.la-card {
    background:#fff;
    border:1px solid var(--line);
    border-radius:16px;
    padding:24px;
    min-height:160px
}

.la-icon {
    display:grid;
    place-items:center;
    width:42px;
    height:42px;
    border:1px solid #cfcabd;
    border-radius:50%;
    color:#8a7859;
    font-size:20px
}

.la-card h3 {
    font-size:18px;
    margin:18px 0 8px
}

.la-card div {
    font-size:14px;
    color:var(--muted)
}

.la-value {
    font-size:28px
}

.la-split {
    display:grid;
    gap:52px;
    align-items:center
}

.la-split.is-layout-balanced {
    grid-template-columns:minmax(0,1.04fr) minmax(360px,.96fr)
}

.la-split.is-layout-wide {
    grid-template-columns:1fr;
    gap:28px
}

.la-split.is-layout-wide .la-copy {
    max-width:900px
}

.la-split.is-layout-wide .la-visual {
    width:100%;
    aspect-ratio:16/7;
    min-height:340px;
    max-height:470px
}

.la-split.is-layout-wide .la-visual img {
    min-height:340px;
    max-height:470px
}

.la-split.is-layout-wide.is-image-left .la-visual,.la-split.is-layout-wide.is-image-right .la-visual {
    grid-column:1;
    grid-row:2
}

.la-split.is-layout-wide.is-image-left .la-copy,.la-split.is-layout-wide.is-image-right .la-copy {
    grid-column:1;
    grid-row:1
}

.la-split.is-image-left .la-visual {
    grid-column:1;
    grid-row:1
}

.la-split.is-image-left .la-copy {
    grid-column:2;
    grid-row:1
}

.la-split.is-image-right .la-copy {
    grid-column:1;
    grid-row:1
}

.la-split.is-image-right .la-visual {
    grid-column:2;
    grid-row:1
}

.la-copy {
    display:grid;
    gap:20px;
    align-content:center
}

.la-prose {
    font-size:16px;
    line-height:1.9;
    color:#4f554d;
    max-width:720px
}

.la-prose p {
    margin:0 0 14px
}

.la-prose p:last-child {
    margin-bottom:0
}

.la-bullets {
    display:grid;
    gap:0;
    border-top:1px solid var(--line)
}

.la-bullet {
    padding:15px 2px;
    border-bottom:1px solid var(--line)
}

.la-bullet strong {
    display:block;
    font-size:17px;
    margin-bottom:5px
}

.la-bullet span {
    color:var(--muted)
}

.la-visual {
    margin:0;
    border-radius:18px;
    background:linear-gradient(135deg,#eee7dd,#dde3d7);
    aspect-ratio:4/3;
    min-height:320px;
    max-height:420px;
    overflow:hidden;
    display:grid;
    place-items:center;
    color:#777;
    box-shadow:0 16px 34px rgba(49,57,45,.06)
}

.la-visual img {
    width:100%;
    height:100%;
    min-height:320px;
    max-height:420px;
    object-fit:cover;
    object-position:center;
    border-radius:18px
}

.la-before-after {
    height:340px;
    border-radius:18px;
    overflow:hidden;
    position:relative;
    display:grid;
    grid-template-columns:1fr 1fr;
    border:1px solid var(--line)
}

.la-before-after img {
    width:100%;
    height:100%;
    object-fit:cover;
    grid-column:1/-1
}

.la-ba-half {
    display:flex;
    align-items:end;
    padding:22px;
    background-size:cover
}

.la-ba-half.before {
    background:linear-gradient(135deg,#d6c8b9,#9d8d78)
}

.la-ba-half.after {
    background:linear-gradient(135deg,#f2ede6,#e7e2d9)
}

.la-before-after i {
    position:absolute;
    left:50%;
    top:50%;
    transform:translate(-50%,-50%);
    width:44px;
    height:44px;
    border-radius:50%;
    background:white;
    display:grid;
    place-items:center;
    font-style:normal
}

.la-preview-note {
    font-size:12px;
    color:#8b8b82
}

.la-process {
    display:grid;
    grid-template-columns:repeat(5,1fr);
    gap:0
}

.la-process article {
    padding:0 20px;
    border-right:1px solid var(--line)
}

.la-process article:last-child {
    border-right:0
}

.la-process span {
    font-size:12px;
    color:#999
}

.la-process h3 {
    font-size:16px
}

.la-process p {
    font-size:13px;
    color:var(--muted)
}

.la-gallery {
    display:grid;
    grid-template-columns:repeat(5,1fr);
    gap:14px
}

.la-gallery figure {
    margin:0
}

.la-gallery img,.la-gallery-ph {
    width:100%;
    aspect-ratio:1.3;
    border-radius:12px;
    object-fit:cover;
    background:linear-gradient(135deg,#eee7de,#dfe3d8)
}

.la-gallery figcaption {
    text-align:center;
    font-size:14px;
    margin-top:9px
}

.la-palette {
    display:flex;
    gap:24px;
    flex-wrap:wrap
}

.la-palette>div {
    display:grid;
    gap:8px;
    text-align:center
}

.la-palette span {
    width:74px;
    height:74px;
    border-radius:50%;
    border:1px solid #ccc
}

.la-palette strong {
    font-size:13px
}

.la-case-slot {
    border:1px dashed #b6a684;
    border-radius:18px;
    padding:28px;
    display:flex;
    justify-content:space-between;
    align-items:center;
    background:#fffaf3
}

.la-slot-label {
    display:block;
    font-size:11px;
    letter-spacing:.15em;
    color:#a07d48
}

.la-case-slot strong {
    font-size:20px;
    display:block;
    margin:5px 0
}

.la-case-slot p {
    margin:0;
    color:var(--muted)
}

.la-case-slot button {
    border:1px solid #b9a887;
    background:#fff;
    border-radius:999px;
    padding:10px 18px
}

.la-region-links {
    display:flex;
    gap:10px;
    flex-wrap:wrap
}

.la-region-links a {
    padding:10px 18px;
    border:1px solid var(--line);
    border-radius:9px;
    color:var(--ink);
    text-decoration:none;
    background:#fff
}

/* Shared open editorial grid — used by Core/Local when a section should not become another card box. */
.la-editorial-grid {
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    border-top:1px solid var(--line);
    border-bottom:1px solid var(--line)
}

.la-editorial-grid article {
    min-height:150px;
    padding:24px 28px 24px 0;
    border-right:1px solid var(--line)
}

.la-editorial-grid article:nth-child(2n) {
    padding-left:28px;
    padding-right:0;
    border-right:0
}

.la-editorial-grid article:nth-child(n+3) { border-top:1px solid var(--line) }
.la-editorial-grid article>span { display:block;margin-bottom:16px;color:#8b806f;font-size:10px;font-weight:850;letter-spacing:.08em }
.la-editorial-grid h3 { margin:0 0 9px;font-size:18px;line-height:1.45 }
.la-editorial-grid article>div { color:var(--muted);font-size:14px;line-height:1.78 }

.la-link-grid {
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:14px
}

.la-link-card {
    display:flex;
    text-decoration:none;
    color:var(--ink);
    justify-content:space-between;
    align-items:center;
    padding:26px 30px;
    border-radius:18px;
    background:linear-gradient(100deg,#f5efe6,#eef1e8);
    border:1px solid #e4dfd5
}

.la-link-card span {
    font-size:11px;
    color:#8c795b
}

.la-link-card strong {
    display:block;
    font-size:22px
}

.la-link-card p {
    margin:4px 0;
    color:var(--muted)
}

.la-link-card b {
    font-size:28px
}

.la-faq {
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:10px
}

.la-faq details {
    background:#fff;
    border:1px solid var(--line);
    border-radius:10px;
    padding:0 18px
}

.la-faq summary {
    list-style:none;
    padding:17px 0;
    font-weight:700;
    display:flex;
    justify-content:space-between;
    cursor:pointer
}

.la-faq details div {
    padding:0 0 18px;
    color:var(--muted)
}

.la-final {
    padding:70px 0 86px;
    background:#fff
}

.la-final-card {
    min-height:250px;
    border-radius:20px;
    position:relative;
    overflow:hidden;
    color:#fff;
    background:#4b5a41
}

.la-final-copy {
    position:relative;
    z-index:3;
    width:58%;
    padding:42px 48px
}

.la-final-visual {
    position:absolute;
    z-index:1;
    inset:0;
    width:100%;
    background-size:cover;
    background-position:var(--la-cta-x,68%) center;
    transform:scale(1.01)
}

.la-final-card.has-visual:after {
    content:"";
    position:absolute;
    z-index:2;
    inset:0;
    background:linear-gradient(90deg,rgba(66,80,56,1) 0%,rgba(66,80,56,.98) 32%,rgba(66,80,56,.92) 46%,rgba(66,80,56,.72) 58%,rgba(66,80,56,.38) 70%,rgba(66,80,56,.10) 84%,rgba(66,80,56,0) 100%)
}

.la-final h2 {
    font-size:32px;
    max-width:540px;
    margin:0 0 10px
}

.la-final p {
    margin:0;
    color:#eef1eb
}

.la-btn.light {
    background:white;
    color:var(--sage2);
    margin-top:24px
}

@media(max-width:760px) {
    .la-editorial-grid { grid-template-columns:1fr }
    .la-editorial-grid article,.la-editorial-grid article:nth-child(2n) { min-height:0;padding:22px 0;border-right:0;border-top:1px solid var(--line) }
    .la-editorial-grid article:first-child { border-top:0 }
    .la-link-grid {
        grid-template-columns:1fr
    }
    .la-shell {
        width:min(100% - 28px,640px)
    }
    .la-hero {
        min-height:570px
    }
    .la-hero-inner {
        padding:286px 0 36px
    }
    .la-hero h1,
    .la-hero .la-hero-title {
        font-size:38px
    }
    .la-section {
        padding:54px 0
    }
    .la-section h2 {
        font-size:26px
    }
    .la-grid,.la-grid.stats {
        grid-template-columns:1fr 1fr
    }
    .la-split,.la-split.is-layout-balanced,.la-split.is-layout-wide {
        grid-template-columns:1fr;
        gap:24px
    }
    .la-split.is-image-left .la-visual,.la-split.is-image-right .la-visual,.la-split.is-layout-wide.is-image-left .la-visual,.la-split.is-layout-wide.is-image-right .la-visual {
        grid-column:1;
        grid-row:2
    }
    .la-split.is-image-left .la-copy,.la-split.is-image-right .la-copy {
        grid-column:1;
        grid-row:1
    }
    .la-process {
        grid-template-columns:1fr 1fr
    }
    .la-process article {
        border-right:0;
        border-bottom:1px solid var(--line)
    }
    .la-gallery {
        grid-template-columns:1fr 1fr
    }
    .la-faq {
        grid-template-columns:1fr
    }
    .la-case-slot {
        align-items:flex-start;
        flex-direction:column;
        gap:24px
    }
    .la-final-copy {
        width:100%;
        padding:34px 26px;
        min-height:250px;
        display:flex;
        flex-direction:column;
        justify-content:center
    }
    .la-final-visual {
        width:100%;
        opacity:1;
        background-position:66% center
    }
    .la-final-card.has-visual:after {
        background:linear-gradient(90deg,rgba(66,80,56,.98) 0%,rgba(66,80,56,.92) 58%,rgba(66,80,56,.58) 100%)
    }
    .la-split.is-layout-wide .la-visual,.la-split.is-layout-wide .la-visual img {
        min-height:240px;
        max-height:320px
    }
    .la-before-after {
        height:250px
    }
    .la-section-head {
        grid-template-columns:42px 1fr
    }
}

@media(max-width:420px) {
    .la-grid,.la-grid.stats {
        grid-template-columns:1fr
    }
    .la-process {
        grid-template-columns:1fr
    }
    .la-gallery {
        grid-template-columns:1fr 1fr
    }
    .la-hero h1,
    .la-hero .la-hero-title {
        font-size:34px
    }
}

/* DEV547 Shared Hero Presentation: softer full-bleed Core/Local image blend + per-service focal profile. */ @media(max-width:760px) {
    .la-hero-image {
        height:300px;
        bottom:auto
    }
    .la-hero-image.is-classic-cover {
        background-position:var(--la-hero-mobile-x,var(--la-hero-x,66%)) var(--la-hero-mobile-y,var(--la-hero-y,50%))!important;
        background-size:var(--la-hero-mobile-size,cover)
    }
    .la-hero-image.is-layered-widefit:before,
    .la-hero-image.is-layered-widefit:after {
        background-position:var(--la-hero-mobile-x,var(--la-hero-x,100%)) var(--la-hero-mobile-y,var(--la-hero-y,50%))!important
    }
    .la-hero-image.is-layered-widefit:after {
        background-size:var(--la-hero-mobile-size,auto 92%)
    }
    .la-hero.has-image:after {
        background:linear-gradient(180deg,rgba(249,247,242,.01) 0%,rgba(249,247,242,.04) 42%,rgba(249,247,242,.48) 68%,rgba(249,247,242,.91) 84%,rgba(249,247,242,1) 100%)
    }
    .la-hero-copy {
        position:relative;
        z-index:2
    }
    .la-section-head {
        grid-template-columns:1fr!important
    }
}

/* DEV504 CSS isolation: theme Additional CSS cannot be prevented, but the Rich sheet no longer resets :root/body/* globally. */ .la-rich-page {
    isolation:isolate
}

/* DEV507 Rich Design Unification — align shared Rich components to the approved Core v10 grammar. */
.la-process {
    display:grid;
    grid-template-columns:repeat(var(--la-process-count,5),minmax(0,1fr));
    gap:0;
    border:0;
    border-top:1px solid var(--line);
    border-bottom:1px solid var(--line);
    border-radius:0;
    overflow:visible;
    background:transparent
}

.la-process article {
    position:relative;
    min-height:178px;
    padding:20px 18px 22px;
    border:0;
    border-right:1px solid var(--line);
    border-radius:0;
    background:transparent;
    box-shadow:none
}

.la-process article:last-child { border-right:0 }

.la-process span {
    display:block;
    width:auto;
    height:auto;
    min-width:0;
    min-height:0;
    padding:0;
    border:0;
    border-radius:0;
    background:transparent;
    color:var(--olive);
    font-size:10px;
    font-weight:900;
    line-height:1.2;
    letter-spacing:.06em
}

.la-process h3 {
    margin:16px 0 9px;
    color:var(--ink);
    font-size:16px;
    line-height:1.4
}

.la-process .la-step-copy,
.la-process .la-step-copy p {
    margin:0;
    color:var(--muted);
    font-size:12.5px;
    line-height:1.65
}

.la-process .la-step-copy p+p { margin-top:7px }

.la-faq {
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:8px;
    border:0
}

.la-faq details {
    overflow:hidden;
    padding:0 18px;
    border:1px solid var(--line);
    border-radius:12px;
    background:#fff;
    box-shadow:none;
    transition:border-color .18s ease,background .18s ease
}

.la-faq details[open] {
    border-color:#cfc8bb;
    background:#fbfaf7;
    box-shadow:none
}

.la-faq summary {
    position:relative;
    display:flex;
    min-height:0;
    padding:16px 30px 16px 0;
    align-items:flex-start;
    justify-content:space-between;
    gap:14px;
    color:var(--ink);
    font-size:14px;
    font-weight:830;
    line-height:1.45;
    list-style:none;
    cursor:pointer
}

.la-faq summary::-webkit-details-marker { display:none }

.la-faq summary span {
    position:absolute;
    top:12px;
    right:0;
    width:22px;
    height:28px;
    border:0;
    border-radius:0;
    background:transparent
}

.la-faq summary span:before {
    content:"+";
    position:absolute;
    inset:0;
    display:grid;
    place-items:center;
    color:var(--olive);
    font-size:21px;
    font-weight:400;
    line-height:1
}

.la-faq details[open] summary span:before { content:"−" }

.la-faq details>div {
    max-width:760px;
    padding:0 0 18px;
    color:var(--muted);
    font-size:13px;
    line-height:1.7
}

/* Approved Core v10/DEV438 final consultation treatment: light sage, no decorative image by default. */
.la-final {
    padding:50px 0;
    background:#e1e6da;
    color:#263025
}

.la-final-card:not(.has-visual) {
    min-height:0;
    overflow:visible;
    border-radius:0;
    background:transparent;
    color:#263025
}

.la-final-card:not(.has-visual) .la-final-copy {
    width:100%;
    padding:0
}

.la-final-card:not(.has-visual) .la-kicker { color:#687653 }
.la-final-card:not(.has-visual) h2 { color:#263025 }
.la-final-card:not(.has-visual) p { color:#5f695d }
.la-final-card:not(.has-visual) .la-btn.light {
    border:1px solid #cfd7c8;
    background:#fff;
    color:#35412c
}

/* Explicit image CTA remains supported only when a blueprint opts in. */
.la-final-card.has-visual {
    min-height:250px;
    border-radius:20px;
    overflow:hidden;
    background:#4b5a41;
    color:#fff
}

@media(max-width:980px) {
    .la-process {
        grid-template-columns:1fr 1fr;
        gap:10px;
        border-top:0;
        border-bottom:0
    }
    .la-process article,
    .la-process article:last-child {
        min-height:0;
        padding:20px 18px 22px;
        border:1px solid var(--line);
        border-radius:14px;
        background:#fff
    }
    .la-faq { grid-template-columns:1fr }
}

@media(max-width:640px) {
    .la-process { grid-template-columns:1fr }
    .la-faq details { padding:0 16px }
    .la-final { padding:44px 0 }
}

/* DEV508 Publisher Pass — restore contextual CTA image while preserving the v10 Rich component grammar. */
.la-final {
    padding:70px 0 86px;
    background:var(--paper)
}
.la-final-card.has-visual {
    min-height:270px;
    border-radius:20px;
    overflow:hidden;
    background:#46533d;
    color:#fff;
    box-shadow:0 16px 42px rgba(47,58,42,.10)
}
.la-final-card.has-visual .la-final-copy {
    width:58%;
    max-width:680px;
    padding:44px 48px
}
.la-final-card.has-visual .la-final-visual {
    display:block;
    background-position:var(--la-cta-x,68%) center
}
.la-final-card.has-visual:after {
    background:linear-gradient(90deg,rgba(63,76,55,.99) 0%,rgba(63,76,55,.97) 35%,rgba(63,76,55,.88) 50%,rgba(63,76,55,.56) 67%,rgba(63,76,55,.14) 86%,rgba(63,76,55,0) 100%)
}
.la-final-card.has-visual .la-kicker { color:#d9e0d3 }
.la-final-card.has-visual h2 { color:#fff }
.la-final-card.has-visual p { color:#eef1eb }
.la-final-card.has-visual .la-btn.light { background:#fff;color:var(--sage2) }

/* Keep a graceful no-image fallback instead of forcing decorative stock art. */
.la-final-card:not(.has-visual) {
    padding:44px 48px;
    border-radius:20px;
    background:#e1e6da;
    color:#263025
}
.la-final-card:not(.has-visual) .la-final-copy { width:100%;padding:0 }

@media(max-width:760px){
    .la-final-card.has-visual .la-final-copy { width:100%;max-width:none;padding:34px 24px }
    .la-final-card.has-visual:after { background:linear-gradient(90deg,rgba(63,76,55,.98) 0%,rgba(63,76,55,.93) 62%,rgba(63,76,55,.68) 100%) }
    .la-final-card:not(.has-visual) { padding:34px 24px }
}

/* DEV513: Local public route viewport parity.
 * The active WordPress theme may wrap the custom Local CPT in a bounded primary
 * column before the shared Rich renderer starts. Keep .la-shell as the 1180px
 * content owner, but release the Local page canvas so Hero/Tint/CTA backgrounds
 * match Core renewal pages and the isolated Rich Preview iframe. */
body.single-la_local_page{overflow-x:clip}
body.single-la_local_page .site-content>.ast-container,
body.single-la_local_page .site-content>.container,
body.single-la_local_page .site-content>.site-content-inner,
body.single-la_local_page #content>.ast-container,
body.single-la_local_page #content>.container{
  width:100%!important;max-width:none!important;margin-left:0!important;margin-right:0!important;padding-left:0!important;padding-right:0!important
}
body.single-la_local_page #primary,
body.single-la_local_page .content-area,
body.single-la_local_page .site-main{
  float:none!important;width:100%!important;max-width:none!important;margin-left:0!important;margin-right:0!important;padding-left:0!important;padding-right:0!important
}
body.single-la_local_page #secondary,
body.single-la_local_page .site-content .widget-area,
body.single-la_local_page .site-content aside.sidebar{display:none!important}
body.single-la_local_page .la-local-page{
  width:100vw;max-width:none!important;position:relative;left:50%;margin-left:-50vw!important;margin-right:-50vw!important
}
@supports(width:100dvw){
  body.single-la_local_page .la-local-page{width:100dvw;left:50%;margin-left:-50dvw!important;margin-right:-50dvw!important}
}

/* DEV626 HOME_OWNER layout polish (built on DEV625 premium composition).
 * Homepage-only rules are additive: Core service pages and Local SEO keep their frozen component grammar. */
.la-split.is-text-only {
    grid-template-columns:minmax(0,820px)!important;
    gap:0;
    justify-content:start
}
.la-split.is-text-only .la-copy {
    grid-column:1!important;
    grid-row:1!important;
    width:100%;
    max-width:820px
}
.la-split.is-text-only .la-prose { max-width:800px }

.is-home-owner .la-hero { min-height:500px }
.is-home-owner .la-hero-copy { max-width:610px }
.is-home-owner .la-section { padding:82px 0 }
.is-home-owner .la-section-head { max-width:1000px;margin-bottom:36px }
.is-home-owner .la-section-head>div { width:100%;max-width:100% }
.is-home-owner .la-section-desc { max-width:930px;line-height:1.8 }
.is-home-owner .la-section h2 { font-size:clamp(29px,2.7vw,36px) }

/* One coherent field checklist: copy/check items on the left, one contextual image on the right. */
.la-section.is-home-checklist { background:#fff }
.la-section.is-home-checklist .la-section-head { max-width:1040px;margin-bottom:28px }
.la-split.is-checklist {
    grid-template-columns:minmax(0,1.06fr) minmax(360px,.94fr);
    gap:48px;
    align-items:start
}
.la-split.is-checklist .la-copy { gap:22px }
.la-split.is-checklist .la-prose { max-width:680px }
.la-bullets.is-checklist-list {
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:10px;
    border-top:0
}
.la-bullet.is-check-item {
    min-height:118px;
    padding:18px;
    display:grid;
    grid-template-columns:34px minmax(0,1fr);
    gap:12px;
    align-items:start;
    border:1px solid var(--line);
    border-radius:14px;
    background:#fff
}
.la-bullet.is-check-item .la-bullet-index {
    display:grid;
    place-items:center;
    width:32px;
    height:32px;
    border:1px solid #cfc8bb;
    border-radius:50%;
    color:#7a6d58;
    font-size:10px;
    font-weight:900;
    letter-spacing:.04em
}
.la-bullet.is-check-item .la-bullet-copy strong { margin:1px 0 6px;font-size:15px;line-height:1.45 }
.la-bullet.is-check-item .la-bullet-copy span { display:block;color:var(--muted);font-size:13px;line-height:1.65 }
.la-split.is-checklist .la-visual {
    aspect-ratio:4/3;
    min-height:0;
    max-height:none;
    box-shadow:0 18px 42px rgba(49,57,45,.08)
}
.la-split.is-checklist .la-visual img { min-height:0;max-height:none }
.la-split.is-checklist.is-text-only { grid-template-columns:minmax(0,920px)!important }
.la-split.is-checklist.is-text-only .la-copy { max-width:920px }

/* Brand introduction is intentionally image-free; its asymmetry is editorial, never an empty media slot. */
.la-home-brand {
    background:linear-gradient(135deg,#f7f4ed 0%,#f0f3eb 100%);
    border-top:1px solid #e7e2d8;
    border-bottom:1px solid #e1e4da
}
.la-home-brand-grid {
    display:grid;
    grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr);
    gap:72px;
    align-items:start
}
.la-home-brand-title h2 {
    max-width:560px;
    margin:0;
    font-size:clamp(32px,3.1vw,42px);
    line-height:1.24;
    letter-spacing:-.04em
}
.la-home-brand-copy { padding-top:27px }
.la-home-brand-copy .la-prose { max-width:680px;font-size:17px;line-height:1.9 }
.la-home-brand-points {
    display:flex;
    flex-wrap:wrap;
    gap:8px;
    margin-top:24px;
    padding-top:20px;
    border-top:1px solid rgba(85,94,78,.16)
}
.la-home-brand-points span {
    display:inline-flex;
    align-items:center;
    min-height:34px;
    padding:7px 12px;
    border:1px solid #d9d7ce;
    border-radius:999px;
    background:rgba(255,255,255,.66);
    color:#596253;
    font-size:12px;
    font-weight:760
}

/* Homepage service hub: three clear active families instead of a flat SEO-link list. */
.la-home-services { background:#f4f5ef }
.la-home-services .la-section-head { max-width:940px }
.la-home-service-grid {
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:16px
}
.la-home-service-card {
    min-height:330px;
    padding:28px;
    display:flex;
    flex-direction:column;
    border:1px solid #deddd4;
    border-radius:20px;
    background:#fff;
    box-shadow:0 12px 30px rgba(54,61,49,.035)
}
.la-home-service-card.is-primary {
    background:#48553f;
    border-color:#48553f;
    color:#fff;
    box-shadow:0 18px 38px rgba(54,65,48,.12)
}
.la-home-service-card-head {
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:18px
}
.la-home-service-card-head>span {
    color:#88795f;
    font-size:10px;
    font-weight:900;
    letter-spacing:.12em
}
.la-home-service-card.is-primary .la-home-service-card-head>span { color:#dbe2d4 }
.la-home-service-main {
    display:grid;
    place-items:center;
    width:38px;
    height:38px;
    border:1px solid #d7d5cc;
    border-radius:50%;
    color:var(--ink);
    text-decoration:none;
    font-size:17px
}
.la-home-service-card.is-primary .la-home-service-main { border-color:rgba(255,255,255,.34);color:#fff }
.la-home-service-card h3 { margin:28px 0 12px;font-size:25px;letter-spacing:-.035em;line-height:1.3 }
.la-home-service-card h3 a { color:inherit;text-decoration:none }
.la-home-service-card>p { margin:0;color:var(--muted);font-size:14px;line-height:1.75 }
.la-home-service-card.is-primary>p { color:#edf1e9 }
.la-home-service-subs {
    display:flex;
    flex-wrap:wrap;
    gap:7px;
    margin-top:auto;
    padding-top:24px
}
.la-home-service-subs a {
    padding:7px 10px;
    border:1px solid #dfddd5;
    border-radius:999px;
    background:#fbfaf7;
    color:#5c6458;
    text-decoration:none;
    font-size:11px;
    font-weight:720
}
.la-home-service-card.is-primary .la-home-service-subs a {
    border-color:rgba(255,255,255,.24);
    background:rgba(255,255,255,.08);
    color:#fff
}
.la-home-service-card a { transition:opacity .16s ease,border-color .16s ease,transform .16s ease }
.la-home-service-card a:hover { opacity:.78 }

@media(max-width:980px){
    .la-home-brand-grid { grid-template-columns:1fr;gap:26px }
    .la-home-brand-copy { padding-top:0 }
    .la-home-service-grid { grid-template-columns:1fr 1fr }
    .la-home-service-card.is-primary { grid-column:1/-1;min-height:270px }
    .la-split.is-checklist { grid-template-columns:1fr;gap:28px }
    .la-split.is-checklist .la-copy,.la-split.is-checklist .la-visual { grid-column:1!important }
    .la-split.is-checklist .la-copy { grid-row:1!important }
    .la-split.is-checklist .la-visual { grid-row:2!important }
}

@media(max-width:640px){
    .is-home-owner .la-section { padding:58px 0 }
    .la-bullets.is-checklist-list { grid-template-columns:1fr }
    .la-bullet.is-check-item { min-height:0 }
    .la-home-service-grid { grid-template-columns:1fr }
    .la-home-service-card,.la-home-service-card.is-primary { grid-column:auto;min-height:0;padding:24px }
    .la-home-service-card h3 { margin-top:22px;font-size:23px }
    .la-home-brand-title h2 { font-size:31px }
}


/* DEV627 HOME_OWNER finish polish.
 * Fixes regenerated-candidate duplication, editorial measure, four-card balance and FAQ hierarchy.
 * Homepage-only overrides preserve frozen Core/Local component grammar. */
.is-home-owner .la-grid.is-home-four {
    grid-template-columns:repeat(4,minmax(0,1fr));
    gap:14px
}
.is-home-owner .la-grid.is-home-four .la-card {
    min-height:176px;
    padding:22px
}
.is-home-owner .la-grid.is-home-four .la-card h3 { font-size:17px;line-height:1.42 }
.is-home-owner .la-grid.is-home-four .la-card div { font-size:13.5px;line-height:1.72 }

/* A wide editorial section owns the reading width before its full-width image.
 * Do not inherit the generic 720px prose measure and leave a phantom right column. */
.is-home-owner .la-split.is-layout-wide .la-copy { width:100%;max-width:1040px }
.is-home-owner .la-split.is-layout-wide .la-prose { width:100%;max-width:960px }

/* Related + FAQ share the same tint on Home. Tighten their hand-off so FAQ does not look detached. */
.is-home-owner #home-curated-links { padding-bottom:48px }
.is-home-owner .la-section.is-home-faq { padding-top:38px;padding-bottom:76px }
.is-home-owner .la-section.is-home-faq .la-section-head { margin-bottom:24px;max-width:1040px }
.is-home-owner .la-section.is-home-faq .la-kicker { margin-bottom:8px;font-size:11px;letter-spacing:.12em }
.is-home-owner .la-section.is-home-faq h2 { margin-bottom:0;font-size:clamp(28px,2.55vw,34px) }
.is-home-owner .la-section.is-home-faq .la-faq { gap:10px }
.is-home-owner .la-section.is-home-faq .la-faq details { padding:0 20px;border-radius:13px }
.is-home-owner .la-section.is-home-faq .la-faq summary {
    padding:19px 34px 19px 0;
    font-size:15.5px;
    font-weight:800;
    line-height:1.5
}
.is-home-owner .la-section.is-home-faq .la-faq summary span { top:15px }
.is-home-owner .la-section.is-home-faq .la-faq details>div {
    max-width:820px;
    padding:0 0 20px;
    font-size:14px;
    line-height:1.8
}

@media(max-width:980px){
    .is-home-owner .la-grid.is-home-four { grid-template-columns:repeat(2,minmax(0,1fr)) }
    .is-home-owner .la-split.is-layout-wide .la-copy,.is-home-owner .la-split.is-layout-wide .la-prose { max-width:100% }
}
@media(max-width:640px){
    .is-home-owner .la-grid.is-home-four { grid-template-columns:1fr }
    .is-home-owner .la-section.is-home-faq { padding-top:26px;padding-bottom:58px }
    .is-home-owner .la-section.is-home-faq .la-faq summary { font-size:15px;padding-top:18px;padding-bottom:18px }
}

/* DEV628 HOME_OWNER re-grout technical decision block.
 * Replaces one long manual-style paragraph with a compact lead, 2x2 decision cards,
 * and one wide contextual image. Homepage only; generic Core/Local grammar is untouched. */
.is-home-owner .la-section.is-home-regrout-technical {
    padding-top:74px;
    padding-bottom:76px;
    background:#fff
}
.is-home-owner .la-section.is-home-regrout-technical .la-section-head {
    max-width:1040px;
    margin-bottom:20px
}
.is-home-owner .la-split.is-technical {
    grid-template-columns:1fr;
    gap:30px;
    align-items:start
}
.is-home-owner .la-split.is-technical .la-copy {
    width:100%;
    max-width:1040px;
    gap:22px
}
.is-home-owner .la-split.is-technical .la-prose {
    max-width:900px;
    font-size:15.5px;
    line-height:1.82
}
.is-home-owner .la-bullets.is-technical-list {
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:14px;
    width:100%;
    max-width:1040px;
    border-top:0
}
.is-home-owner .la-bullet.is-technical-item {
    min-height:158px;
    padding:22px 23px 23px;
    display:flex;
    flex-direction:column;
    gap:0;
    align-items:flex-start;
    border:1px solid var(--line);
    border-radius:15px;
    background:#fbfaf7
}
.is-home-owner .la-bullet.is-technical-item .la-bullet-index {
    display:grid;
    place-items:center;
    width:36px;
    height:36px;
    border:1px solid #cfc8bb;
    border-radius:50%;
    color:#746854;
    background:#fff;
    font-size:10px;
    font-weight:900;
    letter-spacing:.04em;
    margin-bottom:15px
}
.is-home-owner .la-bullet.is-technical-item .la-bullet-copy {
    width:100%
}
.is-home-owner .la-bullet.is-technical-item .la-bullet-copy strong {
    display:block;
    margin:0 0 8px;
    font-size:16.5px;
    line-height:1.42
}
.is-home-owner .la-bullet.is-technical-item .la-bullet-copy span {
    display:block;
    color:var(--muted);
    font-size:14px;
    line-height:1.66
}
.is-home-owner .la-split.is-technical .la-visual {
    width:100%;
    aspect-ratio:16/6.4;
    min-height:300px;
    max-height:390px;
    margin-top:2px;
    box-shadow:0 16px 38px rgba(49,57,45,.055)
}
.is-home-owner .la-split.is-technical .la-visual img {
    min-height:300px;
    max-height:390px
}
@media(max-width:780px){
    .is-home-owner .la-bullets.is-technical-list { grid-template-columns:1fr }
    .is-home-owner .la-bullet.is-technical-item { min-height:0 }
    .is-home-owner .la-split.is-technical .la-visual,
    .is-home-owner .la-split.is-technical .la-visual img { min-height:0;max-height:none }
}

/* DEV630 HOME_OWNER re-grout width parity.
 * DEV629 correctly hides unverified re-grout imagery, which adds .is-text-only.
 * The generic text-only contract intentionally caps content at 820px, but that
 * made this 2x2 technical decision block look like a narrow article column.
 * HOME re-grout is a card/grid section, so it owns the full 1180px shell. */
.is-home-owner .la-section.is-home-regrout-technical .la-section-head {
    width:100%;
    max-width:none
}
.is-home-owner .la-split.is-technical,
.is-home-owner .la-split.is-technical.is-text-only {
    width:100%;
    max-width:none;
    grid-template-columns:minmax(0,1fr)!important;
    justify-content:stretch
}
.is-home-owner .la-split.is-technical .la-copy,
.is-home-owner .la-split.is-technical.is-text-only .la-copy {
    width:100%;
    max-width:none
}
.is-home-owner .la-split.is-technical .la-prose,
.is-home-owner .la-split.is-technical.is-text-only .la-prose {
    width:100%;
    max-width:1040px
}
.is-home-owner .la-bullets.is-technical-list {
    width:100%;
    max-width:none
}
@media(max-width:780px){
    .is-home-owner .la-split.is-technical .la-prose,
    .is-home-owner .la-split.is-technical.is-text-only .la-prose { max-width:100% }
}


/* DEV632 Core Elementor Full Width breakout.
 * Final Publish Core fragments are intentionally pasted into Elementor HTML widgets.
 * Elementor Full Width can still place those widgets inside a theme/Elementor bounded
 * content container. Release only the Final Publish fragment canvas to the viewport,
 * while .la-shell remains the 1180px content owner. Header/Footer therefore stay owned
 * by the theme/Elementor page template; Elementor Canvas is not required. */
.la-rich-page.la-publish-part {
    width:100vw;
    max-width:none!important;
    position:relative;
    left:50%;
    margin-left:-50vw!important;
    margin-right:-50vw!important;
    overflow-x:clip
}
@supports (width:100dvw) {
    .la-rich-page.la-publish-part {
        width:100dvw;
        left:50%;
        margin-left:-50dvw!important;
        margin-right:-50dvw!important
    }
}

/* Let the breakout remain visible even when Elementor wraps the HTML widget. */
@supports selector(:has(*)) {
    .elementor-widget-html:has(.la-rich-page.la-publish-part),
    .elementor-widget-html:has(.la-rich-page.la-publish-part) > .elementor-widget-container {
        max-width:none!important;
        overflow:visible!important
    }
}

/* The case shortcode sits between the two HTML fragments. On Core Elementor pages,
 * allow its content block to reach the same Rich 1180px shell even when the parent
 * Elementor container is narrower. This changes only the block width, not card grammar. */
.elementor-widget-shortcode .lineart-cases-wrap,
.elementor-widget-shortcode .las12-case-block {
    width:min(1180px,calc(100vw - 48px));
    max-width:none;
    position:relative;
    left:50%;
    transform:translateX(-50%)
}
@supports (width:100dvw) {
    .elementor-widget-shortcode .lineart-cases-wrap,
    .elementor-widget-shortcode .las12-case-block {
        width:min(1180px,calc(100dvw - 48px))
    }
}
@media(max-width:760px) {
    .elementor-widget-shortcode .lineart-cases-wrap,
    .elementor-widget-shortcode .las12-case-block {
        width:min(100% - 28px,640px)
    }
}

/* DEV633 Core Local Area Hub hierarchy.
 * Core pages link to CITY/Search Area owners first; DONG cards are a bounded
 * fallback only. Keep the block compact so Local SEO does not overwhelm Core. */
.la-local-parent-links.is-hub .la-section-head {
    max-width:940px
}
.la-local-parent-links.is-hub .la-section-desc {
    max-width:820px
}
.la-local-hub-grid {
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:12px
}
.la-local-hub-card {
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:20px;
    min-height:132px;
    padding:22px 24px;
    color:var(--ink);
    text-decoration:none;
    border:1px solid #ded9cf;
    border-radius:16px;
    background:linear-gradient(105deg,#f8f4ec 0%,#f0f2ea 100%);
    transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease
}
.la-local-hub-card:hover {
    transform:translateY(-2px);
    border-color:#c8c0b2;
    box-shadow:0 12px 28px rgba(49,57,45,.07)
}
.la-local-hub-card__copy { min-width:0 }
.la-local-hub-card__meta {
    display:block;
    margin-bottom:9px;
    color:#857760;
    font-size:9.5px;
    font-weight:850;
    letter-spacing:.09em
}
.la-local-hub-card strong {
    display:block;
    margin:0;
    font-size:18px;
    line-height:1.42
}
.la-local-hub-card p {
    margin:6px 0 0;
    color:var(--muted);
    font-size:13px;
    line-height:1.55
}
.la-local-hub-card small {
    display:block;
    margin-top:8px;
    color:#8a806f;
    font-size:11px;
    line-height:1.4
}
.la-local-hub-card>b {
    flex:0 0 auto;
    font-size:22px;
    font-weight:500
}
.la-local-hub-actions {
    display:flex;
    justify-content:flex-end;
    margin-top:20px
}
.la-local-hub-all {
    display:inline-flex;
    align-items:center;
    gap:10px;
    color:var(--sage2);
    text-decoration:none;
    font-size:14px;
    font-weight:800
}
.la-local-hub-all span { font-size:18px }
@media(max-width:980px){
    .la-local-hub-grid { grid-template-columns:repeat(2,minmax(0,1fr)) }
}
@media(max-width:640px){
    .la-local-hub-grid { grid-template-columns:1fr }
    .la-local-hub-card { min-height:0;padding:20px }
    .la-local-hub-actions { justify-content:flex-start }
}


/* DEV635 GeneratePress + Elementor Core layout flush.
 * Live DOM contract verified on Elementor Header/Footer pages:
 * #masthead -> #page.site.grid-container -> #content.site-content -> .elementor
 * -> top-level Atomic/Flexbox -> Final Publish widgets.
 * GeneratePress' grid container and Elementor's page/container styles must not
 * add an outer gutter between the header and the LineArt Rich page. The actual
 * content rhythm remains owned by .la-shell / .la-section.
 *
 * Scope: only pages where LineArt Studio detected a Rich/Core context and added
 * body.lineart-rich-layout. Header/Footer are intentionally untouched. */
body.lineart-rich-layout.elementor-template-full-width #page,
body.lineart-rich-layout.elementor-template-full-width #page.site.grid-container,
body.lineart-rich-layout.elementor-template-full-width #content,
body.lineart-rich-layout.elementor-template-full-width #content.site-content {
    width:100%!important;
    max-width:none!important;
    margin:0!important;
    padding:0!important
}
body.lineart-rich-layout.elementor-template-full-width #content > .elementor {
    width:100%!important;
    max-width:none!important;
    margin:0!important;
    padding:0!important
}
body.lineart-rich-layout.elementor-template-full-width #content > .elementor > .e-con:first-child,
body.lineart-rich-layout.elementor-template-full-width #content > .elementor > .elementor-element:first-child {
    width:100%!important;
    max-width:none!important;
    margin-top:0!important;
    margin-right:0!important;
    margin-bottom:0!important;
    margin-left:0!important;
    padding-top:0!important;
    padding-right:0!important;
    padding-bottom:0!important;
    padding-left:0!important
}
body.lineart-rich-layout.elementor-template-full-width #content > .elementor > .e-con:first-child > .elementor-widget-html:first-child,
body.lineart-rich-layout.elementor-template-full-width #content > .elementor > .elementor-element:first-child > .elementor-widget-html:first-child,
body.lineart-rich-layout.elementor-template-full-width #content .elementor-widget-html:first-child > .elementor-widget-container {
    margin-top:0!important;
    padding-top:0!important
}

/* DEV632 used viewport breakout because GeneratePress still boxed #page/#content.
 * DEV635 fixes those real wrappers directly, so the Final Publish fragments can
 * return to normal 100% flow. This avoids 100vw scrollbar drift and keeps the
 * same Canvas-like width while preserving the site Header/Footer. */
body.lineart-rich-layout.elementor-template-full-width .la-rich-page.la-publish-part {
    width:100%!important;
    max-width:none!important;
    left:auto!important;
    right:auto!important;
    margin-left:0!important;
    margin-right:0!important;
    overflow-x:clip
}
body.lineart-rich-layout.elementor-template-full-width .elementor-widget-shortcode .lineart-cases-wrap,
body.lineart-rich-layout.elementor-template-full-width .elementor-widget-shortcode .las12-case-block {
    width:min(1180px,calc(100% - 48px));
    max-width:1180px;
    left:auto;
    transform:none;
    margin-left:auto;
    margin-right:auto
}
@media(max-width:760px) {
    body.lineart-rich-layout.elementor-template-full-width .elementor-widget-shortcode .lineart-cases-wrap,
    body.lineart-rich-layout.elementor-template-full-width .elementor-widget-shortcode .las12-case-block {
        width:calc(100% - 28px)
    }
}
