/* ============================================================
   "Deep Water" — sistem desain dokumenter gelap
   JARING x Pulitzer Center — Nestapa ABK Laut Lepas Korea
   ============================================================ */

/* --- 1. Huruf ------------------------------------------------ */
@font-face{font-family:Newsreader;src:url('assets/fonts/newsreader-latin-400-normal.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:Newsreader;src:url('assets/fonts/newsreader-latin-400-italic.woff2') format('woff2');font-weight:400;font-style:italic;font-display:swap}
@font-face{font-family:Newsreader;src:url('assets/fonts/newsreader-latin-500-normal.woff2') format('woff2');font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:Newsreader;src:url('assets/fonts/newsreader-latin-600-normal.woff2') format('woff2');font-weight:600;font-style:normal;font-display:swap}
@font-face{font-family:Newsreader;src:url('assets/fonts/newsreader-latin-700-normal.woff2') format('woff2');font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:Lekton;src:url('assets/fonts/lekton-latin-400-normal.woff2') format('woff2');font-weight:400;font-display:swap}

/* --- 2. Token ------------------------------------------------ */
:root{
 --abyss:#070B10;      /* dasar halaman */
 --deep:#0B1219;       /* permukaan panel, laut pada peta */
 --hull:#121C26;       /* panel terangkat */
 --line:#1E2B37;       /* garis rambut */
 --line-lit:#2E4250;   /* garis tegas, graticule */
 --salt:#EDE7DB;       /* teks utama */
 --salt-mid:#AEB9C1;   /* teks sekunder */
 --salt-dim:#7D8A95;   /* keterangan, label */
 --teal:#63A9A0;
 --teal-deep:#1B343B;  /* isian daratan */
 --amber:#E2A64E;      /* aksen kunci */
 --rust:#C1613A;

 --display:Newsreader,Georgia,"Times New Roman",serif;
 --mono:Lekton,"Cascadia Code",Consolas,ui-monospace,monospace;

 --micro:12px;
 --caption:14px;
 --body:clamp(18px,1.32vw,20px);   /* NYT 20, WaPo 19, Guardian 18 */
 --dek:clamp(16px,1.15vw,18px);    /* standfirst media besar: 18 px */
 --lede:clamp(19px,1.45vw,22px);
 --quote:clamp(21px,2.05vw,29px);
 --h2:clamp(21px,1.75vw,26px);      /* subbab: NYT 22, Guardian/WaPo 24 */
 --h3:var(--h2);
 --h1:clamp(36px,4.6vw,74px);

 --measure:40rem;                  /* ~640 px, sekitar lebar kolom NYT/Guardian */
 --wide:min(calc(100vw - var(--gut) * 2),52rem);   /* grafik lebih lebar dari kolom baca */
 --gut:clamp(20px,4vw,40px);
 color-scheme:dark;
}

/* --- 3. Dasar ------------------------------------------------ */
*{box-sizing:border-box}
html{scroll-padding-top:24px;-webkit-text-size-adjust:100%}
body{
 margin:0;background:var(--abyss);color:var(--salt);
 font:400 var(--body)/1.72 var(--display);
 font-feature-settings:"kern","liga";
 text-rendering:optimizeLegibility;
 overflow-x:hidden;
}
img,canvas,video{display:block;max-width:100%}
img{height:auto}
figure,p,h1,h2,h3,ol,ul,dl,dd{margin:0}
button,input,select,summary{font:inherit;color:inherit}
a{color:inherit}
a:focus-visible,select:focus-visible,summary:focus-visible,button:focus-visible{outline:2px solid var(--amber);outline-offset:4px}
[hidden]{display:none!important}
::selection{background:var(--amber);color:var(--abyss)}

.skip{position:fixed;left:-10000px;top:12px;z-index:9;background:var(--hull);color:var(--salt);padding:12px 20px;font:400 var(--micro)/1 var(--mono);letter-spacing:.08em;text-transform:uppercase}
.skip:focus{left:12px}
.kicker{font:400 var(--micro)/1.4 var(--mono);letter-spacing:.18em;text-transform:uppercase;color:var(--salt-dim)}

/* --- 5. Pembuka ---------------------------------------------- */
/* Tanpa JavaScript pembuka tampil sebagai satu layar diam yang sudah dibingkai. */
/* latar sama dengan panggung peta supaya sambungannya tidak terlihat */
.hero{position:relative;background:var(--deep);--lift:0;--crop:1;--recap:1}
.hero-pin{position:relative;height:100svh;overflow:hidden;background:var(--deep)}
.hero--live{height:420svh;--crop:0;--recap:0}
.hero--live .hero-pin{position:sticky;top:0}

.masthead{
 position:absolute;z-index:3;top:0;left:0;right:0;
 display:flex;align-items:center;gap:14px;padding:18px var(--gut);min-height:74px;
}
/* dua logo sejajar, dipisahkan tanda kali putih sebagai tanda kolaborasi */
.jaring-logo{width:30px;height:30px;object-fit:contain}
.pulitzer-logo{width:136px;height:26px;object-fit:contain;filter:brightness(0) invert(1);opacity:.92}
.brand-x{font:400 20px/1 var(--mono);color:#fff;opacity:.9}

h1,h2,h3{font-family:var(--display);text-wrap:balance}
h1{font-size:var(--h1);font-weight:600;line-height:1.03;letter-spacing:-.022em;color:var(--salt)}

/* judul masuk kata demi kata dari balik topeng, lalu naik dan hilang */
.hero-open{
 position:absolute;z-index:2;top:clamp(88px,13svh,152px);left:var(--gut);right:var(--gut);
 text-align:center;
 opacity:calc((1 - var(--lift)) * (1 - var(--recap)));
 transform:translateY(calc(var(--lift) * -34%));
}
/* tanpa bayangan: topeng kata memotong bayangan jadi kotak. Keterbacaan
   diserahkan ke kerudung gelap di atas rekaman. */
.hero-title{max-width:18ch;margin:0 auto}
.hero-open .dek{
 margin:clamp(18px,2.4vw,28px) auto 0;max-width:52ch;
 color:var(--salt-mid);text-shadow:0 1px 20px rgba(7,11,16,.9);
}
.byline{
 display:flex;flex-wrap:wrap;justify-content:center;gap:14px clamp(26px,4vw,54px);
 max-width:46rem;margin:clamp(20px,2.6vw,30px) auto 0;
 padding-top:clamp(18px,2.2vw,26px);border-top:1px solid rgba(237,231,219,.22);
}
.byline span{display:flex;flex-direction:column;align-items:center;gap:5px}
.byline i{
 font:400 var(--caption)/1.35 var(--mono);font-style:normal;letter-spacing:.05em;
 color:var(--salt);text-shadow:0 1px 14px rgba(7,11,16,.92);
}
.byline b{
 font:400 var(--caption)/1 var(--mono);letter-spacing:.04em;
 color:var(--salt-mid);text-shadow:0 1px 14px rgba(7,11,16,.92);
}
.masked{display:block}
.masked .w{display:inline-block;overflow:hidden;vertical-align:bottom;padding-bottom:.08em;margin-bottom:-.08em}
.masked .w>span{display:inline-block}
.hero--live .masked .w>span{transform:translateY(115%)}
.hero--enter .masked .w>span{animation:rise .95s cubic-bezier(.16,1,.3,1) both}
@keyframes rise{from{transform:translateY(115%)}to{transform:none}}

/* Di ujung rekaman bingkainya menyusut. Yang berubah adalah kotak bingkainya,
   dan object-fit membingkai ulang isinya — bukan clip-path yang memotong
   sembarang bagian gambar. */
.hero-art{
 position:absolute;margin:0;overflow:hidden;
 top:calc(var(--crop) * 7%);
 right:0;
 bottom:calc(var(--crop) * 7%);
 left:calc(var(--crop) * 43%);
}
.hero-media{position:absolute;inset:0}
.hero-media img,.hero-media video{width:100%;height:100%;object-fit:cover;object-position:48% 50%}
.hero-media video{position:absolute;inset:0;opacity:0}
.hero.has-video .hero-media video{opacity:1}
.hero.has-video .hero-media img{opacity:0}
.hero-art::after{
 content:"";position:absolute;inset:0;pointer-events:none;
 opacity:calc(1 - var(--crop) * .8);
 background:linear-gradient(180deg,rgba(7,11,16,.90) 0%,rgba(7,11,16,.58) 42%,rgba(7,11,16,.40) 70%,rgba(7,11,16,.84) 100%);
}

/* judul kembali, menggeser dari samping, bersama satu paragraf pembuka */
.hero-recap{
 position:absolute;z-index:2;left:var(--gut);top:50%;
 width:min(40%,30rem);
 opacity:var(--recap);
 transform:translateY(-50%) translateX(calc((1 - var(--recap)) * -3rem));
}
.dek{font:400 var(--dek)/1.62 var(--display);color:var(--salt-mid);text-wrap:pretty}
.recap-lede{font:400 var(--lede)/1.6 var(--display);color:var(--salt);text-wrap:pretty}
.recap-lede::first-letter{
 float:left;font-size:3.6em;line-height:.8;font-weight:600;
 padding:.04em .09em 0 0;color:var(--amber);
}
.scroll-hint{
 position:absolute;z-index:2;bottom:20px;left:0;right:0;text-align:center;
 font:400 var(--micro)/1.4 var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--salt-dim);
 opacity:calc(1 - var(--lift));
}

/* --- 7. Naskah ----------------------------------------------- */
/* lapisan naskah selalu di atas panggung peta yang baru saja lepas */
article,.chapter,footer{position:relative;z-index:1;background:var(--abyss)}
.chapter{padding:clamp(48px,6vw,84px) var(--gut);max-width:calc(var(--measure) + var(--gut) * 2);margin:0 auto}
.chapter:empty{display:none}
.chapter+.chapter{padding-top:0}
.prose{margin-bottom:1.3em;text-wrap:pretty}
h2{
 font-size:var(--h2);font-weight:600;line-height:1.14;letter-spacing:-.018em;color:var(--salt);
 margin:clamp(48px,5.4vw,80px) 0 clamp(20px,2.4vw,32px);padding-top:22px;
 border-top:1px solid var(--line);
}
.pullquote-cite{
 margin:-1.6em 0 clamp(34px,4.4vw,56px);padding:0 0 0 clamp(18px,2.6vw,28px);
 border-left:2px solid var(--amber);
 font:400 var(--caption)/1.6 var(--mono);letter-spacing:.04em;color:var(--salt-dim);
}
.pullquote{
 margin:clamp(34px,4.4vw,56px) 0;padding:0 0 0 clamp(18px,2.6vw,28px);
 border-left:2px solid var(--amber);
 font:400 var(--quote)/1.36 var(--display);
 letter-spacing:-.012em;color:var(--salt);
}
.pullquote:has(+ .pullquote-cite){margin-bottom:1.6em}

/* --- 8. Foto dokumentasi ------------------------------------- */
.evidence{margin:clamp(34px,4.4vw,52px) 0}
.evidence--center{max-width:27rem;margin-left:auto;margin-right:auto}
.evidence--offset{max-width:23rem;margin-right:auto}
.evidence--inset{max-width:22rem;margin-left:auto}
/* foto pendukung: lebih lebar dari kolom baca, tetapi tidak selebar layar */
.evidence--wide{
 width:min(calc(100vw - var(--gut) * 2),46rem);
 position:relative;left:50%;transform:translateX(-50%);
}
.photo-frame{padding:10px;border:1px solid var(--line);background:var(--deep)}
.photo-frame img{width:100%;height:auto}
figcaption{
 margin-top:12px;padding-left:14px;border-left:1px solid var(--line-lit);
 font:400 var(--caption)/1.55 var(--mono);color:var(--salt-dim);
}

/* --- 8b. Korsel kedalaman ----------------------------------- */
.gallery{
 width:min(calc(100vw - var(--gut) * 2),64rem);
 position:relative;left:50%;transform:translateX(-50%);
 margin:clamp(38px,4.8vw,58px) 0;
}
.gallery .fig{
 font:400 var(--micro)/1.4 var(--mono);letter-spacing:.16em;text-transform:uppercase;
 color:var(--amber);margin-bottom:16px;
}
.depth{
 /* foto air sengaja besar: kartu depan mengisi sekitar seperempat layar */
 --card-w:min(48vw,31rem);
 --card-h:min(calc(var(--card-w) * 4 / 3),72svh);
 position:relative;height:calc(var(--card-h) + 104px);
 display:flex;align-items:center;justify-content:center;
 perspective:1400px;perspective-origin:50% 50%;
 touch-action:pan-y;user-select:none;cursor:grab;outline:none;
 /* kartu terjauh menjulur keluar kotak; tanpa ini halaman bisa digulir mendatar */
 overflow:hidden;
}
.depth:active{cursor:grabbing}
.depth:focus-visible{outline:2px solid var(--amber);outline-offset:4px}
.depth-stage{position:absolute;inset:0;margin:0;padding:0;list-style:none;transform-style:preserve-3d}
.depth-card{
 position:absolute;top:50%;left:50%;
 width:var(--card-w);height:var(--card-h);
 transform-origin:center center;transform:translate(-50%,-50%);
 overflow:hidden;background:var(--deep);border:1px solid var(--line);
 box-shadow:0 30px 60px -20px rgba(0,0,0,.7),0 8px 20px -10px rgba(0,0,0,.5);
 cursor:pointer;
 /* kedalaman diurut oleh preserve-3d, bukan z-index: z-index berubah seketika
    di tengah transisi dan membuat kartu melompat ke depan */
 transition:transform .85s cubic-bezier(.22,1,.28,1),opacity .55s ease-out,
            filter .85s cubic-bezier(.22,1,.28,1);
 backface-visibility:hidden;
}
.depth.is-dragging .depth-card{transition:none}
.depth-card img{width:100%;height:100%;object-fit:cover;display:block;pointer-events:none}
.depth-tint{position:absolute;inset:0;opacity:0;pointer-events:none;background:var(--abyss);mix-blend-mode:multiply}
.depth-arrow{
 position:absolute;top:50%;transform:translateY(-50%);z-index:20;
 width:44px;height:44px;display:grid;place-items:center;cursor:pointer;
 border:1px solid var(--line-lit);border-radius:999px;background:rgba(7,11,16,.7);
 font:400 15px/1 var(--mono);color:var(--salt-mid);
 transition:color .2s,border-color .2s,background .2s;
}
.depth-arrow:hover{color:var(--salt);border-color:var(--amber);background:rgba(7,11,16,.9)}
/* panah duduk tepat di sisi kartu terdepan, bukan di tepi jauh figur */
.depth-arrow--prev{left:max(0px,calc(50% - var(--card-w) / 2 - 58px))}
.depth-arrow--next{right:max(0px,calc(50% - var(--card-w) / 2 - 58px))}
.depth-dots{
 position:absolute;bottom:0;left:50%;transform:translateX(-50%);z-index:20;
 display:flex;gap:8px;padding:8px 12px;border-radius:999px;background:rgba(7,11,16,.55);
}
.depth-dot{
 width:7px;height:7px;padding:0;cursor:pointer;border:0;border-radius:999px;
 background:rgba(237,231,219,.32);transition:width .25s,background .25s;
}
.depth-dot[aria-selected="true"]{width:20px;background:var(--amber)}
.depth-caption{
 display:flex;gap:12px;margin-top:18px;
 font:400 var(--caption)/1.6 var(--mono);color:var(--salt-dim);
}
.depth-caption b{flex:none;font-weight:400;color:var(--amber);font-variant-numeric:tabular-nums}
.gallery>figcaption{margin-top:14px}

/* --- 9. Film layar penuh ------------------------------------- */
.film{position:relative;height:190svh;margin:0;background:var(--deep)}
.film-pin{position:sticky;top:0;height:100svh;overflow:hidden;background:var(--deep)}
.film-media{position:absolute;inset:0}
.film-media img,.film-media video{width:100%;height:100%;object-fit:cover}
.film-media video{position:absolute;inset:0;opacity:0;transition:opacity .6s}
.film.has-video .film-media video{opacity:1}
.film-pin::after{
 content:"";position:absolute;inset:0;pointer-events:none;
 background:linear-gradient(180deg,rgba(7,11,16,.60) 0%,rgba(7,11,16,.20) 26%,rgba(7,11,16,.48) 64%,rgba(7,11,16,.92) 100%);
}
.film-copy{
 position:absolute;z-index:1;left:var(--gut);right:var(--gut);bottom:clamp(96px,16svh,180px);
 max-width:34rem;padding:clamp(16px,2vw,22px) clamp(18px,2.4vw,26px);
 border-left:2px solid var(--amber);background:rgba(7,11,16,.7);
}
.film-copy p{font:400 var(--quote)/1.44 var(--display);color:var(--salt);text-wrap:pretty}
.film figcaption{
 position:absolute;z-index:1;left:0;right:0;bottom:0;margin:0;padding:12px var(--gut);
 border:0;font-size:var(--micro);
}

/* --- 10. Pelayaran: peta latar + kartu bertahap -------------- */
/* bagian selebar layar saling menempel: jeda apa pun memperlihatkan pita
   latar yang kontras di antaranya */
.scrolly{position:relative;margin:0;background:var(--deep)}
/* Pola satu panggung lengket: panggung memenuhi layar, lalu pembungkus langkah
   ditarik naik menimpanya. Margin negatif harus di pembungkus, bukan di
   panggung — kalau di panggung, naskah sesudah bagian ini ikut tertimbun. */
.stage{position:sticky;top:0;height:100svh;overflow:hidden;background:var(--deep)}
/* Pembungkus ini menutupi seluruh peta. Tanpa pointer-events:none ia menelan
   setiap klik, dan titik koordinat di bawahnya tidak pernah bisa dibuka. */
.steps{position:relative;z-index:1;margin-top:-100svh;pointer-events:none}
.stage canvas{width:100%;height:100%}
.readout{
 position:absolute;z-index:2;left:var(--gut);bottom:calc(var(--gut) + 6px);
 display:flex;gap:8px 20px;flex-wrap:wrap;align-items:baseline;
 padding:11px 15px;background:rgba(7,11,16,.82);border:1px solid var(--line-lit);
 font:400 var(--caption)/1.4 var(--mono);color:var(--salt-mid);font-variant-numeric:tabular-nums;
}
.ro-ship{color:var(--salt-dim);letter-spacing:.1em;text-transform:uppercase;font-size:var(--micro)}
.ro-date{color:var(--amber)}
.ro-coord{color:var(--amber)}
.tip{
 /* di luar panggung, dipatok ke layar: koordinat dari kanvas sudah koordinat
    layar selama panggung menempel di atas */
 position:fixed;z-index:4;width:min(19rem,calc(100% - var(--gut) * 2));
 background:var(--abyss);border:1px solid var(--line-lit);border-top:2px solid var(--amber);
 padding:13px 15px;font:400 var(--caption)/1.5 var(--mono);color:var(--salt-mid);
 pointer-events:none;
}
.tip .t-date{font-size:var(--micro);letter-spacing:.14em;text-transform:uppercase;color:var(--amber);margin-bottom:5px}
.tip .t-title{font:600 var(--dek)/1.3 var(--display);color:var(--salt);margin-bottom:8px}
.tip .t-row{display:flex;justify-content:space-between;gap:12px;border-top:1px solid var(--line);padding:4px 0}
.tip .t-row span:first-child{color:var(--salt-dim)}
.tip .t-row span:last-child{color:var(--salt);text-align:right}

.step{
 position:relative;z-index:1;min-height:112svh;
 display:flex;align-items:center;padding:8svh var(--gut);
 pointer-events:none;
}
.step--beat{justify-content:center}
/* teks di atas rekaman atau peta selalu duduk di atas latar tipis, kalau tidak
   bagian terang di belakangnya memakan hurufnya */
/* kalimat pembuka bukan bagian naskah utama, jadi warnanya dibedakan */
.beat{
 max-width:30ch;text-align:center;opacity:var(--o,1);text-wrap:pretty;
 padding:clamp(16px,2vw,22px) clamp(20px,2.6vw,28px);
 background:rgba(7,11,16,.68);border:1px solid rgba(226,166,78,.28);
 font:400 var(--quote)/1.42 var(--display);color:var(--amber);
}
.card{
 pointer-events:auto;
 max-width:29rem;padding:clamp(20px,2.6vw,28px);
 background:rgba(7,11,16,.88);border:1px solid var(--line);border-left:2px solid var(--amber);
}
.steps .step:nth-child(2) .card{margin-left:auto}
.card-art{margin:0 0 16px}
.card-art img{width:100%;height:auto;border:1px solid var(--line)}
.card-art figcaption{margin-top:9px;padding-left:12px;font-size:var(--micro);line-height:1.5}
.card .fig{font:400 var(--micro)/1.4 var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--amber);margin-bottom:12px}
.card .card-title{font-size:var(--h3);font-weight:600;line-height:1.2;letter-spacing:-.015em;margin:0 0 14px;color:var(--amber)}
.card p+p{margin-top:.9em}
.card .note{font:400 var(--caption)/1.6 var(--mono);color:var(--salt-dim)}
.legend{display:flex;flex-wrap:wrap;gap:8px 18px;margin-top:14px;font:400 var(--micro)/1.4 var(--mono);letter-spacing:.06em;color:var(--salt-dim)}
.legend span{display:inline-flex;align-items:center;gap:7px}
.dot{width:9px;height:9px;display:inline-block}
.dot--enc{border-radius:50%;background:var(--amber)}
.dot--port{background:var(--salt)}
.hint-click{margin-top:12px;font:400 var(--micro)/1.4 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--teal)}
.hint-click::before{content:"\25C9 ";color:var(--amber)}
.records{margin-top:16px;font:400 var(--caption)/1.6 var(--mono);color:var(--salt-dim)}
.records summary{width:fit-content;cursor:pointer;min-height:44px;padding:10px 0;color:var(--salt-mid);letter-spacing:.06em}
.records ul{padding-left:18px;margin:4px 0 0}
.records li{margin-bottom:9px}

/* --- 10b. Naskah bergulir di atas rekaman -------------------- */
.reel{position:relative;background:var(--deep);margin:0}
.reel-pin{position:sticky;top:0;height:100svh;overflow:hidden;background:var(--deep)}
.reel-media{position:absolute;inset:0}
.reel-media img,.reel-media video{width:100%;height:100%;object-fit:cover}
.reel-media video{position:absolute;inset:0;opacity:0;transition:opacity .6s}
.reel.has-video .reel-media video{opacity:1}
.reel-pin::after{
 content:"";position:absolute;inset:0;pointer-events:none;
 background:linear-gradient(180deg,rgba(7,11,16,.78) 0%,rgba(7,11,16,.62) 40%,rgba(7,11,16,.82) 100%);
}
.reel-caption{
 position:absolute;z-index:1;left:0;right:0;bottom:0;padding:12px var(--gut);
 font:400 var(--micro)/1.6 var(--mono);color:var(--salt-dim);
}
.reel-copy{position:relative;z-index:1;margin-top:-100svh}
.reel-copy p{
 min-height:82svh;display:flex;align-items:center;
 max-width:calc(var(--measure) + var(--gut) * 2);margin:0 auto;padding:0 var(--gut);
}
.reel-copy p>span{
 display:block;padding:clamp(18px,2.4vw,26px) clamp(20px,2.6vw,30px);
 background:rgba(7,11,16,.66);border-left:2px solid var(--amber);
 font:400 var(--quote)/1.42 var(--display);color:var(--salt);text-wrap:pretty;
}

/* --- 11. Satu hari kerja ------------------------------------- */
.clock{margin:clamp(40px,5vw,64px) 0;padding:clamp(24px,3vw,34px) 0;border-block:1px solid var(--line);width:var(--wide);position:relative;left:50%;transform:translateX(-50%);
}
.clock h3{font-size:var(--h3);font-weight:600;line-height:1.2;margin-bottom:22px}
.clock-wrap{display:flex;gap:clamp(20px,4vw,38px);align-items:center;flex-wrap:wrap}
.clock-wrap svg{flex:none}
.clock-num{fill:var(--salt);font:400 30px var(--mono)}
.clock-unit{fill:var(--salt-dim);font:400 10px var(--mono);letter-spacing:.12em}
.clock-arc{transition:stroke .4s}
.clock-wrap svg,.clock-note{opacity:0;transform:translateY(14px);transition:opacity .7s,transform .7s cubic-bezier(.16,1,.3,1)}
.clock.is-on .clock-wrap svg,.clock.is-on .clock-note{opacity:1;transform:none}
.clock.is-on .clock-note{transition-delay:.12s}
.clock-note{flex:1 1 15rem;max-width:23rem;font-size:var(--body);line-height:1.6;color:var(--salt-mid)}
.clock-note b{font-weight:400;color:var(--amber);font-family:var(--mono);font-size:.94em}
.clock figcaption{margin-top:22px}

/* --- 12. Grafik temuan --------------------------------------- */
.finding{margin:clamp(40px,5vw,60px) 0;padding:clamp(24px,3vw,32px) 0;border-block:1px solid var(--line);width:var(--wide);position:relative;left:50%;transform:translateX(-50%);
}
.finding h3{font-size:var(--h3);font-weight:600;line-height:1.2;margin-bottom:24px}
.finding-row{margin-top:20px}
.finding-label{
 display:flex;justify-content:space-between;gap:16px;
 font:400 var(--caption)/1.4 var(--mono);color:var(--salt-mid);font-variant-numeric:tabular-nums;
}
.finding-row svg{display:block;width:100%;height:10px;margin-top:9px;overflow:visible}
.finding-row rect{fill:var(--rust)}
.finding-row--amber rect{fill:var(--amber)}
.finding-row--rust rect{fill:var(--rust)}
.finding--wage .finding-label span:last-child{color:var(--salt)}
/* --- 12a. Upah: dua batang dengan jalur pembanding ----------- */
.wage{
 margin:clamp(40px,5vw,60px) 0;
 padding:clamp(22px,2.8vw,30px) clamp(20px,2.6vw,28px);
 border:1px solid var(--line);border-left:2px solid var(--amber);background:var(--deep);
 width:var(--wide);position:relative;left:50%;transform:translateX(-50%);
}
.wage .fig{
 font:400 var(--micro)/1.4 var(--mono);letter-spacing:.16em;text-transform:uppercase;
 color:var(--amber);margin-bottom:10px;
}
.wage h3{font-size:var(--h3);font-weight:600;line-height:1.2;margin-bottom:24px}
.wage-row{padding:10px 0;cursor:default}
.wage-row+.wage-row{margin-top:6px}
.wage-row:hover,.wage-row:focus-visible{outline:none}
.wage-label{
 display:flex;justify-content:space-between;align-items:baseline;gap:16px;margin-bottom:9px;
 font:400 var(--caption)/1.4 var(--mono);color:var(--salt-mid);font-variant-numeric:tabular-nums;
}
.wage-label b{font-weight:400;color:var(--salt)}
.wage-track{display:block;height:12px;background:var(--hull);border:1px solid var(--line)}
.wage-fill{
 display:block;height:100%;width:0;background:var(--amber);
 transition:width 1.1s cubic-bezier(.2,.7,.2,1);
}
.wage-row--rust .wage-fill{background:var(--rust)}
.wage-row:hover .wage-fill,.wage-row:focus-visible .wage-fill{filter:brightness(1.25)}
.wage-row:hover .wage-label b,.wage-row:focus-visible .wage-label b{color:var(--amber)}
.wage-gap{
 margin-top:20px;padding-top:16px;border-top:1px solid var(--line);
 font:400 var(--caption)/1.5 var(--mono);color:var(--salt-mid);
}
.wage-gap b{font-weight:400;color:var(--rust);font-size:var(--lede)}
.wage figcaption{margin-top:18px;padding-left:0;border-left:0}

/* --- 12b. Sampai ke kanal resmi ------------------------------ */
.matrix{
 margin:clamp(40px,5vw,60px) 0;
 padding:clamp(22px,2.8vw,30px) clamp(20px,2.6vw,28px);
 border:1px solid var(--line);border-left:2px solid var(--teal);background:var(--deep);
 width:var(--wide);position:relative;left:50%;transform:translateX(-50%);
}
.matrix .fig{
 font:400 var(--micro)/1.4 var(--mono);letter-spacing:.16em;text-transform:uppercase;
 color:var(--teal);margin-bottom:10px;
}
.matrix h3{font-size:var(--h3);font-weight:600;line-height:1.2;margin-bottom:18px}
.matrix-tabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:20px}
.matrix-tab{
 min-height:44px;padding:9px 15px;cursor:pointer;
 background:var(--hull);border:1px solid var(--line-lit);border-radius:0;
 font:400 var(--caption)/1.3 var(--mono);color:var(--salt-mid);
 transition:color .2s,border-color .2s,background .2s;
}
.matrix-tab:hover{color:var(--salt);border-color:var(--teal)}
.matrix-tab[aria-selected="true"]{background:var(--salt);border-color:var(--salt);color:var(--abyss)}
.matrix-grid{
 display:grid;grid-template-columns:repeat(auto-fill,9px);gap:3px;
 padding:4px 0;
}
.matrix-grid i{
 display:block;width:6px;height:6px;background:var(--line-lit);border-radius:50%;
 opacity:0;transform:scale(.4);
 transition:opacity .5s,transform .5s,background .3s,box-shadow .3s;
}
.matrix.is-on .matrix-grid i{opacity:1;transform:none}
.matrix-grid i.on{background:var(--amber);box-shadow:0 0 0 2px rgba(226,166,78,.22)}
.matrix-readout{
 margin-top:18px;font:400 var(--caption)/1.65 var(--mono);color:var(--salt-mid);
}
.matrix figcaption{margin-top:18px;padding-left:0;border-left:0}

/* --- 12b. Profil penulis ------------------------------------- */
.authors{
 position:relative;z-index:1;background:var(--abyss);
 max-width:calc(var(--measure) + var(--gut) * 2);margin:0 auto;
 padding:clamp(44px,5.4vw,72px) var(--gut) 0;
}
.authors .kicker{margin-bottom:20px}
.author{
 display:flex;gap:clamp(16px,2.4vw,24px);align-items:flex-start;
 padding:clamp(18px,2.4vw,24px);border:1px solid var(--line);background:var(--deep);
}
.author+.author{margin-top:14px}
.author-photo{
 width:82px;height:82px;flex:none;border-radius:50%;object-fit:cover;
 border:1px solid var(--line-lit);
}
.author-name{font:600 var(--lede)/1.2 var(--display);letter-spacing:-.015em;color:var(--salt)}
.author-role{
 margin:6px 0 12px;font:400 var(--micro)/1.4 var(--mono);
 letter-spacing:.18em;text-transform:uppercase;color:var(--amber);
}
.author-body>p:last-child{font:400 var(--dek)/1.68 var(--display);color:var(--salt-mid);text-wrap:pretty}
.authors-note{
 margin-top:14px;font:400 var(--micro)/1.6 var(--mono);color:var(--salt-dim);
}

/* --- 12c. Kredit --------------------------------------------- */
/* Kredit menutup badan naskah: hanya garis pembatas, tanpa judul.
   Lebarnya melebihi kolom baca dan dipusatkan pada kolom itu. */
.credits{
 position:relative;left:50%;translate:-50%;
 width:var(--wide);margin:clamp(40px,5vw,64px) 0 0;
 padding-top:clamp(24px,3vw,34px);border-top:1px solid var(--line-lit);
}
.credits dl{
 display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(18px,2.4vw,30px);
 margin:0;justify-items:center;text-align:center;
}
.credits div{display:flex;flex-direction:column;gap:7px;align-items:center}
.credits dt{font:400 var(--caption)/1.5 var(--mono);letter-spacing:.03em;color:var(--salt-dim)}
.credits dd{margin:0;font:400 var(--caption)/1.5 var(--mono);color:var(--salt);text-wrap:balance}

/* --- 13. Kaki ------------------------------------------------ */
footer{max-width:calc(var(--measure) + var(--gut) * 2);margin:0 auto;padding:clamp(48px,6vw,80px) var(--gut) 64px}
footer .kicker{margin-bottom:16px}
footer p{padding-top:20px;border-top:1px solid var(--line);font:400 var(--caption)/1.7 var(--mono);color:var(--salt-dim)}
footer p+p{border-top:0;padding-top:0;margin-top:14px}

/* --- 14. Layar kecil ----------------------------------------- */
@media(max-width:760px){
 :root{--measure:100%}
 .masthead{min-height:60px;padding:13px var(--gut)}
 .masthead .kicker{display:none}
 .jaring-logo{width:30px;height:30px}.pulitzer-logo{width:112px;height:21px}
 .hero-title{max-width:none}
 .hero-open .dek{max-width:none}
 .byline{gap:12px 22px;padding-top:16px}
 .hero--live{height:380svh}
 .hero-title{top:clamp(84px,13svh,120px)}
 .hero-art{top:calc(var(--crop) * 4%);right:0;bottom:calc(var(--crop) * 46%);left:0}
 .hero-recap{
  top:auto;bottom:40px;width:calc(100% - var(--gut) * 2);
  transform:translateX(calc((1 - var(--recap)) * -2rem));
 }
 .step--beat{align-items:center}
 .beat{max-width:none}
 .evidence--center,.evidence--offset,.evidence--inset{max-width:none;margin-left:0;margin-right:0}
 .film{height:170svh}
 .reel-copy p{min-height:76svh}
 .film-copy{bottom:clamp(80px,14svh,140px);max-width:none}
 .step{min-height:104svh;align-items:flex-end;padding-bottom:12svh}
 .card{max-width:none}
 .steps .step:nth-child(2) .card{margin-left:0}
 .readout{
  left:0;right:0;top:0;bottom:auto;justify-content:space-between;
  border-width:0 0 1px;padding:10px var(--gut);background:var(--abyss);
 }
 .step{padding-top:16svh}
 /* Di ponsel kartu naskah selebar layar dan menutupi seluruh peta, sehingga
    tidak ada satu pun titik yang bisa diketuk. Kartu dibuat tembus sentuhan;
    hanya bagian yang memang perlu ditekan yang menahannya. */
 .card{pointer-events:none}
 .card details,.card summary,.card a{pointer-events:auto}
 .tip{width:calc(100% - var(--gut) * 2)}
 .evidence--wide,.gallery{width:auto;position:static;left:auto;transform:none}
 .depth{
  --card-w:min(72vw,19rem);--card-h:min(calc(var(--card-w) * 4 / 3),58svh);
  --spread:.16;--visible:1.4;--depth-z:150;
 }
 .clock,.wage,.matrix,.finding{width:auto;position:static;left:auto;transform:none}
 .credits{width:auto;position:static;left:auto;translate:none}
 .credits dl{grid-template-columns:1fr 1fr;gap:22px}
 .depth-arrow{width:40px;height:40px}
 .credits dt{flex:0 0 100%}
 .wage-label{flex-direction:column;gap:4px}
 .matrix-grid{grid-template-columns:repeat(auto-fill,8px)}
 .author{flex-direction:column;gap:14px}
 .author-photo{width:72px;height:72px}
 .clock-wrap{gap:20px}
 .clock-wrap svg{width:150px;height:150px}
}

/* --- 15. Gerak dikurangi ------------------------------------- */
@media(prefers-reduced-motion:reduce){
 .hero,.hero--live{height:auto}
 .hero--live .hero-pin{position:relative}
 .hero-media video,.film-media video{display:none}
 .scroll-hint{display:none!important}
 .film{height:auto}
 .film-pin{position:relative;height:min(70svh,560px)}
 .stage{position:relative;height:min(76svh,600px)}
 .steps{margin-top:0}
 .reel-pin{position:relative;height:min(60svh,460px)}
 .reel-copy{margin-top:0}
 .reel-copy p{min-height:0;padding:clamp(24px,4vw,40px) var(--gut)}
 .depth-card{transition:none}
 .step{min-height:0;padding:clamp(28px,4vw,44px) var(--gut)}
}

/* --- 16. Cetak ----------------------------------------------- */
@media print{
 body{background:#fff;color:#111;overflow:visible}
 .masthead,.hero-art,.film,.stage,.reel-pin,.scroll-hint{display:none}
 .author{border-color:#ccc;background:none}
 .steps,.reel-copy{margin-top:0}
 .reel-copy p{min-height:0;padding:8px 0}
 .hero{height:auto!important}
 .hero-pin{position:static!important;height:auto!important;overflow:visible!important}
 .hero-title,.hero-recap{position:static!important;opacity:1!important;transform:none!important;width:auto!important}
 .hero-recap,.chapter,footer,.step{max-width:none;padding:12px 0;min-height:0}
 .beat{min-height:0;padding:8px 0;text-align:left}
 .evidence{break-inside:avoid}
 .card{background:none;border-color:#ccc}
 figcaption,.dateline,.kicker{color:#555}
}
