:root {
    --navy:#132f2a;
    --green:#1f6b52;
    --dark:#174c3d;
    --lime:#d7edb2;
    --cream:#f7f7f1;
    --ink:#202b28;
    --muted:#71807a;
    --line:#e3e8e3
}

* {
    box-sizing:border-box
}

html {
    scroll-behavior:smooth;
    scroll-padding-top:90px
}

body {
    margin:0;
    font-family:'DM Sans',sans-serif;
    color:var(--ink);
    line-height:1.6
}

h1,h2,h3 {
    font-family:Manrope,sans-serif;
    line-height:1.2;
    letter-spacing:-.035em;
    margin:0
}

p {
    color:var(--muted);
    margin:0 0 15px
}

a {
    text-decoration:none;
    color:inherit
}

button,input,select,textarea {
    font:inherit
}

button {
    cursor:pointer
}

.wrap {
    width:min(1160px,calc(100% - 40px));
    margin:auto
}

.top {
    background:var(--navy);
    color:#dbe8e0;
    font-size:12px;
    padding:9px 0
}

.topin {
    display:flex;
    justify-content:space-between;
    gap:15px
}

.top a {
    color:white
}

header {
    height:78px;
    position:sticky;
    top:0;
    z-index:20;
    background:white;
    border-bottom:1px solid #edf0ed
}

.nav {
    height:100%;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:20px
}

.brand {
    display:flex;
    align-items:center;
    gap:9px;
    font:800 19px Manrope,sans-serif;
    letter-spacing:-.05em;
    color:var(--navy);
    line-height:1
}

.brand b {
    display:grid;
    place-items:center;
    background:var(--green);
    color:white;
    border-radius:10px;
    width:39px;
    height:39px;
    font-size:27px
}


.brand .logo-img {
    display: block;
    width: 39px;
    height: 39px;
    object-fit: contain;
}

.foot .brand .logo-img {
    width: 32px;
    height: 32px;
}


.brand small {
    display:block;
    font:700 8px 'DM Sans';
    letter-spacing:.25em;
    color:#83918a;
    margin-top:5px
}

.green {
    color:#75a957
}

nav {
    display:flex;
    align-items:center;
    gap:24px;
    color:#58645e;
    font-size:13px;
    font-weight:600
}

nav a:hover {
    color:var(--green)
}

.btn {
    display:inline-flex;
    justify-content:center;
    align-items:center;
    gap:8px;
    padding:13px 19px;
    background:var(--green);
    color:white;
    border:0;
    border-radius:7px;
    font-size:13px;
    font-weight:700;
    transition:.2s
}

.btn:hover {
    background:var(--dark);
    transform:translateY(-1px)
}

nav .btn {
    padding:11px 14px;
    font-size:12px
}

#menubtn {
    display:none;
    border:0;
    background:none;
    font-size:25px;
    color:var(--navy)
}

.hero {
    min-height:550px;
    position:relative;
    display:flex;
    align-items:center;
    color:white;
    background:#233a32 url('https://images.unsplash.com/photo-1600607687939-ce8a6c25118c?auto=format&fit=crop&w=2000&q=90') center/cover no-repeat
}

.hero:before {
    content:'';
    position:absolute;
    inset:0;
    background:linear-gradient(90deg,rgba(10,31,26,.9),rgba(10,31,26,.68) 44%,rgba(10,31,26,.12))
}

.herotxt {
    position:relative;
    padding:70px 0 95px
}

.eyebrow {
    font-size:10px;
    letter-spacing:.17em;
    font-weight:700;
    color:#d5e5d7;
    margin-bottom:18px
}

.dark {
    color:var(--green)
}

h1 {
    font-size:clamp(46px,6vw,76px);
    margin-bottom:18px
}

h1 em {
    font-style:normal;
    color:var(--lime)
}

.herotxt>p {
    color:#d7e0da;
    max-width:440px;
    font-size:14px;
    line-height:1.8
}

.actions {
    display:flex;
    gap:12px;
    margin-top:25px
}

.outline {
    border:1px solid #b8c7bf;
    background:transparent
}

.outline:hover {
    background:white;
    color:var(--navy)
}

.trust {
    font-size:11px;
    color:#d6e2d9;
    margin-top:35px
}

.heronote {
    position:absolute;
    bottom:25px;
    right:max(20px,calc((100% - 1160px)/2));
    padding:11px 15px;
    border-radius:7px;
    background:white;
    color:var(--navy);
    font-size:11px;
    font-weight:700
}

.searchbox {
    position:relative;
    margin-top:-35px;
    z-index:3;
    background:white;
    box-shadow:0 18px 55px #132f2a18;
    border-radius:11px;
    padding:17px
}

.searchbox form {
    display:grid;
    grid-template-columns:1fr 1fr 1fr auto;
    gap:12px;
    align-items:center
}

.searchbox label {
    padding:4px 15px;
    border-right:1px solid var(--line);
    font-size:9px;
    letter-spacing:.1em;
    font-weight:800;
    color:#89948e
}

.searchbox select {
    display:block;
    width:100%;
    border:0;
    background:white;
    color:var(--ink);
    font-size:13px;
    letter-spacing:0;
    font-weight:600;
    padding:5px 0;
    outline:none
}

.section {
    padding-top:88px;
    padding-bottom:88px
}

.heading {
    display:flex;
    align-items:end;
    justify-content:space-between;
    gap:20px;
    margin-bottom:28px
}

.heading h2,.about h2 {
    font-size:clamp(28px,3.4vw,39px);
    color:var(--navy);
    margin-bottom:10px
}

.heading p {
    font-size:13px;
    margin:0
}

.linkbtn {
    background:none;
    border:0;
    color:var(--green);
    font-size:12px;
    font-weight:800
}

.meta {
    font-size:11px;
    color:#849089;
    margin-bottom:14px
}

.grid {
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:21px
}

.card {
    border:1px solid #e8ece8;
    border-radius:10px;
    overflow:hidden;
    background:white;
    transition:.2s
}

.card:hover {
    transform:translateY(-4px);
    box-shadow:0 18px 55px #132f2a12
}

.card img {
    width:100%;
    height:210px;
    object-fit:cover;
    display:block
}

.pad {
    padding:18px
}

.pad small {
    font-size:11px;
    color:#839087
}

.pad h3 {
    font-size:17px;
    color:var(--navy);
    margin:7px 0 10px
}

.pad strong {
    font-size:18px;
    color:var(--green)
}

.pad p {
    font-size:11px;
    line-height:1.9;
    margin:12px 0
}

.detail {
    border:0;
    border-top:1px solid var(--line);
    width:100%;
    text-align:left;
    padding:13px 0 0;
    background:white;
    color:var(--green);
    font-weight:800;
    font-size:12px
}

.note {
    font-size:11px;
    margin-top:20px
}

.banner {
    background:var(--green);
    color:white
}

.bannerin {
    min-height:270px;
    padding:44px 0;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:30px
}

.banner h2 {
    font-size:clamp(29px,4vw,42px);
    margin-bottom:14px
}

.banner p {
    color:#d8e6dc;
    font-size:13px;
    margin:0
}

.light {
    background:white;
    color:var(--navy);
    white-space:nowrap
}

.light:hover {
    background:var(--lime)
}

.center {
    display:block;
    text-align:center
}

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

.services article {
    padding:28px;
    border:1px solid var(--line);
    border-radius:10px
}

.services article>b {
    display:grid;
    place-items:center;
    width:48px;
    height:48px;
    background:#edf5e6;
    color:var(--green);
    font-size:24px;
    border-radius:12px;
    margin-bottom:20px
}

.services h3 {
    font-size:18px;
    color:var(--navy);
    margin-bottom:10px
}

.services p {
    font-size:12px;
    line-height:1.8;
    margin:0
}

.about {
    background:var(--cream);
    padding:80px 0
}

.aboutin {
    display:grid;
    grid-template-columns:1fr 1fr;
    align-items:center;
    gap:65px
}

.aboutin img {
    width:100%;
    height:370px;
    object-fit:cover;
    border-radius:10px
}

.about h2 {
    line-height:1.25
}

.about p {
    font-size:13px;
    line-height:1.9
}

.about ul {
    padding-left:18px;
    color:#52645a;
    font-size:12px;
    font-weight:600;
    line-height:2
}

.contact {
    background:var(--navy);
    color:white;
    padding:80px 0
}

.contactin {
    display:grid;
    grid-template-columns:1fr .8fr;
    gap:70px
}

.contact h2 {
    font-size:clamp(34px,4vw,48px);
    margin-bottom:17px
}

.contact p {
    color:#c0d0c6;
    font-size:13px;
    line-height:2
}

.contact small {
    font-size:10px;
    color:#aebfb4
}

.contact form {
    background:white;
    color:var(--ink);
    padding:27px;
    border-radius:11px
}

.contact h3 {
    font-size:21px;
    color:var(--navy);
    margin-bottom:18px
}

.contact label,.dialog label {
    display:block;
    font-size:11px;
    font-weight:700;
    color:#53635a;
    margin-bottom:12px
}

.contact input,.contact select,.contact textarea,.dialog input,.dialog select,.dialog textarea {
    display:block;
    width:100%;
    border:1px solid #dfe6e0;
    border-radius:6px;
    padding:11px;
    margin-top:6px;
    outline:none;
    background:white;
    font-size:12px
}

.contact form>small,.dialog form>small {
    display:block;
    color:#849087;
    font-size:10px;
    line-height:1.6;
    margin-top:12px
}

footer {
    background:#0d241f;
    color:#b6c6bc;
    padding:20px 0
}

.foot {
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:20px;
    font-size:10px
}

.foot .brand {
    color:white;
    font-size:16px
}

.foot .brand b {
    width:32px;
    height:32px;
    font-size:22px
}

.backdrop {
    display:none;
    position:fixed;
    inset:0;
    z-index:100;
    background:#071612aa;
    align-items:center;
    justify-content:center;
    padding:18px;
    overflow:auto
}

.backdrop.show {
    display:flex
}

.dialog {
    position:relative;
    width:min(530px,100%);
    max-height:92vh;
    overflow:auto;
    background:white;
    border-radius:13px;
    padding:30px
}

.dialog h2 {
    font-size:28px;
    color:var(--navy);
    margin-bottom:10px
}

.dialog>p {
    font-size:12px;
    line-height:1.7
}

.close {
    position:absolute;
    right:14px;
    top:8px;
    border:0;
    background:transparent;
    font-size:29px;
    color:#637068
}

.full {
    width:100%
}

.noscroll {
    overflow:hidden
}

[hidden] {
    display:none!important
}

@media(max-width:900px) {
    nav {
    gap:12px;
    font-size:12px
}

.grid {
    grid-template-columns:repeat(2,minmax(0,1fr))
}

.aboutin,.contactin {
    gap:35px
}

}

@media(max-width:700px) {
    .wrap {
    width:calc(100% - 32px)
}

.topin {
    font-size:10px
}

.topin span {
    max-width:60%
}

header {
    height:68px
}

#menubtn {
    display:block
}

nav {
    display:none;
    position:absolute;
    left:0;
    right:0;
    top:68px;
    background:white;
    padding:20px 24px;
    box-shadow:0 15px 25px #0001;
    align-items:stretch;
    flex-direction:column;
    gap:17px
}

nav.open {
    display:flex
}

nav .btn {
    width:100%
}

.hero {
    min-height:540px;
    background-position:60% center
}

.hero:before {
    background:linear-gradient(90deg,#0a1f1ae8,#0a1f1a88)
}

.herotxt {
    padding:60px 0 100px
}

h1 {
    font-size:49px
}

.herotxt>p {
    font-size:13px
}

.heronote {
    left:16px;
    right:16px;
    text-align:center;
    bottom:17px
}

.searchbox {
    margin-top:-22px;
    padding:12px
}

.searchbox form {
    grid-template-columns:1fr 1fr;
    gap:8px
}

.searchbox label {
    padding:7px 5px;
    border-right:0;
    border-bottom:1px solid var(--line)
}

.searchbox .btn {
    grid-column:1/-1
}

.section {
    padding-top:62px;
    padding-bottom:62px
}

.heading {
    display:block
}

.heading .linkbtn {
    margin-top:14px;
    padding-left:0
}

.heading h2 {
    font-size:29px
}

.grid,.services,.aboutin,.contactin {
    grid-template-columns:1fr
}

.grid {
    gap:15px
}

.card img {
    height:230px
}

.bannerin {
    align-items:flex-start;
    flex-direction:column;
    padding:45px 0
}

.banner h2 {
    font-size:32px
}

.banner .btn {
    width:100%
}

.services {
    gap:13px
}

.about {
    padding:60px 0
}

.aboutin img {
    height:270px
}

.about h2 {
    font-size:29px
}

.contact {
    padding:60px 0
}

.contactin {
    gap:32px
}

.contact form {
    padding:22px
}

.foot {
    flex-wrap:wrap;
    justify-content:flex-start
}

.foot>span {
    order:3;
    width:100%
}

.dialog {
    padding:25px 20px
}

}

@media(prefers-reduced-motion:reduce) {
    html {
    scroll-behavior:auto
}

* {
    transition:none!important
}

}


.foot .brand .logo-img {
    display: block;
    width: 32px;
    height: 32px;
    object-fit: contain;
}


/* HERO SLIDER */
.hero-slider {
    position: relative;
    min-height: 550px;
    overflow: hidden;
    isolation: isolate;
    background: #132f2a;
}

.hero-slider::before {
    content: none;
}

.hero-slides {
    position: absolute;
    inset: 0;
}

.hero-slide {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    background-size: cover;
    background-position: center;
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.7s ease, visibility 0.7s ease;
}

.hero-slide::before {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(
        90deg,
        rgba(10, 31, 26, 0.90),
        rgba(10, 31, 26, 0.65) 48%,
        rgba(10, 31, 26, 0.12)
    );
}

.hero-slide.active {
    opacity: 1;
    visibility: visible;
    z-index: 1;
}

.hero-slide .herotxt {
    position: relative;
    z-index: 2;
    width: min(1160px, calc(100% - 40px));
    margin: 0 auto;
    padding: 70px 0 95px;
}

.hero-slide .herotxt h1 {
    color: #fff;
}

.hero-slide .herotxt p {
    color: #e0e8e2;
    max-width: 450px;
}

.hero-slider .heronote {
    z-index: 4;
}

.slider-arrow {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    z-index: 5;
    width: 44px;
    height: 44px;
    border: 1px solid rgba(255,255,255,0.65);
    border-radius: 50%;
    background: rgba(19,47,42,0.45);
    color: #fff;
    font-size: 18px;
    display: grid;
    place-items: center;
    transition: background 0.2s ease;
}

.slider-arrow:hover {
    background: #1f6b52;
}

.slider-arrow.prev {
    left: 22px;
}

.slider-arrow.next {
    right: 22px;
}

.slider-dots {
    position: absolute;
    z-index: 5;
    bottom: 27px;
    left: 50%;
    transform: translateX(-50%);
    display: flex;
    gap: 9px;
}

.slider-dot {
    width: 10px;
    height: 10px;
    padding: 0;
    border: 0;
    border-radius: 20px;
    background: rgba(255,255,255,0.55);
    cursor: pointer;
    transition: width 0.3s ease, background 0.3s ease;
}

.slider-dot.active {
    width: 28px;
    background: #d7edb2;
}

@media (max-width: 700px) {
    .hero-slider {
        min-height: 540px;
    }

    .hero-slide {
        background-position: 60% center;
    }

    .hero-slide::before {
        background: linear-gradient(
            90deg,
            rgba(10,31,26,0.91),
            rgba(10,31,26,0.67)
        );
    }

    .hero-slide .herotxt {
        width: calc(100% - 48px);
        padding: 55px 0 95px;
    }

    .slider-arrow {
        width: 34px;
        height: 34px;
        font-size: 14px;
    }

    .slider-arrow.prev {
        left: 8px;
    }

    .slider-arrow.next {
        right: 8px;
    }

    .slider-dots {
        bottom: 23px;
    }

    .hero-slider .heronote {
        display: none;
    }
}

@media (prefers-reduced-motion: reduce) {
    .hero-slide,
    .slider-dot {
        transition: none;
    }
}


/* MODAL DETAIL RUMAH */
.detail-modal {
    display: none;
    position: fixed;
    inset: 0;
    z-index: 200;
    background: rgba(7, 22, 18, 0.78);
    padding: 24px;
    overflow-y: auto;
    align-items: center;
    justify-content: center;
}

.detail-modal.show {
    display: flex;
}

.detail-panel {
    position: relative;
    width: min(1000px, 100%);
    max-height: 92vh;
    overflow-y: auto;
    background: #fff;
    border-radius: 14px;
    display: grid;
    grid-template-columns: 1.15fr 0.85fr;
}

.detail-close {
    position: absolute;
    top: 12px;
    right: 14px;
    z-index: 3;
    width: 38px;
    height: 38px;
    border: 0;
    border-radius: 50%;
    background: #fff;
    color: #132f2a;
    font-size: 27px;
    box-shadow: 0 2px 12px #0002;
}

.detail-gallery {
    padding: 20px;
    min-width: 0;
}

#detailMainImage {
    width: 100%;
    height: 350px;
    display: block;
    object-fit: cover;
    border-radius: 9px;
    background: #f0f3f0;
}

.detail-thumbnails {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 10px;
    margin-top: 12px;
}

.detail-thumbnails img {
    width: 100%;
    height: 85px;
    object-fit: cover;
    border-radius: 7px;
    cursor: pointer;
    border: 2px solid transparent;
}

.detail-thumbnails img.selected {
    border-color: #1f6b52;
}

.detail-information {
    padding: 38px 28px 28px;
}

.detail-information h2 {
    color: #132f2a;
    font-size: 27px;
    margin-bottom: 12px;
}

.detail-location {
    font-size: 13px;
    margin-bottom: 15px;
}

.detail-price {
    color: #1f6b52;
    font-size: 23px;
    margin-bottom: 20px;
}

.detail-specifications {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
    margin-bottom: 22px;
}

.detail-specifications span {
    background: #f2f6f0;
    color: #344b3e;
    padding: 11px;
    border-radius: 7px;
    font-size: 12px;
}

.detail-description {
    font-size: 13px;
    line-height: 1.8;
    margin-bottom: 22px;
}

#detailWhatsApp {
    width: 100%;
}

body.detail-open {
    overflow: hidden;
}

@media (max-width: 700px) {
    .detail-modal {
        padding: 10px;
        align-items: flex-start;
    }

    .detail-panel {
        grid-template-columns: 1fr;
        max-height: none;
        margin: auto 0;
    }

    .detail-gallery {
        padding: 12px;
    }

    #detailMainImage {
        height: 240px;
    }

    .detail-thumbnails img {
        height: 70px;
    }

    .detail-information {
        padding: 15px 20px 24px;
    }

    .detail-information h2 {
        font-size: 23px;
    }

    .detail-price {
        font-size: 21px;
    }
}

