/* ============================================================
   JASUTIM LAB — shared stylesheet
   DNA: OSF-inspired editorial restraint, off-white + emerald,
   big serif display, near-black on paper. Bahasa Indonesia.
   ============================================================ */

:root{
  --paper:#F7F5EF;
  --paper-2:#FCFBF7;
  --card:#FFFFFF;
  --ink:#17130E;
  --ink-soft:#4A453C;
  --muted:#7C7568;
  --line:#E6E0D1;
  --line-strong:#D8D1BF;
  --emerald:#1F6B46;
  --emerald-deep:#164D33;
  --emerald-soft:#E8F0E8;
  --amber-bg:#FBF1D6;
  --amber-ink:#876512;
  --amber-line:#EAD8A6;
  --shadow:0 1px 2px rgba(23,19,14,.04), 0 8px 30px rgba(23,19,14,.06);
  --maxw:1100px;
  --serif:"Fraunces",Georgia,"Times New Roman",serif;
  --sans:"Inter",system-ui,-apple-system,Segoe UI,Roboto,sans-serif;
}

*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;background:var(--paper);color:var(--ink);
  font-family:var(--sans);font-size:17px;line-height:1.65;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 24px}
a{color:var(--emerald);text-decoration:none}
a:hover{text-decoration:underline}

/* ---------- header ---------- */
.site-head{
  position:sticky;top:0;z-index:20;
  background:rgba(247,245,239,.86);backdrop-filter:saturate(180%) blur(10px);
  border-bottom:1px solid var(--line);
}
.site-head .wrap{display:flex;align-items:center;justify-content:space-between;height:64px}
.brand{display:flex;align-items:center;gap:11px;font-weight:600}
.brand img{width:34px;height:34px;display:block}
.brand .wm{font-family:var(--serif);font-weight:600;letter-spacing:.02em;font-size:18px;color:var(--ink)}
.brand .wm b{color:var(--emerald)}
.head-link{font-size:14px;color:var(--muted);font-weight:500}

/* ---------- hero ---------- */
.hero{padding:84px 0 52px;border-bottom:1px solid var(--line)}
.eyebrow{
  font-size:13px;letter-spacing:.16em;text-transform:uppercase;
  color:var(--emerald);font-weight:600;margin:0 0 20px;
}
.hero h1{
  font-family:var(--serif);font-weight:600;line-height:1.05;
  font-size:clamp(36px,6vw,68px);letter-spacing:-.015em;margin:0 0 22px;max-width:14ch;
}
.hero p.lead{font-size:clamp(18px,2.3vw,22px);color:var(--ink-soft);max-width:60ch;margin:0}

/* principle strip */
.principles{display:flex;flex-wrap:wrap;gap:10px;margin-top:34px}
.principles span{
  font-size:13px;color:var(--ink-soft);background:var(--paper-2);
  border:1px solid var(--line);border-radius:999px;padding:7px 14px;
}

/* ---------- section ---------- */
section{padding:64px 0}
.sec-label{
  font-size:13px;letter-spacing:.16em;text-transform:uppercase;
  color:var(--muted);font-weight:600;margin:0 0 28px;
  display:flex;align-items:center;gap:14px;
}
.sec-label::after{content:"";flex:1;height:1px;background:var(--line)}

/* ---------- project cards ---------- */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:22px}
.card{
  background:var(--card);border:1px solid var(--line);border-radius:16px;
  padding:28px;box-shadow:var(--shadow);display:flex;flex-direction:column;
  transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease;
}
.card.live:hover{transform:translateY(-3px);box-shadow:0 10px 40px rgba(23,19,14,.10);border-color:var(--line-strong)}
.card h3{font-family:var(--serif);font-weight:600;font-size:25px;line-height:1.15;margin:14px 0 8px;letter-spacing:-.01em}
.card .tag{color:var(--ink-soft);font-size:15px;margin:0 0 18px;flex:1}
.card .mini{display:flex;flex-wrap:wrap;gap:8px 18px;margin:0 0 20px;padding-top:16px;border-top:1px solid var(--line)}
.card .mini b{display:block;font-family:var(--serif);font-size:19px;color:var(--emerald);line-height:1.1}
.card .mini small{font-size:12px;color:var(--muted)}
.card .go{font-weight:600;font-size:15px;color:var(--emerald)}
.card.ghost{border-style:dashed;background:transparent;box-shadow:none;align-items:flex-start;justify-content:center;min-height:200px}
.card.ghost .gh{color:var(--muted);font-size:15px}
.card.ghost h3{color:var(--muted)}

/* status badge */
.badge{
  display:inline-flex;align-items:center;gap:7px;align-self:flex-start;
  font-size:12.5px;font-weight:600;letter-spacing:.02em;
  padding:5px 11px;border-radius:999px;border:1px solid;
}
.badge.konsep{background:var(--amber-bg);color:var(--amber-ink);border-color:var(--amber-line)}
.badge.pilot{background:var(--emerald-soft);color:var(--emerald-deep);border-color:#BFD8C6}
.badge .dot{width:7px;height:7px;border-radius:50%;background:currentColor;opacity:.8}

/* ---------- detail / article ---------- */
.crumb{padding:26px 0 0;font-size:14px;color:var(--muted)}
.art-head{padding:30px 0 44px;border-bottom:1px solid var(--line)}
.art-head h1{font-family:var(--serif);font-weight:600;font-size:clamp(32px,5vw,54px);line-height:1.06;letter-spacing:-.015em;margin:18px 0 16px;max-width:18ch}
.art-head .tagline{font-size:clamp(18px,2.2vw,22px);color:var(--ink-soft);font-style:italic;margin:0 0 18px;max-width:48ch}
.art-head .oneliner{font-size:16px;color:var(--muted);max-width:62ch;margin:0}

/* big stat band */
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:14px;overflow:hidden;margin:40px 0}
.stats .s{background:var(--paper-2);padding:24px 22px}
.stats .s b{display:block;font-family:var(--serif);font-size:clamp(26px,4vw,38px);color:var(--emerald);line-height:1;letter-spacing:-.01em}
.stats .s small{display:block;margin-top:8px;font-size:13px;color:var(--ink-soft)}

/* article body */
.art h2{font-family:var(--serif);font-weight:600;font-size:clamp(24px,3.4vw,33px);letter-spacing:-.01em;margin:8px 0 18px;display:flex;gap:14px;align-items:baseline}
.art h2 .n{font-size:15px;color:var(--emerald);font-family:var(--sans);font-weight:700;letter-spacing:.04em}
.art h3{font-family:var(--serif);font-size:21px;font-weight:600;margin:28px 0 10px}
.art p{margin:0 0 16px;color:var(--ink-soft)}
.art ul{margin:0 0 16px;padding-left:22px;color:var(--ink-soft)}
.art li{margin:7px 0}
.art strong{color:var(--ink)}

.block{padding:48px 0;border-bottom:1px solid var(--line)}
.block:last-of-type{border-bottom:none}

/* tables */
table{width:100%;border-collapse:collapse;margin:14px 0 22px;font-size:15px}
th,td{text-align:left;padding:12px 14px;border-bottom:1px solid var(--line);vertical-align:top}
thead th{font-size:12.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);font-weight:600;border-bottom:1.5px solid var(--line-strong)}
tbody tr:hover{background:var(--paper-2)}
td b,th b{color:var(--ink)}

/* callout */
.callout{
  border-left:3px solid var(--emerald);background:var(--emerald-soft);
  padding:18px 22px;border-radius:0 12px 12px 0;margin:22px 0;font-size:15px;color:var(--emerald-deep);
}
.callout.warn{border-left-color:#C99A1E;background:var(--amber-bg);color:var(--amber-ink)}
.callout strong{color:inherit}

/* SDG / chips */
.chips{display:flex;flex-wrap:wrap;gap:9px;margin:6px 0 18px}
.chip{font-size:13px;font-weight:600;background:var(--paper-2);border:1px solid var(--line);border-radius:8px;padding:6px 12px;color:var(--ink-soft)}
.chip b{color:var(--emerald)}

/* mermaid frame */
.diagram{background:var(--paper-2);border:1px solid var(--line);border-radius:16px;padding:26px;margin:22px 0;overflow-x:auto}
.diagram .mermaid{display:flex;justify-content:center;min-width:560px}
.cap{font-size:13.5px;color:var(--muted);margin:10px 2px 0}

/* fases timeline */
.phase{display:grid;grid-template-columns:auto 1fr;gap:0 22px}
.phase .pin{display:flex;flex-direction:column;align-items:center}
.phase .pin i{width:13px;height:13px;border-radius:50%;background:var(--emerald);margin-top:6px}
.phase .pin span{flex:1;width:2px;background:var(--line)}
.phase .pe{padding:0 0 26px}
.phase .pe h4{margin:0 0 4px;font-size:17px}
.phase .pe .when{font-size:13px;color:var(--emerald);font-weight:600}
.phase .pe p{margin:6px 0 0;font-size:15px}

/* footer */
.site-foot{border-top:1px solid var(--line);background:var(--paper-2);padding:48px 0;margin-top:20px}
.site-foot .wrap{display:flex;flex-wrap:wrap;gap:20px;justify-content:space-between;align-items:flex-start}
.site-foot .fb{display:flex;align-items:center;gap:11px}
.site-foot .fb img{width:30px;height:30px}
.site-foot p{margin:0;font-size:13.5px;color:var(--muted);max-width:46ch;line-height:1.6}
.site-foot a{color:var(--ink-soft)}

@media(max-width:640px){
  body{font-size:16px}
  .hero{padding:56px 0 40px}
  section{padding:48px 0}
  .card{padding:22px}
}

/* ============ visual blocks (v2: ekonomi & operasi) ============ */
.twocol{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin:22px 0}
@media(max-width:640px){.twocol{grid-template-columns:1fr}}
.asset{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:22px;box-shadow:var(--shadow)}
.asset .ic{font-size:26px;line-height:1}
.asset h4{font-family:var(--serif);font-size:20px;margin:10px 0 4px}
.asset .role{font-size:12.5px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--emerald)}
.asset p{font-size:14px;margin:8px 0 0}
.asset .big{font-family:var(--serif);font-size:30px;color:var(--ink);margin-top:12px;display:block;line-height:1}
.asset .big small{font-size:13px;color:var(--muted);font-family:var(--sans)}

/* segmented land bar */
.segbar{display:flex;height:62px;border-radius:12px;overflow:hidden;border:1px solid var(--line);margin:10px 0 6px;font-size:12.5px}
.segbar span{display:flex;flex-direction:column;justify-content:center;align-items:center;color:#fff;text-align:center;padding:4px;line-height:1.2}
.segbar span b{font-size:15px}
.seg-a{background:#1F6B46}.seg-b{background:#3A7D5C}.seg-c{background:#9BB0A2;color:#143A28!important}

/* labeled horizontal bars */
.bars{margin:18px 0}
.bar{display:grid;grid-template-columns:130px 1fr auto;align-items:center;gap:12px;margin:9px 0;font-size:14px}
.bar .lbl{color:var(--ink-soft)}
.bar .track{background:var(--paper);border:1px solid var(--line);border-radius:7px;height:26px;overflow:hidden}
.bar .fill{height:100%;background:linear-gradient(90deg,#1F6B46,#3A7D5C);border-radius:6px 0 0 6px}
.bar .val{font-weight:600;color:var(--ink);white-space:nowrap}

/* payback scenarios */
.pay{margin:16px 0}
.pay .row{display:grid;grid-template-columns:150px 1fr;gap:14px;align-items:center;margin:12px 0}
.pay .sc{font-size:13.5px}
.pay .sc b{display:block;font-size:15px;color:var(--ink)}
.pay .meter{position:relative;background:var(--paper);border:1px solid var(--line);border-radius:8px;height:38px}
.pay .mfill{position:absolute;top:0;left:0;height:100%;border-radius:7px 0 0 7px;display:flex;align-items:center;padding-left:12px;color:#fff;font-weight:600;font-size:14px;white-space:nowrap}
.pay .opt{background:linear-gradient(90deg,#1F6B46,#37805C)}
.pay .con{background:linear-gradient(90deg,#9B7A1E,#C2992B)}
.pay .scale{display:flex;justify-content:space-between;font-size:11.5px;color:var(--muted);margin-left:164px}

/* recommendation chip + tbd */
.rec{display:inline-flex;align-items:center;gap:9px;background:var(--emerald-soft);border:1px solid #BFD8C6;color:var(--emerald-deep);font-weight:600;padding:10px 16px;border-radius:10px;margin:6px 0 4px;font-size:15px}
.tbd{display:inline-flex;align-items:center;gap:7px;background:var(--amber-bg);border:1px dashed var(--amber-line);color:var(--amber-ink);font-weight:600;padding:8px 13px;border-radius:9px;font-size:13.5px}

/* ============ skala & margin cards ============ */
.scales{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:22px 0}
@media(max-width:640px){.scales{grid-template-columns:repeat(2,1fr)}}
.scard{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:20px 14px;text-align:center;box-shadow:var(--shadow);position:relative}
.scard.best{border:2px solid var(--emerald);box-shadow:0 10px 34px rgba(31,107,70,.16)}
.scard .sz{font-family:var(--serif);font-size:32px;color:var(--ink);line-height:1}
.scard .sz small{font-size:12px;color:var(--muted);font-family:var(--sans);display:block;margin-top:3px;letter-spacing:.04em;text-transform:uppercase}
.scard .net{margin:13px 0 0;font-size:12.5px;color:var(--ink-soft);line-height:1.3}
.scard .net b{display:block;font-size:17px;color:var(--emerald);font-family:var(--serif)}
.scard .net.sub{margin-top:9px;padding-top:9px;border-top:1px solid var(--line)}
.scard .net.sub b{color:var(--ink)}
.scard .net.sub b.loss{color:#B0451E}
.scard .vb{margin-top:13px;font-size:11.5px;font-weight:600;padding:4px 11px;border-radius:999px;display:inline-block}
.scard .vb.demo{background:var(--amber-bg);color:var(--amber-ink)}
.scard .vb.mid{background:var(--paper);color:var(--ink-soft);border:1px solid var(--line)}
.scard .vb.ok{background:var(--emerald-soft);color:var(--emerald-deep)}
.scard .ribbon{position:absolute;top:-11px;left:50%;transform:translateX(-50%);background:var(--emerald);color:#fff;font-size:11px;font-weight:600;padding:3px 11px;border-radius:999px;white-space:nowrap;box-shadow:0 2px 8px rgba(31,107,70,.3)}
.legend{font-size:12.5px;color:var(--muted);margin:0 0 4px;display:flex;gap:18px;flex-wrap:wrap}
.legend i{font-style:normal;color:var(--ink-soft)}

/* ============ mobile fixes (v5) ============ */
.rec{display:block} /* clean wrapping chip, no flex-item squeeze */
@media(max-width:640px){
  /* tables scroll inside their box instead of pushing the page sideways */
  .art table{display:block;width:100%;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
  /* land segbar: stack to readable full-width rows (proportion sugar dropped on mobile) */
  .segbar{flex-direction:column;height:auto}
  .segbar span{flex:1 1 auto!important;flex-direction:row;justify-content:space-between;align-items:center;width:100%;padding:12px 15px;text-align:left;gap:10px}
  .segbar span b{font-size:15px}
  /* payback scale labels: drop the desktop left-indent so they don't push width */
  .pay .scale{margin-left:0}
  .pay .row{grid-template-columns:120px 1fr}
}
