.project{min-width:0}.project-image{display:block;border:1px solid #40493b;padding:20px 20px 0;border-radius:10px;overflow:hidden;background:#202b26}.project-image.sulawesi{background:#1d2932}.project-image img{display:block;width:100%;height:auto;aspect-ratio:1.777;object-fit:cover;object-position:top;transition:transform .6s}.project-image:hover img{transform:scale(1.025)}.browser-bar{display:flex;align-items:center;gap:4px;border-radius:6px 6px 0 0;padding:9px 12px;background:#e5e9e2;color:#4d5549;font-size:10px;line-height:1.1}.browser-bar i{width:5px;height:5px;background:#9ca695;border-radius:50%}.browser-bar span{margin:auto}.browser-bar b{font-weight:400}.project-meta{display:flex;justify-content:space-between;color:var(--muted);font-size:12px;letter-spacing:1px;margin:24px 0 12px}.project h3{font-size:27px;font-weight:500;letter-spacing:-1px}.project>p{color:#aeb8a7;margin-top:14px;font-size:16px;max-width:480px}.project .tags{color:#a3af9b;margin:20px 0}.project .tags span{border-color:#3e4837;font-size:12px}.project details{border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin:0 0 20px}.project details summary{padding:13px 0}.project summary,.technical summary{display:flex;justify-content:space-between;gap:20px;font-size:14px;cursor:pointer;list-style:none}.project summary::-webkit-details-marker,.technical summary::-webkit-details-marker{display:none}details summary>span{font-size:21px;color:var(--lime);line-height:1;transition:transform .25s}details[open] summary>span{transform:rotate(45deg)}.project ul{color:var(--muted);font-size:15px;padding-left:20px;line-height:1.8}.status-note{padding:0 0 18px;font-size:14px;color:#d0c299}.case-study{border-top:1px solid var(--line);padding-top:85px;padding-bottom:85px}.case-context{font-size:14px;color:var(--muted)}.case-context>span{font-size:12px;color:var(--lime);letter-spacing:1px}.case-context p{margin-top:12px}.case-narrative{display:grid;grid-template-columns:1fr 1fr;gap:70px;margin-top:55px}.step{font-size:12px;letter-spacing:1.5px;color:var(--lime)}.case-narrative h3{font-size:27px;line-height:1.3;font-weight:500;letter-spacing:-.6px;margin:18px 0}.case-narrative p{font-size:16px;color:#acb6a5;margin-top:16px}.implementation{display:grid;grid-template-columns:1fr 1.2fr;gap:50px;background:#1a2117;border:1px solid #36442b;padding:35px 40px;border-radius:12px;margin-top:45px;align-items:center}.implementation h3{font-size:28px;font-weight:500;margin:17px 0}.implementation p{font-size:15px;color:var(--muted);max-width:340px}.pipeline{list-style:none;margin:0;padding:0}.pipeline li{display:flex;align-items:center;gap:20px;position:relative;padding:12px 0}.pipeline li:not(:last-child):after{content:'';position:absolute;left:19px;width:1px;background:#4a593e;height:24px;bottom:-12px}.pipeline b{height:38px;width:38px;border:1px solid #526440;border-radius:50%;display:grid;place-items:center;font-size:12px;color:var(--lime);font-weight:500;flex-shrink:0}.pipeline li>div{font-size:17px}.pipeline small{display:block;color:var(--muted);font-size:13px}.evidence{margin-top:65px}.evidence>h3{font-size:34px;font-weight:500;letter-spacing:-1px;margin:18px 0}.evidence-intro{max-width:770px;font-size:16px;color:var(--muted)}.proof-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px;margin-top:28px}figure{margin:0}.proof-grid figure{background:var(--panel);border:1px solid var(--line);border-radius:8px;overflow:hidden}.proof-grid figcaption{padding:14px 18px;display:flex;justify-content:space-between;align-items:center;font-size:13px}.proof-grid figcaption>span{font-size:12px;color:var(--muted);letter-spacing:1px}.proof-grid figcaption b{font-weight:500}.proof-grid img{width:100%;height:auto;display:block}.proof-grid a{display:block;background:#fff;padding:12px 0}.evidence-note{font-size:13px;color:var(--muted);line-height:1.8;margin-top:18px;max-width:920px}.technical{border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin-top:30px;padding:20px 0}.technical-grid{display:grid;grid-template-columns:1.1fr 1fr;gap:25px;margin-top:25px}.technical img{width:100%;height:auto;border-radius:5px}.technical figcaption{font-size:13px;color:var(--muted);margin-top:10px}.about{border-top:1px solid var(--line);padding-top:85px;padding-bottom:80px;display:grid;grid-template-columns:1.1fr 1fr;gap:85px}.about h2{margin:20px 0 25px}.about-heading>p{color:var(--muted);margin-top:20px;font-size:16px}.expertise>div{border-top:1px solid var(--line);position:relative;padding:19px 0 20px 35px}.expertise>div>span{position:absolute;left:0;top:21px;font-size:12px;color:var(--lime)}.expertise h3{font-size:20px;font-weight:500;margin-bottom:10px}.expertise p{font-size:14px;color:var(--muted)}.experience{display:grid;grid-template-columns:1fr 1.6fr;gap:65px;padding-bottom:90px}.experience h2{margin-top:20px}.timeline article{display:grid;grid-template-columns:1fr 1.6fr;gap:25px;border-top:1px solid var(--line);padding:23px 0}.timeline article>span{font-size:12px;color:var(--muted);padding-top:4px}.timeline h3{font-size:18px;font-weight:500}.timeline article p{font-size:14px;color:var(--muted);margin-top:7px}.education{border-top:1px solid var(--line);padding-top:20px;font-size:14px;color:var(--muted)}.education>span{font-size:12px;color:var(--lime)}.education p{margin-top:7px}.reveal{transition:opacity .7s ease,transform .7s ease}.js .reveal.pending{opacity:0;transform:translateY(24px)}.hero h1{animation:hero-in .8s both}.hero-intro{animation:hero-in .8s .1s both}.hero .button{animation:hero-in .8s .2s both}.signal-card{animation:card-in 1s .15s both}.bar.animate{animation:bar-in 1.1s ease both}.nav nav a,.project h3{transition:color .2s}.card-label,.signal-footer,.signal-node small,.hero-bottom,.label,.bar-row>div:first-child,.result-visual>small{font-size:12px}.signal-node{font-size:14px}.tags span{font-size:12px}.signal-bottom .signal-node{font-size:13px}.node-web{width:78%}.node-gtm{width:98%}.signal-diagram{padding-left:18px;padding-right:18px}.signal-node small{font-size:12px}.hero-bottom{letter-spacing:.5px}.hero-year{font-size:12px}@keyframes hero-in{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}@keyframes card-in{from{opacity:0;transform:translateY(22px) rotate(0deg)}to{opacity:1;transform:translateY(0) rotate(-2deg)}}@keyframes bar-in{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@media(max-width:1100px){.hero-bottom>span:nth-child(2){display:none}.signal-bottom{flex-wrap:wrap}.signal-bottom .signal-node{padding:10px 8px}.signal-bottom .node-icon{display:none}.card-label{font-size:12px;letter-spacing:0}.card-label>span:last-child{display:none}.case-narrative{gap:35px}.about{gap:45px}.experience{gap:35px}.timeline article{grid-template-columns:1fr}.implementation{padding:30px;gap:25px}.contact h2{font-size:50px}}@media(max-width:760px){.project-image{padding:16px 16px 0}.project-meta{margin-top:20px}.project h3{font-size:25px}.project{margin-bottom:15px}.case-study{padding-top:55px;padding-bottom:55px}.case-context{margin-top:22px}.case-narrative{grid-template-columns:1fr;gap:30px;margin-top:30px}.case-narrative h3{font-size:25px}.implementation{grid-template-columns:1fr;padding:25px;gap:20px}.implementation p{max-width:none}.proof-grid{grid-template-columns:1fr}.evidence{margin-top:40px}.evidence>h3{font-size:29px}.technical-grid{grid-template-columns:1fr}.about{grid-template-columns:1fr;padding-top:55px;padding-bottom:55px;gap:30px}.experience{grid-template-columns:1fr;padding-bottom:55px;gap:25px}.timeline article{grid-template-columns:1fr;gap:10px}.contact h2{font-size:39px}.hero-bottom{font-size:10px}.signal-node{font-size:14px}.signal-bottom .node-icon{display:block}.signal-diagram{padding:25px 22px}.card-label>span:last-child{display:block}.contact .button{gap:20px}.browser-bar{font-size:12px}}@media(prefers-reduced-motion:reduce){.js .reveal.pending{opacity:1;transform:none}*{animation:none!important;transition:none!important}}@media(max-width:360px){.nav nav{gap:10px}.nav-contact{padding:8px}.hero-grid h1{font-size:39px}.signal-diagram{padding:20px 12px}.signal-bottom .node-icon{display:none}.card-label>span:last-child{display:none}}
