
/* ==========================================================
   OSORIO PLUMBING SERVICES
   SECTION 04 — INTERACTIVE PLUMBING GUIDE
   COMPLETE RESPONSIVE CSS
========================================================== */


/* ==========================================================
   01. MAIN SECTION
========================================================== */

.os4-guide {

    --os4-navy: #102e52;
    --os4-blue: #0788df;
    --os4-wine: #84233d;
    --os4-white: #ffffff;
    --os4-text: #29445e;
    --os4-border: #d9e8f4;

    position: relative;
    isolation: isolate;

    width: 100%;

    padding: 55px 0;

    overflow: hidden;

    background:
        radial-gradient(
            ellipse at 70% 100%,
            rgba(7, 136, 223, .08),
            transparent 45%
        ),
        linear-gradient(
            180deg,
            #ffffff 0%,
            #f0f9ff 100%
        );

    font-family: "DM Sans", Arial, sans-serif;

    color: var(--os4-text);

}

.os4-guide *,
.os4-guide *::before,
.os4-guide *::after {

    box-sizing: border-box;

}

.os4-guide button {

    font: inherit;

}

.os4-guide a {

    text-decoration: none;

}

.os4-guide button:focus-visible,
.os4-guide a:focus-visible {

    outline: 3px solid var(--os4-wine);
    outline-offset: 4px;

}


/* ==========================================================
   02. GLOBAL CONTAINER — SAME AS PREVIOUS SECTIONS
========================================================== */

.os4-container {

    position: relative;

    display: grid;

    grid-template-columns:
        minmax(0, 1.05fr)
        minmax(0, 1.25fr)
        minmax(220px, .56fr);

    align-items: center;

    gap: 30px;

    width: calc(100% - 80px);

    max-width: 1440px;

    margin: 0 auto;

}


/* ==========================================================
   03. LEFT CONTENT
========================================================== */

.os4-content {

    position: relative;
    z-index: 3;

    min-width: 0;

}

.os4-eyebrow {

    display: block;

    margin-bottom: 9px;

    color: var(--os4-navy);

    font-size: 14px;
    font-weight: 900;

    letter-spacing: 1.5px;
    line-height: 1.4;

}

.os4-title {

    margin: 0 0 12px;

    color: var(--os4-navy);

    font-family: "Outfit", Arial, sans-serif;

    font-size: clamp(29px, 2.7vw, 39px);
    font-weight: 900;

    line-height: 1.07;
    letter-spacing: -1px;

}

.os4-title span {

    display: block;

    color: var(--os4-blue);

}

.os4-description {

    max-width: 420px;

    margin: 0 0 21px;

    color: var(--os4-text);

    font-size: 15px;
    line-height: 1.55;

    text-align: justify;

}


/* ==========================================================
   04. AREA BUTTON GRID
========================================================== */

.os4-selector {

    display: grid;

    grid-template-columns: repeat(2, minmax(0, 1fr));

    gap: 10px;

}

.os4-area {

    display: flex;

    align-items: center;

    gap: 10px;

    min-width: 0;
    min-height: 54px;

    padding: 10px 12px;

    border: 1px solid var(--os4-border);
    border-radius: 7px;

    background: #ffffff;

    box-shadow: 0 5px 14px rgba(9, 48, 86, .07);

    color: var(--os4-navy);

    font-size: 14px;
    font-weight: 800;

    text-align: left;

    cursor: pointer;

    transition:
        background .25s ease,
        border-color .25s ease,
        color .25s ease,
        transform .25s ease;

}

.os4-area > i:first-child {

    flex: 0 0 auto;

    color: var(--os4-navy);

    font-size: 17px;

}

.os4-area > span {

    flex: 1;

    min-width: 0;

    font-size: 14px;

    line-height: 1.25;

}

.os4-area-arrow {

    flex: 0 0 auto;

    margin-left: auto;

    color: var(--os4-blue);

    font-size: 14px;

}

.os4-area:hover {

    transform: translateY(-2px);

    border-color: var(--os4-blue);

}

.os4-area.is-active {

    border-color: var(--os4-blue);

    background: var(--os4-blue);

    color: #ffffff;

    box-shadow: 0 8px 18px rgba(7, 136, 223, .22);

}

.os4-area.is-active > i {

    color: #ffffff;

}


/* ==========================================================
   05. HOUSE
========================================================== */

.os4-house {

    position: relative;

    min-width: 0;

}

.os4-house-image {

    position: relative;

    width: 100%;
    height: 385px;

    overflow: hidden;

    border-radius: 9px;

    background: #dceaf4;

    box-shadow: 0 12px 30px rgba(9, 48, 86, .10);

}

.os4-house-image > img {

    display: block;

    width: 100%;
    height: 100%;

    object-fit: cover;
    object-position: center;

}


/* ==========================================================
   06. INTERACTIVE POINTS
========================================================== */

.os4-point {

    position: absolute;
    z-index: 3;

    display: flex;

    align-items: center;
    justify-content: center;

    width: 43px;
    height: 43px;

    padding: 0;

    border: 3px solid #ffffff;
    border-radius: 50%;

    background: var(--os4-blue);

    box-shadow:
        0 4px 13px rgba(0, 0, 0, .22),
        0 0 0 5px rgba(7, 136, 223, .13);

    color: #ffffff;

    font-size: 15px;

    cursor: pointer;

    transform: translate(-50%, -50%);

    transition:
        background .25s ease,
        box-shadow .25s ease,
        scale .25s ease;

}

.os4-point:hover {

    background: var(--os4-wine);

    scale: 1.12;

}

.os4-point.is-active {

    background: var(--os4-wine);

    box-shadow:
        0 4px 13px rgba(0, 0, 0, .22),
        0 0 0 7px rgba(132, 35, 61, .18);

}

.os4-point i {

    pointer-events: none;

}


/* ==========================================================
   07. POINT POSITIONS
   ADJUST THESE IF YOU REPLACE THE HOUSE IMAGE
========================================================== */

.os4-point-kitchen {

    top: 38%;
    left: 34%;

}

.os4-point-bathroom {

    top: 30%;
    left: 66%;

}

.os4-point-laundry {

    top: 72%;
    left: 26%;

}

.os4-point-heater {

    top: 75%;
    left: 70%;

}

.os4-point-outdoor {

    top: 83%;
    left: 87%;

}

.os4-point-whole {

    top: 52%;
    left: 51%;

}


/* ==========================================================
   08. HANDWRITTEN HINT
========================================================== */

.os4-house-hint {

    position: absolute;

    top: -37px;
    left: 8px;

    z-index: 4;

    display: flex;

    align-items: center;

    gap: 12px;

    color: var(--os4-navy);

    transform: rotate(-7deg);

    pointer-events: none;

}

.os4-house-hint span {

    font-family: "Comic Sans MS", cursive;

    font-size: 16px;
    font-weight: 700;

    line-height: 1.05;

}

.os4-house-hint i {

    color: var(--os4-blue);

    font-size: 23px;

    transform: rotate(-45deg);

}


/* ==========================================================
   09. DYNAMIC CARD
========================================================== */

.os4-service-card {

    position: relative;
    z-index: 5;

    display: flex;
    flex-direction: column;

    min-width: 0;

    padding: 9px;

    border: 1px solid var(--os4-border);
    border-radius: 9px;

    background: #ffffff;

    box-shadow: 0 10px 28px rgba(9, 48, 86, .12);

}


/* ==========================================================
   10. CARD IMAGE AND TITLE
========================================================== */

.os4-card-top {

    display: flex;
    flex-direction: column;

    gap: 12px;

}

.os4-card-image {

    width: 100%;
    height: 140px;

    overflow: hidden;

    border-radius: 6px;

    background: #dceaf4;

}

.os4-card-image img {

    display: block;

    width: 100%;
    height: 100%;

    object-fit: cover;

    transition: opacity .2s ease;

}

.os4-card-info {

    padding: 0 5px;

}

.os4-card-label {

    display: block;

    margin-bottom: 4px;

    color: var(--os4-wine);

    font-size: 14px;
    font-weight: 800;

    letter-spacing: .6px;

}

.os4-card-info h3 {

    margin: 0;

    color: var(--os4-navy);

    font-family: "Outfit", Arial, sans-serif;

    font-size: 18px;
    font-weight: 900;

    line-height: 1.2;

}


/* ==========================================================
   11. CARD SERVICES
========================================================== */

.os4-card-list {

    display: flex;
    flex-direction: column;

    gap: 10px;

    margin: 16px 0;

    padding: 0 5px;

    list-style: none;

}

.os4-card-list li {

    display: flex;

    align-items: flex-start;

    gap: 8px;

    color: var(--os4-text);

    font-size: 14px;
    line-height: 1.4;

}

.os4-card-list li i {

    flex: 0 0 auto;

    margin-top: 3px;

    color: var(--os4-blue);

    font-size: 14px;

}


/* ==========================================================
   12. CARD BUTTON
========================================================== */

.os4-card-button {

    display: flex;

    align-items: center;
    justify-content: center;

    gap: 10px;

    min-height: 43px;

    padding: 10px;

    border-radius: 5px;

    background: var(--os4-blue);

    color: #ffffff;

    font-size: 14px;
    font-weight: 900;

    text-align: center;

    transition:
        background .25s ease,
        transform .25s ease;

}

.os4-card-button:hover {

    transform: translateY(-2px);

    background: var(--os4-wine);

    color: #ffffff;

}


/* ==========================================================
   13. LARGE DESKTOP
========================================================== */

@media (min-width: 1600px) {

    .os4-house-image {

        height: 430px;

    }

    .os4-card-image {

        height: 165px;

    }

}


/* ==========================================================
   14. LAPTOP
========================================================== */

@media (max-width: 1300px) {

    .os4-container {

        width: calc(100% - 64px);

        grid-template-columns:
            minmax(0, 1.1fr)
            minmax(0, 1.2fr)
            minmax(210px, .65fr);

        gap: 22px;

    }

    .os4-house-image {

        height: 360px;

    }

    .os4-title {

        font-size: 32px;

    }

}


/* ==========================================================
   15. COMPACT LAPTOP
========================================================== */

@media (max-width: 1100px) {

    .os4-container {

        grid-template-columns:
            minmax(0, 1fr)
            minmax(0, 1.1fr);

        gap: 30px;

    }

    .os4-house-image {

        height: 370px;

    }

    .os4-service-card {

        grid-column: 1 / -1;

        display: grid;

        grid-template-columns: 240px minmax(0, 1fr) auto;

        align-items: center;

        gap: 22px;

        padding: 12px;

    }

    .os4-card-image {

        height: 150px;

    }

    .os4-card-list {

        margin: 0;

    }

    .os4-card-button {

        min-width: 150px;

    }

}


/* ==========================================================
   16. TABLET
========================================================== */

@media (max-width: 850px) {

    .os4-guide {

        padding: 48px 0;

    }

    .os4-container {

        width: calc(100% - 44px);

        grid-template-columns: 1fr;

        gap: 35px;

    }

    .os4-description {

        max-width: 100%;

    }

    .os4-selector {

        grid-template-columns: repeat(3, minmax(0, 1fr));

    }

    .os4-house-image {

        height: 420px;

    }

    .os4-house-hint {

        top: -26px;
        left: 20px;

    }

    .os4-service-card {

        grid-column: auto;

        grid-template-columns: 220px minmax(0, 1fr);

        gap: 20px;

    }

    .os4-card-button {

        grid-column: 1 / -1;

    }

}


/* ==========================================================
   17. MOBILE
========================================================== */

@media (max-width: 600px) {

    .os4-guide {

        padding: 45px 0;

    }

    .os4-container {

        width: calc(100% - 36px);

        gap: 32px;

    }

    .os4-title {

        font-size: clamp(30px, 8vw, 38px);

    }

    .os4-description {

        font-size: 15px;

        line-height: 1.6;

    }

    .os4-selector {

        grid-template-columns: repeat(2, minmax(0, 1fr));

        gap: 9px;

    }

    .os4-area {

        min-height: 57px;

        padding: 9px;

        gap: 7px;

    }

    .os4-area > i:first-child {

        font-size: 16px;

    }

    .os4-area > span {

        font-size: 14px;

    }

    .os4-house-image {

        height: 320px;

    }

    .os4-point {

        width: 38px;
        height: 38px;

        font-size: 14px;

    }

    .os4-house-hint {

        top: -26px;

    }

    .os4-service-card {

        display: flex;

        gap: 0;

        padding: 12px;

    }

    .os4-card-top {

        display: grid;

        grid-template-columns: 120px minmax(0, 1fr);

        align-items: center;

        gap: 15px;

    }

    .os4-card-image {

        height: 110px;

    }

    .os4-card-info h3 {

        font-size: 19px;

    }

    .os4-card-list {

        margin: 20px 0;

    }

    .os4-card-button {

        width: 100%;

    }

}


/* ==========================================================
   18. SMALL MOBILE
========================================================== */

@media (max-width: 380px) {

    .os4-container {

        width: calc(100% - 32px);

    }

    .os4-title {

        font-size: 29px;

    }

    .os4-area {

        gap: 5px;

        padding: 8px 7px;

    }

    .os4-area-arrow {

        display: none;

    }

    .os4-house-image {

        height: 280px;

    }

    .os4-card-top {

        grid-template-columns: 95px minmax(0, 1fr);

        gap: 12px;

    }

    .os4-card-image {

        height: 95px;

    }

    .os4-card-info h3 {

        font-size: 17px;

    }

}


/* ==========================================================
   19. REDUCED MOTION
========================================================== */

@media (prefers-reduced-motion: reduce) {

    .os4-guide *,
    .os4-guide *::before,
    .os4-guide *::after {

        animation-duration: .01ms !important;

        transition-duration: .01ms !important;

    }

}