/*
Theme Name: Rezeki Laju
Theme URI: https://rezekilaju.com
Author: Rezeki Laju
Description: Tema ringan untuk laman rujukan bebas Rezeki Laju. Mobile-first, tanpa permintaan luar, 3D skrol hanya pada desktop.
Version: 1.0.0
Text Domain: rezeki-laju
License: GPL-2.0-or-later
*/

:root{
  --g-950:#03140d; --g-900:#062a1a; --g-800:#0b3d26; --g-700:#0f5132; --g-600:#15803d; --g-500:#22c55e; --g-400:#4ade80;
  --g-200:#bbf7d0; --g-100:#dcfce7; --g-50:#f0fdf4;
  --ink:#1f2933; --muted:#475467; --line:#d5e3da; --white:#fff; --link:#0f6b34;
  --radius:14px;
  --font: system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif;
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:auto}
body{margin:0;font-family:var(--font);font-size:1.0625rem;line-height:1.65;color:var(--ink);background:var(--white);overflow-x:hidden}
img,svg{max-width:100%;height:auto}
a{color:var(--link);text-underline-offset:.15em}
a:hover{color:var(--g-800)}
:focus-visible{outline:3px solid var(--g-500);outline-offset:2px}
.sr{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:absolute;left:-999px;top:0;background:#fff;color:var(--ink);padding:.6rem 1rem;z-index:100}
.skip:focus{left:0}
.wrap{width:100%;max-width:1120px;margin:0 auto;padding:0 1.1rem}
h1,h2,h3{line-height:1.2;margin:0 0 .6em;color:inherit;overflow-wrap:anywhere}
p,li{overflow-wrap:anywhere}

/* ---------- Header ---------- */
.site-header{background:var(--g-900);color:#fff;position:relative;z-index:20}
.site-header .bar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.5rem;min-height:3.6rem}
.brand{color:#fff;font-weight:800;font-size:1.25rem;text-decoration:none;letter-spacing:.01em;padding:.5rem 0}
.brand:hover{color:var(--g-400)}
.navtoggle{position:absolute;opacity:0;width:1px;height:1px}
.navbtn{display:inline-flex;align-items:center;gap:.5rem;cursor:pointer;padding:.5rem .8rem;border:1px solid rgba(255,255,255,.35);border-radius:10px;font-size:.95rem}
.navbtn span{display:none}
.navbtn b{font-weight:600}
.navtoggle:focus-visible + .navbtn{outline:3px solid var(--g-400);outline-offset:2px}
.site-nav{display:none;flex-basis:100%;padding-bottom:.8rem}
.navtoggle:checked ~ .site-nav{display:block}
.site-nav ul{list-style:none;margin:0;padding:0}
.site-nav a{display:block;color:#fff;text-decoration:none;padding:.55rem .2rem;border-bottom:1px solid rgba(255,255,255,.12)}
.site-nav a:hover,.site-nav .current-menu-item>a{color:var(--g-400)}
.site-nav .sub-menu{padding-left:1rem}
.site-nav .sub-menu a{font-size:.97rem;opacity:.95}

@media (min-width:900px){
  .navbtn{display:none}
  .site-nav{display:block!important;flex-basis:auto;padding:0}
  .site-nav .menu{display:flex;gap:.2rem;align-items:center}
  .site-nav .menu>li{position:relative}
  .site-nav .menu>li>a{border:0;padding:.9rem .75rem;font-size:.97rem}
  .site-nav .menu-item-has-children>a::after{content:"▾";margin-left:.3rem;font-size:.75em}
  .site-nav .sub-menu{display:none;position:absolute;left:0;top:100%;min-width:15rem;background:var(--g-800);padding:.4rem;border-radius:0 0 12px 12px;box-shadow:0 12px 28px rgba(0,0,0,.28)}
  .site-nav li:hover>.sub-menu,.site-nav li:focus-within>.sub-menu{display:block}
  .site-nav .sub-menu a{padding:.55rem .7rem;border:0;border-radius:8px}
  .site-nav .sub-menu a:hover{background:rgba(255,255,255,.08)}
}

/* ---------- Articles ---------- */
.article-wrap{padding:2rem 1.1rem 3.5rem;background:#fff}
.article{max-width:46rem;margin:0 auto}
.article__head h1{font-size:clamp(1.65rem,5.4vw,2.4rem);color:var(--g-900);margin-bottom:.35em}
.article__date{margin:0 0 1.4rem;color:var(--muted);font-size:.95rem;border-bottom:1px solid var(--line);padding-bottom:1rem}
.article__body h2{font-size:clamp(1.3rem,4vw,1.7rem);color:var(--g-800);margin-top:2rem}
.article__body h3{font-size:1.15rem;color:var(--g-900);margin-top:1.4rem}
.article__body .lead{font-size:1.15rem;background:var(--g-50);border-left:5px solid var(--g-500);padding:1rem 1.1rem;border-radius:0 var(--radius) var(--radius) 0;color:#16241c}
.article__body ol,.article__body ul{padding-left:1.35rem}
.article__body li{margin:.4rem 0}
.article__body ol>li::marker{font-weight:700;color:var(--g-600)}
.article__body .callout{border:1px solid var(--line);border-left:5px solid var(--g-600);background:#fff;padding:.8rem 1rem;border-radius:var(--radius);margin:1.2rem 0}
.article__body .warn{border-left-color:#b45309;background:#fffbeb}
.article__body table{border-collapse:collapse;width:100%}
.article__body th,.article__body td{border:1px solid var(--line);padding:.55rem .6rem;text-align:left;vertical-align:top}
.article__body thead th{background:var(--g-100)}
.article__foot{margin-top:2.5rem;padding-top:1rem;border-top:1px solid var(--line);color:var(--muted);font-size:.93rem}
.faq h3{margin-bottom:.2rem}
.faq p{margin-top:0}

/* ---------- Example table (shared) ---------- */
.ex-table-wrap{width:100%}
.ex-table{width:100%;border-collapse:separate;border-spacing:0;font-size:.95rem;background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
.ex-table caption{caption-side:top;text-align:left;font-weight:700;color:var(--g-800);padding:.2rem 0 .7rem}
.ex-table th,.ex-table td{padding:.7rem .75rem;text-align:left;vertical-align:top;border-bottom:1px solid var(--line)}
.ex-table thead th{background:var(--g-100);color:var(--g-900);font-size:.88rem}
.ex-table tbody th{font-weight:700}
.ex-table tr:last-child>*{border-bottom:0}
.ex-badge{display:block;margin-top:.3rem;font-size:.75rem;font-weight:600;color:#7a4a05;background:#fff3d6;border-radius:6px;padding:.1rem .4rem;width:fit-content}
.ex-status{display:inline-block;font-size:.78rem;font-weight:700;padding:.05rem .45rem;border-radius:6px;margin-left:.2rem}
.is-tamat{background:#e5e7eb;color:#374151}
.is-aktif{background:var(--g-100);color:var(--g-800)}
tr.is-expired td,tr.is-expired th{color:#5b6470}
tr.is-expired{background:#f8faf9}
@media (max-width:768px){
  .ex-table,.ex-table tbody,.ex-table tr,.ex-table th,.ex-table td{display:block;width:100%}
  .ex-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
  .ex-table{border:0;background:transparent}
  .ex-table caption{display:block}
  .ex-table tr{background:#fff;border:1px solid var(--line);border-radius:var(--radius);margin-bottom:.9rem;overflow:hidden}
  .ex-table tbody th{background:var(--g-50)}
  .ex-table td::before{content:attr(data-label);display:block;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
  .ex-table th,.ex-table td{border-bottom:1px solid var(--line)}
}

/* ---------- Forms & complaints ---------- */
.aduan-form form p{margin:0 0 1rem}
.aduan-form label{display:block;font-weight:600;margin-bottom:.25rem}
.aduan-form input[type=text],.aduan-form input[type=date],.aduan-form textarea{width:100%;font:inherit;padding:.65rem .75rem;border:1px solid #9bb3a4;border-radius:10px;background:#fff;color:var(--ink)}
.aduan-form .check label{font-weight:400}
.aduan-form .check input{margin-right:.4rem}
.hp{position:absolute!important;left:-9999px;width:1px;height:1px;overflow:hidden}
.btn{display:inline-block;font:inherit;font-weight:700;background:var(--g-600);color:#fff;border:0;border-radius:999px;padding:.75rem 1.4rem;cursor:pointer}
.btn:hover{background:var(--g-700)}
.notice{border-radius:var(--radius);padding:.8rem 1rem;margin:1rem 0}
.notice--ok{background:var(--g-100);border:1px solid var(--g-500)}
.notice--err{background:#fef2f2;border:1px solid #f87171}
.aduan-item{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:1rem 1.1rem;margin:0 0 1rem;color:var(--ink)}
.aduan-item h3{font-size:1.1rem;margin-bottom:.2rem;color:var(--g-900)}
.aduan-item p{margin:.35rem 0}
.aduan-meta{color:var(--muted);font-size:.9rem}
.aduan-note{font-size:.85rem;color:var(--muted)}
.badge{display:inline-block;background:#fff3d6;color:#7a4a05;font-weight:700;font-size:.8rem;border-radius:6px;padding:.1rem .5rem}
.aduan-item--sample{border-style:dashed}

/* ---------- Footer ---------- */
.site-footer{background:#1c2622;color:#e8efe9;padding:2.2rem 0 1.6rem;font-size:.95rem}
.site-footer h2{font-size:1.05rem;color:var(--g-400);margin-bottom:.4em}
.site-footer p{margin:.3rem 0}
.site-footer a{color:#fff}
.foot-grid{display:grid;gap:1.4rem;grid-template-columns:1fr}
.legal{margin-top:1.6rem!important;padding-top:1rem;border-top:1px solid rgba(255,255,255,.15);color:#c4d0c8}
@media (min-width:769px){.foot-grid{grid-template-columns:repeat(3,1fr);gap:2rem}}

/* ---------- Home: scenes (mobile-first = stacked, no 3D) ---------- */
.scenes{display:block;overflow-x:clip}
.scene{position:relative;overflow:hidden;isolation:isolate}
.bg{position:absolute;inset:-10%;z-index:-1;pointer-events:none}
.scene__head{max-width:42rem;margin:0 auto 1.6rem;text-align:center}
.scene__head h2{font-size:clamp(1.55rem,5.6vw,2.3rem)}
.scene__head p{margin:0;opacity:.92}
.small{font-size:.88rem;color:var(--muted)}

/* Scene 1 */
.scene--1{background:var(--g-950);color:#fff}
.scene--1 .scene__stage{position:relative;min-height:calc(100svh - 0px);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;padding:5.5rem 1rem 2rem;text-align:center}
.bg--1{background:
  radial-gradient(60% 45% at 50% 70%,rgba(34,197,94,.20),transparent 70%),
  radial-gradient(40% 30% at 20% 10%,rgba(21,128,61,.28),transparent 70%),
  linear-gradient(180deg,#03140d,#052416 60%,#03140d);
  background-size:140% 140%,120% 120%,100% 100%}
.floor{position:absolute;left:-20%;right:-20%;bottom:0;height:42%;
  background:
   repeating-linear-gradient(90deg,rgba(74,222,128,.14) 0 1px,transparent 1px 64px),
   repeating-linear-gradient(0deg,rgba(74,222,128,.12) 0 1px,transparent 1px 48px);
  transform:perspective(420px) rotateX(62deg);transform-origin:50% 100%;
  -webkit-mask-image:linear-gradient(180deg,transparent,#000 70%);mask-image:linear-gradient(180deg,transparent,#000 70%)}
.s1-title{font-size:clamp(2.6rem,12vw,5.6rem);font-weight:800;letter-spacing:.01em;margin:0;color:#fff}
.s1-slogan{font-size:clamp(1.15rem,4.6vw,1.9rem);color:var(--g-400);margin:0 0 .5rem;font-weight:600}
.s1-art{width:min(88vw,62vh,520px);margin:0 auto}
.coinpocket{display:block;width:100%;height:auto;overflow:visible}
.coin-path,.coin-spin{transform-box:fill-box;transform-origin:center}

/* Scene 2 */
.scene--2{background:var(--g-800);color:#fff;padding:3.2rem 0 3.6rem}
.bg--2{background:radial-gradient(50% 40% at 80% 10%,rgba(74,222,128,.18),transparent 70%),radial-gradient(45% 40% at 10% 90%,rgba(34,197,94,.14),transparent 70%)}
.cards3d{display:grid;gap:1rem;grid-template-columns:1fr}
.qcard{background:#fff;color:var(--ink);border-radius:var(--radius);padding:1.1rem 1.15rem;display:flex;flex-direction:column;gap:.4rem;box-shadow:0 10px 26px rgba(0,0,0,.22)}
.qcard h3{font-size:1.12rem;color:var(--g-900);margin:0}
.qcard__a{margin:0;font-size:.97rem}
.qcard__d{margin:0;font-size:.8rem;color:var(--muted)}
.qcard__l{margin-top:auto;font-weight:700;font-size:.95rem}

/* Scene 3 */
.scene--3{background:var(--g-50);color:var(--ink);padding:3.2rem 0 3.6rem}
.bg--3{background:radial-gradient(40% 40% at 15% 20%,rgba(34,197,94,.14),transparent 70%),radial-gradient(40% 40% at 90% 80%,rgba(21,128,61,.12),transparent 70%)}
.scene--3 .scene__head h2{color:var(--g-900)}
.boards3d{display:grid;gap:1rem;grid-template-columns:1fr}
.board{background:#fff;border:1px solid var(--line);border-top:6px solid var(--g-600);border-radius:var(--radius);padding:1.2rem;box-shadow:0 12px 28px rgba(6,42,26,.10);display:flex;flex-direction:column;gap:.5rem}
.board h3{font-size:1.5rem;margin:0;color:var(--g-900)}
.board p{margin:0}
.board__l{margin-top:auto;font-weight:700}

/* Scene 4 */
.scene--4{background:#fff;color:var(--ink);padding:3.2rem 0 3.6rem}
.scene--4 .scene__head h2{color:var(--g-900)}
.scene4-note{margin-top:1rem;text-align:center}

/* Scene 5 */
.scene--5{background:var(--g-100);color:var(--ink);padding:3.2rem 0 3.6rem}
.s5-grid{display:grid;gap:2rem;grid-template-columns:1fr}
.scene--5 h2{color:var(--g-900);font-size:clamp(1.4rem,5vw,1.9rem)}
.s5-right{background:#fff;border-radius:var(--radius);padding:1.2rem 1.3rem;border:1px solid var(--line);align-self:start}

@media (min-width:769px){
  .cards3d{grid-template-columns:repeat(2,1fr)}
  .boards3d{grid-template-columns:repeat(3,1fr);align-items:start}
  .board--2{margin-top:2.2rem}
  .board--3{margin-top:4.4rem}
  .s5-grid{grid-template-columns:1.15fr .85fr;gap:2.4rem}
  .scene--2,.scene--3,.scene--4,.scene--5{padding:5rem 0 5.5rem}
  .site-header--home{position:absolute;left:0;right:0;top:0;background:transparent}
}
@media (min-width:1040px){
  .cards3d{grid-template-columns:repeat(4,1fr)}
}
@media (max-width:768px){
  .site-header--home{background:var(--g-950)}
  .scene--1 .scene__stage{min-height:calc(100svh - 3.6rem);padding-top:1.2rem}
}

/* ---------- Motion: only where allowed ---------- */
@keyframes coin-in{
  0%{transform:translate(-210px,-330px) scale(.08)}
  55%{transform:translate(-70px,-120px) scale(.55)}
  100%{transform:translate(0,22px) scale(1)}
}
@keyframes coin-spin{
  0%{transform:scaleX(1)} 12%{transform:scaleX(.12)} 25%{transform:scaleX(1)} 37%{transform:scaleX(.12)} 50%{transform:scaleX(1)} 62%{transform:scaleX(.2)} 75%{transform:scaleX(1)} 100%{transform:scaleX(1)}
}
@keyframes drift{from{transform:translate3d(-2%,-1%,0)}to{transform:translate3d(2%,2%,0)}}
@keyframes floor{from{background-position:0 0,0 0}to{background-position:0 0,0 48px}}
/* Final resting state of the coin when no animation runs: inside the pocket. */
.coin-path{transform:translate(0,22px)}

@media (prefers-reduced-motion:no-preference){
  .coin-path{animation:coin-in 2.6s cubic-bezier(.2,.7,.2,1) .2s both}
  .coin-spin{animation:coin-spin 2.6s ease-in-out .2s both}
  .bg{animation:drift 38s ease-in-out infinite alternate}
  .floor{animation:floor 9s linear infinite}
}

/* Desktop 3D scroll (progressive enhancement) */
@media (min-width:769px) and (prefers-reduced-motion:no-preference){
  @supports (animation-timeline:view()){
    .scene--1{height:260vh;overflow:clip;view-timeline:--s1 block}
    .scene--1 .scene__stage{position:sticky;top:0;height:100svh;min-height:0;padding-top:5rem}
    .coin-path{animation:coin-in linear both;animation-duration:auto;animation-timeline:--s1;animation-range:contain 0% contain 85%}
    .coin-spin{animation:coin-spin linear both;animation-duration:auto;animation-timeline:--s1;animation-range:contain 0% contain 85%}
    .s1-text{animation:s1-text linear both;animation-duration:auto;animation-timeline:--s1;animation-range:contain 0% contain 100%}
    .floor{animation:floor-scroll linear both;animation-duration:auto;animation-timeline:--s1;animation-range:contain 0% contain 100%}

    .cards3d{perspective:1100px;perspective-origin:50% 30%}
    .qcard{transform-style:preserve-3d;animation:card-in linear both;animation-duration:auto;animation-timeline:view();animation-range:entry 0% entry 90%}
    .qcard:nth-child(odd){--rx:16deg;--ry:-14deg}
    .qcard:nth-child(even){--rx:16deg;--ry:14deg}
    .qcard:nth-child(3n){--z:-620px}
    .qcard{--z:-420px}

    .boards3d{perspective:1200px;perspective-origin:50% 20%}
    .board{animation:board-in linear both;animation-duration:auto;animation-timeline:view();animation-range:entry 0% entry 95%}
    .board--1{--ry:28deg;--z:-300px}
    .board--2{--ry:0deg;--z:-500px}
    .board--3{--ry:-28deg;--z:-300px}

    .scene--4 .rise{perspective:1000px}
    .scene--4 .wrap{perspective:1000px}
    .rise{transform-origin:50% 100%;animation:rise linear both;animation-duration:auto;animation-timeline:view();animation-range:entry 0% entry 85%}

    .s5-left{animation:slide-l linear both;animation-duration:auto;animation-timeline:view();animation-range:entry 0% entry 80%}
    .s5-right{animation:slide-r linear both;animation-duration:auto;animation-timeline:view();animation-range:entry 0% entry 80%}
  }
  @keyframes s1-text{from{transform:translateY(0);opacity:1}to{transform:translateY(-6vh);opacity:1}}
  @keyframes floor-scroll{from{background-position:0 0,0 0}to{background-position:0 0,0 480px}}
  @keyframes card-in{
    from{transform:translate3d(0,40px,var(--z,-420px)) rotateX(var(--rx,14deg)) rotateY(var(--ry,0deg));opacity:.45}
    to{transform:none;opacity:1}
  }
  @keyframes board-in{
    from{transform:translate3d(0,50px,var(--z,-300px)) rotateY(var(--ry,0deg));opacity:.5}
    to{transform:none;opacity:1}
  }
  @keyframes rise{
    from{transform:translateY(22vh) rotateX(16deg) scale(.95);opacity:.6}
    to{transform:none;opacity:1}
  }
  @keyframes slide-l{from{transform:translateX(-60px);opacity:.5}to{transform:none;opacity:1}}
  @keyframes slide-r{from{transform:translateX(60px);opacity:.5}to{transform:none;opacity:1}}
}
