:root{--navy:#0b1424;--navy2:#13213b;--gold:#F2B01E;--gold2:#d99a0b;--ink:#1b2333;--soft:#4a5568;--mut:#6b7689;--bg:#ffffff;--bg2:#f5f7fb;--line:#e3e8f0;--r:16px;--sh:0 10px 30px rgba(11,20,36,.08);--fh:"Sora",system-ui,sans-serif;--fb:"Manrope",system-ui,sans-serif}
*{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;font:16px/1.65 var(--fb);color:var(--ink);background:var(--bg)}
img{max-width:100%;height:auto;display:block}
a{color:inherit}
h1,h2,h3{font-family:var(--fh);line-height:1.2;color:var(--navy);margin:0 0 .5em;letter-spacing:-.01em}
h1{font-size:clamp(30px,5vw,52px)}h2{font-size:clamp(24px,3.2vw,36px)}h3{font-size:19px}
p{margin:0 0 1em}
.wrap{width:min(1160px,100% - 32px);margin-inline:auto}
.skip{position:absolute;left:-999px;top:0;background:var(--gold);color:var(--navy);padding:8px 14px;z-index:100;font-weight:700}.skip:focus{left:8px}
:focus-visible{outline:3px solid var(--gold);outline-offset:2px}

/* header */
.hd{position:sticky;top:0;z-index:50;background:rgba(11,20,36,.96);backdrop-filter:blur(8px);color:#fff;border-bottom:1px solid rgba(255,255,255,.06)}
.hd .wrap{display:flex;align-items:center;justify-content:space-between;gap:16px;height:70px}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:#fff}
.brand img{width:40px;height:40px;object-fit:contain}
.brand b{font:700 17px/1 var(--fh);letter-spacing:.08em;display:block}.brand i{font-style:normal;color:var(--gold);font-size:10px;letter-spacing:.34em;font-weight:700}
.nav{display:flex;align-items:center;gap:4px}
.nav a{text-decoration:none;color:#d6dcea;font-weight:600;font-size:15px;padding:8px 12px;border-radius:10px}
.nav a:hover,.nav a[aria-current=page]{color:#fff;background:rgba(255,255,255,.07)}
.nav .btn{margin-left:8px}
.mt{display:none;background:none;border:0;color:#fff;padding:8px;cursor:pointer}
@media(max-width:980px){.mt{display:block}.nav{position:fixed;inset:70px 0 auto 0;background:var(--navy);flex-direction:column;align-items:stretch;padding:12px 16px 20px;gap:2px;transform:translateY(-120%);transition:transform .25s;box-shadow:0 20px 40px rgba(0,0,0,.3);max-height:calc(100vh - 70px);overflow:auto}.nav.open{transform:none}.nav a{padding:12px}.nav .btn{margin:8px 0 0;text-align:center}}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;background:var(--gold);color:#1a1405!important;font-weight:800;text-decoration:none;border:0;border-radius:12px;padding:13px 22px;font:800 15px/1.2 var(--fb);cursor:pointer;transition:transform .15s,filter .15s}
.btn:hover{filter:brightness(1.05);transform:translateY(-1px)}
.btn.ghost{background:transparent;color:#fff!important;box-shadow:inset 0 0 0 2px rgba(255,255,255,.35)}
.btn.line{background:#fff;color:var(--navy)!important;box-shadow:inset 0 0 0 2px var(--line)}
.btn.sm{padding:9px 14px;font-size:14px}
.btn svg{width:18px;height:18px}

/* hero */
.hero{background:radial-gradient(900px 500px at 85% -10%,#1e3156 0,transparent 60%),var(--navy);color:#dfe5f1;padding:72px 0 80px;position:relative;overflow:hidden}
.hero:after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(115deg,transparent 0 38px,rgba(255,255,255,.025) 38px 39px);pointer-events:none}
.hero .wrap{position:relative;z-index:1;display:grid;grid-template-columns:1.15fr .85fr;gap:48px;align-items:center}
.hero h1{color:#fff}.hero h1 em{font-style:normal;color:var(--gold)}
.hero p.lead{font-size:18px;color:#c3cbdb;max-width:600px}
.eyebrow{display:inline-block;color:var(--gold);font-weight:800;font-size:13px;letter-spacing:.16em;text-transform:uppercase;margin-bottom:14px}
.cta{display:flex;flex-wrap:wrap;gap:12px;margin-top:26px}
.ticks{list-style:none;padding:0;margin:26px 0 0;display:flex;flex-wrap:wrap;gap:10px 22px;color:#c3cbdb;font-size:14.5px}
.ticks li{display:flex;align-items:center;gap:8px}.ticks li:before{content:"";width:18px;height:18px;border-radius:50%;background:var(--gold) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230b1424' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12l5 5 9-10'/%3E%3C/svg%3E") center/12px no-repeat;flex:none}
.hcard{background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.1);border-radius:22px;padding:26px}
.hcard h2{color:#fff;font-size:20px}
.hcard .row{display:flex;justify-content:space-between;padding:10px 0;border-bottom:1px solid rgba(255,255,255,.08);font-size:15px}.hcard .row b{color:#fff}
.hcard small{display:block;color:#93a1b8;margin-top:10px;font-size:13px}
@media(max-width:900px){.hero .wrap{grid-template-columns:1fr}.hero{padding:48px 0 56px}}

/* page head */
.ph{background:var(--navy);color:#c3cbdb;padding:46px 0 42px}
.ph h1{color:#fff;font-size:clamp(28px,4.4vw,44px)}.ph p{max-width:720px;font-size:17px;margin:0}
.crumb{font-size:13.5px;margin-bottom:12px;color:#93a1b8}.crumb a{color:#c3cbdb;text-decoration:none}.crumb a:hover{color:var(--gold)}

/* sections */
section.s{padding:76px 0}section.s.alt{background:var(--bg2)}
.sh{max-width:720px;margin-bottom:34px}.sh.c{text-align:center;margin-inline:auto}
.sh p{color:var(--soft);font-size:17px}
.grid{display:grid;gap:20px}.g2{grid-template-columns:repeat(2,minmax(0,1fr))}.g3{grid-template-columns:repeat(3,minmax(0,1fr))}.g4{grid-template-columns:repeat(4,minmax(0,1fr))}
@media(max-width:900px){.g3,.g4{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:620px){.g2,.g3,.g4{grid-template-columns:1fr}section.s{padding:54px 0}}
.card{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:24px;box-shadow:var(--sh)}
.card p{color:var(--soft);margin:0}
a.card{text-decoration:none;display:flex;flex-direction:column;gap:6px;transition:transform .2s,box-shadow .2s}
a.card:hover{transform:translateY(-3px);box-shadow:0 16px 40px rgba(11,20,36,.14)}
.ic{width:50px;height:50px;border-radius:14px;background:var(--navy);display:grid;place-items:center;margin-bottom:10px}.ic svg{width:26px;height:26px;stroke:var(--gold)}
.more{margin-top:auto;padding-top:10px;color:var(--gold2);font-weight:800;font-size:14.5px}
.stat{text-align:center}.stat b{display:block;font:800 clamp(30px,4vw,42px)/1.1 var(--fh);color:var(--navy)}.stat span{color:var(--soft);font-size:15px}
.steps{counter-reset:s;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:16px}
.steps li{list-style:none;counter-increment:s;background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:20px}
.steps li:before{content:counter(s,decimal-leading-zero);display:block;font:800 26px/1 var(--fh);color:var(--gold);margin-bottom:10px}
.steps h3{font-size:16.5px}.steps p{font-size:14.5px;color:var(--soft);margin:0}
@media(max-width:980px){.steps{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:560px){.steps{grid-template-columns:1fr}}
ol.steps{padding:0;margin:0}

/* portfolio */
.chips{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:22px}
.chip{border:1px solid var(--line);background:#fff;border-radius:999px;padding:8px 16px;font:700 14px var(--fb);color:var(--soft);cursor:pointer}
.chip[aria-pressed=true]{background:var(--navy);color:#fff;border-color:var(--navy)}
.pf{display:flex;flex-direction:column;overflow:hidden;padding:0}
.pf .th{aspect-ratio:16/9;background:linear-gradient(135deg,#13213b,#0b1424);position:relative;display:grid;place-items:center}
.pf .th svg{width:56px;height:56px;stroke:var(--gold);opacity:.9}
.pf .th .tag{position:absolute;left:12px;top:12px;background:var(--gold);color:var(--navy);font-weight:800;font-size:12px;padding:4px 10px;border-radius:999px}
.pf .bd{padding:18px 20px 20px;display:flex;flex-direction:column;gap:6px;flex:1}
.pf h3{font-size:16.5px;margin:0}.pf .meta{color:var(--mut);font-size:13.5px}
.pf[hidden]{display:none}

/* calculator & forms */
.form{display:grid;gap:14px}
.fr{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}@media(max-width:620px){.fr{grid-template-columns:1fr}}
label.f{display:grid;gap:6px;font-weight:700;font-size:14.5px;color:var(--navy)}
label.f small{font-weight:500;color:var(--mut)}
input,select,textarea{font:inherit;color:var(--ink);background:#fff;border:1.5px solid var(--line);border-radius:12px;padding:12px 14px;width:100%}
input:focus,select:focus,textarea:focus{border-color:var(--gold);outline:none;box-shadow:0 0 0 3px rgba(242,176,30,.25)}
.seg{display:flex;flex-wrap:wrap;gap:8px}.seg label{position:relative}.seg input{position:absolute;opacity:0;pointer-events:none}
.seg span{display:inline-block;border:1.5px solid var(--line);border-radius:12px;padding:10px 16px;font-weight:700;font-size:14.5px;cursor:pointer;background:#fff}
.seg input:checked+span{background:var(--navy);color:#fff;border-color:var(--navy)}
.seg input:focus-visible+span{outline:3px solid var(--gold)}
.res{background:var(--navy);color:#c3cbdb;border-radius:20px;padding:26px;position:sticky;top:90px}
.res h2{color:#fff;font-size:20px}.res .big{font:800 clamp(28px,4vw,38px)/1.15 var(--fh);color:var(--gold);margin:6px 0}
.res .row{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid rgba(255,255,255,.08);font-size:14.5px}.res .row b{color:#fff;white-space:nowrap}
.res small{display:block;color:#93a1b8;font-size:13px;margin-top:12px}
.calc{display:grid;grid-template-columns:1.1fr .9fr;gap:28px;align-items:start}@media(max-width:900px){.calc{grid-template-columns:1fr}.res{position:static}}

/* faq */
details{background:#fff;border:1px solid var(--line);border-radius:14px;padding:4px 20px;margin-bottom:10px}
summary{cursor:pointer;font-weight:800;color:var(--navy);padding:14px 0;list-style:none;display:flex;justify-content:space-between;gap:12px}
summary::-webkit-details-marker{display:none}summary:after{content:"+";color:var(--gold2);font-size:22px;line-height:1}
details[open] summary:after{content:"–"}details p{color:var(--soft)}

/* article */
.art{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:44px;align-items:start}
@media(max-width:900px){.art{grid-template-columns:minmax(0,1fr)}}
.prose{font-size:17px}.prose h2{font-size:26px;margin-top:1.6em}.prose h3{font-size:20px;margin-top:1.3em}
.prose ul,.prose ol{padding-left:22px}.prose li{margin-bottom:.4em}
.prose table{width:100%;border-collapse:collapse;margin:1em 0 1.4em;font-size:15.5px;display:block;overflow-x:auto}
.prose th,.prose td{border:1px solid var(--line);padding:10px 12px;text-align:left}.prose th{background:var(--bg2);color:var(--navy)}
.prose .note{background:#fff8e6;border-left:4px solid var(--gold);padding:14px 18px;border-radius:10px;font-size:15.5px}
.side{position:sticky;top:90px;display:grid;gap:16px}
.byline{color:var(--mut);font-size:14px;margin-top:10px}

/* cta band */
.band{background:linear-gradient(120deg,var(--navy),#1a2c4f);color:#c3cbdb;border-radius:24px;padding:40px;display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap}
.band h2{color:#fff;margin:0 0 6px}.band p{margin:0}

/* footer */
.ft{background:var(--navy);color:#a9b4c8;padding:56px 0 26px;font-size:15px}
.ft .grid{grid-template-columns:1.4fr 1fr 1fr 1.2fr;gap:30px}@media(max-width:900px){.ft .grid{grid-template-columns:1fr 1fr}}@media(max-width:560px){.ft .grid{grid-template-columns:1fr}}
.ft h3{color:#fff;font-size:15px;letter-spacing:.06em;text-transform:uppercase}
.ft a{color:#c9d2e3;text-decoration:none}.ft a:hover{color:var(--gold)}
.ft ul{list-style:none;padding:0;margin:0;display:grid;gap:8px}
.ft .cp{border-top:1px solid rgba(255,255,255,.08);margin-top:36px;padding-top:20px;display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px;font-size:13.5px}

/* whatsapp float */
.wa{position:fixed;right:18px;bottom:18px;z-index:60;width:58px;height:58px;border-radius:50%;background:#25D366;display:grid;place-items:center;box-shadow:0 10px 28px rgba(0,0,0,.25);transition:transform .2s}
.wa:hover{transform:scale(1.06)}.wa svg{width:30px;height:30px;fill:#fff}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}

/* --- perbaikan tampilan HP (v3) --- */
.prose td{overflow-wrap:anywhere}.prose th{white-space:nowrap}.prose table.dl th{width:1%}
.pf h2{font-size:16.5px;margin:0}
.prose table.dl{display:table;width:100%}
.res .row span{white-space:nowrap}.res .row b{white-space:normal;overflow-wrap:anywhere;text-align:right}
.res .row b a{overflow-wrap:anywhere}
.pf .th.k-rumah{background:linear-gradient(135deg,#1b2d4f,#0b1424)}.pf .th.k-komersial{background:linear-gradient(135deg,#13213b,#1d1a10)}.pf .th.k-pemerintah{background:linear-gradient(135deg,#132b33,#0b1424)}
@media(max-width:900px){.g3,.g4{grid-template-columns:repeat(2,minmax(0,1fr))}.ft .grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:620px){
 .g2,.g3,.g4,.ft .grid,.fr{grid-template-columns:minmax(0,1fr)}
 .prose table.dl,.prose table.dl tbody,.prose table.dl tr,.prose table.dl th,.prose table.dl td{display:block;width:auto}
 .prose table.dl tr{border:1px solid var(--line);border-radius:10px;margin-bottom:8px;overflow:hidden}
 .prose table.dl th,.prose table.dl td{border:0;padding:8px 12px}
 .prose table.dl th{background:var(--bg2);font-size:13px;padding-bottom:4px}
 .prose table{font-size:14px}
 .pf .th{aspect-ratio:auto;height:96px}.pf .th svg{width:38px;height:38px}
 .pf h3,.pf h2{font-size:16px}
 .card{padding:20px}.card.pf{padding:0}
 .band{padding:28px 22px}
 .wa{width:52px;height:52px;right:14px;bottom:14px}.wa svg{width:27px;height:27px}
 .hero p.lead{font-size:16.5px}
 .ph{padding:36px 0 34px}.ph p{font-size:16px}
}

/* --- portofolio dengan foto (v4) --- */
a.card.pf{color:inherit}
.pf .th{overflow:hidden}
.pf .th img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .35s}
a.pf:hover .th img{transform:scale(1.04)}
.pf .th .tag,.pf .th .cnt{z-index:1}
.pf .th .cnt{position:absolute;right:12px;bottom:12px;background:rgba(11,20,36,.75);color:#fff;font-size:12px;font-weight:700;padding:4px 10px;border-radius:999px}
.gal{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.gal a{display:block;border-radius:12px;overflow:hidden;aspect-ratio:4/3;background:var(--bg2)}
.gal a.big{grid-column:1/-1;aspect-ratio:16/9}
.gal img{width:100%;height:100%;object-fit:cover;transition:transform .3s}.gal a:hover img{transform:scale(1.03)}
.pfe{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;min-height:260px;background:linear-gradient(135deg,#13213b,#0b1424);color:#c3cbdb;text-align:center}
.pfe svg{width:64px;height:64px;stroke:var(--gold)}.pfe p{color:#c3cbdb}
.lb{position:fixed;inset:0;z-index:200;background:rgba(5,9,18,.94);display:flex;align-items:center;justify-content:center}
.lb[hidden]{display:none}
.lb img{max-width:min(1200px,94vw);max-height:84vh;border-radius:8px;box-shadow:0 20px 60px rgba(0,0,0,.5)}
.lb button{position:absolute;background:rgba(255,255,255,.12);border:0;color:#fff;width:48px;height:48px;border-radius:50%;font-size:26px;line-height:1;cursor:pointer}
.lb .x{top:16px;right:16px}.lb .pv{left:14px;top:50%;transform:translateY(-50%)}.lb .nx{right:14px;top:50%;transform:translateY(-50%)}
.lb .n{position:absolute;bottom:18px;left:0;right:0;text-align:center;color:#c3cbdb;font-size:14px}
@media(max-width:620px){.gal{grid-template-columns:repeat(2,minmax(0,1fr))}.pf .th.ph{height:auto;aspect-ratio:16/10}}
