/* ============================================================
       JERBINDO POWER SYSTEMS — CORPORATE MODERN INDUSTRIAL DESIGN
       Typography: Inter (all weights 100–900)
       Palette: Deep charcoal + steel blue + amber-gold accent
    ============================================================ */

    /* ── Base layout ── */
    .page { display: none; }
    .page.active { display: block; }
    .hidden { display: none !important; }
    @media (min-width: 768px) {
      .md\:block { display: block !important; }
      .md\:flex { display: flex !important; }
      .md\:hidden { display: none !important; }
      .md\:flex-row { flex-direction: row !important; }
      .md\:items-center { align-items: center !important; }
      .md\:items-end { align-items: flex-end !important; }
      .md\:justify-between { justify-content: space-between !important; }
      .md\:grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
      .md\:grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)) !important; }
      .md\:grid-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)) !important; }
      .md\:grid-cols-5 { grid-template-columns: repeat(5, minmax(0, 1fr)) !important; }
      .md\:grid-cols-12 { grid-template-columns: repeat(12, minmax(0, 1fr)) !important; }
      .md\:col-span-1 { grid-column: span 1 / span 1 !important; }
      .md\:col-span-2 { grid-column: span 2 / span 2 !important; }
      .md\:col-span-5 { grid-column: span 5 / span 5 !important; }
      .md\:col-span-7 { grid-column: span 7 / span 7 !important; }
      .md\:p-8 { padding: 2rem !important; }
      .md\:p-10 { padding: 2.5rem !important; }
      .md\:py-10 { padding-top: 2.5rem !important; padding-bottom: 2.5rem !important; }
      .md\:py-24 { padding-top: 6rem !important; padding-bottom: 6rem !important; }
      .md\:text-base { font-size: 1rem !important; line-height: 1.5rem !important; }
      .md\:text-2xl { font-size: 1.5rem !important; line-height: 2rem !important; }
      .md\:text-3xl { font-size: 1.875rem !important; line-height: 2.25rem !important; }
    }
    .heroH { height: 580px; }
    @media (max-width: 640px) { .heroH { height: 520px; } }
    .r5 { border-radius: 3px; }

    /* promo tab */
    .promoTab{
      border-top-left-radius: 0 !important;
      border-top-right-radius: 0 !important;
      border-bottom-left-radius: 3px !important;
      border-bottom-right-radius: 3px !important;
    }

    /* ── Design tokens ── */
    :root{
      --bg: #F3FAFF;
      --panel: #ffffff;
      --panel2: #F8FAFB;
      --text: #071e27;
      --muted: #546067;
      --border: #D1D5DB;
      --brand: #0F4C81;
      --brand2: #0F4C81;
      --danger: #c62828;
      --dangerHover: #a61f1f;
      --accent: #FBBF24;
      --accent2: #FBBF24;
      --heroText: #ffffff;
      --heroGradFrom: #071e27;
      --heroGradMid: #0F4C81;
      --heroGradTo: #1a5a8e;
      --promoH: 0px;

      /* industrial extras */
      --steel: #546067;
      --panel-shadow: 0 12px 30px rgba(10,31,52,.06), 0 0 0 1px rgba(15,76,129,.04);
      --panel-shadow-hover: 0 18px 42px rgba(10,31,52,.12), 0 0 0 1px rgba(15,76,129,.12);

      /* produk-detail.html – consolidated type scale */
      --pd-fs-1: .625rem;
      --pd-fs-2: .6875rem;
      --pd-fs-3: .75rem;
      --pd-fs-4: .875rem;
      --pd-fs-5: 1rem;
      --pd-fs-6: 1.75rem;
    }

    [data-theme="dark"]{
      --bg: #071e27;
      --panel: #0d2d3d;
      --panel2: #122436;
      --text: #f0f8ff;
      --muted: #94a3b8;
      --border: rgba(125,191,255,.18);
      --brand: #4a8fd4;
      --brand2: #7dbfff;
      --danger: #ef4444;
      --dangerHover: #f87171;
      --accent: #FBBF24;
      --accent2: #FBBF24;
      --heroText: #ffffff;
      --heroGradFrom: #030e14;
      --heroGradMid: #071e27;
      --heroGradTo: #0F4C81;
      --steel: #4a6070;
      --panel-shadow: 0 16px 36px rgba(0,0,0,.26), 0 0 0 1px rgba(255,255,255,.04);
      --panel-shadow-hover: 0 22px 44px rgba(0,0,0,.34), 0 0 0 1px rgba(74,143,212,.2);
    }

    /* ── Global ── */
    *, *::before, *::after { box-sizing: border-box; }

    html { scroll-behavior: smooth; }

    body{
      font-family: 'Inter', system-ui, sans-serif;
      font-size: 15px;
      line-height: 1.65;
      background: var(--bg);
      color: var(--text);
      padding-top: var(--promoH);
      transition: padding-top .35s ease, background .25s ease, color .25s ease;

      /* subtle industrial grid texture */
      background-image:
        linear-gradient(rgba(15,76,129,.025) 1px, transparent 1px),
        linear-gradient(90deg, rgba(15,76,129,.025) 1px, transparent 1px);
      background-size: 32px 32px;
    }

    [data-theme="dark"] body,
    [data-theme="dark"]{
      background-image:
        linear-gradient(rgba(74,143,212,.04) 1px, transparent 1px),
        linear-gradient(90deg, rgba(74,143,212,.04) 1px, transparent 1px);
      background-size: 32px 32px;
    }

    /* ── Typography ── */
    h1, h2, h3, h4, h5, h6 {
      font-family: 'Inter', system-ui, sans-serif;
      font-weight: 900;
      letter-spacing: -.02em;
      line-height: 1.15;
    }

    .font-semibold { font-family: 'Inter', system-ui, sans-serif; font-weight: 600; }
    nav a, footer a { font-family: 'Inter', sans-serif; font-weight: 500; }

    /* ── Panel / card system ── */
    .panel{
      background: var(--panel);
      border-color: var(--border);
      box-shadow: var(--panel-shadow);
      transition: box-shadow .2s ease, border-color .2s ease;
    }
    .panel:hover { box-shadow: var(--panel-shadow-hover); }

    .panel2{
      background: var(--panel2);
      border-color: var(--border);
    }
    .bdr{ border-color: var(--border); }
    .muted{ color: var(--muted); }

    /* ── Brand colors ── */
    .brandBg{ background: var(--brand); }
    .brandBgHover:hover{ background: #0a3d6a !important; filter: none; color: #fff !important; }

    /* ── Mobile CTA button (#mobileWAConsultBtn) ── */
    #mobileWAConsultBtn {
      background: var(--brand);   /* light: #0F4C81 blue | dark: #4a8fd4 sky blue */
      color: #fff;
      transition: background .15s;
    }
    #mobileWAConsultBtn:hover {
      background: #0a3d6a !important;
      color: #fff !important;
    }

    .btnNavAction {
      min-height: 40px;
      font-size: .7rem !important;
      font-weight: 700;
      letter-spacing: .14em !important;
      text-transform: uppercase !important;
    }

    .btnActionMd {
      min-height: 44px;
      padding: .72rem 1.25rem !important;
      font-size: .88rem !important;
      font-weight: 600;
      line-height: 1.2;
      letter-spacing: .01em !important;
      text-transform: none !important;
    }

    @media (max-width: 640px) {
      .btnNavAction {
        min-height: 42px;
        font-size: .68rem !important;
      }

      .btnActionMd {
        min-height: 42px;
        padding: .68rem 1rem !important;
        font-size: .84rem !important;
      }
    }

    /* ── Artikel CTA "Hubungi Kami" hover merah + pulse glow ── */
    .artCtaBtn {
      position: relative;
      transition: background .25s, box-shadow .25s, color .25s;
    }
    .artCtaBtn:hover {
      background: #c0392b !important;
      color: #fff !important;
      box-shadow: 0 0 0 4px rgba(192,57,43,.25), 0 0 18px rgba(192,57,43,.45);
      animation: artCtaPulse 1.4s ease-in-out infinite;
    }
    @keyframes artCtaPulse {
      0%   { box-shadow: 0 0 0 2px rgba(192,57,43,.3),  0 0 12px rgba(192,57,43,.35); }
      50%  { box-shadow: 0 0 0 7px rgba(192,57,43,.12), 0 0 28px rgba(192,57,43,.5);  }
      100% { box-shadow: 0 0 0 2px rgba(192,57,43,.3),  0 0 12px rgba(192,57,43,.35); }
    }
    .brandText{ color: var(--brand); }

    .accentBg{ background: var(--accent); }
    .accentBgHover:hover{ filter: brightness(.93); }

    /* ── Hero gradient ── */
    .heroGrad{
      background-image: linear-gradient(105deg, var(--heroGradFrom) 0%, var(--heroGradMid) 55%, var(--heroGradTo) 100%);
      color: var(--heroText);
      position: relative;
    }

    /* industrial diagonal stripe overlay */
    .heroGrad::before {
      content: '';
      position: absolute;
      inset: 0;
      background-image: repeating-linear-gradient(
        -45deg,
        transparent,
        transparent 18px,
        rgba(255,255,255,.018) 18px,
        rgba(255,255,255,.018) 19px
      );
      pointer-events: none;
      z-index: 0;
    }

    .heroOverlay{
      background: linear-gradient(130deg, rgba(4,8,18,.72) 0%, rgba(4,8,18,.38) 55%, rgba(4,8,18,.12) 100%);
    }

    /* ── Hover states ── */
    .panelHoverRed:hover{ background:#0a3d6a !important; color:#ffffff !important; border-color:#0a3d6a !important; filter:none !important; }
    .accentHoverRed:hover{ background:#0a3d6a !important; color:#ffffff !important; border-color:#0a3d6a !important; filter:none !important; }
    .waBtnHoverGreen:hover{ background:#16a34a !important; color:#ffffff !important; border-color:#16a34a !important; filter:none !important; }

    /* ── WA ── */
    .waBg{ background: #16a34a; }
    .waBgHover:hover{ background: #15803d; }

    .btnCatalogDetail{
      background: var(--brand);
      border: 1px solid var(--brand);
      color: #ffffff;
      transition: background .2s ease, border-color .2s ease, box-shadow .2s ease, transform .15s ease;
    }
    .btnCatalogDetail:hover{
      background: #12315f;
      border-color: #12315f;
      color: #ffffff;
      transform: translateY(-1px);
    }
    [data-theme="dark"] .btnCatalogDetail{
      background: var(--brand2);
      border-color: var(--brand2);
    }
    [data-theme="dark"] .btnCatalogDetail:hover{
      background: #7ab8ff;
      border-color: #7ab8ff;
      color: #081a34;
    }

    .btnDanger{
      background: var(--danger);
      border: 1px solid var(--danger);
      color: #ffffff;
      transition: background .2s ease, border-color .2s ease, box-shadow .2s ease, transform .15s ease;
    }
    .btnDanger:hover{
      background: var(--dangerHover);
      border-color: var(--dangerHover);
      color: #ffffff;
      transform: translateY(-1px);
    }
    [data-theme="dark"] .btnDanger:hover{
      color: #1f0a0a;
    }

    .btnCatalogDetail:focus-visible,
    .btnDanger:focus-visible,
    #productDetailWaBtn:focus-visible,
    #themeToggleDesktop:focus-visible,
    #themeToggleMobileIcon:focus-visible,
    #mobileBtn:focus-visible,
    .sliderArrow:focus-visible {
      outline: 2px solid var(--brand2);
      outline-offset: 2px;
      box-shadow: 0 0 0 3px color-mix(in srgb, var(--brand2) 35%, transparent);
    }

    /* Lead Gate Modal */
    body.leadGateOpen { overflow: hidden; }
    .leadGate {
      position: fixed;
      inset: 0;
      z-index: 140;
      display: flex;
      align-items: center;
      justify-content: center;
      padding: 16px;
    }
    .leadGateBackdrop {
      position: absolute;
      inset: 0;
      background: rgba(8, 14, 26, .64);
      backdrop-filter: blur(3px);
      -webkit-backdrop-filter: blur(3px);
    }
    .leadGateDialog {
      position: relative;
      width: min(760px, 100%);
      max-height: min(92vh, 840px);
      max-height: min(92dvh, 840px);
      overflow: auto;
      transform: translateY(10px) scale(.985);
      opacity: 0;
      transition: transform .2s ease, opacity .2s ease;
    }
    .leadGate.show .leadGateDialog {
      transform: translateY(0) scale(1);
      opacity: 1;
    }
    .leadGateClose {
      width: 34px;
      height: 34px;
      border: 1px solid var(--border);
      background: var(--panel2);
      color: var(--text);
      font-size: 1.25rem;
      line-height: 1;
      cursor: pointer;
    }
    .leadGateLabel {
      font-size: .72rem;
      letter-spacing: .04em;
      text-transform: uppercase;
      color: var(--muted);
      font-family: 'Inter', sans-serif;
    }

    /* ── Lead Gate: padatkan di mobile supaya form tidak terlalu tinggi/perlu banyak scroll ──
       Catatan: modal ini dirender lewat insertAdjacentHTML saat runtime, jadi Tailwind Play CDN
       men-generate & menyisipkan utility class-nya (flex-col, py-4, gap-4, dst.) belakangan —
       lebih akhir dari main.css. Makanya beberapa override di bawah butuh !important supaya
       benar-benar menang atas utility Tailwind yang bersaing pada elemen yang sama. ── */
    @media (max-width: 639.98px) {
      .leadGate { padding: 10px; align-items: flex-start; }
      .leadGateDialog { margin-top: 6px; }
      .leadGateHeader { padding: 12px 16px !important; gap: 10px !important; }
      .leadGateHeader h3 { font-size: 1rem !important; }
      .leadGateHeader p { display: none; }
      #leadGateForm { padding: 14px 16px !important; }
      .leadGateFieldGrid {
        grid-template-columns: repeat(2, 1fr);
        gap: 10px !important;
      }
      .leadGateFieldGrid label input,
      .leadGateFieldGrid label select {
        padding-top: .5rem !important;
        padding-bottom: .5rem !important;
      }
      #leadGateForm textarea[name="message"] {
        height: 72px;
      }
      .leadGateActions {
        flex-direction: row !important;
        padding-top: 12px !important;
        gap: 8px !important;
      }
      .leadGateActions button {
        flex: 1;
        padding-top: .6rem !important;
        padding-bottom: .6rem !important;
        white-space: nowrap;
      }
    }

    @keyframes bounceOnce {
      0%, 100% { transform: translateY(0) scale(1); }
      40% { transform: translateY(-9px) scale(1.05); }
      70% { transform: translateY(-4px) scale(1.02); }
    }
    .waBounce:hover { animation: bounceOnce .6s ease-in-out; }

    /* ── Sticky header ── */
    #stickyHeader{
      backdrop-filter: blur(12px);
      -webkit-backdrop-filter: blur(12px);
    }
    /* Desktop header breathing room — override Tailwind py-3 */
    @media (min-width: 768px) {
      #stickyHeader > div > .flex {
        padding-top: 16px;
        padding-bottom: 16px;
      }
      #stickyHeader > div {
        padding-left: 20px;
        padding-right: 20px;
      }
      #stickyHeader { top: 36px !important; }
    }

    /* ── Desktop nav dropdown (Solusi) ── */
    .navDropdown{ position: relative; }
    .navDropdownTrigger{
      display: inline-flex;
      align-items: center;
      gap: 4px;
      background: none;
      border: none;
      padding: 0;
      font: inherit;
      font-weight: 500;
      color: inherit;
      cursor: pointer;
      text-transform: uppercase;
      letter-spacing: .03em;
      font-size: .8125rem;
    }
    .navDropdownCaret{ transition: transform .15s ease; }
    .navDropdown:hover .navDropdownCaret,
    .navDropdown:focus-within .navDropdownCaret{ transform: rotate(180deg); }
    .navDropdownPanel{
      position: absolute;
      top: 100%;
      left: 50%;
      min-width: 240px;
      margin-top: 0;
      padding: 6px;
      background: var(--panel);
      border: 1px solid var(--border);
      border-radius: 8px;
      box-shadow: var(--panel-shadow-hover);
      opacity: 0;
      visibility: hidden;
      pointer-events: none;
      transform: translate(-50%, 4px);
      transition: opacity .15s ease, transform .15s ease, visibility .15s;
      z-index: 60;
    }
    .navDropdown:hover .navDropdownPanel,
    .navDropdown:focus-within .navDropdownPanel{
      opacity: 1;
      visibility: visible;
      pointer-events: auto;
      transform: translate(-50%, 0);
    }
    .navDropdownPanel a{
      display: block;
      padding: 9px 10px;
      border-radius: 6px;
      font-size: .85rem;
      font-weight: 500;
      color: var(--text);
      white-space: nowrap;
    }
    .navDropdownPanel a:hover,
    .navDropdownPanel a:focus-visible{
      background: var(--panel2);
      color: var(--brand);
    }

    /* ── Top bar (two-tier header, desktop only) ── */
    .topBar {
      position: sticky;
      top: 0;
      z-index: 51;
      height: 36px;
      display: none;
    }
    @media (min-width: 768px) {
      .topBar { display: flex; align-items: center; }
    }
    [data-theme="light"] .topBar {
      background: var(--brand);
      border-bottom: 1px solid rgba(0,0,0,.1);
    }
    [data-theme="dark"] .topBar {
      background: #071e27;
      border-bottom: 1px solid rgba(251,191,36,.12);
    }
    .topBarLink {
      color: rgba(255,255,255,.9);
      text-decoration: none;
      font-weight: 500;
      transition: color .15s;
    }
    .topBarLink:hover { color: #fff; }
    [data-theme="dark"] .topBarLink { color: rgba(240,248,255,.75); }
    [data-theme="dark"] .topBarLink:hover { color: var(--accent); }
    .topBarSep { color: rgba(255,255,255,.2); }
    [data-theme="dark"] .topBarSep { color: rgba(255,255,255,.12); }
    .topBarMuted { color: rgba(255,255,255,.68); }
    [data-theme="dark"] .topBarMuted { color: rgba(240,248,255,.5); }
    .topBarBadge {
      display: inline-flex;
      align-items: center;
      gap: 4px;
      font-size: .68rem;
      font-weight: 700;
      letter-spacing: .06em;
      text-transform: uppercase;
      padding: 2px 7px;
      border-radius: 2px;
    }
    [data-theme="light"] .topBarBadge {
      color: rgba(255,255,255,.88);
      background: rgba(255,255,255,.12);
      border: 1px solid rgba(255,255,255,.18);
    }
    [data-theme="dark"] .topBarBadge {
      color: rgba(251,191,36,.88);
      background: rgba(251,191,36,.08);
      border: 1px solid rgba(251,191,36,.18);
    }
    .topBarBadge svg { width: 11px; height: 11px; }
    .topBarLink svg { width: 13px; height: 13px; flex-shrink: 0; }
    #themeIconTopBar { width: 14px; height: 14px; }
    .btnNavAction svg { width: 18px; height: 18px; }
    .topBarToggle {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      width: 28px;
      height: 28px;
      border-radius: 4px;
      border: 1px solid rgba(255,255,255,.2);
      color: rgba(255,255,255,.8);
      background: transparent;
      cursor: pointer;
      transition: background .15s, color .15s;
      flex-shrink: 0;
    }
    .topBarToggle:hover {
      background: rgba(255,255,255,.12);
      color: #fff;
    }
    [data-theme="dark"] .topBarToggle {
      border-color: rgba(251,191,36,.2);
      color: rgba(240,248,255,.7);
    }
    [data-theme="dark"] .topBarToggle:hover {
      background: rgba(251,191,36,.1);
      color: var(--accent);
    }
    .langToggleGroup {
      display: inline-flex;
      align-items: center;
      border: 1px solid rgba(255,255,255,.2);
      border-radius: 4px;
      overflow: hidden;
      flex-shrink: 0;
    }
    .langBtn {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      min-width: 26px;
      height: 26px;
      padding: 0 6px;
      font-size: 11px;
      font-weight: 600;
      letter-spacing: .02em;
      color: rgba(255,255,255,.65);
      background: transparent;
      border: none;
      cursor: pointer;
      transition: background .15s, color .15s;
    }
    .langBtn:hover { color: #fff; }
    .langBtn.active { background: rgba(255,255,255,.18); color: #fff; }
    [data-theme="dark"] .langToggleGroup { border-color: rgba(251,191,36,.2); }
    [data-theme="dark"] .langBtn { color: rgba(240,248,255,.6); }
    [data-theme="dark"] .langBtn:hover { color: var(--accent); }
    [data-theme="dark"] .langBtn.active { background: rgba(251,191,36,.1); color: var(--accent); }

    .langBtnMobile {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      min-width: 30px;
      height: 34px;
      padding: 0 8px;
      font-size: 12px;
      font-weight: 600;
      background: transparent;
      border: none;
      cursor: pointer;
      color: inherit;
      opacity: .55;
      transition: opacity .15s, background .15s;
    }
    .langBtnMobile:hover { opacity: .8; }
    .langBtnMobile.active { opacity: 1; background: rgba(15,76,129,.08); }
    [data-theme="dark"] .langBtnMobile.active { background: rgba(251,191,36,.12); }
    .langBtnMobile + .langBtnMobile { border-left: 1px solid var(--border); }

    /* header in light: translucent white with glass feel */
    [data-theme="light"] #stickyHeader {
      background: rgba(255,255,255,.92) !important;
      border-bottom: 1px solid rgba(15,76,129,.1);
      box-shadow: 0 1px 0 rgba(15,76,129,.06), 0 2px 12px rgba(0,0,0,.05);
    }
    [data-theme="dark"] #stickyHeader {
      background: rgba(14,21,32,.92) !important;
      border-bottom: 1px solid rgba(74,143,212,.12);
      box-shadow: 0 1px 0 rgba(0,0,0,.4), 0 2px 12px rgba(0,0,0,.3);
    }

    /* nav links – underline reveal on hover */
    nav a {
      position: relative;
      padding-bottom: 2px;
      text-decoration: none;
      letter-spacing: .03em;
      font-size: .8125rem;
      text-transform: uppercase;
    }
    nav a::after {
      content: '';
      position: absolute;
      left: 0; bottom: -1px;
      width: 0; height: 2px;
      background: var(--accent);
      transition: width .22s ease;
    }
    nav a:hover::after { width: 100%; }
    nav a:hover { color: var(--brand2); }
    [data-theme="dark"] nav a:hover { color: var(--brand2); }
    /* ── Mobile drawer menu ── */
    #mobileBtn .iconClose,
    #mobileBtn[aria-expanded="true"] .iconMenu{ display: none; }
    #mobileBtn[aria-expanded="true"] .iconClose{ display: block; }
    html.navOpen{ overflow: hidden; }
    .mNavBackdrop{
      position: fixed;
      inset: 0;
      z-index: 40;
      background: rgba(7,30,39,.45);
      animation: mNavFade .2s ease;
    }
    .mNavBackdrop[hidden]{ display: none; }
    #mobileNav.mNavDrawer{
      position: absolute;
      top: 100%;
      left: 0;
      right: 0;
      max-height: calc(100dvh - 64px);
      overflow-y: auto;
      overscroll-behavior: contain;
      padding: 4px 16px 20px;
      background: var(--panel);
      border-top: 1px solid var(--border);
      box-shadow: 0 12px 24px rgba(7,30,39,.18);
      animation: mNavSlide .2s ease;
    }
    @keyframes mNavFade{ from{ opacity: 0; } to{ opacity: 1; } }
    @keyframes mNavSlide{ from{ opacity: 0; transform: translateY(-6px); } to{ opacity: 1; transform: none; } }
    #mobileNav .mNavLink{
      display: flex;
      align-items: center;
      justify-content: space-between;
      width: 100%;
      padding: 14px 4px 14px 8px;
      border: 0;
      border-bottom: 1px solid var(--border);
      background: none;
      font: inherit;
      font-size: 1rem;
      font-weight: 500;
      letter-spacing: normal;
      text-transform: none;
      text-align: left;
      color: var(--text);
      cursor: pointer;
    }
    #mobileNav .mNavLink::after,
    #mobileNav .mNavSubLink::after,
    #mobileNav .mNavCtaSecondary::after{ display: none; }
    #mobileNav .mNavLink:hover{ color: var(--brand); }
    #mobileNav .mNavLink.isActive{
      color: var(--brand);
      font-weight: 600;
      box-shadow: inset 3px 0 0 var(--accent);
    }
    .mNavChevron{ color: var(--muted); flex-shrink: 0; }
    .mNavCaret{ color: var(--muted); flex-shrink: 0; transition: transform .2s ease; }
    .mNavAccordionBtn[aria-expanded="true"] .mNavCaret{ transform: rotate(180deg); }
    .mNavSub{ display: grid; gap: 2px; padding: 6px 0 10px 8px; border-bottom: 1px solid var(--border); }
    .mNavSub[hidden]{ display: none; }
    #mobileNav .mNavSubLink{
      display: flex;
      align-items: center;
      gap: 12px;
      padding: 8px;
      border-radius: 6px;
      font-size: .9rem;
      font-weight: 500;
      letter-spacing: normal;
      text-transform: none;
      color: var(--text);
    }
    #mobileNav .mNavSubLink .navMegaIcon{ width: 32px; height: 32px; }
    #mobileNav .mNavSubLink:hover,
    #mobileNav .mNavSubLink.isActive{ background: var(--panel2); color: var(--brand); }
    #mobileNav .mNavSubLink.isActive .navMegaIcon{ background: var(--brand); color: #fff; }
    .mNavCtas{ display: grid; gap: 10px; margin-top: 20px; }
    #mobileNav .mNavCtaSecondary{
      display: inline-flex;
      align-items: center;
      justify-content: center;
      min-height: 44px;
      border: 1.5px solid var(--brand);
      border-radius: 4px;
      font-size: .9rem;
      font-weight: 600;
      letter-spacing: normal;
      text-transform: none;
      color: var(--brand);
    }
    #mobileNav .mNavCtaSecondary:hover,
    #mobileNav .mNavCtaSecondary.isActive{ background: var(--brand); color: #fff; }
    .mNavSettings{
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 12px;
      margin-top: 20px;
      padding-top: 16px;
      border-top: 1px solid var(--border);
    }

    /* ── Mega-menu Solusi (desktop) ── */
    .navDropdownPanel.navMega{
      display: grid;
      grid-template-columns: repeat(2, minmax(0, 1fr));
      gap: 4px;
      width: 540px;
      padding: 8px;
    }
    .navDropdownPanel .navMegaItem{
      display: flex;
      align-items: flex-start;
      gap: 12px;
      padding: 10px 12px;
      white-space: normal;
      text-transform: none;
      letter-spacing: normal;
    }
    .navMegaItem::after{ display: none; }
    .navMegaIcon{
      flex-shrink: 0;
      display: inline-flex;
      align-items: center;
      justify-content: center;
      width: 36px;
      height: 36px;
      border-radius: 6px;
      background: var(--panel2);
      color: var(--brand);
      transition: background .15s ease, color .15s ease;
    }
    .navMegaItem:hover .navMegaIcon,
    .navMegaItem:focus-visible .navMegaIcon,
    .navMegaItem.isActive .navMegaIcon{
      background: var(--brand);
      color: #fff;
    }
    .navMegaText{ display: flex; flex-direction: column; gap: 2px; min-width: 0; }
    .navMegaTitle{ font-size: .85rem; font-weight: 600; line-height: 1.3; }
    .navMegaDesc{ font-size: .75rem; font-weight: 400; line-height: 1.4; color: var(--muted); }
    .navMegaItem.isActive{ background: var(--panel2); color: var(--brand); }

    /* ── Nav CTA "Hubungi Kami" ── */
    nav a.navCta{
      margin-left: 8px;
      padding: .5rem 1rem;
      border-radius: 4px;
      background: #0F4C81;
      color: #fff;
      font-weight: 600;
      transition: background .2s ease, box-shadow .2s ease;
    }
    nav a.navCta::after{ display: none; }
    nav a.navCta:hover,
    [data-theme="dark"] nav a.navCta:hover{
      background: #0a3d6a;
      color: #fff;
      box-shadow: 0 4px 12px rgba(15,76,129,.3);
    }
    nav a.navCta.isActive{ box-shadow: inset 0 -2px 0 var(--accent); }
    [data-theme="dark"] nav a.navCta{ background: #1a6fb5; }
    [data-theme="dark"] nav a.navCta:hover{ background: #155f9e; }
    #stickyHeader nav > a,
    #stickyHeader .navDropdownTrigger{ white-space: nowrap; }
    @media (min-width: 768px) and (max-width: 1023px){
      #stickyHeader nav.md\:flex{ gap: 1rem; }
      #stickyHeader nav a.navCta{ margin-left: 0; padding: .45rem .75rem; }
    }

    /* brand logo mark */
    .logoBadge {
      width: 40px;
      height: 40px;
      flex-shrink: 0;
      background: linear-gradient(135deg,#071e27 0%,#0F4C81 55%,#1a6fb5 100%);
      display: flex;
      align-items: center;
      justify-content: center;
      border-radius: 0 !important;
      box-shadow: 2px 2px 0 rgba(15,76,129,.4), 0 4px 12px rgba(15,76,129,.3);
      transition: box-shadow .2s ease;
    }
    .logoBadge svg {
      width: 23px;
      height: auto;
      display: block;
      pointer-events: none;
    }
    a:hover .logoBadge {
      box-shadow:
        2px 2px 0 rgba(15,76,129,.55),
        0 6px 18px rgba(15,76,129,.45);
      filter: brightness(1.08);
      transition: box-shadow .2s ease, filter .2s ease;
    }
    [data-theme="dark"] a:hover .logoBadge {
      box-shadow:
        2px 2px 0 rgba(125,191,255,.4),
        0 6px 18px rgba(125,191,255,.35);
    }
    /* brand lockup text (header) */
    .brandLockupTitle { font-weight: 900; letter-spacing: -.01em; font-size: .9375rem; }
    .brandLockupSub { font-size: .62rem; letter-spacing: .1em; text-transform: uppercase; }
    /* Footer logo badge — enhanced glow for dark background */
    .footerBadge {
      box-shadow:
        2px 2px 0 rgba(15, 76, 129, .65),
        0 4px 20px rgba(15, 76, 129, .50),
        0 0 0 1px rgba(74, 143, 212, .12);
      transition: box-shadow .2s ease, filter .2s ease;
    }
    .footerBadge:hover {
      box-shadow:
        2px 2px 0 rgba(15, 76, 129, .75),
        0 6px 24px rgba(15, 76, 129, .65),
        0 0 0 1px rgba(74, 143, 212, .20);
      filter: brightness(1.08);
      transition: box-shadow .2s ease, filter .2s ease;
    }

    /* ── Project Category Tab Buttons ── */
    .projCatBtn {
      display: inline-flex;
      align-items: center;
      gap: 5px;
      padding: 7px 14px;
      font-family: 'Inter', sans-serif;
      font-size: .72rem;
      letter-spacing: .06em;
      text-transform: uppercase;
      border: 1px solid var(--border);
      background: var(--panel);
      color: var(--muted);
      cursor: pointer;
      transition: background .18s, border-color .18s, color .18s;
      white-space: nowrap;
    }
    .projCatBtn:hover:not(.active) {
      background: var(--panel2);
      border-color: var(--brand2);
      color: var(--text);
    }
    .projCatBtn.active {
      background: var(--brand);
      border-color: var(--brand);
      color: #fff;
    }
    /* ── Project Card ── */
    .projCard {
      border: 1px solid var(--border);
      background: var(--panel);
      display: flex;
      flex-direction: column;
      position: relative;
      overflow: hidden;
      transition: border-color .2s, box-shadow .2s;
    }
    .projCard:hover {
      border-color: var(--brand2);
      box-shadow: 0 4px 24px rgba(0,0,0,.08);
    }
    .projCard::before {
      content: '';
      position: absolute;
      top: 0; left: 0; right: 0;
      height: 4px;
    }
    .projCard[data-cat="telekomunikasi"]::before { background: #1265B2; }
    .projCard[data-cat="mining"]::before        { background: #5a8a2a; }
    .projCard[data-cat="highrise"]::before      { background: #4a3a8a; }
    .projCard[data-cat="healthcare"]::before    { background: #0a8a6a; }
    .projCard[data-cat="transportation"]::before{ background: #c87010; }
    .projCard[data-cat="bumn"]::before          { background: #c0392b; }
    .projCatPill {
      display: inline-flex;
      align-items: center;
      gap: 4px;
      padding: 3px 9px;
      font-family: 'Inter', sans-serif;
      font-size: .62rem;
      letter-spacing: .07em;
      text-transform: uppercase;
      border: 1px solid;
      flex-shrink: 0;
    }
    .projStatusPill {
      display: inline-flex;
      align-items: center;
      gap: 4px;
      padding: 3px 9px;
      font-family: 'Inter', sans-serif;
      font-size: .62rem;
      letter-spacing: .05em;
      border: 1px solid;
    }
    .projScope {
      list-style: none;
      padding: 0; margin: 0;
      display: flex;
      flex-direction: column;
      gap: 5px;
    }
    .projScope li {
      display: flex;
      align-items: flex-start;
      gap: 7px;
      font-size: .8rem;
      line-height: 1.4;
      color: var(--text);
      opacity: .85;
    }
    .projScope li::before {
      content: '›';
      color: var(--accent);
      flex-shrink: 0;
      font-weight: 700;
      margin-top: -1px;
    }

    /* ── Article Detail Page ── */
    #page-artikel-detail { display: none; }
    #page-artikel-detail.active { display: block; }
    #page-produk-detail { display: none; }
    #page-produk-detail.active { display: block; }
    .artDetailBody h2 {
      font-family: 'Inter', sans-serif;
      font-size: 1.25rem;
      font-weight: 700;
      letter-spacing: .01em;
      margin: 2rem 0 .6rem;
      padding-bottom: .4rem;
      border-bottom: 1px solid var(--border);
      color: var(--text);
    }
    .artDetailBody p { margin: .85rem 0; line-height: 1.75; color: var(--text); }

    /* ── Unordered list: accent chevron bullet ── */
    .artDetailBody ul {
      list-style: none;
      padding-left: 0;
      margin: .85rem 0 .85rem 0;
      line-height: 1.75;
      color: var(--text);
    }
    .artDetailBody ul li {
      position: relative;
      padding-left: 1.25rem;
      margin-bottom: .45rem;
    }
    .artDetailBody ul li::before {
      content: '›';
      position: absolute;
      left: 0;
      color: var(--accent);
      font-weight: 700;
      font-size: 1rem;
      line-height: 1.75;
    }

    /* ── Ordered list: accent numbered badge ── */
    .artDetailBody ol {
      list-style: none;
      padding-left: 0;
      margin: .85rem 0 .85rem 0;
      line-height: 1.75;
      color: var(--text);
      counter-reset: art-ol;
    }
    .artDetailBody ol li {
      position: relative;
      padding-left: 2rem;
      margin-bottom: .55rem;
      counter-increment: art-ol;
    }
    .artDetailBody ol li::before {
      content: counter(art-ol);
      position: absolute;
      left: 0;
      top: .25rem;
      width: 1.25rem;
      height: 1.25rem;
      background: var(--accent);
      color: #071e27;
      font-size: .6rem;
      font-weight: 800;
      display: inline-flex;
      align-items: center;
      justify-content: center;
      border-radius: 2px;
      line-height: 1;
    }
    .artDetailBody strong { color: var(--text); font-weight: 700; }
    .artDetailBody blockquote {
      margin: 1.5rem 0;
      padding: 1rem 1.25rem;
      border-left: 3px solid var(--accent);
      background: var(--panel2);
      font-style: italic;
      color: var(--muted);
      font-size: .95rem;
    }
    /* Breadcrumb nav in detail */
    .artBreadcrumb {
      display: flex;
      align-items: center;
      gap: .5rem;
      font-family: 'Inter', sans-serif;
      font-size: .65rem;
      letter-spacing: .06em;
      text-transform: uppercase;
      color: var(--muted);
    }
    .artBreadcrumb a { color: var(--brand2); text-decoration: none; }
    .artBreadcrumb a:hover { text-decoration: underline; }
    /* Related articles strip — 3-col grid on desktop, swipeable single-column slide on mobile */
    .artRelatedScroller {
      display: flex;
      overflow-x: auto;
      scroll-snap-type: x mandatory;
      gap: 1rem;
      scrollbar-width: none;
      -ms-overflow-style: none;
    }
    .artRelatedScroller::-webkit-scrollbar { display: none; }
    .artRelatedCard {
      border: 1px solid var(--border);
      background: var(--panel);
      cursor: pointer;
      transition: border-color .2s;
      display: flex;
      flex-direction: column;
      overflow: hidden;
      flex: 0 0 100%;
      scroll-snap-align: start;
    }
    .artRelatedCard:hover { border-color: var(--brand2); }
    .artRelatedCard:hover .prodDetailRelatedReadMore { gap: 7px; }
    .artRelatedThumb {
      width: 100%;
      height: 120px;
      display: flex;
      align-items: center;
      justify-content: center;
      overflow: hidden;
      flex-shrink: 0;
    }
    .artRelatedCardBody { padding: 1rem; }
    @media (min-width: 768px) {
      .artRelatedScroller {
        display: grid;
        grid-template-columns: repeat(3, 1fr);
        overflow-x: visible;
        scroll-snap-type: none;
      }
      .artRelatedCard { flex: initial; }
    }
    .seoAnswer {
      border: 1px solid var(--border);
      background: var(--panel2);
      padding: 14px 16px;
    }
    .seoAnswer h2 {
      margin: 0 0 .35rem;
      font-family: 'Inter', sans-serif;
      font-size: 1.08rem;
      letter-spacing: .02em;
    }
    .seoAnswer p {
      margin: 0;
      font-size: .9rem;
      line-height: 1.6;
      color: var(--muted);
    }
    .seoLinkGrid {
      margin-top: 14px;
      display: grid;
      gap: 8px;
      grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    }
    .seoLinkCard {
      border: 1px solid var(--border);
      background: var(--panel);
      padding: 10px 12px;
      color: var(--text);
      text-decoration: none;
      transition: border-color .18s ease, background .18s ease;
    }
    .seoLinkCard:hover {
      border-color: var(--brand2);
      background: var(--panel2);
    }
    /* ── "Solusi Terkait" cards: Read More affordance ── */
    .exploreCard { display: flex; flex-direction: column; align-items: flex-start; }
    /* Background beda dari panel artikel di sekitarnya, tetap ikut tema light/dark */
    .seoLinkCard.exploreCard { background: rgba(7, 30, 39, .06); border-color: rgba(7, 30, 39, .18); }
    .seoLinkCard.exploreCard:hover { background: rgba(7, 30, 39, .12); border-color: rgba(7, 30, 39, .32); }
    [data-theme="dark"] .seoLinkCard.exploreCard { background: rgba(7, 30, 39, .55); border-color: rgba(125, 191, 255, .22); }
    [data-theme="dark"] .seoLinkCard.exploreCard:hover { background: rgba(7, 30, 39, .75); border-color: rgba(125, 191, 255, .4); }
    /* ── Legacy: kept for backward compat, may be unused ── */
    .prodDetailGrid {
      display: grid;
      gap: 10px;
      grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    }
    .prodDetailSpec {
      border: 1px solid var(--border);
      background: var(--panel2);
      padding: 10px 12px;
    }
    .prodDetailSpec .k {
      font-family: 'Inter', sans-serif;
      font-size: .62rem;
      letter-spacing: .07em;
      text-transform: uppercase;
      color: var(--muted);
    }
    .prodDetailSpec .v {
      margin-top: 2px;
      font-size: .93rem;
      font-weight: 600;
      color: var(--text);
    }

    /* ── Product Detail – KVA Hero Banner ── */
    .prodDetailHero {
      display: grid;
      grid-template-columns: repeat(2, 1fr);
      border: 1px solid var(--border);
      overflow: hidden;
      border-radius: 4px;
    }
    .prodDetailHeroItem {
      padding: 16px 20px 16px;
      border-right: 1px solid var(--border);
      border-bottom: 1px solid var(--border);
      background: var(--panel2);
      position: relative;
      /* Allow hero cells to shrink on narrow screens */
      min-width: 0;
      overflow: hidden;
    }
    @media (max-width: 400px) {
      .prodDetailHeroItem { padding: 16px 12px 12px; }
      .prodDetailHeroValue { font-size: var(--pd-fs-6); }
      .prodDetailHeroValueSm { font-size: var(--pd-fs-4); word-break: break-all; }
    }
    .prodDetailHeroItem:nth-child(2n) { border-right: none; }
    .prodDetailHeroItem:nth-child(3),
    .prodDetailHeroItem:nth-child(4) { border-bottom: none; }
    .prodDetailHeroItemAccent {
      background: var(--brand);
    }
    .html.dark .prodDetailHeroItemAccent { background: #0a3d6a; }
    .prodDetailHeroItemAccent::before {
      content: '';
      position: absolute;
      top: 0; left: 0; right: 0;
      height: 3px;
      background: var(--accent);
    }
    .prodDetailHeroLabel {
      font-size: var(--pd-fs-1);
      font-weight: 700;
      text-transform: uppercase;
      letter-spacing: .1em;
      color: var(--muted);
      margin-bottom: 4px;
    }
    .prodDetailHeroItemAccent .prodDetailHeroLabel { color: rgba(255,255,255,.65); }
    .prodDetailHeroValue {
      font-family: 'Inter', sans-serif;
      font-size: var(--pd-fs-6);
      font-weight: 900;
      letter-spacing: -.04em;
      line-height: 1;
      color: var(--text);
    }
    .prodDetailHeroItemAccent .prodDetailHeroValue { color: #fff; }
    .prodDetailHeroValueSm {
      font-family: 'Inter', sans-serif;
      font-size: var(--pd-fs-4);
      font-weight: 800;
      letter-spacing: -.02em;
      color: var(--text);
      line-height: 1.2;
    }

    /* ── Product Detail: baris media — foto genset (kiri) + kapasitas (kanan) di desktop ── */
    .prodDetailMediaRow > .prodDetailHero {
      margin-top: 20px;
    }
    @media (min-width: 1024px) {
      .prodDetailMediaRow {
        display: grid;
        grid-template-columns: 1fr 1fr;
        align-items: start;
        gap: 24px;
      }
      .prodDetailMediaRow > #productDetailGallery,
      .prodDetailMediaRow > .prodDetailHero {
        margin-top: 0;
      }
      .prodDetailMediaRow .prodDetailHero {
        grid-template-columns: 1fr;
      }
      .prodDetailMediaRow .prodDetailHeroItem {
        border-right: none;
        border-bottom: 1px solid var(--border);
      }
      .prodDetailMediaRow .prodDetailHeroItem:last-child {
        border-bottom: none;
      }
    }
    /* ── Product Detail – In-page Section Nav ── */
    .prodDetailInPageNav {
      display: flex;
      border: 1px solid var(--border);
      border-radius: 4px;
      overflow-x: hidden;
      overflow-y: hidden;
      margin-top: 20px;
    }
    .prodDetailInPageNav a {
      flex: 1;
      padding: 8px;
      font-size: var(--pd-fs-2);
      font-weight: 700;
      text-transform: uppercase;
      letter-spacing: .08em;
      text-align: center;
      color: var(--muted);
      text-decoration: none;
      border-right: 1px solid var(--border);
      background: var(--panel2);
      transition: background .15s, color .15s;
      white-space: nowrap;
    }
    .prodDetailInPageNav a:last-child { border-right: none; }
    .prodDetailInPageNav a:hover,
    .prodDetailInPageNav a.active { background: var(--brand); color: #fff; }

    /* ── Product Detail – Spec 2-column layout (kiri: umum, kanan: BBM+konfigurasi) ── */
    .prodDetailSpecCols {
      display: grid;
      grid-template-columns: 1fr;
      gap: 24px;
    }
    @media (min-width: 1024px) {
      .prodDetailSpecCols { grid-template-columns: 1.15fr 1fr; align-items: start; }

      /* Lebar kolom label/nilai menyesuaikan konten tiap tabel, bukan persentase seragam,
         supaya nilai/label panjang (mis. Aspiration, model alternator) tetap 1 baris.
         Tanpa memaksa nowrap — kalau konten benar-benar ekstrem panjang, biarkan wrap
         alami sebagai fallback daripada overflow/terpotong (tabel ini overflow:hidden). */
      .prodDetailSpecTable { table-layout: auto; }
      .prodDetailSpecKey,
      .prodDetailSpecVal { width: auto; }
    }

    /* ── Product Detail – Keunggulan + Aplikasi: satu baris 2 kolom di desktop ── */
    .prodDetailPairedCols {
      display: grid;
      grid-template-columns: 1fr;
      gap: 32px;
    }
    @media (min-width: 1024px) {
      .prodDetailPairedCols { grid-template-columns: 1fr 1fr; }
    }

    /* ── Product Detail – Sticky CTA bar (desktop only) ── */
    .prodDetailStickyCta { display: none; }
    @media (min-width: 1024px) {
      .prodDetailStickyCta {
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 16px;
        position: sticky;
        top: var(--header-h, 64px);
        z-index: 30;
        background: var(--panel);
        border: 1px solid var(--border);
        border-radius: 4px;
        padding: 12px 20px;
        margin-top: 20px;
        box-shadow: var(--panel-shadow);
      }
    }
    .prodDetailStickyCtaLabel {
      font-size: var(--pd-fs-2);
      text-transform: uppercase;
      letter-spacing: .08em;
      color: var(--muted);
    }
    .prodDetailStickyCtaName {
      font-size: var(--pd-fs-4);
      font-weight: 700;
      color: var(--text);
    }
    .prodDetailStickyCtaActions {
      display: flex;
      gap: 10px;
      flex-shrink: 0;
    }

    /* ── Product Detail – Trust row (menggantikan checklist di sidebar lama) ── */
    .prodDetailTrustRow {
      display: flex;
      flex-wrap: wrap;
      gap: 8px 16px;
      margin-top: 12px;
      font-size: var(--pd-fs-2);
      color: var(--brand2);
      font-weight: 600;
    }
    .prodDetailTrustRow > div { display: flex; align-items: center; gap: 6px; }

    /* ── Product Detail – Artikel/Produk Terkait card text ── */
    .prodDetailRelatedTitle { font-size: var(--pd-fs-4); font-weight: 600; color: var(--text); }
    .prodDetailRelatedSummary {
      font-size: var(--pd-fs-3);
      color: var(--muted);
      line-height: 1.5;
      margin-top: 4px;
      display: -webkit-box;
      -webkit-line-clamp: 2;
      -webkit-box-orient: vertical;
      overflow: hidden;
    }
    .prodDetailRelatedMeta { font-size: var(--pd-fs-2); color: var(--muted); margin-top: 6px; }
    .prodDetailRelatedReadMore {
      display: inline-flex;
      align-items: center;
      gap: 4px;
      margin-top: 10px;
      font-size: .78rem;
      font-weight: 600;
      color: var(--brand2);
      transition: gap .15s ease;
    }
    .prodDetailRelatedReadMore svg { width: 12px; height: 12px; flex-shrink: 0; }
    .seoLinkCard:hover .prodDetailRelatedReadMore { gap: 7px; }

    /* ── Product Detail – Spec Group with label ── */
    .prodDetailSpecGroupLabel {
      font-size: var(--pd-fs-2);
      font-weight: 700;
      text-transform: uppercase;
      letter-spacing: .1em;
      color: var(--brand2);
      border-left: 2px solid var(--brand2);
      padding-left: 8px;
      margin-bottom: 8px;
    }

    /* ── Product Detail – Spec Table (2-col, semantic <table>) ── */
    .prodDetailSpecTable {
      width: 100%;
      table-layout: fixed;
      border-collapse: separate;
      border-spacing: 0;
      border: 1px solid var(--border);
      border-radius: 4px;
      overflow: hidden;
    }
    .prodDetailSpecTable tbody tr:not(:last-child) .prodDetailSpecKey,
    .prodDetailSpecTable tbody tr:not(:last-child) .prodDetailSpecVal {
      border-bottom: 1px solid var(--border);
    }
    .prodDetailSpecTable tbody tr:nth-child(even) { background: var(--panel2); }
    .prodDetailSpecKey {
      width: 42%;
      padding: 8px 16px;
      font-size: var(--pd-fs-3);
      font-weight: 500;
      text-align: left;
      color: var(--muted);
      letter-spacing: .02em;
      border-right: 1px solid var(--border);
      vertical-align: top;
      overflow-wrap: break-word;
      word-break: break-word;
    }
    .prodDetailSpecVal {
      padding: 8px 16px;
      font-size: var(--pd-fs-4);
      font-weight: 700;
      color: var(--text);
      vertical-align: top;
      overflow-wrap: break-word;
      word-break: break-word;
    }

    @media (hover: hover) and (pointer: fine) {
      .prodDetailSpecTable tbody tr:hover td,
      .prodDetailSpecTable tbody tr:hover th {
        background: color-mix(in srgb, var(--brand) 8%, var(--panel2));
      }
    }

    /* ── Mobile: stack spec rows at very narrow screens ── */
    @media (max-width: 380px) {
      .prodDetailSpecTable, .prodDetailSpecTable tbody, .prodDetailSpecTable tr,
      .prodDetailSpecTable .prodDetailSpecKey, .prodDetailSpecTable .prodDetailSpecVal {
        display: block;
        width: 100%;
      }
      .prodDetailSpecKey {
        border-right: none;
        border-bottom: 1px solid var(--border);
        padding: 8px 16px 4px;
      }
      .prodDetailSpecVal {
        padding: 4px 16px 8px;
      }
      .prodDetailSpecTable tbody tr:nth-child(even) {
        background: transparent;
      }
    }

    /* ── Product Detail – Section Heading ── */
    .prodDetailSectionHeading {
      font-family: 'Inter', sans-serif;
      font-size: var(--pd-fs-5);
      font-weight: 700;
      letter-spacing: .01em;
      color: var(--text);
      padding-bottom: 8px;
      border-bottom: 1px solid var(--border);
      display: flex;
      align-items: center;
      gap: 8px;
      margin: 0;
    }
    .prodDetailSectionHeading::before {
      content: '';
      display: inline-block;
      width: 3px;
      height: 15px;
      background: var(--brand2);
      border-radius: 2px;
      flex-shrink: 0;
    }

    /* ── Product Detail – flat section divider (replaces boxed card sections) ── */
    .prodDetailSectionDivider {
      margin-top: 32px;
      padding-top: 24px;
    }

    /* ── Product Detail – Features List ── */
    .prodDetailList {
      margin: 0;
      padding: 0;
      list-style: none;
      display: flex;
      flex-direction: column;
      gap: 8px;
    }
    .prodDetailList li {
      display: flex;
      gap: 8px;
      align-items: flex-start;
      line-height: 1.55;
      font-size: var(--pd-fs-4);
      color: var(--text);
    }
    .prodDetailList li::before {
      content: "✓";
      color: var(--brand2);
      font-weight: 900;
      font-size: var(--pd-fs-4);
      flex-shrink: 0;
      margin-top: 1px;
    }

    /* ── Product Detail – Application Pills ── */
    .appPill {
      display: inline-flex;
      align-items: center;
      border: 1px solid var(--brand);
      padding: 4px 12px;
      font-family: 'Inter', sans-serif;
      font-size: var(--pd-fs-2);
      letter-spacing: .06em;
      text-transform: uppercase;
      color: #fff;
      background: var(--brand);
      font-weight: 600;
      border-radius: 3px;
    }

    /* ── FAQ Accordion (dipakai produk-detail; toggle-nya lewat delegated listener .faq-question/.faq-item/.faq-list) ── */
    .faq-list {
      display: flex;
      flex-direction: column;
      gap: 10px;
      margin-top: 14px;
    }
    @media (min-width: 768px) {
      .faq-list { max-width: 760px; }
    }
    .faq-item {
      background: var(--panel);
      border: 1px solid var(--border);
      border-radius: 4px;
      overflow: hidden;
      transition: border-color .2s ease;
    }
    .faq-item:hover { border-color: var(--brand2); }
    .faq-question {
      width: 100%;
      padding: 14px 16px;
      background: none;
      border: none;
      cursor: pointer;
      display: flex;
      justify-content: space-between;
      align-items: center;
      gap: 12px;
      font-family: 'Inter', sans-serif;
      font-size: .92rem;
      font-weight: 700;
      color: var(--text);
      text-align: left;
      transition: background-color .2s ease;
    }
    .faq-question:hover { background: var(--panel2); }
    .faq-question::after {
      content: '+';
      font-size: 1.25rem;
      line-height: 1;
      color: var(--accent);
      flex-shrink: 0;
      transition: transform .2s ease;
    }
    .faq-item.open .faq-question::after { transform: rotate(45deg); }
    .faq-answer {
      max-height: 0;
      overflow: hidden;
      padding: 0 16px;
      font-size: .86rem;
      line-height: 1.55;
      color: var(--muted);
      border-top: 1px solid transparent;
      transition: max-height .35s ease, padding .3s ease, border-color .3s ease;
    }
    .faq-item.open .faq-answer {
      max-height: 600px;
      padding: 12px 16px 16px;
      border-top-color: var(--border);
    }

    /* ── Hero kW sub-label ── */
    .prodDetailHeroKw {
      font-size: var(--pd-fs-3);
      font-weight: 600;
      color: var(--muted);
      margin-top: 4px;
      line-height: 1;
    }
    .prodDetailHeroItemAccent .prodDetailHeroKw { color: rgba(255,255,255,.55); }

    /* ── In-page nav: 5+ item wrap jadi 2 baris di mobile (bukan scroll, supaya tidak ada tab/label terpotong) ── */
    @media (max-width: 600px) {
      .prodDetailInPageNav {
        flex-wrap: wrap;
        overflow: visible;
      }
      .prodDetailInPageNav a {
        flex: 1 1 22%;
        min-width: 0;
        padding: 6px 3px;
        font-size: .62rem;
        letter-spacing: .01em;
        white-space: normal;
        overflow-wrap: break-word;
        line-height: 1.3;
        border-bottom: 1px solid var(--border);
      }
    }

    /* ── Fuel Consumption bar chart ── */
    .prodDetailFuelChart {
      display: flex;
      flex-direction: column;
      gap: 8px;
      border: 1px solid var(--border);
      border-radius: 4px;
      padding: 16px;
      background: var(--panel2);
    }
    .prodDetailFuelRow {
      display: grid;
      grid-template-columns: 140px 1fr 80px;
      align-items: center;
      gap: 8px;
    }
    @media (max-width: 520px) {
      .prodDetailFuelRow { grid-template-columns: 110px 1fr 60px; gap: 8px; }
    }
    @media (max-width: 380px) {
      .prodDetailFuelRow { grid-template-columns: 80px 1fr 54px; gap: 4px; }
      .prodDetailFuelRowLabel { font-size: var(--pd-fs-1); }
      .prodDetailFuelVal { font-size: var(--pd-fs-2); }
    }
    .prodDetailFuelRowLabel {
      font-size: var(--pd-fs-2);
      font-weight: 600;
      color: var(--muted);
      text-align: right;
      letter-spacing: .02em;
    }
    .prodDetailFuelBarWrap {
      height: 10px;
      background: var(--border);
      border-radius: 3px;
      overflow: hidden;
    }
    .prodDetailFuelBar {
      height: 100%;
      border-radius: 3px;
      transition: width .4s ease;
    }
    .prodDetailFuelVal {
      font-size: var(--pd-fs-3);
      font-weight: 700;
      color: var(--text);
      white-space: nowrap;
    }
    .prodDetailFuelTankNote {
      margin-top: 8px;
      padding-top: 8px;
      border-top: 1px solid var(--border);
      font-size: var(--pd-fs-3);
      color: var(--muted);
    }
    .prodDetailFuelTankNote strong { color: var(--text); font-weight: 700; }

    /* ── Physical Configuration: reuses .prodDetailSpecGroupLabel / .prodDetailSpecTable rows (see buildConfigCardsHtml in app.js) ── */

    /* ── Product Gallery (aktif hanya jika product.images tersedia) ── */
    .prodDetailGalleryHero {
      width: 100%;
      max-height: 360px;
      object-fit: cover;
      border-radius: 4px;
      border: 1px solid var(--border);
      display: block;
    }
    .prodDetailGalleryThumbs {
      display: flex;
      gap: 8px;
      margin-top: 8px;
      overflow-x: auto;
    }
    .prodDetailGalleryThumbs img {
      width: 72px;
      height: 72px;
      object-fit: cover;
      border-radius: 4px;
      border: 1px solid var(--border);
      flex-shrink: 0;
    }

    /* TOC links hover → biru */
    #artDetailTocList a { transition: color .15s; }
    #artDetailTocList a:hover { color: var(--brand2) !important; }

    /* Footer menu links hover → biru */
    footer a { transition: color .15s; }
    footer a:hover { color: var(--brand2) !important; }

    /* ── Article Card ── */
    .artCard {
      border: 1px solid var(--border);
      background: var(--panel);
      display: flex;
      flex-direction: column;
      transition: border-color .2s, box-shadow .2s;
      position: relative;
      overflow: hidden;
    }
    .artCard:hover { border-color: var(--brand2); box-shadow: 0 4px 24px rgba(0,0,0,.08); }
    .artCard[data-topic="tips-operasional"]::before { content:''; position:absolute; top:0;left:0;right:0;height:4px;background:#1265B2; }
    .artCard[data-topic="panduan-teknis"]::before   { content:''; position:absolute; top:0;left:0;right:0;height:4px;background:#4a3a8a; }
    .artCard[data-topic="perawatan"]::before        { content:''; position:absolute; top:0;left:0;right:0;height:4px;background:#0a8a6a; }
    .artCard[data-topic="regulasi"]::before         { content:''; position:absolute; top:0;left:0;right:0;height:4px;background:#c0392b; }
    .artCard[data-topic="produk"]::before           { content:''; position:absolute; top:0;left:0;right:0;height:4px;background:#c87010; }
    .artTopicPill {
      display: inline-flex;
      align-items: center;
      gap: 4px;
      padding: 3px 9px;
      font-family: 'Inter', sans-serif;
      font-size: .6rem;
      letter-spacing: .08em;
      text-transform: uppercase;
      border: 1px solid;
      flex-shrink: 0;
    }
    .artThumb {
      width: 100%;
      height: 180px;
      display: flex;
      align-items: center;
      justify-content: center;
      overflow: hidden;
      flex-shrink: 0;
    }

    /* ── Client Logo Slider (marquee) ── */
    .logoMarqueeWrap {
      position: relative;
      overflow: hidden;
      padding: 4px 0;
      -webkit-mask-image: linear-gradient(90deg, transparent 0%, black 8%, black 92%, transparent 100%);
      mask-image: linear-gradient(90deg, transparent 0%, black 8%, black 92%, transparent 100%);
    }
    .logoMarqueeWrap::before,
    .logoMarqueeWrap::after {
      content: "";
      position: absolute;
      left: 0;
      right: 0;
      height: 1px;
      background: linear-gradient(90deg, transparent 0%, rgba(15,76,129,.14) 18%, rgba(15,76,129,.14) 82%, transparent 100%);
      pointer-events: none;
      z-index: 1;
    }
    .logoMarqueeWrap::before { top: 0; }
    .logoMarqueeWrap::after { bottom: 0; }
    .logoMarqueeTrack {
      display: flex;
      align-items: center;
      gap: 0;
      animation: logoScroll 120s linear infinite;
      width: max-content;
    }
    .logoMarqueeTrack:hover { animation-play-state: paused; }
    @keyframes logoScroll {
      from { transform: translateX(0); }
      to   { transform: translateX(-50%); }
    }
    .clientLogoItem {
      flex-shrink: 0;
      width: auto;
      min-width: 106px;
      height: 74px;
      display: flex;
      align-items: center;
      justify-content: center;
      position: relative;
      border: 0;
      border-radius: 0;
      background: transparent;
      box-shadow: none;
      transition: opacity .2s ease, transform .2s ease;
      padding: 0 28px;
    }
    .clientLogoItem::after {
      content: "";
      position: absolute;
      right: 0;
      top: 50%;
      width: 1px;
      height: 26px;
      transform: translateY(-50%);
      background: color-mix(in srgb, var(--brand) 10%, var(--border));
      opacity: .65;
    }
    .clientLogoItem:hover {
      opacity: 1;
      transform: translateY(-1px);
    }
    .clientLogoImg {
      width: auto;
      height: 34px;
      max-width: 168px;
      opacity: .74;
      filter: grayscale(.18) contrast(1.02);
      transition: opacity .25s, filter .25s, transform .25s;
      object-fit: contain;
    }
    .clientLogoItem:hover .clientLogoImg {
      opacity: 1;
      filter: grayscale(0);
      transform: scale(1.02);
    }
    [data-theme="dark"] .clientLogoItem {
      background: transparent;
      border-color: transparent;
      box-shadow: none;
    }
    [data-theme="dark"] .logoMarqueeWrap::before,
    [data-theme="dark"] .logoMarqueeWrap::after {
      background: linear-gradient(90deg, transparent 0%, rgba(255,255,255,.08) 18%, rgba(255,255,255,.08) 82%, transparent 100%);
    }
    [data-theme="dark"] .clientLogoItem::after {
      background: rgba(255,255,255,.08);
      opacity: .8;
    }
    [data-theme="dark"] .clientLogoImg {
      filter: grayscale(.04) brightness(1.02);
      opacity: .82;
    }
    [data-theme="dark"] .clientLogoItem:hover .clientLogoImg {
      filter: grayscale(0) brightness(1.03);
      opacity: 1;
    }
    @media (max-width: 640px) {
      .logoMarqueeWrap { padding: 2px 0; }
      .clientLogoItem {
        min-width: 82px;
        height: 58px;
        padding: 0 18px;
      }
      .clientLogoItem::after {
        height: 20px;
      }
      .clientLogoImg {
        height: 24px;
        max-width: 120px;
      }
    }

    /* ── Hero slide glass card ── */
    .heroCard {
      background: rgba(8,18,36,.6);
      border: 1px solid rgba(255,255,255,.12);
      backdrop-filter: blur(10px);
      -webkit-backdrop-filter: blur(10px);
      border-left: 3px solid var(--accent);
      box-shadow: 0 16px 48px rgba(0,0,0,.35), inset 0 1px 0 rgba(255,255,255,.07);
    }

    /* ── Hero badge ── */
    .heroBadge {
      background: rgba(251,191,36,.18);
      border: 1px solid rgba(251,191,36,.35);
      color: #f5c842;
      font-family: 'Inter', sans-serif;
      font-size: .68rem;
      letter-spacing: .08em;
      text-transform: uppercase;
    }
    .heroBadgeDot {
      width: 6px; height: 6px;
      background: #f5c842;
      border-radius: 50%;
      animation: pulseDot 2s ease-in-out infinite;
    }
    @keyframes pulseDot {
      0%, 100% { opacity: 1; transform: scale(1); }
      50% { opacity: .5; transform: scale(.7); }
    }

    /* hero headline */
    .heroH1 {
      font-family: 'Inter', sans-serif;
      font-weight: 800;
      font-size: clamp(2rem, 5vw, 3.5rem);
      line-height: 1.05;
      letter-spacing: -.01em;
      text-shadow: 0 2px 20px rgba(0,0,0,.4);
    }

    /* ── CTA buttons ── */
    .btnPrimary {
      font-family: 'Inter', sans-serif;
      font-weight: 700;
      letter-spacing: .02em;
      text-transform: none;
      font-size: .84rem;
      line-height: 1.2;
      background: var(--accent);
      color: #0d1117;
      border: none;
      min-height: 44px;
      padding: .72rem 1.25rem;
      border-radius: 4px;
      cursor: pointer;
      transition: background .2s ease, transform .15s ease, box-shadow .2s ease;
      box-shadow: 0 2px 8px rgba(251,191,36,.3);
      display: inline-flex; align-items: center; gap: .5rem;
    }
    .btnPrimary:hover {
      background: #e6a800;
      color: #ffffff !important;
      box-shadow: 0 4px 16px rgba(251,191,36,.4);
      transform: translateY(-1px);
    }
    .btnPrimary:active { transform: translateY(0); }
    .footerCtaPrimary {
      font-size: .9rem;
      padding: .85rem 2rem;
      min-height: 48px;
      box-shadow: 0 10px 24px rgba(251,191,36,.22);
      justify-content: center;
    }
    .footerCtaPrimary svg {
      flex-shrink: 0;
    }

    /* ── Site footer (shared across pages) ── */
    .siteFooter {
      background: linear-gradient(135deg,#071e27 0%,#0F4C81 55%,#1a5a8e 100%);
      position: relative;
      overflow: hidden;
    }
    .siteFooterFlat {
      background: #040f18;
      position: relative;
    }
    .siteFooterTexture {
      position: absolute;
      inset: 0;
      background-image: repeating-linear-gradient(-45deg,transparent,transparent 18px,rgba(255,255,255,.016) 18px,rgba(255,255,255,.016) 19px);
      pointer-events: none;
    }
    .siteFooterGlow {
      position: absolute;
      left: 50%;
      top: -20%;
      transform: translateX(-50%);
      width: 70%;
      height: 100%;
      background: radial-gradient(ellipse,rgba(18,101,178,.18) 0%,transparent 65%);
      pointer-events: none;
    }
    .siteFooterCta {
      padding-top: 5rem;
      text-align: center;
    }
    .siteFooterCta .nh-cta-eyebrow { justify-content: center; }
    body[data-page="kalkulator"] .siteFooterCta {
      padding-top: 4rem;
    }
    body[data-page="kalkulator"] .siteFooterCta .nh-cta-headline {
      font-size: clamp(1.75rem,4vw,2.8rem);
    }
    .nh-cta-headline--wide { max-width: none; }
    .siteFooterSeal {
      background: #030810;
      margin-top: 4rem;
      position: relative;
      z-index: 1;
    }
    .siteFooterSeal--alt { background: #040f18; }
    .siteFooterSealRule {
      height: 1px;
      background: linear-gradient(90deg,transparent 0%,rgba(232,165,0,.3) 30%,rgba(245,200,66,.5) 50%,rgba(232,165,0,.3) 70%,transparent 100%);
    }
    .siteFooterSealInner {
      padding: 1.75rem 1rem 1.5rem;
      display: flex;
      flex-direction: column;
      align-items: center;
      text-align: center;
    }
    .siteFooterBrandRow {
      display: flex;
      align-items: center;
      gap: 12px;
    }
    .siteFooterBrandText {
      line-height: 1.25;
      text-align: left;
    }
    .siteFooterBrandTitle {
      font-weight: 900;
      letter-spacing: -.01em;
      font-size: .9375rem;
      color: rgba(255,255,255,.75);
    }
    .siteFooterBrandSub {
      font-size: .62rem;
      letter-spacing: .1em;
      text-transform: uppercase;
      color: rgba(255,255,255,.25);
      margin-top: 2px;
    }
    .siteFooterCopyright {
      margin-top: 1rem;
      font-size: .58rem;
      letter-spacing: .08em;
      color: rgba(255,255,255,.18);
    }
    body[data-page="home"] .siteFooterCopyright {
      font-size: .64rem;
      color: rgba(255,255,255,.28);
    }
    body[data-page="kalkulator"] .siteFooterSeal {
      margin-top: 3.5rem;
    }
    .siteFooterCreditLink {
      color: inherit;
      text-decoration: none;
      transition: color .2s;
    }
    .siteFooterCreditLink:hover { color: #38bdf8; }

    .btnExploreAlt {
      font-family: 'Inter', sans-serif;
      font-weight: 600;
      letter-spacing: .02em;
      text-transform: none;
      font-size: .84rem;
      line-height: 1.2;
      min-height: 44px;
      padding: .72rem 1.25rem;
      border-radius: 4px;
      cursor: pointer;
      display: inline-flex; align-items: center; gap: .5rem;
      background: rgba(251,191,36,.12);
      color: #7a4a00;
      border: 1px solid rgba(251,191,36,.42);
      box-shadow: 0 1px 6px rgba(251,191,36,.12);
      transition: background .2s ease, border-color .2s ease, color .2s ease, transform .15s ease, box-shadow .2s ease;
    }
    .btnExploreAlt:hover {
      background: rgba(251,191,36,.22);
      color: #5e3600;
      border-color: rgba(251,191,36,.62);
      box-shadow: 0 4px 14px rgba(251,191,36,.18);
      transform: translateY(-1px);
    }
    .btnExploreAlt:active { transform: translateY(0); }
    [data-theme="dark"] .btnExploreAlt {
      background: rgba(251,191,36,.14);
      color: #f7cf62;
      border-color: rgba(251,191,36,.4);
      box-shadow: 0 2px 10px rgba(3,14,20,.28);
    }
    [data-theme="dark"] .btnExploreAlt:hover {
      background: rgba(251,191,36,.24);
      color: #ffe08a;
      border-color: rgba(251,191,36,.58);
      box-shadow: 0 6px 16px rgba(3,14,20,.34);
    }

    .btnGhost {
      font-family: 'Inter', sans-serif;
      font-weight: 600;
      letter-spacing: .02em;
      text-transform: none;
      font-size: .84rem;
      line-height: 1.2;
      background: rgba(7,30,39,.18);
      color: rgba(255,255,255,.98);
      border: 1px solid rgba(255,255,255,.28);
      min-height: 44px;
      padding: .72rem 1.25rem;
      border-radius: 4px;
      cursor: pointer;
      text-shadow: 0 1px 1px rgba(0,0,0,.22);
      backdrop-filter: blur(8px);
      -webkit-backdrop-filter: blur(8px);
      transition: background .2s ease, border-color .2s ease, color .2s ease, transform .15s ease;
      display: inline-flex; align-items: center; gap: .5rem;
    }
    .btnGhost:hover {
      background: rgba(7,30,39,.28);
      color: #ffffff;
      border-color: rgba(255,255,255,.42);
      transform: translateY(-1px);
    }
    .btnGhost:active { transform: translateY(0); }
    [data-theme="dark"] .btnGhost {
      background: rgba(255,255,255,.06);
      color: #ffffff;
      border-color: rgba(255,255,255,.22);
      text-shadow: none;
    }
    [data-theme="dark"] .btnGhost:hover {
      background: rgba(255,255,255,.12);
      border-color: rgba(255,255,255,.4);
    }

    /* ── Section headings with industrial accent bar ── */
    .sectionTitle {
      font-family: 'Inter', sans-serif;
      font-weight: 800;
      font-size: clamp(1.4rem, 3vw, 1.75rem);
      letter-spacing: .015em;
      position: relative;
      padding-left: 14px;
    }
    .sectionTitle::before {
      content: '';
      position: absolute;
      left: 0; top: 4px; bottom: 4px;
      width: 4px;
      background: linear-gradient(180deg, var(--accent), var(--brand2));
      border-radius: 2px;
    }

    /* ── Feature badge pill ── */
    .tagBadge {
      font-family: 'Inter', sans-serif;
      font-size: .68rem;
      font-weight: 500;
      letter-spacing: .07em;
      text-transform: uppercase;
      padding: .2rem .65rem;
      border-radius: 2px;
    }
    .tagIndustrial { background: rgba(15,76,129,.1); color: var(--brand); border: 1px solid rgba(15,76,129,.18); }
    [data-theme="dark"] .tagIndustrial { background: rgba(74,143,212,.12); color: var(--brand2); border-color: rgba(74,143,212,.22); }
    .tagLowNoise { background: rgba(146,100,0,.1); color: #92640a; border: 1px solid rgba(146,100,0,.2); }
    [data-theme="dark"] .tagLowNoise { background: rgba(251,191,36,.1); color: #FBBF24; border-color: rgba(251,191,36,.22); }
    .tagHeavy { background: rgba(60,60,80,.08); color: #444; border: 1px solid rgba(60,60,80,.15); }
    [data-theme="dark"] .tagHeavy { background: rgba(150,160,180,.08); color: #9ca3af; border-color: rgba(150,160,180,.18); }

    /* ── Card service strip ── */
    .serviceCard {
      border-left: 3px solid var(--brand);
      transition: border-color .2s ease, box-shadow .2s ease, transform .2s ease;
    }
    .serviceCard:hover {
      border-left-color: var(--accent);
      transform: translateY(-2px);
    }

    /* brand label in card */
    .cardLabel {
      font-family: 'Inter', sans-serif;
      font-size: .68rem;
      letter-spacing: .1em;
      text-transform: uppercase;
      color: var(--brand2);
    }
    [data-theme="dark"] .cardLabel { color: var(--brand2); }

    /* ── Milestone timeline ── */
    .milestoneMarker {
      width: 14px; height: 14px;
      background: var(--accent);
      border-radius: 2px;
      position: absolute;
      left: -7px; top: 5px;
      transform: rotate(45deg);
      box-shadow: 0 0 0 3px rgba(251,191,36,.2);
    }

    /* ── KVA stat box ── */
    .statBox {
      background: var(--panel2);
      border: 1px solid var(--border);
      border-top: 2px solid var(--brand);
      padding: .9rem 1rem;
      border-radius: 2px;
    }
    .statBox .statVal {
      font-family: 'Inter', sans-serif;
      font-weight: 800;
      font-size: 1.4rem;
      color: var(--text);
      line-height: 1;
    }
    .statBox .statLabel {
      font-family: 'Inter', sans-serif;
      font-size: .65rem;
      letter-spacing: .08em;
      text-transform: uppercase;
      color: var(--muted);
      margin-top: 2px;
    }

    /* ── CTA block ── */
    .ctaBlock {
      background: linear-gradient(105deg, var(--brand) 0%, var(--brand2) 100%);
      color: #fff;
      position: relative;
      overflow: hidden;
      border-radius: 3px;
    }
    .ctaBlock::before {
      content: '';
      position: absolute;
      inset: 0;
      background-image: repeating-linear-gradient(
        -45deg, transparent, transparent 16px,
        rgba(255,255,255,.03) 16px, rgba(255,255,255,.03) 17px
      );
    }
    .ctaBlock > * { position: relative; z-index: 1; }

    /* ── Footer ──
       Background is owned entirely by .siteFooter/.siteFooterFlat (every
       <footer> on the site carries one of those classes) — this rule only
       supplies the themed top border, kept as a bare element selector so it
       can't win a specificity fight against those classes. */
    footer {
      border-top: 2px solid var(--border);
    }
    [data-theme="light"] footer {
      border-top: 2px solid rgba(15,76,129,.14);
    }
    [data-theme="dark"] footer {
      border-top: 2px solid rgba(74,143,212,.14);
    }

    /* ── Floating buttons ── */
    .fabWrap{ position: fixed; right: 20px; bottom: 20px; z-index: 60; display: grid; gap: 10px; }
    .fabBtn{
      box-shadow: 0 6px 20px rgba(0,0,0,.2), 0 0 0 1px rgba(0,0,0,.06);
      transition: box-shadow .2s ease, transform .2s ease;
    }
    .fabBtn:hover { transform: translateY(-2px); box-shadow: 0 10px 28px rgba(0,0,0,.25); }
    .fabBtn svg{ display:block; }
    #backToTop {
      opacity: 0;
      pointer-events: none;
      transform: translateY(8px);
      transition: opacity .3s ease, transform .3s ease, box-shadow .2s ease;
    }
    #backToTop.visible {
      opacity: 1;
      pointer-events: auto;
      transform: translateY(0);
    }

    /* ── Promo banner ── */
    #miniPromoBanner{
      position: fixed;
      top: 0; left: 0; right: 0;
      z-index: 70;
      transform: translateY(-100%);
      transition: transform .35s ease;
      background: var(--brand);
      color: rgba(255,255,255,0.9);
      border-bottom: 1px solid rgba(255,255,255,0.08);
    }
    #miniPromoBanner.show{ transform: translateY(0); }
    #miniPromoHandle {
      background: #dc2626;
      box-shadow: 0 10px 24px rgba(9, 16, 28, 0.22);
    }
    #miniPromoHandle:hover { background: #b91c1c; }
    #miniPromoClose { background: rgba(255,255,255,0.12); color: #fff; border: 1px solid rgba(255,255,255,0.25); }
    #miniPromoClose:hover { background: rgba(255,255,255,0.22); border-color: rgba(255,255,255,0.45); }
    #stickyHeader{ top: var(--promoH); transition: top .35s ease; }

    .promoMarquee{ overflow: hidden; white-space: nowrap; }
    .promoMarqueeInner{
      display: inline-flex;
      align-items: center;
      width: max-content;
      will-change: transform;
      animation: promoMarquee 20s linear infinite;
      font-family: 'Inter', sans-serif;
      font-weight: 600;
      letter-spacing: .04em;
    }
    .promoMarqueeInner .promoItem{ white-space: nowrap; }
    .promoMarqueeInner .promoGap{ display: inline-block; width: 56px; }
    @keyframes promoMarquee{
      from { transform: translateX(0); }
      to   { transform: translateX(-50%); }
    }

    /* ── Form inputs ── */
    input, select, textarea {
      font-family: 'Inter', sans-serif;
      font-size: .875rem;
      transition: border-color .2s ease, box-shadow .2s ease;
    }
    input:focus, select:focus, textarea:focus {
      outline: none;
      border-color: var(--brand2) !important;
      box-shadow: 0 0 0 3px rgba(15,76,129,.15) !important;
    }
    [data-theme="dark"] input:focus,
    [data-theme="dark"] select:focus,
    [data-theme="dark"] textarea:focus {
      box-shadow: 0 0 0 3px rgba(74,143,212,.2) !important;
    }

    /* ── Catalog / Project cards article hover ── */
    article.panel {
      transition: box-shadow .2s ease, transform .2s ease, border-color .2s ease;
    }
    article.panel:hover {
      transform: translateY(-3px);
      box-shadow: 0 8px 24px rgba(0,0,0,.1), 0 0 0 1px rgba(15,76,129,.12);
    }
    [data-theme="dark"] article.panel:hover {
      box-shadow: 0 8px 24px rgba(0,0,0,.35), 0 0 0 1px rgba(74,143,212,.18);
    }

    /* ── Selection ── */
    ::selection { background: rgba(251,191,36,.3); color: var(--text); }

    /* ── Scrollbar (webkit) ── */
    ::-webkit-scrollbar { width: 6px; height: 6px; }
    ::-webkit-scrollbar-track { background: var(--bg); }
    ::-webkit-scrollbar-thumb { background: var(--border); border-radius: 3px; }
    ::-webkit-scrollbar-thumb:hover { background: var(--steel); }

    /* ── Loading fade-in ── */
    @keyframes fadeUp {
      from { opacity: 0; transform: translateY(14px); }
      to   { opacity: 1; transform: translateY(0); }
    }
    /* fill-mode "backwards": jangan tinggalkan transform setelah animasi selesai,
       karena transform membuat elemen position:fixed di dalamnya (bottom sheet) ikut ter-scroll */
    .page.active { animation: fadeUp .35s ease backwards; }

    /* ── Accent underline on h2 in panels ── */
    .panelHeading {
      font-family: 'Inter', sans-serif;
      font-weight: 800;
      letter-spacing: .01em;
    }

    /* ── Project category badge ── */
    .projBadge {
      font-family: 'Inter', sans-serif;
      font-size: .65rem;
      font-weight: 700;
      letter-spacing: .08em;
      text-transform: uppercase;
      background: rgba(251,191,36,.12);
      border: 1px solid rgba(251,191,36,.25);
      color: #7a5a00;
      padding: .18rem .6rem;
      border-radius: 2px;
    }
    [data-theme="dark"] .projBadge {
      background: rgba(251,191,36,.1);
      border-color: rgba(251,191,36,.2);
      color: #FBBF24;
    }

    /* ── ISO badge ── */
    .isoBadge {
      font-family: 'Inter', sans-serif;
      font-size: .7rem;
      font-weight: 500;
      letter-spacing: .1em;
      color: var(--brand2);
    }

    /* ── Back to top button ── */
    #backToTop {
      font-family: 'Inter', sans-serif;
      font-weight: 700;
      letter-spacing: .08em;
      font-size: .78rem;
      text-transform: uppercase;
    }

    /* ── Hero section: only shown on home ── */
    #heroSection { display: block; }
    body[data-page="home"]    #heroSection { display: block; }
    body[data-page="katalog"]    #heroSection,
    body[data-page="kontak"]     #heroSection,
    body[data-page="artikel"]    #heroSection,
    body[data-page="produk"]     #heroSection { display: none; }

    /* ── Hero slide background images — industrial: diesel engine, electrical panel, genset room ── */
    .heroSlide1 {
      opacity: .45;
      /* Data Center — server racks + circuit traces (SVG inline, no external CDN) */
      background-image: url("data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20800%20580%22%3E%3Cdefs%3E%3ClinearGradient%20id=%22g1%22%20x1=%220%25%22%20y1=%220%25%22%20x2=%22100%25%22%20y2=%22100%25%22%3E%3Cstop%20offset=%220%25%22%20stop-color=%22#020d1f%22/%3E%3Cstop%20offset=%2245%25%22%20stop-color=%22#0a1e3d%22/%3E%3Cstop%20offset=%22100%25%22%20stop-color=%22#0d2a5a%22/%3E%3C/linearGradient%3E%3Cpattern%20id=%22grid%22%20width=%2240%22%20height=%2240%22%20patternUnits=%22userSpaceOnUse%22%3E%3Cpath%20d=%22M%2040%200%20L%200%200%200%2040%22%20fill=%22none%22%20stroke=%22#1265B2%22%20stroke-width=%220.4%22%20opacity=%220.35%22/%3E%3C/pattern%3E%3Cpattern%20id=%22dots%22%20width=%2280%22%20height=%2280%22%20patternUnits=%22userSpaceOnUse%22%3E%3Ccircle%20cx=%2240%22%20cy=%2240%22%20r=%221.5%22%20fill=%22#1e7fd4%22%20opacity=%220.4%22/%3E%3Ccircle%20cx=%220%22%20cy=%220%22%20r=%221.5%22%20fill=%22#1e7fd4%22%20opacity=%220.4%22/%3E%3C/pattern%3E%3CradialGradient%20id=%22glow1%22%20cx=%2275%25%22%20cy=%2225%25%22%20r=%2240%25%22%3E%3Cstop%20offset=%220%25%22%20stop-color=%22#1265B2%22%20stop-opacity=%220.25%22/%3E%3Cstop%20offset=%22100%25%22%20stop-color=%22#1265B2%22%20stop-opacity=%220%22/%3E%3C/radialGradient%3E%3C/defs%3E%3Crect%20width=%22800%22%20height=%22580%22%20fill=%22url(#g1)%22/%3E%3Crect%20width=%22800%22%20height=%22580%22%20fill=%22url(#grid)%22/%3E%3Crect%20width=%22800%22%20height=%22580%22%20fill=%22url(#dots)%22/%3E%3Crect%20x=%2260%22%20y=%2280%22%20width=%2290%22%20height=%22420%22%20rx=%222%22%20fill=%22#0d2a5a%22%20stroke=%22#1265B2%22%20stroke-width=%221.2%22%20opacity=%220.7%22/%3E%3Crect%20x=%22165%22%20y=%2280%22%20width=%2290%22%20height=%22420%22%20rx=%222%22%20fill=%22#0d2a5a%22%20stroke=%22#1265B2%22%20stroke-width=%221.2%22%20opacity=%220.7%22/%3E%3Crect%20x=%22270%22%20y=%2280%22%20width=%2290%22%20height=%22420%22%20rx=%222%22%20fill=%22#0d2a5a%22%20stroke=%22#1265B2%22%20stroke-width=%221.2%22%20opacity=%220.7%22/%3E%3Cg%20stroke=%22#1e7fd4%22%20stroke-width=%220.5%22%20opacity=%220.5%22%3E%3Cline%20x1=%2262%22%20y1=%22100%22%20x2=%22148%22%20y2=%22100%22/%3E%3Cline%20x1=%2262%22%20y1=%22115%22%20x2=%22148%22%20y2=%22115%22/%3E%3Cline%20x1=%2262%22%20y1=%22130%22%20x2=%22148%22%20y2=%22130%22/%3E%3Cline%20x1=%2262%22%20y1=%22145%22%20x2=%22148%22%20y2=%22145%22/%3E%3Cline%20x1=%2262%22%20y1=%22160%22%20x2=%22148%22%20y2=%22160%22/%3E%3Cline%20x1=%2262%22%20y1=%22175%22%20x2=%22148%22%20y2=%22175%22/%3E%3Cline%20x1=%2262%22%20y1=%22190%22%20x2=%22148%22%20y2=%22190%22/%3E%3Cline%20x1=%2262%22%20y1=%22205%22%20x2=%22148%22%20y2=%22205%22/%3E%3Cline%20x1=%2262%22%20y1=%22220%22%20x2=%22148%22%20y2=%22220%22/%3E%3Cline%20x1=%2262%22%20y1=%22235%22%20x2=%22148%22%20y2=%22235%22/%3E%3Cline%20x1=%22167%22%20y1=%22100%22%20x2=%22253%22%20y2=%22100%22/%3E%3Cline%20x1=%22167%22%20y1=%22115%22%20x2=%22253%22%20y2=%22115%22/%3E%3Cline%20x1=%22167%22%20y1=%22130%22%20x2=%22253%22%20y2=%22130%22/%3E%3Cline%20x1=%22167%22%20y1=%22145%22%20x2=%22253%22%20y2=%22145%22/%3E%3Cline%20x1=%22167%22%20y1=%22160%22%20x2=%22253%22%20y2=%22160%22/%3E%3Cline%20x1=%22167%22%20y1=%22175%22%20x2=%22253%22%20y2=%22175%22/%3E%3Cline%20x1=%22167%22%20y1=%22190%22%20x2=%22253%22%20y2=%22190%22/%3E%3Cline%20x1=%22167%22%20y1=%22205%22%20x2=%22253%22%20y2=%22205%22/%3E%3C/g%3E%3Ccircle%20cx=%22140%22%20cy=%22107%22%20r=%222.5%22%20fill=%22#00ff88%22%20opacity=%220.9%22/%3E%3Ccircle%20cx=%22140%22%20cy=%22122%22%20r=%222.5%22%20fill=%22#00aaff%22%20opacity=%220.9%22/%3E%3Ccircle%20cx=%22245%22%20cy=%22107%22%20r=%222.5%22%20fill=%22#00ff88%22%20opacity=%220.9%22/%3E%3Ccircle%20cx=%22245%22%20cy=%22122%22%20r=%222.5%22%20fill=%22#ffaa00%22%20opacity=%220.9%22/%3E%3Cg%20stroke=%22#1265B2%22%20stroke-width=%221%22%20fill=%22none%22%20opacity=%220.6%22%3E%3Cpath%20d=%22M%20500%2060%20L%20500%20160%20L%20600%20160%20L%20600%20200%20L%20720%20200%22/%3E%3Cpath%20d=%22M%20550%2080%20L%20550%20130%20L%20650%20130%20L%20650%20250%20L%20760%20250%22/%3E%3Cpath%20d=%22M%20480%20180%20L%20480%20280%20L%20580%20280%20L%20580%20350%22/%3E%3Cpath%20d=%22M%20600%20300%20L%20700%20300%20L%20700%20400%20L%20780%20400%22/%3E%3C/g%3E%3Ccircle%20cx=%22500%22%20cy=%22160%22%20r=%223%22%20fill=%22#1e7fd4%22%20opacity=%220.8%22/%3E%3Ccircle%20cx=%22600%22%20cy=%22200%22%20r=%223%22%20fill=%22#1e7fd4%22%20opacity=%220.8%22/%3E%3Ccircle%20cx=%22550%22%20cy=%22130%22%20r=%223%22%20fill=%22#1e7fd4%22%20opacity=%220.8%22/%3E%3Ccircle%20cx=%22580%22%20cy=%22280%22%20r=%223%22%20fill=%22#e8a500%22%20opacity=%220.8%22/%3E%3Crect%20width=%22800%22%20height=%22580%22%20fill=%22url(#glow1)%22/%3E%3C/svg%3E");
      background-size: cover;
      background-position: center;
    }
    .heroSlide2 {
      opacity: .45;
      /* Oil & Gas — pipeline + pressure gauges + valve symbols (SVG inline) */
      background-image: url("data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20800%20580%22%3E%3Cdefs%3E%3ClinearGradient%20id=%22g2%22%20x1=%220%25%22%20y1=%22100%25%22%20x2=%22100%25%22%20y2=%220%25%22%3E%3Cstop%20offset=%220%25%22%20stop-color=%22#0d1508%22/%3E%3Cstop%20offset=%2250%25%22%20stop-color=%22#1a2a0d%22/%3E%3Cstop%20offset=%22100%25%22%20stop-color=%22#0f2205%22/%3E%3C/linearGradient%3E%3ClinearGradient%20id=%22pipe_h%22%20x1=%220%25%22%20y1=%220%25%22%20x2=%220%25%22%20y2=%22100%25%22%3E%3Cstop%20offset=%220%25%22%20stop-color=%22#5a7a3a%22/%3E%3Cstop%20offset=%2240%25%22%20stop-color=%22#8aaa5a%22/%3E%3Cstop%20offset=%22100%25%22%20stop-color=%22#3a5a1a%22/%3E%3C/linearGradient%3E%3ClinearGradient%20id=%22pipe_v%22%20x1=%220%25%22%20y1=%220%25%22%20x2=%22100%25%22%20y2=%220%25%22%3E%3Cstop%20offset=%220%25%22%20stop-color=%22#3a5a1a%22/%3E%3Cstop%20offset=%2240%25%22%20stop-color=%22#7aaa4a%22/%3E%3Cstop%20offset=%22100%25%22%20stop-color=%22#2a4a10%22/%3E%3C/linearGradient%3E%3CradialGradient%20id=%22g2glow%22%20cx=%2250%25%22%20cy=%2245%25%22%20r=%2250%25%22%3E%3Cstop%20offset=%220%25%22%20stop-color=%22#5a8a2a%22%20stop-opacity=%220.15%22/%3E%3Cstop%20offset=%22100%25%22%20stop-color=%22#5a8a2a%22%20stop-opacity=%220%22/%3E%3C/radialGradient%3E%3C/defs%3E%3Crect%20width=%22800%22%20height=%22580%22%20fill=%22url(#g2)%22/%3E%3Crect%20x=%220%22%20y=%22240%22%20width=%22800%22%20height=%2236%22%20fill=%22url(#pipe_h)%22/%3E%3Crect%20x=%220%22%20y=%22244%22%20width=%22800%22%20height=%228%22%20fill=%22rgba(255,255,255,0.08)%22/%3E%3Crect%20x=%22100%22%20y=%22100%22%20width=%2236%22%20height=%22260%22%20fill=%22url(#pipe_v)%22/%3E%3Crect%20x=%22104%22%20y=%22100%22%20width=%228%22%20height=%22260%22%20fill=%22rgba(255,255,255,0.08)%22/%3E%3Crect%20x=%22400%22%20y=%2260%22%20width=%2236%22%20height=%22300%22%20fill=%22url(#pipe_v)%22/%3E%3Crect%20x=%22404%22%20y=%2260%22%20width=%228%22%20height=%22300%22%20fill=%22rgba(255,255,255,0.08)%22/%3E%3Crect%20x=%22650%22%20y=%22130%22%20width=%2236%22%20height=%22230%22%20fill=%22url(#pipe_v)%22/%3E%3Crect%20x=%22654%22%20y=%22130%22%20width=%228%22%20height=%22230%22%20fill=%22rgba(255,255,255,0.08)%22/%3E%3Crect%20x=%2292%22%20y=%22190%22%20width=%2252%22%20height=%2210%22%20fill=%22#6a9a3a%22%20rx=%221%22/%3E%3Crect%20x=%2292%22%20y=%22310%22%20width=%2252%22%20height=%2210%22%20fill=%22#6a9a3a%22%20rx=%221%22/%3E%3Crect%20x=%22392%22%20y=%22150%22%20width=%2252%22%20height=%2210%22%20fill=%22#6a9a3a%22%20rx=%221%22/%3E%3Crect%20x=%22392%22%20y=%22290%22%20width=%2252%22%20height=%2210%22%20fill=%22#6a9a3a%22%20rx=%221%22/%3E%3Crect%20x=%22642%22%20y=%22220%22%20width=%2252%22%20height=%2210%22%20fill=%22#6a9a3a%22%20rx=%221%22/%3E%3Ccircle%20cx=%22200%22%20cy=%22230%22%20r=%2222%22%20fill=%22#1a2a0d%22%20stroke=%22#6a9a3a%22%20stroke-width=%222.5%22/%3E%3Ccircle%20cx=%22200%22%20cy=%22230%22%20r=%2216%22%20fill=%22none%22%20stroke=%22#4a7a2a%22%20stroke-width=%221%22/%3E%3Cline%20x1=%22200%22%20y1=%22230%22%20x2=%22210%22%20y2=%22218%22%20stroke=%22#e8a500%22%20stroke-width=%222%22%20stroke-linecap=%22round%22/%3E%3Ccircle%20cx=%22200%22%20cy=%22230%22%20r=%222.5%22%20fill=%22#e8a500%22/%3E%3Ccircle%20cx=%22550%22%20cy=%22225%22%20r=%2222%22%20fill=%22#1a2a0d%22%20stroke=%22#6a9a3a%22%20stroke-width=%222.5%22/%3E%3Ccircle%20cx=%22550%22%20cy=%22225%22%20r=%2216%22%20fill=%22none%22%20stroke=%22#4a7a2a%22%20stroke-width=%221%22/%3E%3Cline%20x1=%22550%22%20y1=%22225%22%20x2=%22558%22%20y2=%22213%22%20stroke=%22#e8a500%22%20stroke-width=%222%22%20stroke-linecap=%22round%22/%3E%3Ccircle%20cx=%22550%22%20cy=%22225%22%20r=%222.5%22%20fill=%22#e8a500%22/%3E%3Cpath%20d=%22M%20320%20248%20L%20340%20262%20L%20320%20276%20L%20300%20262%20Z%22%20fill=%22none%22%20stroke=%22#aac87a%22%20stroke-width=%222%22/%3E%3Cline%20x1=%22320%22%20y1=%22240%22%20x2=%22320%22%20y2=%22248%22%20stroke=%22#aac87a%22%20stroke-width=%222%22/%3E%3Cpath%20d=%22M%20720%20248%20L%20740%20262%20L%20720%20276%20L%20700%20262%20Z%22%20fill=%22none%22%20stroke=%22#aac87a%22%20stroke-width=%222%22/%3E%3Cpolygon%20points=%22400,20%20380,100%20420,100%22%20fill=%22none%22%20stroke=%22#5a8a2a%22%20stroke-width=%221.5%22%20opacity=%220.5%22/%3E%3Cline%20x1=%22400%22%20y1=%2220%22%20x2=%22400%22%20y2=%22100%22%20stroke=%22#5a8a2a%22%20stroke-width=%221%22%20opacity=%220.5%22/%3E%3Crect%20x=%22370%22%20y=%2295%22%20width=%2260%22%20height=%2212%22%20fill=%22#3a6a1a%22%20opacity=%220.6%22/%3E%3Crect%20width=%22800%22%20height=%22580%22%20fill=%22url(#g2glow)%22/%3E%3C/svg%3E");
      background-size: cover;
      background-position: center;
    }
    .heroSlide3 {
      opacity: .45;
      /* High-Rise Building — glass facade skyline night (SVG inline) */
      background-image: url("data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20800%20580%22%3E%3Cdefs%3E%3ClinearGradient%20id=%22sky%22%20x1=%220%25%22%20y1=%220%25%22%20x2=%220%25%22%20y2=%22100%25%22%3E%3Cstop%20offset=%220%25%22%20stop-color=%22#02060f%22/%3E%3Cstop%20offset=%2260%25%22%20stop-color=%22#060d1a%22/%3E%3Cstop%20offset=%22100%25%22%20stop-color=%22#0a1730%22/%3E%3C/linearGradient%3E%3ClinearGradient%20id=%22bg%22%20x1=%220%25%22%20y1=%220%25%22%20x2=%22100%25%22%20y2=%220%25%22%3E%3Cstop%20offset=%220%25%22%20stop-color=%22#0a1e40%22/%3E%3Cstop%20offset=%2250%25%22%20stop-color=%22#0e2850%22/%3E%3Cstop%20offset=%22100%25%22%20stop-color=%22#061428%22/%3E%3C/linearGradient%3E%3CradialGradient%20id=%22gnd%22%20cx=%2250%25%22%20cy=%22100%25%22%20r=%2260%25%22%3E%3Cstop%20offset=%220%25%22%20stop-color=%22#1265B2%22%20stop-opacity=%220.2%22/%3E%3Cstop%20offset=%22100%25%22%20stop-color=%22#1265B2%22%20stop-opacity=%220%22/%3E%3C/radialGradient%3E%3C/defs%3E%3Crect%20width=%22800%22%20height=%22580%22%20fill=%22url(#sky)%22/%3E%3Cg%20fill=%22white%22%20opacity=%220.6%22%3E%3Ccircle%20cx=%2250%22%20cy=%2240%22%20r=%221%22/%3E%3Ccircle%20cx=%22150%22%20cy=%2220%22%20r=%220.8%22/%3E%3Ccircle%20cx=%22280%22%20cy=%2255%22%20r=%221.2%22/%3E%3Ccircle%20cx=%22450%22%20cy=%2230%22%20r=%220.8%22/%3E%3Ccircle%20cx=%22600%22%20cy=%2215%22%20r=%221%22/%3E%3Ccircle%20cx=%22720%22%20cy=%2245%22%20r=%220.9%22/%3E%3Ccircle%20cx=%22350%22%20cy=%2270%22%20r=%220.7%22/%3E%3Ccircle%20cx=%22500%22%20cy=%2260%22%20r=%221.1%22/%3E%3C/g%3E%3Crect%20x=%22340%22%20y=%2280%22%20width=%22120%22%20height=%22500%22%20fill=%22url(#bg)%22/%3E%3Cg%20stroke=%22#1e4a8a%22%20stroke-width=%220.5%22%20opacity=%220.7%22%3E%3Cline%20x1=%22360%22%20y1=%2280%22%20x2=%22360%22%20y2=%22340%22/%3E%3Cline%20x1=%22380%22%20y1=%2280%22%20x2=%22380%22%20y2=%22340%22/%3E%3Cline%20x1=%22400%22%20y1=%2280%22%20x2=%22400%22%20y2=%22340%22/%3E%3Cline%20x1=%22420%22%20y1=%2280%22%20x2=%22420%22%20y2=%22340%22/%3E%3Cline%20x1=%22440%22%20y1=%2280%22%20x2=%22440%22%20y2=%22340%22/%3E%3Cline%20x1=%22340%22%20y1=%22100%22%20x2=%22460%22%20y2=%22100%22/%3E%3Cline%20x1=%22340%22%20y1=%22120%22%20x2=%22460%22%20y2=%22120%22/%3E%3Cline%20x1=%22340%22%20y1=%22140%22%20x2=%22460%22%20y2=%22140%22/%3E%3Cline%20x1=%22340%22%20y1=%22160%22%20x2=%22460%22%20y2=%22160%22/%3E%3Cline%20x1=%22340%22%20y1=%22180%22%20x2=%22460%22%20y2=%22180%22/%3E%3Cline%20x1=%22340%22%20y1=%22200%22%20x2=%22460%22%20y2=%22200%22/%3E%3Cline%20x1=%22340%22%20y1=%22220%22%20x2=%22460%22%20y2=%22220%22/%3E%3Cline%20x1=%22340%22%20y1=%22240%22%20x2=%22460%22%20y2=%22240%22/%3E%3Cline%20x1=%22340%22%20y1=%22260%22%20x2=%22460%22%20y2=%22260%22/%3E%3Cline%20x1=%22340%22%20y1=%22280%22%20x2=%22460%22%20y2=%22280%22/%3E%3Cline%20x1=%22340%22%20y1=%22300%22%20x2=%22460%22%20y2=%22300%22/%3E%3Cline%20x1=%22340%22%20y1=%22320%22%20x2=%22460%22%20y2=%22320%22/%3E%3C/g%3E%3Cg%20fill=%22#f0c040%22%20opacity=%220.7%22%3E%3Crect%20x=%22348%22%20y=%2290%22%20width=%228%22%20height=%228%22/%3E%3Crect%20x=%22368%22%20y=%2290%22%20width=%228%22%20height=%228%22/%3E%3Crect%20x=%22408%22%20y=%22110%22%20width=%228%22%20height=%228%22/%3E%3Crect%20x=%22428%22%20y=%22110%22%20width=%228%22%20height=%228%22/%3E%3Crect%20x=%22348%22%20y=%22150%22%20width=%228%22%20height=%228%22/%3E%3Crect%20x=%22388%22%20y=%22150%22%20width=%228%22%20height=%228%22/%3E%3Crect%20x=%22428%22%20y=%22170%22%20width=%228%22%20height=%228%22/%3E%3Crect%20x=%22348%22%20y=%22210%22%20width=%228%22%20height=%228%22/%3E%3Crect%20x=%22408%22%20y=%22230%22%20width=%228%22%20height=%228%22/%3E%3Crect%20x=%22368%22%20y=%22270%22%20width=%228%22%20height=%228%22/%3E%3Crect%20x=%22428%22%20y=%22290%22%20width=%228%22%20height=%228%22/%3E%3Crect%20x=%22348%22%20y=%22310%22%20width=%228%22%20height=%228%22/%3E%3C/g%3E%3Cline%20x1=%22400%22%20y1=%2280%22%20x2=%22400%22%20y2=%2250%22%20stroke=%22#aac8ff%22%20stroke-width=%221.5%22/%3E%3Ccircle%20cx=%22400%22%20cy=%2250%22%20r=%222%22%20fill=%22#ff4444%22%20opacity=%220.8%22/%3E%3Crect%20x=%22140%22%20y=%22200%22%20width=%2280%22%20height=%22380%22%20fill=%22#08152e%22%20stroke=%22#1a3a6a%22%20stroke-width=%220.8%22/%3E%3Cg%20stroke=%22#1a3a6a%22%20stroke-width=%220.4%22%20opacity=%220.6%22%3E%3Cline%20x1=%22160%22%20y1=%22200%22%20x2=%22160%22%20y2=%22380%22/%3E%3Cline%20x1=%22180%22%20y1=%22200%22%20x2=%22180%22%20y2=%22380%22/%3E%3Cline%20x1=%22200%22%20y1=%22200%22%20x2=%22200%22%20y2=%22380%22/%3E%3Cline%20x1=%22140%22%20y1=%22220%22%20x2=%22220%22%20y2=%22220%22/%3E%3Cline%20x1=%22140%22%20y1=%22240%22%20x2=%22220%22%20y2=%22240%22/%3E%3Cline%20x1=%22140%22%20y1=%22260%22%20x2=%22220%22%20y2=%22260%22/%3E%3Cline%20x1=%22140%22%20y1=%22280%22%20x2=%22220%22%20y2=%22280%22/%3E%3Cline%20x1=%22140%22%20y1=%22300%22%20x2=%22220%22%20y2=%22300%22/%3E%3Cline%20x1=%22140%22%20y1=%22320%22%20x2=%22220%22%20y2=%22320%22/%3E%3C/g%3E%3Cg%20fill=%22#f0c040%22%20opacity=%220.6%22%3E%3Crect%20x=%22148%22%20y=%22210%22%20width=%227%22%20height=%227%22/%3E%3Crect%20x=%22165%22%20y=%22230%22%20width=%227%22%20height=%227%22/%3E%3Crect%20x=%22185%22%20y=%22250%22%20width=%227%22%20height=%227%22/%3E%3Crect%20x=%22148%22%20y=%22270%22%20width=%227%22%20height=%227%22/%3E%3Crect%20x=%22205%22%20y=%22290%22%20width=%227%22%20height=%227%22/%3E%3C/g%3E%3Crect%20x=%22580%22%20y=%22170%22%20width=%22100%22%20height=%22410%22%20fill=%22#07132a%22%20stroke=%22#1a3a6a%22%20stroke-width=%220.8%22/%3E%3Cg%20stroke=%22#1a3a6a%22%20stroke-width=%220.4%22%20opacity=%220.6%22%3E%3Cline%20x1=%22600%22%20y1=%22170%22%20x2=%22600%22%20y2=%22370%22/%3E%3Cline%20x1=%22620%22%20y1=%22170%22%20x2=%22620%22%20y2=%22370%22/%3E%3Cline%20x1=%22640%22%20y1=%22170%22%20x2=%22640%22%20y2=%22370%22/%3E%3Cline%20x1=%22660%22%20y1=%22170%22%20x2=%22660%22%20y2=%22370%22/%3E%3Cline%20x1=%22580%22%20y1=%22190%22%20x2=%22680%22%20y2=%22190%22/%3E%3Cline%20x1=%22580%22%20y1=%22210%22%20x2=%22680%22%20y2=%22210%22/%3E%3Cline%20x1=%22580%22%20y1=%22230%22%20x2=%22680%22%20y2=%22230%22/%3E%3Cline%20x1=%22580%22%20y1=%22250%22%20x2=%22680%22%20y2=%22250%22/%3E%3Cline%20x1=%22580%22%20y1=%22270%22%20x2=%22680%22%20y2=%22270%22/%3E%3Cline%20x1=%22580%22%20y1=%22290%22%20x2=%22680%22%20y2=%22290%22/%3E%3Cline%20x1=%22580%22%20y1=%22310%22%20x2=%22680%22%20y2=%22310%22/%3E%3Cline%20x1=%22580%22%20y1=%22330%22%20x2=%22680%22%20y2=%22330%22/%3E%3Cline%20x1=%22580%22%20y1=%22350%22%20x2=%22680%22%20y2=%22350%22/%3E%3C/g%3E%3Cg%20fill=%22#f0c040%22%20opacity=%220.6%22%3E%3Crect%20x=%22588%22%20y=%22180%22%20width=%227%22%20height=%227%22/%3E%3Crect%20x=%22608%22%20y=%22200%22%20width=%227%22%20height=%227%22/%3E%3Crect%20x=%22648%22%20y=%22220%22%20width=%227%22%20height=%227%22/%3E%3Crect%20x=%22588%22%20y=%22260%22%20width=%227%22%20height=%227%22/%3E%3Crect%20x=%22628%22%20y=%22280%22%20width=%227%22%20height=%227%22/%3E%3Crect%20x=%22668%22%20y=%22300%22%20width=%227%22%20height=%227%22/%3E%3C/g%3E%3Crect%20width=%22800%22%20height=%22580%22%20fill=%22url(#gnd)%22/%3E%3C/svg%3E");
      background-size: cover;
      background-position: center;
    }

    /* ── Page Banner (mini hero for non-home pages) ── */
    #pageBanner { display: none; }
    body[data-page="kontak"]     #pageBanner,
    body[data-page="artikel"]    #pageBanner,
    body[data-page="produk"]     #pageBanner { display: block; }

    .pageBannerWrap {
      position: relative;
      height: 200px;
      overflow: hidden;
      background: var(--heroGradFrom);
    }
    @media (max-width: 640px) { .pageBannerWrap { height: 160px; } }

    .pageBannerBg {
      position: absolute;
      inset: 0;
      background-size: cover;
      background-position: center;
      transition: opacity .5s ease, background-image .4s ease;
    }
    @keyframes skelPulse {
      0%, 100% { opacity: 1; }
      50%       { opacity: .45; }
    }

    /* Parallax-lite: subtle scale on load */
    .pageBannerBg { transform: scale(1.04); animation: bannerZoom 8s ease forwards; }
    @keyframes bannerZoom {
      from { transform: scale(1.06); }
      to   { transform: scale(1.0); }
    }

    .pageBannerOverlay {
      position: absolute;
      inset: 0;
      background: linear-gradient(
        105deg,
        rgba(6,13,26,.82) 0%,
        rgba(13,34,71,.65) 50%,
        rgba(18,45,94,.45) 100%
      );
    }
    /* diagonal stripe — same industrial feel as hero */
    .pageBannerOverlay::after {
      content: '';
      position: absolute;
      inset: 0;
      background-image: repeating-linear-gradient(
        -45deg, transparent, transparent 18px,
        rgba(255,255,255,.015) 18px, rgba(255,255,255,.015) 19px
      );
      pointer-events: none;
    }

    .pageBannerContent {
      position: relative;
      z-index: 2;
      height: 100%;
      display: flex;
      flex-direction: column;
      justify-content: flex-end;
      padding-top: 2.75rem;
      padding-bottom: 28px;
    }

    .pageBannerEyebrow {
      font-family: 'Inter', sans-serif;
      font-size: .65rem;
      font-weight: 500;
      letter-spacing: .14em;
      text-transform: uppercase;
      color: var(--accent);
      display: flex;
      align-items: center;
      gap: 8px;
      margin-bottom: 8px;
    }
    .pageBannerEyebrow::before {
      content: '';
      display: inline-block;
      width: 24px; height: 2px;
      background: var(--accent);
    }

    .pageBannerTitle {
      font-family: 'Inter', sans-serif;
      font-weight: 800;
      font-size: clamp(1.6rem, 4vw, 2.4rem);
      line-height: 1.05;
      letter-spacing: .01em;
      color: #ffffff;
      text-shadow: 0 2px 16px rgba(0,0,0,.5);
    }

    .pageBannerSub {
      margin-top: 6px;
      font-size: .8rem;
      color: rgba(255,255,255,.7);
      max-width: 480px;
      line-height: 1.5;
    }

    /* accent left border line */
    .pageBannerAccent {
      position: absolute;
      left: 0; top: 0; bottom: 0;
      width: 3px;
      background: linear-gradient(180deg, transparent, var(--accent) 30%, var(--accent) 70%, transparent);
    }

    /* breadcrumb strip below banner */
    .pageBannerCrumb {
      background: var(--panel);
      border-bottom: 1px solid var(--border);
      padding: 8px 0;
      font-family: 'Inter', sans-serif;
      font-size: .65rem;
      letter-spacing: .08em;
      color: var(--muted);
      text-transform: uppercase;
    }
    .pageBannerCrumb a { color: var(--brand2); text-decoration: none; }
    .pageBannerCrumb a:hover { color: var(--accent); }
    .pageBannerCrumb span { color: var(--muted); }

    /* ── Sticky mobile CTA bar (produk-detail) ── */
    .produkMobileCta {
      display: none;
      position: fixed;
      bottom: 0; left: 0; right: 0;
      z-index: 60;
      background: var(--panel);
      border-top: 1px solid var(--border);
      box-shadow: 0 -4px 16px rgba(0,0,0,.12);
    }
    @media (max-width: 1023px) {
      body[data-page="produk"] .produkMobileCta { display: block; }
      /* Add bottom padding to main so content isn't hidden behind bar */
      body[data-page="produk"] main { padding-bottom: 72px; }
      /* Angkat tombol back-to-top supaya tidak tertindih sticky bar WhatsApp */
      body[data-page="produk"] .fabWrap { bottom: 73px; }
    }
    [data-theme="dark"] .produkMobileCta {
      box-shadow: 0 -4px 20px rgba(0,0,0,.4);
    }

    /* Stack card action buttons at very narrow viewports */
    @media (max-width: 360px) {
      .cardActions { grid-template-columns: 1fr !important; }
    }

    /* ── Product Card Enhanced ── */
    .prodCard {
      position: relative;
      display: flex;
      flex-direction: column;
      overflow: hidden;
      transition: box-shadow .25s, transform .25s, border-color .25s;
    }
    .prodCard:hover {
      box-shadow: 0 12px 40px rgba(15,76,129,.14);
      transform: translateY(-3px);
      border-color: var(--brand2) !important;
    }
    .prodAccentBar {
      height: 6px;
      width: 100%;
      flex-shrink: 0;
    }
    /* Genset product image */
    .prodImgWrap {
      position: relative;
      aspect-ratio: 3 / 2;
      width: 100%;
      background: color-mix(in srgb, var(--bc, #1265B2) 8%, var(--panel2));
      overflow: hidden;
      flex-shrink: 0;
    }
    .prodImgWrap::after {
      content: "";
      position: absolute;
      bottom: 0; left: 0; right: 0;
      height: 48px;
      background: linear-gradient(to bottom, transparent, var(--panel));
      pointer-events: none;
    }
    .prodImg {
      width: 100%;
      height: 100%;
      object-fit: contain;
      padding: 10px 0;
      transition: transform .35s ease;
    }
    .prodCard:hover .prodImg {
      transform: scale(1.05);
    }
    /* KVA boxes */
    .kvaBox {
      background: var(--panel2);
      border: 1px solid var(--border);
      padding: 12px 14px;
    }
    .kvaLabel {
      font-family: 'Inter', sans-serif;
      font-size: .6rem;
      letter-spacing: .1em;
      text-transform: uppercase;
      color: var(--muted);
    }
    .kvaValue {
      font-family: 'Barlow Condensed', 'Inter', sans-serif;
      font-weight: 700;
      font-size: 1.9rem;
      color: var(--text);
      line-height: 1;
      margin-top: 3px;
      letter-spacing: -.01em;
    }
    .kvaUnit {
      font-size: .8rem;
      font-weight: 600;
      color: var(--muted);
    }
    /* Spec mini table */
    .specTable { display: flex; flex-direction: column; gap: 4px; }
    .specRow {
      display: flex;
      align-items: baseline;
      gap: 6px;
      font-size: .72rem;
      line-height: 1.4;
    }
    .specKey {
      font-family: 'Inter', sans-serif;
      font-size: .7rem;
      letter-spacing: .05em;
      text-transform: uppercase;
      color: var(--muted);
      flex-shrink: 0;
      width: 76px;
    }
    .specVal { color: var(--text); font-size: .75rem; }
    /* Feature list */
    .featureList {
      list-style: none;
      padding: 0;
      margin: 0;
      font-size: .75rem;
      color: var(--text);
      opacity: .85;
      display: flex;
      flex-direction: column;
      gap: 2px;
    }
    /* Application tags */
    .appTags { display: flex; flex-wrap: wrap; gap: 5px; }
    .appTag {
      font-family: 'Inter', sans-serif;
      font-size: .67rem;
      letter-spacing: .04em;
      text-transform: uppercase;
      padding: 3px 9px;
      border: 1px solid var(--brand2);
      background: transparent;
      color: var(--text);
      white-space: nowrap;
      opacity: .75;
    }
    [data-theme="dark"] .appTag {
      border-color: rgba(59,125,216,.35);
      color: var(--text);
    }
    /* Pagination enhanced */
    #pgNavWrap {
      margin-top: 40px;
    }
    /* ── Bottom nav row ── */
    .pgNavRow {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 16px;
      padding: 16px 0 0;
      flex-wrap: wrap;
    }
    .pgNav {
      display: flex;
      align-items: center;
      gap: 4px;
      flex-wrap: wrap;
    }
    .pgBtn {
      min-width: 42px;
      height: 42px;
      padding: 0 14px;
      display: inline-flex;
      align-items: center;
      justify-content: center;
      border: 1px solid var(--border);
      background: var(--panel);
      font-family: 'Inter', sans-serif;
      font-size: .82rem;
      letter-spacing: .04em;
      cursor: pointer;
      transition: background .15s, border-color .15s, color .15s;
      color: var(--text);
    }
    .pgBtn:hover:not(:disabled):not(.pgActive) {
      background: var(--brand2);
      border-color: var(--brand2);
      color: #fff;
    }
    .pgBtn.pgActive {
      background: var(--brand);
      border-color: var(--brand);
      color: #fff;
      font-weight: 700;
      pointer-events: none;
    }
    .pgBtn:disabled { opacity: .3; cursor: not-allowed; }
    .pgInfo {
      font-family: 'Inter', sans-serif;
      font-size: .68rem;
      letter-spacing: .06em;
      text-transform: uppercase;
      color: var(--muted);
      text-align: right;
    }
    /* Page label strip above grid */
    .pgStripLabel {
      display: flex;
      align-items: center;
      gap: 10px;
      margin-bottom: 16px;
      padding-bottom: 12px;
      border-bottom: 1px solid var(--border);
    }
    .pgStripNum {
      font-family: 'Inter', sans-serif;
      font-weight: 800;
      font-size: 1rem;
      color: #fff;
      background: var(--brand);
      width: 28px; height: 28px;
      display: flex; align-items: center; justify-content: center;
    }
    .pgStripText {
      font-family: 'Inter', sans-serif;
      font-size: .68rem;
      letter-spacing: .07em;
      text-transform: uppercase;
      color: var(--muted);
    }

/* ============================================================
   KATALOG SIDEBAR LAYOUT
   ============================================================ */

/* Desktop: dua kolom — filter sidebar kiri, produk kanan */
.katalogLayout {
  display: grid;
  grid-template-columns: 240px 1fr;
  gap: 1.5rem;
  align-items: start;
  padding: 1.5rem 0 2.5rem;
}

.katalogSidebar {
  position: sticky;
  top: calc(var(--header-h, 64px) + 1rem);
  border: 1px solid var(--border);
  border-radius: 6px;
  background: var(--panel);
  padding: 1.25rem;
  max-height: calc(100vh - var(--header-h, 64px) - 2rem);
  overflow-y: auto;
}

.katalogSidebarTitle {
  font-family: 'Inter', sans-serif;
  font-weight: 700;
  font-size: .72rem;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--muted);
  padding-bottom: .75rem;
  border-bottom: 1px solid var(--border);
  margin-bottom: 1rem;
}

.katalogFilterGroup {
  display: flex;
  flex-direction: column;
  gap: .85rem;
  margin-bottom: 1rem;
}

.katalogFilterGroup label {
  display: block;
  font-family: 'Inter', sans-serif;
  font-size: .65rem;
  letter-spacing: .07em;
  text-transform: uppercase;
  color: var(--muted);
  margin-bottom: .35rem;
}

.katalogFilterGroup select,
.katalogFilterGroup input {
  width: 100%;
  border-radius: 5px;
  border: 1px solid var(--border);
  background: var(--panel);
  color: var(--text);
  font-size: .8rem;
  padding: .5rem .65rem;
  outline: none;
  transition: border-color .15s;
}

.katalogFilterGroup select:focus,
.katalogFilterGroup input:focus {
  border-color: var(--brand2);
  box-shadow: 0 0 0 2px rgba(15,76,129,.12);
}

.katalogSidebarMeta {
  margin-top: .85rem;
  padding-top: .75rem;
  border-top: 1px solid var(--border);
  font-family: 'Inter', sans-serif;
  font-size: .72rem;
  color: var(--muted);
  line-height: 1.5;
}

.katalogSidebarMeta strong { color: var(--text); }

/* Konten produk (kanan) */
.katalogContent {
  min-width: 0;
}

/* Filter toggle button — mobile only */
#filterToggle {
  display: none;
  align-items: center;
  gap: .85rem;
  width: 100%;
  padding: .8rem 1rem;
  margin-bottom: 1rem;
  background: linear-gradient(135deg, #071e27 0%, #0F4C81 55%, #1a6fb5 100%);
  border: 0;
  border-radius: 8px;
  box-shadow: 0 6px 16px rgba(15,76,129,.28);
  font-family: 'Inter', sans-serif;
  color: #fff;
  text-align: left;
  cursor: pointer;
  transition: filter .15s ease, transform .1s ease, box-shadow .15s ease;
}
#filterToggle:hover { filter: brightness(1.08); }
#filterToggle:active { transform: translateY(1px); box-shadow: 0 3px 10px rgba(15,76,129,.25); }
#filterToggle[aria-expanded="true"] { outline: 2px solid var(--accent); outline-offset: 2px; }

.filterToggleIcon {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  border-radius: 6px;
  background: rgba(255,255,255,.14);
  color: var(--accent);
}
.filterToggleIcon svg { width: 18px; height: 18px; }
.filterToggleText {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}
.filterToggleTitle { font-size: .95rem; font-weight: 700; line-height: 1.25; }
.filterToggleSub { font-size: .72rem; font-weight: 400; color: rgba(255,255,255,.75); }
.filterToggleSub b { color: #fff; font-weight: 700; }
.filterToggleChevron { flex-shrink: 0; width: 18px; height: 18px; opacity: .8; }
.filterToggleTitle,
.filterToggleSub { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
@media (max-width: 359px) {
  .filterToggleIcon { display: none; }
}

/* Mobile overrides */
@media (max-width: 767px) {
  .katalogLayout {
    grid-template-columns: 1fr;
    padding: 1rem 0 2rem;
  }

  /* Sidebar filter → bottom sheet */
  .katalogSidebar {
    position: fixed;
    top: auto;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 60;
    display: flex;
    flex-direction: column;
    max-height: 85dvh;
    overflow-y: auto;
    overscroll-behavior: contain;
    padding: 0 1.25rem;
    border: 0;
    border-radius: 14px 14px 0 0;
    box-shadow: 0 -12px 32px rgba(7,30,39,.22);
    transform: translateY(100%);
    visibility: hidden;
    transition: transform .25s ease, visibility .25s;
  }
  .katalogSidebar.open {
    transform: none;
    visibility: visible;
    /* visibility langsung aktif saat membuka, supaya tombol ✕ bisa langsung difokus */
    transition: transform .25s ease, visibility 0s;
  }
  .katalogSheetHead {
    position: sticky;
    top: 0;
    z-index: 1;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    margin: 0 -1.25rem 1rem;
    padding: 1.1rem 1.25rem .6rem;
    background: var(--panel);
    border-bottom: 1px solid var(--border);
  }
  .katalogSheetHead::before {
    content: '';
    position: absolute;
    top: 6px;
    left: 50%;
    width: 36px;
    height: 4px;
    margin-left: -18px;
    border-radius: 2px;
    background: var(--border);
  }
  .katalogSheetHead .katalogSidebarTitle {
    padding: 0;
    margin: 0;
    border: 0;
    font-size: .8rem;
    color: var(--text);
  }
  .katalogSheetHead .katalogSheetClose {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    margin-right: -.5rem;
    border: 0;
    border-radius: 6px;
    background: none;
    color: var(--text);
    cursor: pointer;
  }
  .katalogSheetClose:hover { background: var(--panel2); }
  .katalogSheetFoot {
    order: 99;
    position: sticky;
    bottom: 0;
    display: grid;
    grid-template-columns: 1fr 1.6fr;
    gap: .6rem;
    margin: 1rem -1.25rem 0;
    padding: .75rem 1.25rem calc(.75rem + env(safe-area-inset-bottom));
    background: var(--panel);
    border-top: 1px solid var(--border);
  }
  .katalogSheetFoot #btnResetCatalog { min-height: 44px; }
  .katalogSheetFoot .katalogSheetApply { display: inline-flex; }
  .katalogSidebarMeta { display: none; }
  .katalogSheetBackdrop {
    position: fixed;
    inset: 0;
    z-index: 55;
    background: rgba(7,30,39,.45);
  }
  .katalogSheetBackdrop[hidden] { display: none; }

  #filterToggle {
    display: flex;
  }
}

html.sheetOpen { overflow: hidden; }
html.sheetOpen .fabBtn { visibility: hidden; }
.katalogSheetClose,
.katalogSheetApply { display: none; }
.katalogSheetApply {
  align-items: center;
  justify-content: center;
  gap: .3rem;
  min-height: 44px;
  padding: .5rem 1rem;
  border: 0;
  border-radius: 5px;
  background: #0F4C81;
  color: #fff;
  font-family: 'Inter', sans-serif;
  font-size: .85rem;
  font-weight: 600;
  cursor: pointer;
}
.katalogSheetApply:hover { background: #0a3d6a; }
[data-theme="dark"] .katalogSheetApply { background: #1a6fb5; }
[data-theme="dark"] .katalogSheetApply:hover { background: #155f9e; }
.filterToggleBadge {
  flex-shrink: 0;
  min-width: 22px;
  height: 22px;
  padding: 0 7px;
  border-radius: 11px;
  background: var(--accent);
  color: #0d1117;
  font-size: .7rem;
  font-weight: 700;
  line-height: 22px;
  text-align: center;
}
.filterToggleBadge[hidden] { display: none; }

/* ── Katalog: compact card mode ── */

/* Sembunyikan app tags */
body[data-page="katalog"] .appTags { display: none; }

/* Kurangi padding konten card */
body[data-page="katalog"] .prodCard > div:last-child { padding: 1rem !important; }

/* ── Produk-detail: card "Produk Terkait" — gambar full-bleed di background putih ── */
body[data-page="produk"] .prodImgWrap { background: #fff; }
body[data-page="produk"] .prodImgWrap::after { background: linear-gradient(to bottom, transparent, #fff); }

/* ── Produk-detail: foto genset unit yang sedang dibuka, tampil di atas ── */
#productDetailGallery .prodImgWrap {
  aspect-ratio: 2 / 1;
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 4px;
}

.prodGalleryCarousel {
  border-radius: 4px;
  outline: none;
}
.prodGalleryViewport {
  position: relative;
  overflow: hidden;
  border-radius: 4px;
}
.prodGalleryTrack {
  display: flex;
  transition: transform .45s ease;
}
.prodGallerySlide {
  flex: 0 0 100%;
  min-width: 0;
}
.prodGalleryArrow {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 34px;
  height: 34px;
  border-radius: 999px;
  border: 1px solid var(--border);
  background: rgba(255,255,255,.9);
  color: #1f2937;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.2rem;
  cursor: pointer;
}
.prodGalleryArrow--prev { left: 10px; }
.prodGalleryArrow--next { right: 10px; }
.prodGalleryDots {
  position: absolute;
  bottom: 10px;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  gap: 6px;
}
.prodGalleryDot {
  width: 6px;
  height: 6px;
  border-radius: 999px;
  background: rgba(255,255,255,.6);
  border: none;
  cursor: pointer;
}
.prodGalleryDot.is-active {
  background: var(--brand);
  width: 18px;
  border-radius: 999px;
}
#productDetailGallery .prodImgSlideCaption {
  margin-top: 4px;
  font-size: .7rem;
  text-align: center;
  color: var(--muted);
}
#productDetailGallery .prodImgDisclaimer {
  margin-top: 8px;
  font-size: .7rem;
  font-style: italic;
  color: var(--muted);
}

/* dark mode: kartu foto lebih lembut, bukan putih tajam */
body[data-theme="dark"][data-page="produk"] .prodImgWrap,
body[data-theme="dark"][data-page="katalog"] .prodImgWrap {
  background: #e4e7ec;
  box-shadow: 0 8px 24px rgba(0,0,0,.4);
}
body[data-theme="dark"][data-page="produk"] .prodImgWrap::after,
body[data-theme="dark"][data-page="katalog"] .prodImgWrap::after {
  background: linear-gradient(to bottom, transparent, #e4e7ec);
}
body[data-theme="dark"][data-page="produk"] #productDetailGallery .prodImgWrap {
  background: #e4e7ec;
}

/* ── Produk-detail (mobile): satukan foto genset dengan slot Prime/Standby, tanpa outline terpisah ── */
@media (max-width: 639.98px) {
  body[data-page="produk"] .prodDetailHero {
    margin-top: 0 !important;
    border-top: none;
    border-top-left-radius: 0;
    border-top-right-radius: 0;
  }
  body[data-page="produk"] #productDetailGallery .prodImgWrap {
    border-bottom: none;
    border-bottom-left-radius: 0;
    border-bottom-right-radius: 0;
  }
}

/* ── Produk-detail: "Produk Terkait" — grid lengkap (tablet) vs scroller mini 3-kolom (mobile) vs 1-baris+geser (desktop) ── */
#productDetailRelatedMobile { display: none; }
#productDetailRelatedDesktop { display: none; }
#productDetailRelatedControlsDesktop { display: none; }

@media (max-width: 639.98px) {
  #productDetailRelatedProducts.prodRelatedGrid { display: none; }
  #productDetailRelatedMobile {
    display: flex;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
  }
  #productDetailRelatedMobile::-webkit-scrollbar { display: none; }
  .prodRelatedMobilePage {
    flex: 0 0 100%;
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 8px;
    scroll-snap-align: start;
  }
}

@media (min-width: 1024px) {
  #productDetailRelatedProducts.prodRelatedGrid { display: none; }
  #productDetailRelatedDesktop {
    display: flex;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
  }
  #productDetailRelatedDesktop::-webkit-scrollbar { display: none; }
  .prodRelatedDesktopPage {
    flex: 0 0 100%;
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 1rem;
    scroll-snap-align: start;
  }
  #productDetailRelatedControlsDesktop { display: flex; }
}

/* Kartu mini untuk scroller "Produk Terkait" mobile: foto + nama + KVA saja */
.prodMiniCard {
  display: flex;
  flex-direction: column;
  border: 1px solid var(--border);
  border-radius: 4px;
  background: var(--panel);
  overflow: hidden;
  text-decoration: none;
  color: inherit;
}
.prodMiniCardImg {
  aspect-ratio: 1 / 1;
  background: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}
.prodMiniCardImg img { width: 100%; height: 100%; object-fit: contain; padding: 6px; }
.prodMiniCardName {
  font-size: 11px;
  font-weight: 700;
  line-height: 1.25;
  padding: 6px 6px 0;
  color: var(--text);
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.prodMiniCardSpecRow {
  display: flex;
  justify-content: space-between;
  gap: 4px;
  font-size: 9.5px;
  padding: 1px 6px;
  color: var(--muted);
}
.prodMiniCardSpecRow b { color: var(--text); font-weight: 700; }
.prodMiniCardSpecRow:last-of-type { padding-bottom: 6px; }
.prodRelatedControls {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 14px;
  margin-top: 14px;
}
.prodRelatedArrow {
  width: 34px;
  height: 34px;
  flex-shrink: 0;
  color: var(--text);
  background: var(--panel);
  transition: background .15s ease, opacity .15s ease;
}
.prodRelatedArrow svg { width: 16px; height: 16px; }
.prodRelatedArrow:hover { background: var(--panel2); }
.prodRelatedArrow:disabled { opacity: .35; pointer-events: none; }
.prodRelatedDots { display: flex; align-items: center; gap: 6px; }
.prodRelatedDot {
  width: 6px;
  height: 6px;
  padding: 0;
  border: none;
  border-radius: 999px;
  background: var(--border);
  cursor: pointer;
  transition: background .2s ease, width .2s ease;
}
.prodRelatedDot.is-active { background: var(--brand); width: 18px; }

/* KVA boxes: padding lebih rapat */
body[data-page="katalog"] .kvaBox { padding: 8px 10px; }

/* KVA value: font lebih kecil */
body[data-page="katalog"] .kvaValue { font-size: 1.5rem; }

/* Spec table: gap lebih rapat */
body[data-page="katalog"] .specTable { gap: 2px; }

/* Tombol CTA: tetap 2 baris (stacked) */
body[data-page="katalog"] .cardActions {
  flex-direction: column;
  gap: 6px;
}

/* ── Katalog: hero card (gradient) ── */
.katalogHeroStrip {
  position: relative;
  overflow: hidden;
  isolation: isolate;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  margin: .75rem 0 1rem;
  padding: 1.35rem 1.1rem 1.1rem;
  border-radius: 14px;
  background: linear-gradient(135deg, var(--heroGradFrom) 0%, var(--heroGradMid) 60%, var(--heroGradTo) 100%);
  color: var(--heroText);
  box-shadow: 0 14px 30px rgba(7,30,39,.18);
}
.katalogHeroStrip::before,
.katalogHeroStrip::after {
  content: "";
  position: absolute;
  pointer-events: none;
  z-index: -1;
}
.katalogHeroStrip::before {
  inset: 0;
  background:
    repeating-linear-gradient(0deg, rgba(255,255,255,.05) 0 1px, transparent 1px 22px),
    repeating-linear-gradient(90deg, rgba(255,255,255,.05) 0 1px, transparent 1px 22px);
  -webkit-mask-image: linear-gradient(200deg, #000 0%, transparent 70%);
          mask-image: linear-gradient(200deg, #000 0%, transparent 70%);
}
.katalogHeroStrip::after {
  top: -70px;
  right: -60px;
  width: 190px;
  height: 190px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(251,191,36,.38) 0%, rgba(251,191,36,0) 70%);
}
.katalogHeroStrip h1 {
  font-family: 'Inter', sans-serif;
  font-weight: 800;
  font-size: 1.5rem;
  letter-spacing: -.025em;
  line-height: 1.15;
  color: var(--heroText);
  margin: 0 0 .55rem;
}
/* Baris "9 kVA – 4.125 kVA · brand…" jadi eyebrow di atas judul */
.katalogHeroStrip p:not(.katalogHeroDesc) {
  order: -1;
  margin: 0 0 .7rem;
  color: rgba(255,255,255,.7);
  font-family: 'Inter', sans-serif;
  font-size: .7rem;
  font-weight: 500;
  line-height: 1.9;
}
.katalogHeroStrip p:not(.katalogHeroDesc) > span:first-child {
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  margin-right: .15rem;
  padding: .2rem .6rem;
  border-radius: 999px;
  background: rgba(251,191,36,.14);
  border: 1px solid rgba(251,191,36,.35);
  color: var(--accent);
  font-size: .66rem;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
  white-space: nowrap;
}
.katalogHeroStrip p:not(.katalogHeroDesc) > span:first-child::before {
  content: "";
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--accent);
  box-shadow: 0 0 0 3px rgba(251,191,36,.25);
}
.katalogHeroDesc {
  color: var(--heroText);
  opacity: .8;
  font-size: .8rem;
  line-height: 1.65;
  margin: 0 0 1rem;
}
.katalogHeroTrustRow {
  display: flex;
  gap: .4rem;
  align-items: center;
}
.katalogHeroTrustBadge {
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  font-family: 'Inter', sans-serif;
  font-size: .66rem;
  font-weight: 600;
  letter-spacing: .05em;
  text-transform: uppercase;
  white-space: nowrap;
  padding: .38rem .7rem;
  border-radius: 999px;
  background: rgba(255,255,255,.1);
  border: 1px solid rgba(255,255,255,.18);
  color: var(--heroText);
  -webkit-backdrop-filter: blur(4px);
          backdrop-filter: blur(4px);
}
.katalogHeroTrustBadge svg { width: 12px; height: 12px; flex-shrink: 0; color: var(--accent); }

/* Mobile: deskripsi dipotong, badge jadi strip geser horizontal */
@media (max-width: 767px) {
  .katalogHeroDesc {
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 3;
    line-clamp: 3;
    overflow: hidden;
  }
  .katalogHeroTrustRow {
    align-self: stretch;
    flex-wrap: nowrap;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scrollbar-width: none;
    margin: 0 -1.1rem;
    padding: 0 1.1rem 2px;
    scroll-padding: 0 1.1rem;
    -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 1.1rem, #000 calc(100% - 2rem), transparent 100%);
            mask-image: linear-gradient(90deg, transparent 0, #000 1.1rem, #000 calc(100% - 2rem), transparent 100%);
  }
  .katalogHeroTrustRow::-webkit-scrollbar { display: none; }
  .katalogHeroTrustBadge { flex: 0 0 auto; scroll-snap-align: start; }
}

/* Desktop: dua kolom — teks di kiri, panel badge di kanan */
@media (min-width: 768px) {
  .katalogHeroStrip {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(280px, 360px);
    grid-template-rows: auto auto 1fr;
    column-gap: 2.5rem;
    align-items: start;
    margin: 1.25rem 0 1.5rem;
    padding: 2.25rem 2.25rem 2.1rem;
    border-radius: 18px;
    box-shadow: 0 22px 44px rgba(7,30,39,.2);
  }
  .katalogHeroStrip::before {
    background:
      repeating-linear-gradient(0deg, rgba(255,255,255,.045) 0 1px, transparent 1px 28px),
      repeating-linear-gradient(90deg, rgba(255,255,255,.045) 0 1px, transparent 1px 28px);
    -webkit-mask-image: linear-gradient(250deg, #000 0%, transparent 65%);
            mask-image: linear-gradient(250deg, #000 0%, transparent 65%);
  }
  .katalogHeroStrip::after {
    top: -120px;
    right: -80px;
    width: 340px;
    height: 340px;
    background: radial-gradient(circle, rgba(251,191,36,.28) 0%, rgba(251,191,36,0) 70%);
  }
  .katalogHeroStrip p:not(.katalogHeroDesc) { grid-column: 1; grid-row: 1; margin-bottom: .85rem; font-size: .78rem; }
  .katalogHeroStrip p:not(.katalogHeroDesc) > span:first-child { font-size: .7rem; padding: .25rem .7rem; }
  .katalogHeroStrip h1 {
    grid-column: 1;
    grid-row: 2;
    font-size: clamp(1.75rem, 2.6vw, 2.4rem);
    line-height: 1.1;
    margin-bottom: .8rem;
  }
  .katalogHeroDesc {
    grid-column: 1;
    grid-row: 3;
    max-width: 64ch;
    font-size: .9rem;
    line-height: 1.7;
    margin: 0;
  }
  .katalogHeroTrustRow {
    grid-column: 2;
    grid-row: 1 / 4;
    align-self: center;
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: .55rem;
    padding-left: 2rem;
    border-left: 1px solid rgba(255,255,255,.12);
  }
  .katalogHeroTrustBadge {
    gap: .55rem;
    padding: .65rem .75rem;
    border-radius: 10px;
    font-size: .68rem;
    white-space: normal;
    line-height: 1.3;
    background: rgba(255,255,255,.07);
    border-color: rgba(255,255,255,.14);
    transition: background .2s ease, border-color .2s ease;
  }
  .katalogHeroTrustBadge:hover { background: rgba(255,255,255,.12); border-color: rgba(251,191,36,.4); }
  .katalogHeroTrustBadge svg {
    box-sizing: content-box;
    width: 13px;
    height: 13px;
    padding: 5px;
    border-radius: 50%;
    background: rgba(251,191,36,.14);
  }
}
@media (min-width: 1024px) {
  .katalogHeroStrip { padding: 2.75rem 3rem 2.5rem; column-gap: 3.5rem; }
}
.katalogSidebarCta svg, #catalogEmptyWa svg { width: 15px; height: 15px; flex-shrink: 0; }
#calcBanner {
  background: rgba(15,76,129,.06);
  border-color: rgba(15,76,129,.2);
}
#calcBanner .material-symbols-outlined { font-size: 18px; }

/* ── Katalog: active filter chips ── */
#activeFilterChips { margin-bottom: .75rem; }
.katalogChipsRow {
  display: flex;
  flex-wrap: wrap;
  gap: .4rem;
  align-items: center;
}
.katalogChip {
  display: inline-flex;
  align-items: center;
  gap: .3rem;
  font-family: 'Inter', sans-serif;
  font-size: .72rem;
  font-weight: 600;
  padding: .22rem .55rem;
  border-radius: 3px;
  background: rgba(15,76,129,.09);
  color: var(--brand);
  border: 1px solid rgba(15,76,129,.18);
  cursor: pointer;
  transition: background .15s;
  line-height: 1;
}
.katalogChip:hover { background: rgba(15,76,129,.16); }
.katalogChip svg { width: 11px; height: 11px; flex-shrink: 0; }
[data-theme="dark"] .katalogChip {
  background: rgba(74,143,212,.1);
  color: var(--brand2);
  border-color: rgba(74,143,212,.2);
}

/* ── Katalog: sidebar WA CTA ── */
.katalogSidebarCta {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: .45rem;
  width: 100%;
  margin-top: .6rem;
  padding: .55rem 1rem;
  border-radius: 5px;
  background: #16a34a;
  color: #fff;
  font-family: 'Inter', sans-serif;
  font-size: .78rem;
  font-weight: 600;
  text-decoration: none;
  transition: background .15s;
  cursor: pointer;
  border: none;
}
.katalogSidebarCta:hover { background: #15803d; }

/* ── Product card: type & badge tier pills ── */
.prodPillRow {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  margin-top: 5px;
}
.prodTypePill {
  font-family: 'Inter', sans-serif;
  font-size: .58rem;
  font-weight: 700;
  letter-spacing: .07em;
  text-transform: uppercase;
  padding: .17rem .45rem;
  border-radius: 2px;
}
.prodTypePill[data-type="Open"]           { background:rgba(15,76,129,.09);  color:var(--brand);  border:1px solid rgba(15,76,129,.18); }
.prodTypePill[data-type="Silent"]         { background:rgba(22,163,74,.09);  color:#15803d;       border:1px solid rgba(22,163,74,.18); }
.prodTypePill[data-type="Container"]      { background:rgba(71,85,105,.09);  color:var(--muted);  border:1px solid var(--border); }
.prodTypePill[data-type="Mobile Trailer"] { background:rgba(180,83,9,.09);   color:#c2410c;       border:1px solid rgba(180,83,9,.18); }
[data-theme="dark"] .prodTypePill[data-type="Open"]           { background:rgba(74,143,212,.12); color:var(--brand2); border-color:rgba(74,143,212,.22); }
[data-theme="dark"] .prodTypePill[data-type="Silent"]         { background:rgba(74,222,128,.08); color:#4ade80;       border-color:rgba(74,222,128,.18); }
[data-theme="dark"] .prodTypePill[data-type="Container"]      { background:rgba(148,163,184,.08);color:#94a3b8;       border-color:rgba(148,163,184,.18); }
[data-theme="dark"] .prodTypePill[data-type="Mobile Trailer"] { background:rgba(251,146,60,.1);  color:#fb923c;       border-color:rgba(251,146,60,.2); }

.prodBadgePill {
  font-family: 'Inter', sans-serif;
  font-size: .58rem;
  font-weight: 600;
  letter-spacing: .05em;
  text-transform: uppercase;
  padding: .17rem .45rem;
  border-radius: 2px;
  background: rgba(251,191,36,.12);
  color: #854d0e;
  border: 1px solid rgba(251,191,36,.22);
}
[data-theme="dark"] .prodBadgePill { color: var(--accent); background: rgba(251,191,36,.09); border-color: rgba(251,191,36,.18); }

/* ============================================================
   HOME PAGE SPECIFIC STYLES (data-page="home")
   ============================================================ */

body[data-page="home"] {
  background:
    radial-gradient(circle at top right, rgba(18, 101, 178, 0.08), transparent 26%),
    linear-gradient(180deg, rgba(255, 255, 255, 0.42), transparent 18%),
    var(--bg);
}

body[data-page="home"] #stickyHeader {
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
  background: color-mix(in srgb, var(--panel) 94%, transparent);
  box-shadow: 0 10px 26px rgba(8, 18, 32, 0.08);
}

body[data-page="home"] .homeHero {
  position: relative;
  overflow: hidden;
}

body[data-page="home"] .homeHero::before {
  content: "";
  position: absolute;
  inset: 0;
  background:
    linear-gradient(118deg, rgba(4, 10, 20, 0.92) 12%, rgba(7, 18, 38, 0.82) 56%, rgba(7, 18, 38, 0.48) 100%),
    linear-gradient(0deg, rgba(8, 15, 27, 0.28), rgba(8, 15, 27, 0.28));
  z-index: 1;
}

body[data-page="home"] .homeHero::after {
  content: "";
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(rgba(255, 255, 255, 0.035) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255, 255, 255, 0.035) 1px, transparent 1px);
  background-size: 32px 32px;
  opacity: 0.34;
  pointer-events: none;
  z-index: 1;
}

body[data-page="home"] .homeHeroArt {
  position: absolute;
  inset: 0;
  background-position: center;
  background-size: cover;
  opacity: 0.3;
  transform: scale(1.03);
}

body[data-page="home"] .homeHeroGrid {
  position: relative;
  z-index: 2;
  display: grid;
  gap: 20px;
  padding: 54px 0 38px;
}

body[data-page="home"] .homeHeroCopy {
  max-width: 760px;
}

body[data-page="home"] .homeKicker,
body[data-page="home"] .homeLabel,
body[data-page="home"] .homeCardIndex,
body[data-page="home"] .homeQuoteMeta {
  font-family: "Inter", sans-serif;
  font-size: 0.7rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

body[data-page="home"] .homeKicker,
body[data-page="home"] .homeLabel {
  color: var(--accent);
}

body[data-page="home"] .homeDisplay {
  margin-top: 12px;
  max-width: 11ch;
  font-family: "Inter", sans-serif;
  font-size: clamp(2.75rem, 9vw, 5.5rem);
  line-height: 0.94;
  letter-spacing: -0.04em;
  color: #ffffff;
}

body[data-page="home"] .homeLead {
  max-width: 60ch;
  margin-top: 16px;
  font-size: 1rem;
  line-height: 1.72;
  color: rgba(255, 255, 255, 0.82);
}

body[data-page="home"] .homeHeroActions,
body[data-page="home"] .homeFinalActions {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

body[data-page="home"] .homeHeroActions {
  margin-top: 26px;
}

body[data-page="home"] .homePrimaryCta,
body[data-page="home"] .homeSecondaryCta {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 50px;
  border-radius: 0;
  padding: 0 20px;
  font-family: "Inter", sans-serif;
  font-size: 0.94rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  transition: transform 0.18s ease, border-color 0.18s ease, background 0.18s ease, box-shadow 0.18s ease;
}

body[data-page="home"] .homePrimaryCta {
  background: var(--brand);
  color: #ffffff;
  box-shadow: 0 14px 30px rgba(15, 76, 129, 0.26);
}

body[data-page="home"] .homePrimaryCta:hover {
  background: #0a3d6a;
  transform: translateY(-1px);
}

body[data-page="home"] .homeSecondaryCta {
  border: 1px solid rgba(255, 255, 255, 0.18);
  background: rgba(255, 255, 255, 0.07);
  color: #ffffff;
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}

body[data-page="home"] .homeSecondaryCta:hover {
  transform: translateY(-1px);
  border-color: rgba(255, 255, 255, 0.34);
  background: rgba(255, 255, 255, 0.11);
}

body[data-page="home"] .homeHeroMeta {
  display: grid;
  gap: 12px;
  margin-top: 22px;
}

body[data-page="home"] .homeMetaCard,
body[data-page="home"] .homeBrief,
body[data-page="home"] .homeProofCard,
body[data-page="home"] .homeServiceCard,
body[data-page="home"] .homeQuoteCard {
  position: relative;
  overflow: hidden;
  box-shadow: 0 12px 28px rgba(8, 18, 32, 0.08);
}

body[data-page="home"] .homeMetaCard::before,
body[data-page="home"] .homeBrief::before,
body[data-page="home"] .homeProofCard::before,
body[data-page="home"] .homeServiceCard::before,
body[data-page="home"] .homeQuoteCard::before {
  content: "";
  position: absolute;
  inset: 0 auto auto 0;
  width: 52px;
  height: 2px;
  background: var(--accent);
  opacity: 0.9;
}

body[data-page="home"] .homeMetaCard {
  display: grid;
  gap: 6px;
  padding: 16px 16px 18px;
  background: rgba(255, 255, 255, 0.08);
  border-color: rgba(255, 255, 255, 0.12);
  color: #ffffff;
}

body[data-page="home"] .homeMetaCard strong {
  font-size: 1rem;
  font-weight: 600;
}

body[data-page="home"] .homeMetaCard span {
  color: rgba(255, 255, 255, 0.72);
  font-size: 0.92rem;
  line-height: 1.55;
}

body[data-page="home"] .homeBrief {
  padding: 18px;
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.06), rgba(255, 255, 255, 0.03)),
    rgba(8, 16, 29, 0.82);
  border-color: rgba(255, 255, 255, 0.12);
  color: #ffffff;
}

body[data-page="home"] .homeBriefTitle {
  margin-top: 10px;
  font-family: "Inter", sans-serif;
  font-size: clamp(1.6rem, 5vw, 2.25rem);
  line-height: 1;
  letter-spacing: -0.03em;
}

body[data-page="home"] .homeBriefList {
  display: grid;
  gap: 14px;
  margin-top: 18px;
}

body[data-page="home"] .homeBriefList li {
  display: grid;
  gap: 4px;
  padding-top: 14px;
  border-top: 1px solid rgba(255, 255, 255, 0.1);
}

body[data-page="home"] .homeBriefList strong,
body[data-page="home"] .homeProofCard h2,
body[data-page="home"] .homeServiceCard h3 {
  font-size: 1.04rem;
  font-weight: 600;
}

body[data-page="home"] .homeBriefList span,
body[data-page="home"] .homeProofCard p,
body[data-page="home"] .homeServiceCard p,
body[data-page="home"] .homeSectionBody,
body[data-page="home"] .homeQuoteCard p {
  font-size: 0.96rem;
  line-height: 1.68;
}

body[data-page="home"] .homeSection {
  padding: 52px 0;
}

body[data-page="home"] .homeProofStrip,
body[data-page="home"] .homeServiceGrid,
body[data-page="home"] .homeQuoteGrid {
  display: grid;
  gap: 14px;
}

body[data-page="home"] .homeProofCard,
body[data-page="home"] .homeServiceCard,
body[data-page="home"] .homeQuoteCard {
  padding: 20px 18px;
}

body[data-page="home"] .homeProofCard h2,
body[data-page="home"] .homeServiceCard h3 {
  margin-top: 12px;
  font-family: "Inter", sans-serif;
  font-size: 1.5rem;
  line-height: 1.02;
  letter-spacing: -0.02em;
}

body[data-page="home"] .homeProofCard p,
body[data-page="home"] .homeServiceCard p {
  margin-top: 12px;
  color: var(--muted);
}

body[data-page="home"] .homeSectionHead {
  display: grid;
  gap: 12px;
  max-width: 780px;
  margin-bottom: 24px;
}

body[data-page="home"] .homeSectionTitle {
  margin-top: 10px;
  font-family: "Inter", sans-serif;
  font-size: clamp(2rem, 5.5vw, 3.25rem);
  line-height: 0.98;
  letter-spacing: -0.035em;
}

body[data-page="home"] .homeSectionBody {
  color: var(--muted);
}

body[data-page="home"] .homeCardIndex {
  color: var(--brand2);
}

body[data-page="home"] .homeLogoPanel {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  padding: 18px;
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.16), rgba(255, 255, 255, 0.04)),
    var(--panel);
}

body[data-page="home"] .homeLogoPanel span {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 56px;
  border: 1px solid var(--border);
  background: color-mix(in srgb, var(--panel2) 88%, transparent);
  font-family: "Inter", sans-serif;
  font-size: 1.02rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  color: color-mix(in srgb, var(--text) 80%, var(--muted));
}

body[data-page="home"] .homeQuoteGrid {
  margin-top: 16px;
}

body[data-page="home"] .homeQuoteCard p {
  margin-top: 12px;
  font-size: 1rem;
  color: var(--text);
}

body[data-page="home"] .homeQuoteMeta {
  margin-top: 14px;
  color: var(--muted);
}

body[data-page="home"] .homeCtaSection {
  background:
    linear-gradient(180deg, rgba(8, 16, 29, 0.08), rgba(8, 16, 29, 0.08)),
    transparent;
}

body[data-page="home"] .homeFinalCard {
  display: grid;
  gap: 22px;
  padding: 24px 20px;
  border: 1px solid rgba(255, 255, 255, 0.08);
  background:
    linear-gradient(135deg, rgba(8, 16, 29, 0.94), rgba(12, 36, 78, 0.9)),
    var(--heroGradFrom);
  box-shadow: 0 24px 40px rgba(8, 18, 32, 0.16);
}

body[data-page="home"] .homeLabelLight,
body[data-page="home"] .homeSectionTitleLight,
body[data-page="home"] .homeSectionBodyLight,
body[data-page="home"] .homeInlineLink {
  color: #ffffff;
}

body[data-page="home"] .homeSectionBodyLight {
  opacity: 0.76;
}

body[data-page="home"] .homePrimaryCtaWide {
  width: 100%;
}

body[data-page="home"] .homeInlineLink {
  font-size: 0.94rem;
  font-weight: 500;
  opacity: 0.82;
}

body[data-page="home"] .homeInlineLink:hover {
  opacity: 1;
}

body[data-page="home"] .homePrimaryCta:focus-visible,
body[data-page="home"] .homeSecondaryCta:focus-visible,
body[data-page="home"] .homeInlineLink:focus-visible,
body[data-page="home"] #miniPromoClose:focus-visible,
body[data-page="home"] #miniPromoHandle:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 3px;
}

@media (min-width: 640px) {
  body[data-page="home"] .homeHeroGrid {
    padding: 66px 0 48px;
  }

  body[data-page="home"] .homeHeroActions,
  body[data-page="home"] .homeFinalActions {
    flex-direction: row;
    align-items: center;
    flex-wrap: wrap;
  }

  body[data-page="home"] .homeHeroMeta,
  body[data-page="home"] .homeServiceGrid,
  body[data-page="home"] .homeQuoteGrid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  body[data-page="home"] .homeProofStrip {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  body[data-page="home"] .homeLogoPanel {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  body[data-page="home"] .homeFinalCard {
    padding: 28px 28px;
  }

  body[data-page="home"] .homePrimaryCtaWide {
    width: auto;
  }
}

@media (min-width: 960px) {
  body[data-page="home"] .homeHeroGrid {
    grid-template-columns: minmax(0, 1.3fr) minmax(300px, 0.7fr);
    gap: 24px;
    align-items: end;
    min-height: 620px;
    padding: 72px 0 58px;
  }

  body[data-page="home"] .homeHeroMeta {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  body[data-page="home"] .homeProofStrip {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }

  body[data-page="home"] .homeServiceGrid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  body[data-page="home"] .homeQuoteGrid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  body[data-page="home"] .homeFinalCard {
    grid-template-columns: minmax(0, 1.15fr) auto;
    align-items: end;
  }
}

@media (prefers-reduced-motion: reduce) {
  body[data-page="home"] .homePrimaryCta,
  body[data-page="home"] .homeSecondaryCta,
  body[data-page="home"] #miniPromoHandle,
  body[data-page="home"] #miniPromoClose {
    transition: none;
  }

  body[data-page="home"] .homeHeroArt {
    transform: none;
  }
}

/* ── Footer CTA typography (used across all pages) ───────── */
.nh-cta-eyebrow {
  font-family: 'Inter', sans-serif;
  font-size: .62rem;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: rgba(245,200,66,.85);
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  margin-bottom: .75rem;
}
.nh-cta-eyebrow::before {
  content: '';
  display: inline-block;
  width: 32px;
  height: 2px;
  background: #FBBF24;
}
.nh-cta-headline {
  font-family: 'Inter', sans-serif;
  font-weight: 800;
  font-size: clamp(2rem, 5vw, 3.5rem);
  line-height: 1.05;
  color: #ffffff;
  max-width: 640px;
  margin: 0 auto .75rem;
}
.nh-cta-desc {
  font-size: .9rem;
  color: rgba(255,255,255,.6);
  max-width: 480px;
  margin: 0 auto 2.5rem;
  line-height: 1.7;
}

/* ── Shared sidebar/section heading (artikel-detail, produk-detail, kontak) ── */
.sidebarHeading { letter-spacing: .04em; }

/* ── produk-detail.html body content ── */
body[data-page="produk"] { background-image: none; }
body[data-page="produk"] .prod-detail-article { min-width: 0; background: var(--panel); }
body[data-page="produk"] .prod-detail-title { letter-spacing: -.01em; font-weight: 800; color: var(--brand); }
body[data-page="produk"] .prod-detail-cta-icon { width: 14px; height: 14px; }
body[data-page="produk"] .prod-detail-check-icon { width: 12px; height: 12px; flex-shrink: 0; color: var(--brand2); }
body[data-page="produk"] .prod-detail-mobile-cta-icon { width: 13px; height: 13px; flex-shrink: 0; }

/* ── produk-detail.html – navy header block (eyebrow+judul+trustrow), mobile only ── */
body[data-page="produk"] .prodDetailHeaderBlock {
  background: var(--brand);
  padding: 16px 16px 6px;
  border-radius: 6px 6px 0 0;
}
body[data-page="produk"] .prodDetailHeaderBlock .muted {
  color: var(--accent);
}
body[data-page="produk"] .prodDetailHeaderBlock .prod-detail-title {
  color: #ffffff;
}
body[data-page="produk"] .prodDetailTrustRow {
  background: var(--brand);
  margin-top: 0;
  padding: 10px 16px 16px;
  border-radius: 0 0 6px 6px;
  border-top: 1px solid rgba(255,255,255,.15);
  color: rgba(255,255,255,.92);
}
body[data-page="produk"] .prodDetailTrustRow .prod-detail-check-icon {
  color: rgba(255,255,255,.85);
}

/* <1024px: sticky CTA tersembunyi, trust row langsung diikuti galeri → fuse flush, sudut rata */
@media (max-width: 1023.98px) {
  body[data-page="produk"] .prodDetailTrustRow {
    border-radius: 0;
  }
  body[data-page="produk"] #productDetailGallery {
    margin-top: 0;
  }
  body[data-page="produk"] #productDetailGallery .prodGalleryTrack .prodImgWrap,
  body[data-page="produk"] #productDetailGallery .prodDetailGalleryHero {
    border-top: none;
    border-top-left-radius: 0;
    border-top-right-radius: 0;
  }
}

/* ── artikel-detail.html body content (scoped via #page-artikel-detail — data-page="artikel" collides with artikel.html) ── */
body:has(#page-artikel-detail.active) { background-image: none; }
#page-artikel-detail article { background: var(--panel); min-width: 0; }
#page-artikel-detail .artDetail-heading { letter-spacing: .01em; }
#page-artikel-detail #artDetailTocList { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
#page-artikel-detail .artDetailTocLink {
  display: block;
  padding: 4px 0;
  color: var(--muted);
  text-decoration: none;
  font-size: var(--pd-fs-4);
  transition: color .15s;
}
#page-artikel-detail .artDetailTocLink:hover,
#page-artikel-detail .artDetailTocLink.active { color: var(--brand2); font-weight: 600; }
#page-artikel-detail .artDetail-ctaBand { background: linear-gradient(135deg,#071e27 0%,#0F4C81 100%); }
#page-artikel-detail .artDetail-ctaHeading { letter-spacing: .04em; font-size: 1.1rem; }
#page-artikel-detail .artDetail-ctaText { color: rgba(255,255,255,.7); }
#page-artikel-detail .artDetail-ctaBtn { background: var(--accent); color: #071e27; }
#page-artikel-detail .artDetail-ctaIcon { width: 14px; height: 14px; }
#page-artikel-detail .artDetail-authorBadge {
  width: 40px;
  height: 40px;
  background: linear-gradient(135deg,#071e27,#0F4C81);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
#page-artikel-detail .artDetail-authorBadge svg { width: 22px; height: auto; }
#page-artikel-detail .artDetail-authorName { letter-spacing: .03em; }
#page-artikel-detail .artDetail-relatedLink { color: var(--text); }
#page-artikel-detail .artDetail-relatedTitle { display: block; letter-spacing: .02em; }
#page-artikel-detail .artDetail-relatedDesc { color: var(--muted); display: block; margin-top: .15rem; }

/* ── Reading progress bar (fixed to bottom edge of sticky header) ── */
#artDetailProgressBar {
  position: absolute;
  left: 0; right: 0; bottom: 0;
  height: 3px;
  background: transparent;
  opacity: 0;
  transition: opacity .2s ease;
  pointer-events: none;
}
body:has(#page-artikel-detail.active) #artDetailProgressBar { opacity: 1; }
#artDetailProgressBarFill {
  height: 100%;
  width: 0%;
  background: var(--brand2, #1265B2);
  transition: width .1s linear;
}

/* ── Share row ── */
#page-artikel-detail .artDetailShareRow { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
#page-artikel-detail .artDetailShareLabel { font-size: .7rem; text-transform: uppercase; letter-spacing: .06em; color: var(--muted); }

/* ── Sidebar layout: TOC beside article body (desktop) ── */
@media (min-width: 1024px) {
  #page-artikel-detail .artDetailGrid {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 340px;
    column-gap: 40px;
    align-items: start;
  }
  #page-artikel-detail .artDetailMain {
    border-right: 1px solid var(--border);
    padding-right: 32px;
  }
  #page-artikel-detail .artDetailAside {
    position: sticky;
    top: calc(var(--header-h, 64px) + 20px);
  }
  #page-artikel-detail #artDetailBody,
  #page-artikel-detail .seoAnswer { max-width: 720px; }
}
#page-artikel-detail .artDetailAside details#artDetailToc {
  padding: 1.1rem 1.2rem;
  background: var(--panel);
  border: 1px solid var(--border);
  border-radius: 4px;
}
#page-artikel-detail details#artDetailToc > summary { cursor: pointer; list-style: none; }
#page-artikel-detail details#artDetailToc > summary::-webkit-details-marker { display: none; }

/* ── Prev/Next artikel preview cards (teks saja, tanpa thumbnail) ── */
#page-artikel-detail .artPrevNextGrid { display: grid; grid-template-columns: 1fr; gap: 1rem; }
@media (min-width: 768px) { #page-artikel-detail .artPrevNextGrid { grid-template-columns: 1fr 1fr; } }
#page-artikel-detail .artPrevNextCard {
  display: block;
  padding: 1rem 1.1rem;
  background: var(--panel);
  border: 1px solid var(--border);
  border-radius: 4px;
  text-decoration: none;
  cursor: pointer;
  transition: border-color .18s ease;
}
#page-artikel-detail .artPrevNextCard:hover { border-color: var(--brand2); }
#page-artikel-detail .artPrevNextCard[data-dir="next"] { text-align: right; }
#page-artikel-detail .artPrevNextLabel { font-size: .68rem; text-transform: uppercase; letter-spacing: .07em; color: var(--muted); margin-bottom: .3rem; }

/* ── artikel.html body content ── */
body[data-page="artikel"] .artikelFilterTitle { letter-spacing: .01em; }
body[data-page="artikel"] .artikelCountValue { color: var(--text); }

body[data-page="kontak"] .contact-intake-note {
  color: var(--muted);
  line-height: 1.7;
}

body[data-page="kontak"] .contact-intake-note strong {
  color: var(--text);
}

body[data-page="kontak"] .contact-info-col {
  background: var(--panel2);
}

body[data-page="kontak"] .contact-sidebar-eyebrow {
  display: flex;
  align-items: center;
  gap: .6rem;
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--brand2, var(--brand));
}

body[data-page="kontak"] .contact-sidebar-eyebrow::before {
  content: "";
  display: block;
  width: 18px;
  height: 2px;
  background: var(--accent);
  flex-shrink: 0;
}

body[data-page="kontak"] .contact-quick-list {
  border-top: 1px solid var(--border);
}

body[data-page="kontak"] .contact-quick-row {
  display: flex;
  align-items: flex-start;
  gap: .875rem;
  padding: 1.1rem 0;
  border-bottom: 1px solid var(--border);
}

body[data-page="kontak"] .contact-quick-row:last-child {
  border-bottom: 0;
}

body[data-page="kontak"] .contact-quick-icon {
  width: 18px;
  height: 18px;
  flex-shrink: 0;
  margin-top: .1rem;
  color: var(--brand2);
}

body[data-page="kontak"] .contact-map-block {
  background: var(--panel);
}

body[data-page="kontak"] .contact-map-badge {
  width: 32px;
  height: 32px;
  background: linear-gradient(135deg,#071e27,#0F4C81);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
body[data-page="kontak"] .contact-map-badge svg {
  width: 16px;
  height: 16px;
}
body[data-page="kontak"] .contact-pin-icon-sm {
  width: 13px;
  height: 13px;
}
body[data-page="kontak"] .contact-map-frame-wrap {
  position: relative;
  width: 100%;
  height: 420px;
  background: var(--panel2);
}
body[data-page="kontak"] #kontakMapFrame {
  border: 0;
  display: block;
}
body[data-page="kontak"] .contact-optional-details {
  border: 1px solid var(--border);
  background: var(--panel2);
  padding: 1rem;
}

body[data-page="kontak"] .contact-optional-summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .75rem;
  cursor: pointer;
  font-family: 'Inter', sans-serif;
  font-size: .78rem;
  font-weight: 700;
  letter-spacing: .02em;
  color: var(--text);
  list-style: none;
}

body[data-page="kontak"] .contact-optional-summary::-webkit-details-marker {
  display: none;
}

body[data-page="kontak"] .contact-optional-summary::after {
  content: "+";
  color: var(--brand);
  font-size: 1rem;
  line-height: 1;
}

body[data-page="kontak"] .contact-optional-details[open] .contact-optional-summary::after {
  content: "-";
}

@media (min-width: 1024px) {
  body[data-page="kontak"] .contact-info-col {
    border-left: 1px solid var(--border);
  }

  body[data-page="kontak"] .contact-info-col-inner {
    position: sticky;
    top: 5.8rem;
  }
}

@media (max-width: 1023px) {
  body[data-page="kontak"] .contact-info-col {
    border-top: 1px solid var(--border);
  }
}

@media (max-width: 768px) {
  body[data-page="kontak"] .pageBannerWrap {
    height: 132px;
  }

  body[data-page="kontak"] .pageBannerContent {
    padding: 1.8rem 0 1.25rem;
  }

  body[data-page="kontak"] #page-kontak > .mt-10.mb-10 {
    margin-top: 1.5rem;
    margin-bottom: 1.5rem;
  }

  body[data-page="kontak"] .contact-form-col,
  body[data-page="kontak"] .contact-info-col-inner {
    padding: 1.25rem;
  }

  body[data-page="kontak"] .contact-field-grid {
    gap: .75rem;
  }

  body[data-page="kontak"] .contact-form-actions {
    flex-direction: column;
    align-items: stretch;
  }

  body[data-page="kontak"] .contact-form-actions .btnActionMd {
    width: 100%;
  }

  body[data-page="kontak"] .contact-quick-row {
    padding: .9rem 0;
  }
}
