/* PT Jendela Nusantara Sakti — design tokens taken from the approved canvas */
:root{
  /* Brand colours sampled from the company logo (src/logo.png):
     ground #1B2946 · deep blue #0E5088 · bright blue #0C79A4
     green #33A450 · orange #E17010. Text pairings are contrast-checked. */
  --bg:#F3F6FA; --surface:#FFFFFF; --ink:#14203A; --muted:#55637D;
  --brand:#0E5088; --brand-dark:#0A3A66;
  --band:#1B2946; --band-line:#38486D; --ink-deep:#121B31;
  --accent:#B4540A; --accent-light:#F0913F; --support:#2E9448;
  --line:#DBE2ED; --line-soft:#E6EBF4;
  --on-dark:#F1F4F9; --on-dark-muted:#B9C4D8; --on-dark-dim:#A3B0C8;
  --maxw:1240px; --pad:64px; --radius:16px;
  --serif:"Instrument Serif",Georgia,"Times New Roman",serif;
  --sans:"Plus Jakarta Sans","Segoe UI",system-ui,-apple-system,sans-serif;
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);
  font-size:17px;line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
img{max-width:100%;height:auto;display:block}
a{color:var(--brand)}
a:hover{color:var(--brand-dark)}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}

.serif{font-family:var(--serif);font-weight:400;letter-spacing:-0.005em}
.wrap{max-width:var(--maxw);margin:0 auto;padding-left:var(--pad);padding-right:var(--pad)}
.sec{padding-block:96px}
.sec--tight{padding-block:72px}
.eyebrow{font-size:13px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin:0}
.lead{font-size:19px;line-height:1.6;color:var(--muted);margin:0}
.muted{color:var(--muted)}
.stack{display:flex;flex-direction:column}
.gap-8{gap:8px}.gap-10{gap:10px}.gap-14{gap:14px}.gap-16{gap:16px}.gap-20{gap:20px}
.gap-24{gap:24px}.gap-32{gap:32px}.gap-48{gap:48px}.gap-56{gap:56px}

h1,h2,h3{margin:0;font-family:var(--serif);font-weight:400;line-height:1.05}
h1{font-size:76px;line-height:1.02;letter-spacing:-0.01em}
h2{font-size:52px}
h3{font-size:32px}
p{margin:0}
em{font-style:italic;color:var(--brand)}

/* ---------- header ---------- */
.site-header{border-bottom:1px solid var(--line);background:var(--bg);position:sticky;top:0;z-index:50}
.site-header__inner{display:flex;align-items:center;justify-content:space-between;gap:24px;padding-block:18px}
.brand{display:flex;align-items:center;gap:12px;text-decoration:none;color:var(--ink);flex-shrink:0}
.brand__mark{width:36px;height:36px;flex-shrink:0;border-radius:9px;display:block}
.brand__name{font-weight:700;font-size:15px;letter-spacing:.02em;line-height:1.2}
.navlinks{display:flex;align-items:center;gap:26px;font-size:14px;font-weight:500}
.navlinks a{color:var(--ink);text-decoration:none;padding-block:6px;border-bottom:1.5px solid transparent}
.navlinks a:hover{border-bottom-color:var(--accent)}
.navlinks a[aria-current="page"]{border-bottom-color:var(--brand);color:var(--brand)}
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:0 24px;
  border-radius:999px;font-size:15px;font-weight:600;text-decoration:none;border:1px solid transparent;
  transition:background-color .15s ease,color .15s ease,border-color .15s ease}
.btn--sm{min-height:44px;padding:0 20px;font-size:14px}
.btn--primary{background:var(--brand);color:#fff}
.btn--primary:hover{background:var(--brand-dark);color:#fff}
.btn--ghost{border-color:var(--ink);color:var(--ink)}
.btn--ghost:hover{background:var(--ink);color:var(--bg)}
.btn--light{background:var(--on-dark);color:var(--ink)}
.btn--light:hover{background:#fff;color:var(--ink)}
.btn--outline-light{border-color:var(--on-dark);color:var(--on-dark)}
.btn--outline-light:hover{background:var(--on-dark);color:var(--ink)}
.header-cta{display:flex;align-items:center;gap:14px}
.menu-toggle{display:none}

/* ---------- hero ---------- */
.hero{padding-top:104px;padding-bottom:88px}
.hero--page{padding-top:80px;padding-bottom:56px;border-bottom:1px solid var(--line)}
.hero__body{display:flex;flex-direction:column;gap:28px;max-width:940px}
.hero--page h1{font-size:60px}
.btnrow{display:flex;flex-wrap:wrap;gap:12px;align-items:center}

/* ---------- layout blocks ---------- */
.band{border-top:1px solid var(--line)}
.band--white{background:var(--surface)}
.band--navy{background:var(--band);color:var(--on-dark);border-top:none}
.band--navy h2,.band--navy h3{color:var(--on-dark)}
.band--navy .eyebrow{color:var(--accent-light)}
.band--navy em{color:var(--accent-light)}

.g2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:64px}
.g2--tight{gap:32px}
.g3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}
.g3--wide{gap:48px}
.g5{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:24px}
.split-head{display:flex;justify-content:space-between;align-items:flex-end;gap:32px;flex-wrap:wrap}
.split-head p{max-width:460px;font-size:16px;line-height:1.65;color:var(--muted)}
.prose{display:flex;flex-direction:column;gap:18px;font-size:17px;line-height:1.75;color:var(--muted)}
.prose strong{color:var(--ink);font-weight:600}
.band--navy .prose{color:var(--on-dark-muted)}
.band--navy .prose strong{color:var(--on-dark)}

/* ---------- cards ---------- */
.card{display:flex;flex-direction:column;gap:14px;padding:32px;border:1px solid var(--line);
  border-radius:var(--radius);background:transparent}
.card--filled{background:var(--bg);border-color:transparent}
.card--white{background:var(--surface);border-color:var(--line)}
.card--navy{background:var(--band);border-color:transparent;color:var(--on-dark)}
.card--navy h3{color:var(--on-dark)}
.card--navy .card__desc,.card--navy .card__list{color:var(--on-dark-muted)}
.card--navy .card__list{border-top-color:var(--band-line)}
.card__tag{font-size:12px;font-weight:600;letter-spacing:.08em;color:var(--muted)}
.card--navy .card__tag{color:var(--accent-light)}
.card__kicker{font-size:13px;font-weight:600;color:var(--accent)}
.card--navy .card__kicker{color:var(--accent-light)}
.card__desc{font-size:15px;line-height:1.6;color:var(--muted)}
.card__rule{height:1px;background:var(--line);border:0;margin:2px 0}
.card__list{list-style:none;margin:0;padding:16px 0 0;display:flex;flex-direction:column;gap:10px;
  font-size:15px;line-height:1.5;border-top:1px solid var(--line)}
.card__list li{position:relative;padding-left:18px}
.card__list li::before{content:"";position:absolute;left:0;top:.62em;width:6px;height:6px;
  border-radius:50%;background:var(--support)}
.card--navy .card__list li::before{background:var(--accent-light)}

/* ---------- list rows ---------- */
.rows{display:flex;flex-direction:column}
.rows__item{display:flex;flex-direction:column;gap:6px;padding-block:22px;border-top:1px solid var(--line)}
.rows__item:last-child{border-bottom:1px solid var(--line)}
.rows__title{font-size:18px;font-weight:600}
.rows__desc{font-size:15px;line-height:1.65;color:var(--muted)}

.values{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:32px;
  padding-top:32px;border-top:1px solid var(--band-line)}
.value__name{font-size:17px;font-weight:600}
.value__desc{font-size:15px;line-height:1.6;color:var(--on-dark-muted)}
.mission{display:flex;flex-direction:column;gap:10px}
.mission__num{font-family:var(--serif);font-size:30px;color:var(--accent-light);line-height:1}
.mission__name{font-size:16px;font-weight:600}
.mission__desc{font-size:14px;line-height:1.6;color:var(--on-dark-muted)}

/* ---------- acronym ---------- */
.acro__word{font-family:var(--serif);font-size:34px;letter-spacing:.06em;padding-bottom:12px;
  border-bottom:1px solid var(--ink)}
.acro__intro{font-size:14px;line-height:1.55;color:var(--muted)}
.acro__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px;
  font-size:15px;line-height:1.45}
.acro__list strong{font-weight:700}

/* ---------- people ---------- */
.person__head{display:flex;align-items:center;gap:18px}
.person__avatar{width:72px;height:72px;border-radius:999px;background:var(--line-soft);
  display:flex;align-items:center;justify-content:center;flex-shrink:0;
  font-family:var(--serif);font-size:26px;color:var(--brand);
  overflow:hidden;position:relative}
.person__avatar img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.person__name{font-family:var(--serif);font-size:30px;line-height:1}
.person__role{font-size:14px;font-weight:600;color:var(--accent)}

/* ---------- contact ---------- */
.contact-block{display:flex;flex-direction:column;gap:10px}
.contact-block__label{font-size:12px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;
  color:var(--accent-light)}
.contact-block__body{font-size:16px;line-height:1.7}
.contact-block a{color:var(--on-dark);text-decoration:none;border-bottom:1px solid var(--band-line)}
.contact-block a:hover{color:#fff;border-bottom-color:var(--accent-light)}
.break{word-break:break-word;overflow-wrap:anywhere}

/* ---------- footer ---------- */
.site-footer{background:var(--ink-deep);color:var(--on-dark);padding-top:72px;padding-bottom:40px}
.site-footer a{color:var(--on-dark-dim);text-decoration:none}
.site-footer a:hover{color:#fff}
.footer-grid{display:grid;grid-template-columns:1.4fr 1fr 1.2fr;gap:48px}
.footer-head{display:flex;align-items:center;gap:12px;color:var(--on-dark);font-weight:700;font-size:15px}
.footer-col__label{font-size:12px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;
  color:var(--accent-light);margin-bottom:14px}
.footer-nav{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px;font-size:15px}
.footer-bar{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-top:56px;
  padding-top:24px;border-top:1px solid #2A3654;font-size:13px;color:var(--on-dark-dim)}
.skip{position:absolute;left:-9999px}
.skip:focus{position:static;display:inline-block;margin:8px;padding:8px 14px;background:var(--brand);color:#fff;border-radius:6px}

/* ---------- responsive ---------- */
@media (max-width:1080px){
  :root{--pad:40px}
  h1{font-size:60px}h2{font-size:42px}
  .hero--page h1{font-size:48px}
  .g2{gap:40px}
  .g5{grid-template-columns:repeat(3,minmax(0,1fr));gap:32px}
  .navlinks{gap:18px;font-size:13px}
}
@media (max-width:900px){
  .navlinks,.header-cta > .btn{display:none}
  .menu-toggle{display:block}
  .site-header__inner{padding-block:14px}
  .g2,.g3,.g5,.values,.footer-grid{grid-template-columns:minmax(0,1fr)}
  .g3--wide{gap:40px}
  .footer-grid{gap:36px}
  .rows__item:last-child{border-bottom:none}
}
@media (max-width:640px){
  :root{--pad:22px}
  body{font-size:16px}
  .sec{padding-block:64px}
  .sec--tight{padding-block:48px}
  .hero{padding-top:64px;padding-bottom:56px}
  .hero--page{padding-top:56px;padding-bottom:44px}
  h1,.hero--page h1{font-size:40px}
  h2{font-size:32px}
  h3{font-size:26px}
  .lead{font-size:17px}
  .card{padding:24px}
  .btn{width:100%}
  .btnrow{flex-direction:column;align-items:stretch}
  .split-head{align-items:flex-start}
}


/* ---------- language switch ---------- */
.lang{display:inline-flex;align-items:center;gap:2px;border:1px solid var(--line);
  border-radius:999px;padding:3px;background:var(--surface);flex-shrink:0;
  align-self:flex-start;width:max-content}
.lang a{display:inline-flex;align-items:center;justify-content:center;min-width:38px;height:32px;
  padding:0 10px;border-radius:999px;font-size:12px;font-weight:700;letter-spacing:.04em;
  text-decoration:none;color:var(--muted)}
.lang a:hover{color:var(--ink)}
.lang a[aria-current="true"]{background:var(--brand);color:#fff}
.menu__panel .lang{align-self:center;margin-top:10px}
.site-footer .lang{background:transparent;border-color:#2A3654}
.site-footer .lang a{color:var(--on-dark-dim)}
.site-footer .lang a:hover{color:#fff}
.site-footer .lang a[aria-current="true"]{background:var(--brand);color:#fff}
@media (max-width:900px){.header-cta > .lang{display:none}}

/* ---------- mobile menu (no-JS, <details>) ---------- */
.menu{position:relative}
.menu__summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:center;
  width:46px;height:46px;border:1px solid var(--line);border-radius:10px;background:var(--surface)}
.menu__summary::-webkit-details-marker{display:none}
.menu__panel{position:absolute;right:0;top:calc(100% + 10px);width:min(280px,calc(100vw - 44px));
  background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:10px;
  box-shadow:0 18px 40px rgba(20,32,58,.16);display:flex;flex-direction:column;gap:2px}
.menu__panel > a:not(.btn){display:block;padding:12px 14px;border-radius:9px;color:var(--ink);
  text-decoration:none;font-size:15px;font-weight:500}
.menu__panel > a:not(.btn):hover{background:var(--bg)}
.menu__panel > a[aria-current="page"]:not(.btn){color:var(--brand);background:var(--bg)}
/* The language pill is only ~86px wide; on its own row the rest of the panel
   width is wasted. Pairing it with the email button fits both in one row even
   at 320px, where the panel is 276px and the button still gets ~160px. */
.menu__actions{display:flex;align-items:center;gap:10px;margin-top:10px;
  padding-top:10px;border-top:1px solid var(--line)}
.menu__actions .lang{margin-top:0;align-self:auto;flex-shrink:0}
.menu__actions .btn{flex:1;min-width:0;width:auto;margin-top:0;padding:0 14px}
@media print{.site-header,.site-footer,.btnrow{display:none}}

/* ==========================================================================
   MOTION & DEPTH  (v2)
   Every hiding rule is scoped to [data-motion="on"], which the inline snippet
   in <head> sets only when scripting is alive. No JS -> nothing hidden, the
   page renders exactly as it did before. Reduced-motion users get the end
   state with no transition.
   ========================================================================== */

:root{
  /* Straight off the logo: deep blue -> bright blue -> green. */
  --grad: linear-gradient(135deg, #0E5088 0%, #0C79A4 48%, #33A450 100%);
  --ease: cubic-bezier(.16,1,.3,1);
  --shadow-sm: 0 1px 2px rgba(20,32,58,.06), 0 4px 12px rgba(20,32,58,.05);
  --shadow-md: 0 2px 4px rgba(20,32,58,.06), 0 12px 28px rgba(20,32,58,.09);
  --shadow-lg: 0 4px 8px rgba(20,32,58,.07), 0 24px 56px rgba(20,32,58,.13);
}

[data-motion="on"] [data-reveal]{
  opacity:0; transform:translateY(20px);
  transition:opacity .65s var(--ease), transform .65s var(--ease);
  transition-delay:calc(var(--i, 0) * 70ms);
  will-change:opacity, transform;
}
[data-motion="on"] [data-reveal][data-revealed]{opacity:1; transform:none; will-change:auto}

@media (prefers-reduced-motion: reduce){
  [data-motion="on"] [data-reveal]{opacity:1 !important; transform:none !important; transition:none !important}
  *,*::before,*::after{animation-duration:.01ms !important; animation-iteration-count:1 !important;
    transition-duration:.01ms !important; scroll-behavior:auto !important}
}

/* ---------- depth on the cards ---------- */
.card{transition:transform .35s var(--ease), box-shadow .35s var(--ease), border-color .35s var(--ease)}
.card--white,.card--filled{box-shadow:var(--shadow-sm)}
.card--white:hover,.card--filled:hover{transform:translateY(-4px); box-shadow:var(--shadow-md); border-color:#C3CFE0}
.card--navy{box-shadow:var(--shadow-md)}
.card--navy:hover{transform:translateY(-4px); box-shadow:var(--shadow-lg)}

/* A hairline of brand gradient across the top of every card, drawn on hover. */
.card{position:relative; overflow:hidden}
.card::before{content:""; position:absolute; inset:0 0 auto 0; height:3px;
  background:var(--grad); transform:scaleX(0); transform-origin:left;
  transition:transform .45s var(--ease)}
.card:hover::before{transform:scaleX(1)}

/* ---------- buttons ---------- */
.btn{transition:background-color .2s var(--ease), color .2s var(--ease),
  border-color .2s var(--ease), transform .2s var(--ease), box-shadow .2s var(--ease)}
.btn--primary{box-shadow:0 1px 2px rgba(14,80,136,.2), 0 6px 16px rgba(14,80,136,.18)}
.btn--primary:hover{transform:translateY(-2px); box-shadow:0 2px 4px rgba(14,80,136,.22), 0 12px 26px rgba(14,80,136,.26)}
.btn--ghost:hover,.btn--light:hover,.btn--outline-light:hover{transform:translateY(-2px)}
.btn:active{transform:translateY(0)}

/* ---------- the eyebrow gets a gradient tick ---------- */
.eyebrow{display:flex; align-items:center; gap:10px}
.eyebrow::before{content:""; width:22px; height:2px; background:var(--grad); flex-shrink:0; border-radius:2px}
.band--navy .eyebrow::before{background:linear-gradient(90deg,#F0913F,#33A450)}

/* ---------- hero: layered brand glow behind the type ---------- */
.hero{position:relative; overflow:hidden; isolation:isolate}
.hero::before,.hero::after{content:""; position:absolute; z-index:-1; border-radius:50%;
  filter:blur(70px); opacity:.5; pointer-events:none}
.hero::before{width:min(560px,70vw); aspect-ratio:1; top:-14%; right:-8%;
  background:radial-gradient(circle,#0C79A4 0%, rgba(12,121,164,0) 70%)}
.hero::after{width:min(420px,55vw); aspect-ratio:1; bottom:-24%; left:-10%;
  background:radial-gradient(circle,#33A450 0%, rgba(51,164,80,0) 70%); opacity:.34}

/* ---------- section rules and links ---------- */
.rows__item{transition:background-color .3s var(--ease), padding-left .3s var(--ease)}
.rows__item:hover{background:linear-gradient(90deg, rgba(14,80,136,.05), transparent 60%); padding-left:12px}
.navlinks a{transition:border-color .25s var(--ease), color .25s var(--ease)}
.site-footer a{transition:color .2s var(--ease)}
.person__avatar{transition:transform .35s var(--ease)}
.card:hover .person__avatar{transform:scale(1.04)}

/* ---------- the counter figures ---------- */
.stat{display:flex; flex-direction:column; gap:6px}
.stat__num{font-family:var(--serif); font-size:52px; line-height:1;
  background:var(--grad); -webkit-background-clip:text; background-clip:text; color:transparent;
  font-variant-numeric:tabular-nums}
.band--navy .stat__num{background:linear-gradient(135deg,#F0913F,#33A450);
  -webkit-background-clip:text; background-clip:text; color:transparent}
.stat__label{font-size:15px; line-height:1.5; color:var(--muted)}
.band--navy .stat__label{color:var(--on-dark-muted)}
.stats{display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:32px}
@media (max-width:900px){.stats{grid-template-columns:repeat(2,minmax(0,1fr)); gap:28px}
  .stat__num{font-size:42px}}

/* ---------- icons ---------- */
.icon{display:inline-flex; align-items:center; justify-content:center;
  width:48px; height:48px; border-radius:13px; flex-shrink:0; color:var(--brand);
  background:linear-gradient(140deg, rgba(14,80,136,.10), rgba(51,164,80,.10));
  border:1px solid rgba(14,80,136,.14);
  transition:transform .35s var(--ease), color .35s var(--ease)}
.icon svg{width:24px; height:24px}
.card:hover .icon{transform:translateY(-2px) scale(1.06); color:var(--brand-dark)}
.card--navy .icon{color:var(--accent-light); background:rgba(255,255,255,.08);
  border-color:rgba(255,255,255,.16)}

/* ---------- roadmap timeline ---------- */
.tl{margin-bottom:26px}
.tl__step{position:relative; height:14px; display:flex; align-items:center}
.tl__dot{width:12px; height:12px; border-radius:50%; background:var(--brand); flex-shrink:0;
  box-shadow:0 0 0 5px rgba(14,80,136,.10)}
.tl__step:last-child .tl__dot{background:var(--support); box-shadow:0 0 0 5px rgba(46,148,72,.12)}
.tl__line{flex:1; height:2px; margin-left:8px; background:var(--line);
  position:relative; overflow:hidden; border-radius:2px}
.tl__line::after{content:""; position:absolute; inset:0; background:var(--grad); border-radius:2px}
/* the fill only starts collapsed when motion is live, so no-JS shows it drawn */
[data-motion="on"] .tl__line::after{transform:scaleX(0); transform-origin:left;
  transition:transform 1.1s var(--ease) .15s}
[data-motion="on"] .tl__step[data-revealed] .tl__line::after{transform:scaleX(1)}
@media (max-width:900px){.tl{display:none}}

/* ---------- gradient on the hero's emphasised word ---------- */
.hero h1 em{background:var(--grad); -webkit-background-clip:text; background-clip:text;
  color:transparent; font-style:italic}
@supports not (background-clip: text){.hero h1 em{color:var(--brand); background:none}}

/* ---------- hero artwork ---------- */
.hero__art{position:absolute; z-index:-1; right:-4%; top:50%; transform:translateY(-50%);
  width:min(520px, 46vw); height:auto; pointer-events:none}
.hero__art-spin{transform-origin:center; animation:heroSpin 48s linear infinite}
@keyframes heroSpin{to{transform:rotate(360deg)}}
@media (max-width:1080px){.hero__art{right:-14%; width:min(420px,52vw); opacity:.75}}
@media (max-width:760px){.hero__art{right:-28%; top:22%; width:78vw; opacity:.4}}
