/* Bumi Emas — shared styles */

:root{
  --ink:#0E2419;
  --green:#14653A;
  --green-mid:#2E8B4F;
  --leaf:#8CC63F;
  --gold:#E39A0C;
  --blue:#1B6FB8;
  --paper:#FBFDFB;
  --mist:#EAF4EC;
  --muted:#5A6E60;
  --rule:rgba(20,101,58,.15);
  --rule-strong:rgba(20,101,58,.3);
  --shell:72rem;
  --ease-out-quart:cubic-bezier(.165,.84,.44,1);
  --ease-out-cubic:cubic-bezier(.215,.61,.355,1);
  --ease-in-out-cubic:cubic-bezier(.645,.045,.355,1);
  --shadow-sm:0 1px 2px rgba(14,36,25,.05),0 2px 6px rgba(14,36,25,.05);
  --shadow-md:0 2px 4px rgba(14,36,25,.05),0 8px 20px rgba(14,36,25,.07),0 16px 36px rgba(14,36,25,.05);
  --pad:clamp(1.25rem,4vw,2.5rem);
}

*,*::before,*::after{box-sizing:border-box}

html{
  scroll-behavior:smooth;
  -webkit-text-size-adjust:100%;
}

body{
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:"Karla",system-ui,-apple-system,"Segoe UI",sans-serif;
  font-size:clamp(1rem,.97rem + .15vw,1.06rem);
  line-height:1.65;
  -webkit-font-smoothing:antialiased;
}

img{max-width:100%;height:auto;display:block}
.hero-art img,.product-art img,.zone-art img{
  outline:1px solid rgba(14,36,25,.07);
  outline-offset:-1px;
}

a{color:var(--green);text-decoration-thickness:1px;text-underline-offset:.18em}
a:hover{color:var(--ink)}
a:focus-visible,button:focus-visible{
  outline:2px solid var(--gold);
  outline-offset:3px;
  border-radius:3px;
}

h1,h2,h3{
  font-family:"Bricolage Grotesque","Karla",sans-serif;
  font-weight:800;
  line-height:1.07;
  letter-spacing:-.028em;
  margin:0 0 .6em;
  text-wrap:balance;
}
h1{font-size:clamp(2.05rem,1.3rem + 2.9vw,3.25rem)}
h2{font-size:clamp(1.65rem,1.1rem + 2.1vw,2.5rem)}
h3{font-size:clamp(1.12rem,1rem + .5vw,1.35rem);font-weight:700;letter-spacing:-.018em}
p{margin:0 0 1.1em;max-width:62ch;text-wrap:pretty}

.shell{
  width:100%;
  max-width:var(--shell);
  margin-inline:auto;
  padding-inline:var(--pad);
}

.shell.narrow>*{max-width:50rem}

section{padding-block:clamp(3rem,7vw,5.5rem)}
section.tight{padding-block:clamp(2.25rem,5vw,3.5rem)}
.band-mist{background:var(--mist)}
.band-ink{background:var(--ink);color:#EAF4EC}
.band-ink h2,.band-ink h3{color:#fff}
.band-ink p{color:rgba(234,244,236,.82)}
.band-ink a{color:var(--leaf)}

.lede{
  font-size:clamp(1.06rem,1rem + .45vw,1.25rem);
  line-height:1.55;
  color:var(--muted);
  max-width:48ch;
}
.band-ink .lede{color:rgba(234,244,236,.8)}

/* ---------- header ---------- */
.site-head{
  position:sticky;
  top:0;
  z-index:50;
  background:rgba(251,253,251,.93);
  backdrop-filter:saturate(1.3) blur(10px);
  border-bottom:1px solid var(--rule);
}
.head-in{
  display:flex;
  align-items:center;
  gap:1rem;
  min-height:4.25rem;
}
.brand{display:flex;align-items:center;gap:.6rem;flex:none;text-decoration:none}
.brand img{width:auto;height:2.2rem}
.brand span{
  white-space:nowrap;
  font-family:"Bricolage Grotesque",sans-serif;
  font-weight:800;
  font-size:1.05rem;
  letter-spacing:-.02em;
  color:var(--green);
}
nav{margin-left:auto}
nav ul{
  display:flex;
  flex-wrap:wrap;
  gap:.15rem .35rem;
  list-style:none;
  margin:0;
  padding:0;
}
nav a{
  display:block;
  padding:.45rem .6rem;
  border-radius:6px;
  font-size:.92rem;
  font-weight:500;
  color:var(--ink);
  text-decoration:none;
}
nav a:hover{background:var(--mist);color:var(--green)}
nav a[aria-current="page"]{color:var(--green);font-weight:600;background:var(--mist)}

/* ---------- buttons ---------- */
.btn{
  display:inline-block;
  padding:.85rem 1.5rem;
  border-radius:999px;
  background:var(--green);
  color:#fff;
  font-weight:600;
  font-size:.97rem;
  text-decoration:none;
  border:1px solid var(--green);
  min-height:2.75rem;
  line-height:1.3;
  box-shadow:var(--shadow-sm);
  transition-property:background-color,border-color,color,scale,box-shadow;
  transition-duration:150ms;
  transition-timing-function:ease;
}
.btn:active{scale:.97}
.btn:hover{background:#0F5430;border-color:#0F5430;color:#fff}
.btn-ghost{
  background:transparent;
  color:var(--green);
  border-color:var(--rule-strong);
}
.btn-ghost:hover{background:var(--mist);color:var(--green);border-color:var(--green)}
.band-ink .btn-ghost{color:#EAF4EC;border-color:rgba(234,244,236,.35)}
.band-ink .btn-ghost:hover{background:rgba(255,255,255,.09);color:#fff}
.btn-row{display:flex;flex-wrap:wrap;gap:.7rem;align-items:center;margin-top:1.6rem}
.head-cta{flex:none}
.head-cta .btn{padding:.6rem 1.05rem;font-size:.9rem}

/* ---------- hero ---------- */
.hero{
  position:relative;
  overflow:hidden;
  isolation:isolate;
  padding-block:clamp(2.5rem,6vw,4.5rem);
  background:
    radial-gradient(44rem 26rem at 86% 4%, rgba(245,190,74,.2), transparent 60%),
    linear-gradient(176deg,var(--mist),var(--paper) 62%);
  border-bottom:1px solid var(--rule);
}
.hero-media{
  position:absolute;
  inset:0 0 0 44%;
  z-index:-1;
}
.hero-media img{
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:46% 60%;
  /* fade the photo into the page instead of laying a tinted panel over it,
     which leaves a visible seam where the two gradients meet */
  -webkit-mask-image:linear-gradient(90deg,transparent 0%,rgba(0,0,0,.28) 24%,rgba(0,0,0,.85) 48%,#000 62%);
  mask-image:linear-gradient(90deg,transparent 0%,rgba(0,0,0,.28) 24%,rgba(0,0,0,.85) 48%,#000 62%);
}
.hero-copy{max-width:34rem}
.hero-grid{
  display:grid;
  gap:clamp(1.75rem,4vw,3.25rem);
  align-items:center;
  grid-template-columns:1fr;
}
.hero-art img{border-radius:14px;width:100%}

/* one orchestrated page-load sequence, split and staggered */
.js .rise{opacity:0;transform:translateY(12px)}
.hero-ready .rise{
  animation:rise 620ms var(--ease-out-quart) forwards;
}
.hero-ready .rise:nth-child(1){animation-delay:40ms}
.hero-ready .rise:nth-child(2){animation-delay:140ms}
.hero-ready .rise:nth-child(3){animation-delay:240ms}
.hero-ready .rise:nth-child(4){animation-delay:340ms}
@keyframes rise{to{opacity:1;transform:translateY(0)}}
.tagline{
  font-family:"Bricolage Grotesque",sans-serif;
  font-style:italic;
  font-weight:600;
  font-size:1.02rem;
  color:var(--green-mid);
  margin:0 0 .9rem;
}

/* ---------- generic grids ---------- */
.grid{display:grid;gap:clamp(1.1rem,2.4vw,1.9rem)}
.g2{grid-template-columns:1fr}
.g3{grid-template-columns:1fr}
.g4{grid-template-columns:1fr}

/* ---------- problem list ---------- */
.issues{list-style:none;margin:0;padding:0;display:grid;gap:1.4rem}
.issues li{
  padding-left:1.4rem;
  border-left:2px solid var(--rule-strong);
}
.issues h3{margin-bottom:.3rem}
.issues p{margin:0;color:var(--muted);max-width:40ch}

/* ---------- mechanism timeline (the signature) ---------- */
.steps{
  list-style:none;
  margin:0;
  padding:0;
  display:grid;
  gap:0;
  counter-reset:step;
}
.step{
  position:relative;
  padding:2.1rem 1.5rem 2.1rem 0;
  border-top:2px solid var(--rule-strong);
  counter-increment:step;
}
.step::before{
  content:counter(step);
  display:block;
  font-family:"Bricolage Grotesque",sans-serif;
  font-weight:800;
  font-size:1.45rem;
  line-height:1;
  letter-spacing:-.02em;
  color:var(--leaf);
  margin-bottom:.6rem;
}
.step h3{margin-bottom:.35rem}
.step p{margin:0;color:var(--muted);max-width:34ch}
/* the last step's rule runs off the edge — the cleaning does not stop */
.step-open{
  border-top:0;
  background:linear-gradient(90deg,var(--green-mid) 0 18%,rgba(46,139,79,.25) 62%,rgba(46,139,79,0) 100%) top left/100% 2px no-repeat;
}
.step-open::before{color:var(--green-mid)}
.step-open h3{color:var(--green)}

.culture{
  position:relative;
  height:5.25rem;
  margin-top:1.15rem;
  overflow:hidden;
  border-radius:8px;
}
.culture svg{width:100%;height:100%;display:block}
.cell{
  transform-box:fill-box;
  transform-origin:center;
  animation:drift var(--dur,24s) var(--ease-in-out-cubic) var(--delay,0s) infinite;
  will-change:transform;
}
@keyframes drift{
  0%   {transform:translate(0,0) rotate(0deg)}
  25%  {transform:translate(14px,-6px) rotate(22deg)}
  50%  {transform:translate(30px,4px) rotate(-10deg)}
  75%  {transform:translate(16px,8px) rotate(14deg)}
  100% {transform:translate(0,0) rotate(0deg)}
}
.culture-note{
  margin:.55rem 0 0;
  font-size:.82rem;
  color:var(--green-mid);
  max-width:34ch;
}

/* ---------- interactive: where it goes ---------- */
.zones{
  display:grid;
  gap:clamp(1.25rem,3vw,2.25rem);
  grid-template-columns:1fr;
  align-items:start;
}
.zone-tabs{
  display:flex;
  flex-wrap:wrap;
  gap:.5rem;
  margin:0 0 1.5rem;
  padding:0;
  list-style:none;
}
.zone-tab{
  appearance:none;
  font:inherit;
  font-weight:600;
  font-size:.93rem;
  min-height:2.75rem;
  padding:.6rem 1.1rem;
  border:1px solid var(--rule-strong);
  border-radius:999px;
  background:transparent;
  color:var(--green);
  cursor:pointer;
  transition-property:background-color,border-color,color,scale;
  transition-duration:150ms;
  transition-timing-function:ease;
}
.zone-tab:hover{background:var(--mist)}
.zone-tab:active{scale:.97}
.zone-tab[aria-selected="true"]{
  background:var(--green);
  border-color:var(--green);
  color:#fff;
}
.zone-panel{
  display:none;
  background:#fff;
  border-radius:18px;
  padding:clamp(1.25rem,3vw,2rem);
  box-shadow:var(--shadow-md);
}
.zone-panel[data-active="true"]{
  display:grid;
  gap:clamp(1.1rem,2.5vw,2rem);
  grid-template-columns:1fr;
  animation:panel 260ms var(--ease-out-cubic) both;
}
@keyframes panel{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.zone-art{
  background:linear-gradient(170deg,var(--mist),#fff);
  border-radius:12px;
  padding:.75rem;
  align-self:start;
}
.zone-art img{border-radius:8px;margin-inline:auto;max-height:15rem;width:auto}
.zone-body h3{margin-bottom:.3rem}
.zone-use{font-weight:600;color:var(--green-mid);margin-bottom:.7rem;font-size:.95rem}
.zone-dose{
  margin:1rem 0 0;
  padding:.7rem .95rem;
  background:var(--mist);
  border-left:3px solid var(--leaf);
  border-radius:0 8px 8px 0;
  font-size:.9rem;
  color:var(--green);
}
.zone-dose strong{font-weight:700}

/* ---------- service steps (vertical, numbered) ---------- */
.flow{list-style:none;margin:0;padding:0;counter-reset:flow;display:grid;gap:0}
.flow li{
  counter-increment:flow;
  display:grid;
  grid-template-columns:2.9rem 1fr;
  gap:1.1rem;
  padding:1.5rem 0;
  border-bottom:1px solid var(--rule);
}
.flow li:first-child{border-top:1px solid var(--rule)}
.flow li::before{
  content:counter(flow);
  font-family:"Bricolage Grotesque",sans-serif;
  font-weight:800;
  font-size:1.5rem;
  line-height:1;
  color:var(--leaf);
  padding-top:.15rem;
}
.flow h3{margin-bottom:.2rem}
.flow p{margin:0;color:var(--muted)}

/* ---------- product ---------- */
.product{
  display:grid;
  gap:clamp(1.5rem,3.5vw,3rem);
  align-items:start;
  grid-template-columns:1fr;
  padding-block:clamp(2rem,4vw,3rem);
  border-top:1px solid var(--rule);
}
.product:first-of-type{border-top:0;padding-top:0}
.product-art{
  background:linear-gradient(170deg,var(--mist),#fff);
  border-radius:18px;
  padding:1.25rem;
  box-shadow:var(--shadow-sm);
}
.product-art img{border-radius:8px;margin-inline:auto;max-width:100%;max-height:30rem;width:auto}
.use-for{
  font-weight:600;
  color:var(--green);
  margin-bottom:.8rem;
}
.ticks{list-style:none;margin:0 0 1.3rem;padding:0;display:grid;gap:.7rem}
.ticks li{position:relative;padding-left:1.6rem;max-width:46ch}
.ticks li::before{
  content:"";
  position:absolute;
  left:0;
  top:.52em;
  width:.55rem;
  height:.55rem;
  border-radius:50% 50% 50% 0;
  transform:rotate(-45deg);
  background:linear-gradient(150deg,var(--leaf),var(--green-mid));
}
.sizes{
  display:inline-block;
  margin:0;
  padding:.35rem .85rem .35rem .75rem;
  background:var(--mist);
  border-left:3px solid var(--leaf);
  border-radius:0 4px 4px 0;
  font-size:.88rem;
  font-weight:600;
  color:var(--green);
}

.pcard{display:grid;gap:1rem;align-content:start}
.pcard .product-art{padding:1rem}
.pcard .product-art img{max-height:23rem}
.pcard h3{margin-bottom:.25rem}
.pcard p{margin:0 0 .4rem;color:var(--muted)}
.pcard .use-for{color:var(--green);margin-bottom:.5rem;font-size:.93rem}

/* ---------- spec table (safety) ---------- */
.spec-wrap{overflow-x:auto;margin-bottom:1.5rem}
table.spec{
  width:100%;
  min-width:34rem;
  border-collapse:collapse;
  font-size:.96rem;
}
table.spec th,table.spec td{
  text-align:left;
  padding:1rem .9rem 1rem 0;
  border-bottom:1px solid var(--rule);
  vertical-align:top;
}
table.spec thead th{
  font-family:"Bricolage Grotesque",sans-serif;
  font-size:.88rem;
  font-weight:700;
  color:var(--muted);
  border-bottom:2px solid var(--rule-strong);
  padding-bottom:.6rem;
}
table.spec tbody th{
  font-weight:700;
  color:var(--green);
  width:32%;
  font-family:"Bricolage Grotesque",sans-serif;
  font-size:1.02rem;
}
table.spec td:last-child{color:var(--muted);padding-right:0}

.note{
  font-size:.88rem;
  line-height:1.6;
  color:var(--muted);
  border-left:2px solid var(--rule-strong);
  padding-left:1rem;
  max-width:52ch;
}

/* ---------- strip of short claims ---------- */
.strip{
  list-style:none;
  margin:0;
  padding:0;
  display:grid;
  gap:1rem 1.75rem;
  grid-template-columns:1fr;
}
.strip li{
  border-top:2px solid var(--leaf);
  padding-top:.8rem;
  font-weight:600;
  color:var(--green);
  line-height:1.35;
}
.strip span{display:block;font-weight:400;font-size:.9rem;color:var(--muted);margin-top:.2rem}
.band-ink .strip li{border-top-color:var(--leaf);color:#fff}
.band-ink .strip span{color:rgba(234,244,236,.72)}

/* ---------- contact ---------- */
.contact-list{list-style:none;margin:0;padding:0;display:grid;gap:1.2rem}
.contact-list li{
  border-top:1px solid var(--rule);
  padding-top:1.1rem;
}
.contact-list .k{
  display:block;
  font-size:.86rem;
  color:var(--muted);
  margin-bottom:.15rem;
}
.contact-list .v{
  font-family:"Bricolage Grotesque",sans-serif;
  font-weight:700;
  font-size:1.18rem;
  letter-spacing:-.015em;
}
address{font-style:normal;color:var(--muted);line-height:1.7}

/* ---------- cta band ---------- */
.cta-band{
  background:linear-gradient(160deg,var(--green),#0C4A2A);
  color:#fff;
}
.cta-band h2{color:#fff;max-width:18ch}
.cta-band p{color:rgba(255,255,255,.84);max-width:46ch}
.cta-band .btn{background:#fff;color:var(--green);border-color:#fff}
.cta-band .btn:hover{background:var(--mist);color:var(--green);border-color:var(--mist)}
.cta-band .btn-ghost{background:transparent;color:#fff;border-color:rgba(255,255,255,.45)}
.cta-band .btn-ghost:hover{background:rgba(255,255,255,.12);color:#fff}

/* ---------- footer ---------- */
.site-foot{
  background:var(--ink);
  color:rgba(234,244,236,.72);
  font-size:.9rem;
  padding-block:clamp(2.5rem,5vw,3.5rem);
}
.site-foot a{color:rgba(234,244,236,.9)}
.site-foot a:hover{color:#fff}
.foot-grid{display:grid;gap:2rem;grid-template-columns:1fr}
.site-foot h3{
  color:#fff;
  font-size:.95rem;
  font-weight:700;
  margin-bottom:.7rem;
  letter-spacing:0;
}
.site-foot ul{list-style:none;margin:0;padding:0;display:grid;gap:.45rem}
.foot-brand{display:flex;align-items:center;gap:.6rem;margin-bottom:.9rem}
.site-foot img{height:2.4rem;width:auto;margin:0}
.foot-brand span{
  font-family:"Bricolage Grotesque",sans-serif;
  font-weight:800;
  font-size:1.08rem;
  letter-spacing:-.02em;
  color:#fff;
}
.foot-base{
  margin-top:2.5rem;
  padding-top:1.4rem;
  border-top:1px solid rgba(234,244,236,.16);
  font-size:.84rem;
  display:flex;
  flex-wrap:wrap;
  gap:.5rem 1.5rem;
  justify-content:space-between;
}

.skip{
  position:absolute;
  left:-9999px;
  background:var(--green);
  color:#fff;
  padding:.7rem 1.1rem;
  border-radius:0 0 8px 0;
  z-index:100;
}
.skip:focus{left:0;top:0;color:#fff}

/* ---------- responsive ---------- */
@media (min-width:40rem){
  .g2{grid-template-columns:repeat(2,1fr)}
  .strip{grid-template-columns:repeat(2,1fr)}
  .issues{grid-template-columns:repeat(2,1fr);gap:1.6rem 2rem}
  .foot-grid{grid-template-columns:1.4fr 1fr 1fr}
}

@media (min-width:52rem){
  .hero-grid{grid-template-columns:1.05fr .95fr}
  .product{grid-template-columns:.85fr 1.15fr}
  .product-alt .product-art{order:2}
  .g3{grid-template-columns:repeat(3,1fr)}
  .g4{grid-template-columns:repeat(4,1fr)}
  .strip{grid-template-columns:repeat(4,1fr)}
  .issues{grid-template-columns:repeat(4,1fr)}
  .steps{grid-template-columns:repeat(3,1fr);gap:0 1.75rem}
  .step{padding-right:0}
  .zones{grid-template-columns:15rem 1fr}
  .zone-tabs{flex-direction:column;margin:0}
  .zone-tab{text-align:left;border-radius:10px}
  .zone-panel[data-active="true"]{grid-template-columns:.8fr 1.2fr}
}

@media (max-width:51.9375rem){
  .hero{display:flex;flex-direction:column;padding-bottom:0}
  .hero>.shell{order:1}
  .hero-media{
    order:2;
    position:relative;
    inset:auto;
    z-index:0;
    height:14rem;
    margin-top:clamp(1.5rem,5vw,2.25rem);
    overflow:hidden;
  }
  .hero-media img{
    -webkit-mask-image:linear-gradient(180deg,transparent 0%,rgba(0,0,0,.5) 14%,#000 36%);
    mask-image:linear-gradient(180deg,transparent 0%,rgba(0,0,0,.5) 14%,#000 36%);
    object-position:center 62%;
  }
  .head-in{flex-wrap:wrap;min-height:0;padding-block:.75rem;gap:.6rem 1rem}
  nav{margin-left:0;order:3;width:100%}
  nav ul{gap:.1rem}
  nav a{padding:.4rem .55rem;font-size:.88rem}
  .head-cta{margin-left:auto}
}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .btn,.zone-tab,nav a,a{transition:none}
  .js .rise,.hero-ready .rise{animation:none;opacity:1;transform:none}
  .cell{animation:none}
  .zone-panel[data-active="true"]{animation:none}
  .btn:active,.zone-tab:active{scale:1}
}
