:root{--teal:#0f766e;--teal-d:#0b5e57;--teal-l:#e6f3f1;--amber:#c98324;--blue:#1780a8;--red:#dc2626;--green:#16a34a;
--ink:#10302c;--mut:#6b7f7b;--line:#e3eae8;--bg:#f5f7f6;--card:#fff;--r:10px;
--f:'Inter',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;--m:'JetBrains Mono',ui-monospace,Consolas,monospace}
*{box-sizing:border-box}html,body{margin:0}body{font-family:var(--f);color:var(--ink);background:var(--bg);font-size:14px;line-height:1.45;-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}h1,h2,h3{margin:0;letter-spacing:-.02em}
.mono{font-family:var(--m)}.muted{color:var(--mut)}.pad{padding:20px}.r{text-align:right}
.eyebrow{font-size:10.5px;letter-spacing:.16em;color:var(--teal);margin:0 0 6px;font-weight:500}.eyebrow.dark{color:var(--teal)}
/* shell */
.shell{display:flex;min-height:100vh}
.sidebar{width:252px;flex:none;background:#fff;border-right:1px solid var(--line);display:flex;flex-direction:column;position:sticky;top:0;height:100vh;padding:20px 14px 0;z-index:30}
.brand{display:flex;align-items:center;gap:10px;padding:0 6px 16px}.brand b{display:block;font-size:12px;letter-spacing:.14em}.brand small{font-family:var(--m);font-size:9.5px;letter-spacing:.14em;color:var(--teal)}
.logo{width:34px;height:34px;border-radius:9px;background:var(--bc,var(--teal));color:#fff;font-weight:700;display:grid;place-items:center;font-size:13px;letter-spacing:-.02em}
.me{display:flex;gap:10px;align-items:center;border:1px solid var(--line);border-radius:10px;padding:10px;margin-bottom:6px}
.me b,.chip b{display:block;font-size:12.5px;font-weight:600}.me small,.chip small{font-size:10.5px;color:var(--mut);text-transform:uppercase;letter-spacing:.05em}
.avatar{width:30px;height:30px;border-radius:50%;background:var(--teal-l);color:var(--teal);display:grid;place-items:center;font-weight:600;font-size:11px;flex:none}
.sidebar nav{flex:1;overflow-y:auto;padding-bottom:12px;scrollbar-width:thin}
.grp{font-family:var(--m);font-size:10px;letter-spacing:.15em;color:#94a5a2;margin:18px 8px 6px;text-transform:uppercase}
.sidebar nav a,.side-foot a{display:flex;align-items:center;gap:11px;padding:8px 10px;border-radius:8px;color:#4a615d;font-size:13px;transition:background .12s}
.sidebar nav a svg,.side-foot svg{flex:none;color:#6b7f7b}.sidebar nav a span{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sidebar nav a i{font-style:normal;font-size:10px;font-weight:600;background:var(--teal-l);color:var(--teal);border-radius:20px;padding:1px 7px}
.sidebar nav a:hover{background:#f1f6f5}.sidebar nav a.on{background:var(--teal-l);color:var(--teal-d);font-weight:600}.sidebar nav a.on svg{color:var(--teal)}
.side-foot{border-top:1px solid var(--line);padding:10px 0 14px}.side-foot .out{color:#b4443a}.side-foot .out svg{color:#b4443a}
.main{flex:1;min-width:0}
.top{height:64px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:14px;padding:0 32px;position:sticky;top:0;z-index:20}
.crumb{display:flex;align-items:center;gap:6px;color:var(--mut);font-size:13px}.crumb b{color:var(--ink);font-weight:500}
.top-r{margin-left:auto;display:flex;align-items:center;gap:20px}.chip{display:flex;gap:10px;align-items:center}
.bell{position:relative;color:#4a615d;display:grid}.bell em{position:absolute;top:-6px;right:-8px;background:#e0614a;color:#fff;font-size:9px;font-style:normal;font-weight:700;border-radius:20px;padding:1px 5px;border:2px solid #fff}
.burger{display:none;background:none;border:0;color:var(--ink);cursor:pointer;padding:4px}
.content{padding:32px;max-width:1400px}
.scrim{display:none}
/* page head */
.page-head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:22px;flex-wrap:wrap}
.page-head h1{font-size:27px;font-weight:700}.page-head .muted{margin:6px 0 0}.hello{font-size:30px!important}
.lnk{color:var(--teal);font-weight:500;display:inline-flex;gap:4px;align-items:center;font-size:12.5px}
/* buttons / forms */
.btn{display:inline-flex;gap:8px;align-items:center;justify-content:center;border:1px solid var(--line);background:#fff;color:var(--ink);padding:9px 16px;border-radius:8px;font:600 13px var(--f);cursor:pointer}
.btn:hover{border-color:#c9d6d3}.btn.primary{background:var(--teal);border-color:var(--teal);color:#fff}.btn.primary:hover{background:var(--teal-d)}.btn.wide{width:100%;padding:13px}
input,select,textarea{font:400 13.5px var(--f);color:var(--ink);border:1px solid var(--line);background:#fff;border-radius:8px;padding:10px 12px;width:100%;outline:none}
input:focus,select:focus,textarea:focus{border-color:var(--teal);box-shadow:0 0 0 3px rgba(15,118,110,.12)}
.sel{width:auto;font-weight:600}
/* cards */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r)}
.card h3{font-size:17px;font-weight:600;margin-bottom:14px}
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:16px}
.kpi{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:20px;display:block;transition:border-color .12s}.kpi:hover{border-color:#bcd3cf}
.kpi p{margin:12px 0 6px;color:var(--mut);font-size:12.5px}.kpi>div{display:flex;justify-content:space-between;align-items:baseline;gap:8px}
.kpi b{font-size:30px;font-weight:600;letter-spacing:-.03em}.kpi small{font-size:11px;color:var(--teal);text-align:right}.kpi small.red{color:var(--red)}
.ki{width:38px;height:38px;border-radius:9px;display:grid;place-items:center}.ki.teal{background:var(--teal-l);color:var(--teal)}.ki.amber{background:#fbf0de;color:var(--amber)}.ki.blue{background:#e1f0f6;color:var(--blue)}.ki.red{background:#fde8e6;color:var(--red)}
.kpis.mini .kpi{padding:14px 18px}.kpis.mini .kpi p{margin:0 0 4px}.kpis.mini b{font-size:22px}
.g3{display:grid;grid-template-columns:1.5fr 1fr 1fr;gap:16px;margin:16px 0}.g2{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px}.g2.wide-left{grid-template-columns:1.4fr 1fr}
.row-h{display:flex;justify-content:space-between;align-items:flex-start}
/* charts */
.chart{width:100%;height:auto;display:block}.chart .grid{stroke:#e7eeec;stroke-dasharray:3 4}.ax{font:10.5px var(--m);fill:#8da09c}.dn{font:600 26px var(--f);fill:var(--ink)}
.donut{display:flex;align-items:center;gap:18px;flex-wrap:wrap}.legend{list-style:none;margin:0;padding:0;flex:1;min-width:130px}
.legend li{display:flex;align-items:center;gap:8px;font-size:12.5px;padding:4px 0}.legend li b{margin-left:auto;font-weight:600}.legend i,.legend.inline i{width:9px;height:9px;border-radius:2px;display:inline-block}
.legend.inline{display:flex;gap:16px;font-size:11.5px;color:var(--mut);margin:-6px 0 6px}.legend.inline span{display:flex;gap:6px;align-items:center}
.hbars{display:flex;flex-direction:column;gap:12px}.hb{display:grid;grid-template-columns:minmax(90px,150px) 1fr 44px;gap:10px;align-items:center;font-size:12.5px}
.hb>div{background:#eef3f2;border-radius:4px;height:9px}.hb u{display:block;height:9px;border-radius:4px}.hb b{text-align:right}
.matrix{display:grid;grid-template-columns:20px 1fr;gap:6px;align-items:center}.mx-lab{writing-mode:vertical-rl;transform:rotate(180deg);font-size:10.5px;color:var(--mut);text-align:center;grid-row:1}
.matrix table{border-collapse:separate;border-spacing:3px;width:100%}.matrix th{font:500 11px var(--m);color:var(--mut);width:22px}.matrix td{height:38px;text-align:center;border-radius:5px;color:#fff;font-size:14px}
.mx-g{background:#4caf7a}.mx-y{background:#e6c34a}.mx-o{background:#df9a3c}.mx-r{background:#d9534a}.mx-x{grid-column:2;text-align:center;font-size:10.5px;color:var(--mut)}
/* list items */
.li{display:flex;align-items:center;gap:12px;padding:12px 0;border-top:1px solid var(--line)}.li:first-of-type{border-top:0}.li-m{flex:1;min-width:0}.li-m b{display:block;font-size:12.5px;font-weight:600}
.li-m small{display:block;color:var(--mut);font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dot{width:8px;height:8px;border-radius:50%;flex:none;background:#9fb0ad}
.dot.b-green{background:var(--green)}.dot.b-amber{background:#eab308}.dot.b-red{background:var(--red)}.dot.b-blue{background:var(--blue)}.dt{font-size:11px;color:var(--mut);white-space:nowrap}
/* badges */
.badge{display:inline-block;padding:3px 10px;border-radius:20px;font-size:11px;font-weight:600;white-space:nowrap}
.b-green{background:#dcf3e5;color:#166a3b}.b-amber{background:#fbefd0;color:#8a5a0b}.b-red{background:#fde1de;color:#a32a22}.b-blue{background:#dcecf5;color:#17607f}.b-gray{background:#edf1f0;color:#53665f}
/* table */
.toolbar{display:flex;gap:14px;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--line)}
.search{position:relative;flex:1;max-width:380px}.search svg{position:absolute;left:11px;top:50%;transform:translateY(-50%);color:var(--mut)}.search input{padding-left:36px}
.tbl-wrap{overflow-x:auto}.tbl{width:100%;border-collapse:collapse}.tbl th{font:500 10.5px var(--m);letter-spacing:.08em;text-transform:uppercase;color:var(--mut);text-align:left;padding:12px 16px;background:#fafcfb;border-bottom:1px solid var(--line);white-space:nowrap}
.tbl td{padding:12px 16px;border-bottom:1px solid #eef3f2;vertical-align:middle}.tbl tr:hover td{background:#fafcfb}.tbl .empty{text-align:center;color:var(--mut);padding:44px}.tbl th.r{text-align:right}
.code{font-size:12px;color:var(--teal-d);font-weight:500}.acts{white-space:nowrap}.acts a,.acts button{display:inline-grid;place-items:center;width:30px;height:30px;border-radius:7px;color:#5b706c;border:0;background:none;cursor:pointer;vertical-align:middle}
.acts a:hover{background:var(--teal-l);color:var(--teal)}.acts .danger:hover{background:#fde8e6;color:var(--red)}.acts form{display:inline}
.pager{display:flex;gap:6px;padding:14px 16px;justify-content:flex-end}.pager a{min-width:32px;height:32px;display:grid;place-items:center;border:1px solid var(--line);border-radius:7px;font-size:12.5px}.pager a.on{background:var(--teal);color:#fff;border-color:var(--teal)}
/* form */
.form{padding:24px}.fgrid{display:grid;grid-template-columns:1fr 1fr;gap:18px 20px}.fgrid label{display:flex;flex-direction:column;gap:6px;font-size:12.5px;font-weight:500}.fgrid .full{grid-column:1/-1}
.fgrid label em{color:var(--red);font-style:normal}.fgrid textarea{resize:vertical}.has-err input,.has-err select,.has-err textarea{border-color:var(--red)}.err{color:var(--red);font-size:11.5px;font-weight:400}
.form-foot{display:flex;justify-content:flex-end;gap:10px;margin-top:24px;padding-top:18px;border-top:1px solid var(--line)}
.alert{padding:11px 16px;border-radius:8px;margin-bottom:16px;font-size:13px;transition:opacity .3s}.alert.green{background:#dcf3e5;color:#166a3b}.alert.red{background:#fde1de;color:#a32a22}
/* login */
body.login{display:grid;grid-template-columns:1.35fr 1fr;min-height:100vh;background:#f5f7f6}
.l-left{background:linear-gradient(160deg,#0f6b63,#0a524c);color:#fff;padding:0 9%;display:flex;flex-direction:column;justify-content:center;position:relative;overflow:hidden}
.l-left::after{content:'';position:absolute;right:-180px;bottom:-200px;width:560px;height:560px;border-radius:50%;border:90px solid rgba(255,255,255,.04)}
.logo.big{background:#fff;color:var(--bc,var(--teal-d));width:36px;height:36px;margin-bottom:70px}.l-left .eyebrow{color:#9fd8cf;margin-bottom:14px}
.l-left h1{font-size:clamp(38px,4.4vw,58px);font-weight:500;line-height:1.05;letter-spacing:-.04em}.l-left h1 span{color:#8fe3d1}
.lead{font-size:15px;line-height:1.6;max-width:420px;margin:26px 0 70px;color:#e3f4f0;font-weight:500}
.stat{display:flex;gap:14px;align-items:center}.stat b{font-size:46px;font-weight:500;letter-spacing:-.04em}.stat span{font-size:11.5px;color:#b9e2db;line-height:1.5}
.l-right{display:flex;align-items:center;padding:40px 8%}.l-box{width:100%;max-width:390px}.l-box h2{font-size:28px;font-weight:600;margin:6px 0 8px}.l-box>.muted{margin:0 0 26px}
.l-box form{display:flex;flex-direction:column;gap:16px}.l-box label{display:flex;flex-direction:column;gap:7px;font-size:12px;font-weight:500}.l-box input{padding:13px 14px}
.demo{margin-top:30px;padding-top:22px;border-top:1px solid var(--line)}.demo-row{display:flex;width:100%;justify-content:space-between;align-items:center;background:#fff;border:1px solid var(--line);border-radius:7px;padding:10px 12px;margin-bottom:8px;cursor:pointer;font:12px var(--f);color:var(--teal-d)}
.demo-row:hover{border-color:var(--teal)}.demo-row b{font-weight:600}.demo-row span{color:var(--mut);font-size:11.5px}
/* responsive */
@media(max-width:1100px){.kpis{grid-template-columns:repeat(2,1fr)}.g3,.g2,.g2.wide-left{grid-template-columns:1fr}}
@media(max-width:860px){.sidebar{position:fixed;left:0;transform:translateX(-100%);transition:transform .2s}body.nav-open .sidebar{transform:none}
 body.nav-open .scrim{display:block;position:fixed;inset:0;background:rgba(10,30,27,.4);z-index:25}.burger{display:block}.top{padding:0 16px}.chip div{display:none}.content{padding:20px 16px}.fgrid{grid-template-columns:1fr}
 body.login{grid-template-columns:1fr}.l-left{padding:44px 28px}.logo.big{margin-bottom:30px}.lead{margin-bottom:30px}.l-right{padding:32px 24px}}
@media(max-width:520px){.kpis{grid-template-columns:1fr}}

/* ===== PTW: detail, QR, verifikasi publik ===== */
.head-acts{display:flex;gap:8px;flex-wrap:wrap}
.ptw-state{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:12px 16px;border-radius:10px;margin-bottom:16px;font-size:13px;border:1px solid transparent}
.ptw-state b{font-weight:600}.ptw-state .dot-s{width:9px;height:9px;border-radius:50%;background:currentColor;flex:none}
.ptw-state.green{background:#e6f3f1;color:#0b5e57;border-color:#cfe6e2}.ptw-state.amber{background:#fbf0de;color:#8a5a0b;border-color:#f1dfba}
.ptw-state.red{background:#fde8e6;color:#a32a22;border-color:#f6cfcb}.ptw-state.gray{background:#edf1f0;color:#53665f;border-color:#dde5e3}
.ptw-state span:last-child{opacity:.85}
.alert code{background:rgba(0,0,0,.07);padding:1px 5px;border-radius:4px;font-size:12px}
.ptw-grid{display:grid;grid-template-columns:1.6fr 1fr;gap:16px;align-items:start}
.card.pad h3.sub{margin:26px 0 10px;font-size:14px}
.dl{margin:0;display:flex;flex-direction:column}
.dl>div{display:grid;grid-template-columns:150px 1fr;gap:14px;padding:11px 0;border-top:1px solid var(--line);align-items:baseline}.dl>div:first-child{border-top:0}
.dl dt{font:500 10.5px var(--m);letter-spacing:.08em;text-transform:uppercase;color:var(--mut)}.dl dd{margin:0;font-weight:500}
.dl dd small{display:block;color:var(--mut);font-weight:400;font-size:12px;margin-top:2px}
.prose{margin:0;line-height:1.6}
.chk{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:8px 16px}
.chk li{display:flex;gap:9px;align-items:flex-start}.chk svg{color:var(--teal);flex:none;margin-top:2px}
.qr-card{text-align:center;position:sticky;top:84px}.qr-card h3{text-align:left}
.qr-box{display:inline-block;padding:10px;border:1px solid var(--line);border-radius:12px;background:#fff;line-height:0}
.qr-box svg{width:200px;height:200px;max-width:100%}
.qr-help{font-size:12px;margin:14px 4px 14px}
.url-box{display:flex;gap:8px;margin-bottom:12px}.url-box input{font:500 11.5px var(--m);color:var(--mut);min-width:0}.url-box .btn{padding:8px 12px;flex:none}
.qr-acts{display:flex;flex-direction:column;gap:8px}

body.vf{min-height:100vh;display:grid;place-items:center;padding:24px;background:linear-gradient(160deg,#fbfdfc 0%,#e4f0ed 100%)}
.vf-card{--tone:var(--teal);--tone-l:var(--teal-l);width:100%;max-width:440px;background:#fff;border:1px solid var(--line);border-radius:20px;padding:34px 34px 28px;text-align:center;box-shadow:0 34px 70px -34px rgba(15,118,110,.38)}
.vf-card.amber{--tone:#b7791f;--tone-l:#fbf0de}.vf-card.red{--tone:#dc2626;--tone-l:#fde8e6}.vf-card.gray{--tone:#5b706c;--tone-l:#edf1f0}
.vf-brand{display:inline-flex;align-items:center;gap:12px;margin-bottom:22px}.vf-brand .logo{width:32px;height:32px;border-radius:8px;font-size:12px}
.vf-brand b{font:600 11px var(--m);letter-spacing:.2em;color:var(--teal-d)}
.vf-ico{width:80px;height:80px;border-radius:50%;display:grid;place-items:center;margin:0 auto 16px;background:var(--tone-l);color:var(--tone)}
.vf-eyebrow{font:500 10px var(--m);letter-spacing:.22em;color:var(--tone);margin:0 0 10px}
.vf-card h1{font-size:26px;font-weight:500;letter-spacing:-.025em;margin:0 0 22px}
.vf-rows{background:#f7faf9;border-radius:12px;padding:8px 18px;margin:0 0 14px;text-align:left}
.vf-row{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:9px 0}
.vf-row dt{font:600 10.5px var(--f);letter-spacing:.06em;text-transform:uppercase;color:var(--mut);flex:none}
.vf-row dd{margin:0;font-size:13px;font-weight:600;text-align:right;min-width:0;overflow-wrap:anywhere}
.vf-pill{display:inline-block;padding:3px 11px;border-radius:20px;font-size:11px;font-weight:600;background:var(--tone-l);color:var(--tone)}
.vf-state{margin:0 0 12px;font-size:12.5px;font-weight:600;color:var(--tone)}
.vf-note{font-size:11.5px;color:var(--mut);line-height:1.6;margin:0 4px 20px}
.vf-btn{background:var(--teal);border-color:var(--teal);color:#fff;padding:12px 20px;box-shadow:0 8px 18px -8px rgba(15,118,110,.6)}
.vf-btn:hover{background:var(--teal-d)}
.vf-time{margin:16px 0 0;font:500 10px var(--m);letter-spacing:.06em;color:#97a8a5}
@media(max-width:1100px){.ptw-grid{grid-template-columns:1fr}.qr-card{position:static}}
@media(max-width:560px){.dl>div{grid-template-columns:1fr;gap:3px}.chk{grid-template-columns:1fr}.vf-card{padding:28px 20px 24px}}

/* CAPA: foto dokumentasi */
.btn.sm{padding:6px 12px;font-size:12px}
.acts a.pw{position:relative}.acts .pc{position:absolute;top:-2px;right:-3px;min-width:16px;height:16px;padding:0 4px;border-radius:9px;background:var(--teal);color:#fff;font:600 10px/16px var(--f);text-align:center}
.card+.card{margin-top:16px}.ptw-state+.card{margin-top:0}
.pcount-h{font-size:12px;font-weight:500;margin-left:8px}
.alert.amber-note{background:#fbf0de;color:#8a5a0b;margin-bottom:0}
.pkind{display:flex;align-items:center;gap:8px;margin:22px 0 12px;font-size:13px;font-weight:600}
.pkind:first-of-type{margin-top:6px}
.pkind::before{content:"";width:4px;height:14px;border-radius:2px;background:var(--amber)}.pkind.after::before{background:var(--green)}
.pkind small{color:var(--mut);font-weight:500}
.pgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px}
.pgrid.mini{grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px}
.pfig{margin:0;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:#fff;break-inside:avoid;page-break-inside:avoid;display:block}
.pfig>a{display:block;background:#f1f5f4}
.pfig img{display:block;width:100%;height:200px;object-fit:contain;background:#f1f5f4}
.pgrid.mini .pfig img{height:96px}
.pfig figcaption{padding:10px 12px;font-size:12.5px;display:flex;flex-direction:column;gap:4px}
.pfig .pk{font:500 10px var(--m);letter-spacing:.1em;text-transform:uppercase;color:var(--teal)}
.pfig .pcap{font-weight:500}.pfig .pmeta{color:var(--mut);font-size:11.5px}
.pcap-form{display:flex;gap:6px;margin-top:6px}.pcap-form input{min-width:0;flex:1;font-size:12px;padding:6px 8px}
.pdel{display:inline-flex;align-items:center;gap:5px;border:0;background:none;color:var(--red);font:600 12px var(--f);cursor:pointer;padding:2px 0}
.pdelchk{display:flex;justify-content:space-between;align-items:center;gap:6px;padding:6px 8px;font-size:11.5px}
.pdelchk span{display:inline-flex;align-items:center;gap:4px;color:var(--red);font-weight:600}.pdelchk input{width:auto}
.upl-form{display:flex;gap:14px;align-items:flex-end;flex-wrap:wrap}
.upl-form label{display:flex;flex-direction:column;gap:6px;font-size:12.5px;font-weight:500}.upl-form .grow{flex:1;min-width:220px}
.photo-fields{margin-top:22px;padding-top:20px;border-top:1px solid var(--line)}
.print-only{display:none}
@media(max-width:560px){.pgrid{grid-template-columns:1fr 1fr}.pfig img{height:130px}}

/* Cetak */
@page{size:A4;margin:14mm}
@media print{
  *{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .sidebar,.top,.head-acts,.qr-acts,.url-box,.no-print,.scrim,.alert,.page-head{display:none!important}
  body{background:#fff;font-size:11.5px}.shell{display:block}.content{padding:0;max-width:none}
  .card{border:0;border-radius:0}.card.pad{padding:0 0 10px}.card+.card{margin-top:10px}
  .print-only{display:block!important}
  .print-head{display:flex!important;justify-content:space-between;align-items:flex-end;background:#0f766e;color:#fff;padding:12px 16px;border-radius:6px;margin-bottom:12px}
  .print-head b{display:block;font-size:13px;letter-spacing:.12em}.print-head span{display:block;font-size:9px;letter-spacing:.14em;color:#a7ddd5}
  .print-head .ph-title{text-align:right}.print-head .ph-title b{font-size:17px;letter-spacing:0;margin-top:2px}
  .ptw-state{margin-bottom:10px}
  .dl>div{padding:6px 0}
  .photo-sec{break-before:auto}
  .pgrid{grid-template-columns:1fr 1fr;gap:10px}
  .pfig img{height:62mm}
  .pkind{break-after:avoid;page-break-after:avoid}
  .print-sign{display:grid!important;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:16px;break-inside:avoid;page-break-inside:avoid}
  .print-sign>div{border:1px solid #cfd9d6;border-radius:4px;height:34mm;padding:8px 10px;position:relative}
  .print-sign b{display:block;font-size:8.5px;letter-spacing:.1em;color:#0f766e}.print-sign span{display:block;font-size:9px;color:#6b7f7b;margin-top:5px}
  .print-sign i{position:absolute;left:10px;right:10px;bottom:20px;border-top:1px solid #8da09c}.print-sign em{position:absolute;left:10px;bottom:6px;font-style:normal;font-weight:600;font-size:10px}
  .print-foot{margin-top:10px;font-size:9px;color:#6b7f7b}
}

/* Laporan Insiden & RCA: rekap bulanan, form bulan, blok RCA */
.month-form{display:flex;gap:8px;align-items:center}.month-form input[type=month]{height:38px;padding:0 10px;border:1px solid var(--line);border-radius:8px;font:inherit;background:#fff}
.rca-box{border-left:3px solid var(--teal)}
.card.pad.rca-box{margin-top:14px}
.rec-block{margin-top:14px}
@media print{
  .rec-block{break-before:page;page-break-before:always}
  .rca-box{break-inside:auto;border-left:2px solid #0f766e;padding-left:8px;margin-top:12px}
  .month-form{display:none!important}
  .tbl{font-size:10px}
}

/* Inspeksi aset & template checklist */
.ck-list{display:flex;flex-direction:column;gap:12px;margin-top:14px}
.ck-row{border:1px solid var(--line);border-radius:12px;padding:14px 16px;background:#fff}
.ck-row.pass{border-color:#bfe3da;background:#f7fcfa}.ck-row.fail{border-color:#f3c5c5;background:#fff8f8}
.ck-head{display:flex;gap:10px;align-items:flex-start;justify-content:space-between;flex-wrap:wrap}
.ck-q{font-weight:600;font-size:14px}.ck-q small{display:block;font-weight:400;color:var(--mut);margin-top:3px}
.ck-no{font-family:var(--m);color:var(--teal);margin-right:8px}
.ck-opts{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}
.ck-opt{position:relative;display:inline-block}
.ck-opt input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer;margin:0}
.ck-opt span{display:inline-block;padding:8px 16px;border:1px solid var(--line);border-radius:999px;font-size:13px;font-weight:600;color:#44605b;background:#fff}
.ck-opt input:checked+span.ok{background:var(--green);border-color:var(--green);color:#fff}
.ck-opt input:checked+span.bad{background:var(--red);border-color:var(--red);color:#fff}
.ck-opt input:checked+span.na{background:#5b706c;border-color:#5b706c;color:#fff}
.ck-opt input:focus-visible+span{outline:2px solid var(--teal);outline-offset:2px}
.ck-note{margin-top:10px;width:100%}
.ck-file{display:flex;flex-direction:column;gap:6px;margin-top:10px;font-size:12.5px;font-weight:500}
.ck-capa{margin:10px 0 0;display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-size:13px}
.ck-edit{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.ck-edit input[type=text]{flex:1;min-width:180px}
.ck-seq{width:64px}.ck-crit{display:inline-flex;gap:6px;align-items:center;font-size:12.5px;font-weight:600;white-space:nowrap}
@media print{.ck-opts,.ck-file,.ck-note{display:none!important}.ck-row{break-inside:avoid;padding:8px 10px}.ck-list{gap:6px}}

/* ===== Kartu ID Karyawan: foto, pratinjau kartu, verifikasi publik ===== */
.vf-photo{position:relative;width:132px;height:176px;margin:0 auto 18px;border-radius:14px;background:var(--tone-l);border:3px solid var(--tone);display:grid;place-items:center;box-shadow:0 14px 28px -14px rgba(16,48,44,.45)}
.vf-photo img{width:100%;height:100%;object-fit:cover;border-radius:11px;display:block}
.vf-photo span{font:600 40px var(--f);color:var(--tone);opacity:.7}
.vf-photo-badge{position:absolute;right:-12px;bottom:-12px;width:36px;height:36px;border-radius:50%;background:var(--tone);color:#fff;display:grid;place-items:center;border:3px solid #fff;font-style:normal}
.vf-card:has(.vf-photo) .vf-eyebrow{margin-top:22px}
.emp-photo-form{display:flex;flex-direction:column;gap:10px;margin-top:18px;padding-top:16px;border-top:1px solid var(--line);text-align:left}
.emp-photo-form h4{margin:0;font-size:13px}.emp-photo-form small{color:var(--mut);font-size:12px}
.emp-photo-form .row{display:flex;gap:8px;flex-wrap:wrap}
.emp-mini{display:flex;gap:14px;align-items:center;margin-bottom:6px}
.emp-mini .ph{width:72px;height:96px;border-radius:10px;overflow:hidden;background:var(--teal-l);display:grid;place-items:center;border:1px solid var(--line);flex:none}
.emp-mini .ph img{width:100%;height:100%;object-fit:cover;display:block}.emp-mini .ph b{font-size:22px;color:var(--teal);opacity:.7}
.idc-wrap{display:flex;gap:18px;flex-wrap:wrap;justify-content:center;padding:6px 0 2px}
.idc{width:204px;height:323px;border-radius:12px;border:1px solid #cfdad7;background:#fff;overflow:hidden;position:relative;box-shadow:0 18px 34px -22px rgba(16,48,44,.5);display:flex;flex-direction:column;align-items:center;font-size:12px}
.idc-top{width:100%;background:var(--teal);color:#fff;padding:14px 14px 12px;display:flex;align-items:center;gap:10px;flex:none}
.idc-top .logo{width:30px;height:30px;border-radius:7px;font-size:11px;background:#fff;color:var(--bc,var(--teal))}
.idc-top b{display:block;font:600 10px var(--m);letter-spacing:.14em}.idc-top small{display:block;font-size:6.5px;letter-spacing:.1em;color:#a7ddd5;margin-top:3px}
.idc-ph{width:108px;height:144px;margin-top:14px;border-radius:6px;border:2px solid var(--teal);background:var(--teal-l);overflow:hidden;display:grid;place-items:center;flex:none}
.idc-ph img{width:100%;height:100%;object-fit:cover;display:block}.idc-ph span{font:600 38px var(--f);color:#7fb8b0}
.idc-nm{margin:12px 12px 2px;text-align:center;font-weight:700;font-size:13.5px;line-height:1.25;color:var(--ink)}
.idc-sub{font-size:10px;color:var(--mut);text-align:center;line-height:1.35;padding:0 12px}
.idc-nik{margin-top:auto;margin-bottom:16px;font:600 11.5px var(--m);letter-spacing:.06em;color:var(--teal)}
.idc::after{content:"";position:absolute;left:0;right:0;bottom:0;height:12px;background:var(--teal)}
.idc.back .idc-top{justify-content:center;font:600 10px var(--m);letter-spacing:.16em}
.idc.back .idc-qr{margin-top:20px;padding:8px;border:1px solid #cfdad7;border-radius:8px;line-height:0}.idc.back .idc-qr svg{width:132px;height:132px}
.idc.back .idc-cap{margin-top:10px;font:600 8.5px var(--m);letter-spacing:.12em;color:var(--teal)}
.idc.back p{margin:8px 20px 0;text-align:center;font-size:9px;line-height:1.5;color:var(--mut)}
.idc.off{filter:grayscale(.6);opacity:.85}
@media(max-width:560px){.idc{width:100%;max-width:240px;height:auto;min-height:323px}}

/* ===== Branding: logo inisial / ikon / gambar ===== */
.logo svg{width:58%;height:58%;display:block}
.logo.has-img{background:#fff;border:1px solid var(--line);padding:3px;overflow:hidden}
.logo.has-img img{width:100%;height:100%;object-fit:contain;display:block}
.ph-brand{display:flex;align-items:center;gap:10px}
.logo.ph{width:30px;height:30px;border-radius:7px;font-size:11px;background:#fff;color:var(--bc,var(--teal));border:0}
.logo.ph.has-img{padding:2px}

/* ===== Halaman Branding & Logo ===== */
.brand-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(300px,1fr);gap:20px;align-items:start}
.brand-form h3{font-size:15px;margin-bottom:14px}.brand-form h3.sec{margin:28px 0 14px;padding-top:22px;border-top:1px solid var(--line)}
.brand-form .hint,.brand-pv .hint,.hint{font-size:11.5px;color:var(--mut);font-weight:400;line-height:1.4}
.brand-form .lbl,.brand-pv .lbl{font:500 10.5px var(--m);letter-spacing:.14em;color:var(--mut);text-transform:uppercase;margin:16px 0 8px}
.brand-pv .lbl:first-of-type{margin-top:0}
.brand-form label.narrow{display:flex;flex-direction:column;gap:6px;font-size:12.5px;font-weight:500;max-width:200px}
.mode-row{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:18px}
.mode-opt{position:relative;display:flex;flex-direction:column;gap:3px;border:1px solid var(--line);border-radius:10px;padding:14px 14px 12px;cursor:pointer;background:#fff;transition:border-color .15s,box-shadow .15s}
.mode-opt input{position:absolute;opacity:0;pointer-events:none}
.mode-opt .mo-ico{width:38px;height:38px;border-radius:9px;background:var(--teal-l);color:var(--teal);display:grid;place-items:center;font-weight:700;font-size:14px;margin-bottom:6px}
.mode-opt b{font-size:13px}.mode-opt small{font-size:11px;color:var(--mut);line-height:1.35}
.mode-opt:hover{border-color:#c9d6d3}
.mode-opt.on{border-color:var(--teal);box-shadow:0 0 0 3px rgba(15,118,110,.12)}
.mode-opt.on .mo-ico{background:var(--teal);color:#fff}
.mode-panel[hidden]{display:none}
.ico-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(48px,1fr));gap:8px;margin-bottom:10px}
.ico-opt{position:relative;cursor:pointer}.ico-opt input{position:absolute;opacity:0;pointer-events:none}
.ico-opt span{display:grid;place-items:center;height:48px;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--ink);transition:all .15s}
.ico-opt:hover span{border-color:#c9d6d3;background:var(--bg)}
.ico-opt input:checked+span{border-color:var(--teal);background:var(--teal-l);color:var(--teal);box-shadow:0 0 0 3px rgba(15,118,110,.12)}
.ico-opt input:focus-visible+span{outline:2px solid var(--teal);outline-offset:2px}
.img-row{display:flex;gap:18px;align-items:flex-start}
.img-cur{width:112px;height:112px;flex:none;border:1px dashed #c9d6d3;border-radius:10px;display:grid;place-items:center;padding:8px;background:
  conic-gradient(#f1f4f3 25%,#fff 0 50%,#f1f4f3 0 75%,#fff 0) 0 0/16px 16px;font-size:11.5px;text-align:center}
.img-cur img{max-width:100%;max-height:100%;object-fit:contain;display:block}
.img-ctl{display:flex;flex-direction:column;gap:8px;min-width:0;flex:1}
.img-ctl label{display:flex;flex-direction:column;gap:6px;font-size:12.5px;font-weight:500}
.img-ctl label.chk{flex-direction:row;align-items:center;gap:8px;font-weight:400}.img-ctl label.chk input{width:auto}
input[type=file]{padding:8px 10px;background:#fff}
.color-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.color-row input[type=color]{width:46px;height:38px;padding:3px;border-radius:8px;cursor:pointer;flex:none}
.sw{width:26px;height:26px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px var(--line);cursor:pointer;padding:0}
.sw:hover{box-shadow:0 0 0 2px var(--teal)}
.color-row .hint{flex-basis:100%}
.brand-pv{position:sticky;top:80px}
.pv-side{border:1px solid var(--line);border-radius:10px;padding:16px 14px 4px;background:#fff}.pv-side .brand{padding-bottom:12px}
.pv-login{background:linear-gradient(160deg,#0f6b63,#0a524c);color:#fff;border-radius:10px;padding:22px 20px;overflow:hidden}
.pv-login .logo.big{margin-bottom:22px;width:34px;height:34px}.pv-login .eyebrow{color:#9fd8cf;font-size:9px;margin-bottom:8px;word-break:break-word}
.pv-login h4{margin:0;font-size:22px;font-weight:500;letter-spacing:-.03em;line-height:1.1}.pv-login h4 span{color:#8fe3d1}
.pv-doc{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;background:#0f766e;color:#fff;padding:12px 14px;border-radius:8px}
.pv-doc b{display:block;font-size:12px;letter-spacing:.1em}.pv-doc span{font-size:8.5px;letter-spacing:.12em;color:#a7ddd5}
.pv-doc .ph-title{text-align:right}.pv-doc .ph-title b{font-size:14px;letter-spacing:0}
.pv-doc .logo.ph{color:var(--bc,#0f766e)}
@media(max-width:980px){.brand-grid{grid-template-columns:1fr}.brand-pv{position:static;order:-1}}
@media(max-width:560px){.mode-row{grid-template-columns:1fr}.img-row{flex-direction:column}}

/* Keamanan akun */
.login .forgot{margin-top:14px;text-align:center;font-size:13px}.login .forgot a,.linklike{color:var(--teal);font-weight:600}
.linklike{background:none;border:0;padding:0;cursor:pointer;font:inherit;font-weight:600;text-decoration:underline}
.card.pad+.card.pad{margin-top:16px}.card.pad h3 .badge{margin-left:8px;vertical-align:middle}
.sec-inline{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-top:12px}.sec-inline input{max-width:240px}
.sec-steps{margin:8px 0 14px 18px;color:var(--mut);font-size:13px;line-height:1.7}
.sec-qr{display:flex;gap:20px;align-items:center;flex-wrap:wrap;margin-bottom:16px}.sec-qr svg{border:1px solid var(--line);border-radius:8px;padding:6px;background:#fff}
.sec-key{display:inline-block;font:500 14px var(--m);letter-spacing:.08em;background:#f3f7f6;padding:8px 12px;border-radius:6px;word-break:break-all}
.sec-codes{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;margin:12px 0}.sec-codes code{font:500 14px var(--m);background:#f3f7f6;padding:8px 10px;border-radius:6px;text-align:center}
.sec-act{display:flex;gap:6px;flex-wrap:wrap}.sec-act form{margin:0}

/* Jejak audit */
.aud-filter{flex-wrap:wrap;justify-content:flex-start}.aud-filter label{display:flex;align-items:center;gap:6px;font-size:12.5px}
.aud-filter select,.aud-filter input[type=date]{height:34px}
.aud-chg{margin-top:6px;font-size:12.5px}.aud-chg summary{cursor:pointer;color:var(--mut)}.aud-chg ul{margin:6px 0 0;padding-left:18px}
.aud-old{color:#a32a22;text-decoration:line-through}.aud-new{color:#166a3b}

/* Alur persetujuan bertingkat & tanda tangan digital (stempel teks) */
.appr-head{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin:-4px 0 14px}.appr-head .fp{margin-left:auto;font-size:11px}
.appr-steps{list-style:none;margin:0 0 16px;padding:0;display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.appr-step{border:1px solid var(--line);border-radius:10px;padding:12px;display:flex;flex-direction:column;gap:8px;min-height:150px;background:#fff;position:relative}
.appr-step .no{position:absolute;top:10px;right:12px;font:600 11px var(--m);color:#a9b8b5}
.appr-step>b{font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--teal)}
.appr-step.cur{border-color:#e8c27a;background:#fffaf0}.appr-step.done{border-color:#9fd0c8}.appr-step.rej{border-color:#f0b4ae;background:#fdf6f5}
.appr-step>.muted{font-size:12.5px;margin-top:auto;margin-bottom:auto}
.stamp{border:1.5px solid #0f766e;border-radius:6px;padding:8px 10px;display:flex;flex-direction:column;gap:2px;background:#f6fbfa;font-size:12px}
.stamp.rej{border-color:#b91c1c;background:#fdf6f5}
.stamp .st-h{font:700 9.5px var(--m);letter-spacing:.14em;color:#15803d}.stamp.rej .st-h{color:#b91c1c}
.stamp .st-n{font-size:13.5px;line-height:1.25;color:var(--ink)}.stamp .st-r{font-size:11px;color:var(--mut)}
.stamp .st-t{font-size:11.5px;margin-top:4px;border-top:1px solid #cfe3df;padding-top:4px}
.stamp .st-note{font-size:11px;color:var(--mut);margin-top:2px}
.stamp .st-c{font-size:10.5px;color:var(--mut);margin-top:3px}.stamp .st-c b{font-size:12px;color:var(--teal-d);letter-spacing:.04em}
.appr-form{border-top:1px solid var(--line);padding-top:16px}
.appr-fields{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:12px}.appr-fields label{display:flex;flex-direction:column;gap:6px;font-size:12.5px;font-weight:500;min-width:190px}.appr-fields .grow{flex:1;min-width:240px}
.appr-btns{display:flex;gap:10px;flex-wrap:wrap}
.btn.danger-o{border-color:#f0b4ae;color:#a32a22}.btn.danger-o:hover{background:#fde8e6;border-color:#e58f87}
.appr-note{margin:12px 0 0;font-size:12.5px}
.appr-hist{margin-top:14px}.appr-hist summary{cursor:pointer;font-weight:600;font-size:13px;color:var(--teal-d)}
@media(max-width:900px){.appr-steps{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.appr-steps{grid-template-columns:1fr}.appr-head .fp{margin-left:0}}
@media print{
  .print-sign.cols4{grid-template-columns:repeat(4,1fr);gap:6px}
  .print-sign.cols4>div{height:auto;min-height:38mm;padding:6px 7px}
  .print-sign.cols4>div.dg{padding-bottom:6px}
  .print-sign.cols4 .stamp{margin-top:5px;padding:5px 6px;font-size:8.5px;border-width:1px;gap:1px}
  .print-sign.cols4 .stamp .st-h{font-size:7px}.print-sign.cols4 .stamp .st-n{font-size:10px}.print-sign.cols4 .stamp .st-r,.print-sign.cols4 .stamp .st-c,.print-sign.cols4 .stamp .st-note{font-size:7.5px}
  .print-sign.cols4 .stamp .st-t{font-size:8px}.print-sign.cols4 .stamp .st-c b{font-size:9px}
  .print-sign.cols4 .st-wait{display:block;margin-top:14mm;text-align:center;color:#97a8a5;font-size:8.5px}
}

/* ---- Kontraktor, Tamu & Induksi: halaman publik (tamu.php, induksi.php, verify_akses.php) ---- */
body.pub{min-height:100vh;display:flex;justify-content:center;align-items:flex-start;padding:24px 14px 40px;background:var(--bg)}
.pub-card{width:100%;max-width:460px;background:#fff;border:1px solid var(--line);border-radius:20px;padding:30px 28px 26px;text-align:center;box-shadow:0 34px 70px -40px rgba(15,118,110,.38);--tone:var(--teal);--tone-l:var(--teal-l)}
.pub-card.wide{max-width:640px;text-align:left}.pub-card.wide .vf-brand,.pub-card.wide h1{text-align:center;display:flex;justify-content:center}
.pub-card h1{font-size:24px;font-weight:600;letter-spacing:-.02em;margin:0 0 14px}.pub-card .vf-brand{display:flex;justify-content:center}
.pub-card .vf-rows{margin-top:12px}.pub-card .qr-box{margin:6px auto}
.pub-lang{text-align:right;margin:-8px 0 6px;font-size:12px}.pub-lang a{color:var(--teal);font-weight:600}
.pub-form{display:flex;flex-direction:column;gap:14px;text-align:left}.pub-form label{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:500}
.pub-form input[type=text],.pub-form input[type=tel],.pub-form select{width:100%;min-height:46px;padding:11px 13px;font:16px var(--f);color:var(--ink);background:#fff;border:1px solid #cfdcd9;border-radius:10px}
.pub-form input:focus,.pub-form select:focus{outline:0;border-color:var(--teal);box-shadow:0 0 0 3px rgba(15,118,110,.18)}
.pub-check{flex-direction:row!important;align-items:flex-start;gap:10px!important;font-size:12.5px!important;font-weight:400!important;color:var(--mut)}.pub-check input{margin-top:3px;width:18px;height:18px;flex:none}
.pub-topic{margin:0 0 14px;padding:14px 16px;background:#f7faf9;border-radius:12px;text-align:left}.pub-topic h2{font-size:15px;margin:0 0 8px;color:var(--teal-d)}
.pub-topic p{margin:0 0 6px;font-size:13.5px}.pub-topic ul{margin:0;padding-left:20px}.pub-topic li{margin:0 0 5px;font-size:13.5px}
.pub-h2{font-size:17px;margin:10px 0 0}.pub-h2 small{font-weight:400;color:var(--mut);font-size:12px;margin-left:6px}
.pub-q{border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin:0}.pub-q legend{font-weight:600;font-size:14px;padding:0 6px}
.pub-opt{flex-direction:row!important;align-items:flex-start;gap:10px!important;padding:8px 6px;border-radius:8px;font-weight:400!important;font-size:14px!important;cursor:pointer}.pub-opt:hover{background:#f1f6f5}.pub-opt input{margin-top:3px;width:18px;height:18px;flex:none}
.pub-review{background:#fde8e6;border-radius:12px;padding:12px 14px;margin:0 0 14px;font-size:13px;text-align:left}.pub-review b{color:#a32a22}.pub-review div{margin-top:8px}.pub-review p{margin:0;font-weight:600}.pub-review small{display:block;color:#7a2a24;margin-top:2px}
.pub-acts{margin:12px 0 0}.pub-acts .btn{width:100%}
@media(max-width:480px){.pub-card{padding:24px 18px}}

/* ===== Sasaran & Tinjauan Manajemen, Laporan Direksi ===== */
.t-green{--tc:#16a34a}.t-blue{--tc:#1780a8}.t-amber{--tc:#c98324}.t-red{--tc:#dc2626}.t-gray{--tc:#8a9b97}
.sc-tbl td small{display:block;font-size:11.5px;margin-top:2px}
.sc-tbl tr.sc-cat td{background:#f6faf9;font:600 10.5px var(--m);letter-spacing:.12em;text-transform:uppercase;color:var(--teal)}
.sc-bar{height:8px;background:#eef3f2;border-radius:4px;overflow:hidden}.sc-bar u{display:block;height:100%;background:var(--tc,#8a9b97);border-radius:4px;text-decoration:none}
.rp-note{font-size:12.5px;margin:0 0 12px}.rp-empty{max-width:720px}
.rp-sec{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:24px 26px;margin-bottom:16px}
.rp-sec h2{font-size:18px;font-weight:600;margin:0 0 16px;display:flex;gap:10px;align-items:baseline}.rp-sec h2 .mono{color:var(--teal);font-size:13px}
.rp-sec h3.sub{margin:18px 0 8px;font-size:13.5px}
.rp-hero{display:flex;justify-content:space-between;gap:18px;align-items:flex-end;flex-wrap:wrap;background:linear-gradient(135deg,#0f766e,#0b5e57);color:#fff;border-radius:12px;padding:22px 24px;margin-bottom:18px}
.rp-hero .eyebrow{color:#a7ddd5}.rp-hero h1{font-size:26px;color:#fff;margin:2px 0 6px}.rp-meta{margin:0;color:#c9ebe6;font-size:12.5px}
.rp-hero-r{display:flex;flex-direction:column;align-items:flex-end;gap:6px}.rp-hero-r .mono{font-size:15px;font-weight:600}.rp-hero-r small{color:#c9ebe6}
.rp-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:6px}
.rp-kpi{border:1px solid var(--line);border-left:4px solid var(--tc,#8a9b97);border-radius:10px;padding:12px 14px;background:#fff}
.rp-kpi p{margin:0 0 4px;font:500 10.5px var(--m);letter-spacing:.06em;text-transform:uppercase;color:var(--mut)}.rp-kpi b{display:block;font-size:27px;letter-spacing:-.03em;line-height:1.1}.rp-kpi small{display:block;margin-top:4px;color:var(--mut);font-size:11.5px}
.rp-two{margin-top:6px;margin-bottom:0}
.rp-msgs,.rp-att{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:8px}
.rp-msgs li{padding-left:14px;position:relative;font-size:13px}.rp-msgs li:before{content:"";position:absolute;left:0;top:7px;width:6px;height:6px;border-radius:50%;background:var(--teal)}
.rp-att li{padding:7px 10px 7px 12px;border-left:3px solid var(--amber);background:#fdf7ec;border-radius:0 6px 6px 0;font-size:12.5px}.rp-att li.red{border-color:var(--red);background:#fdf0ef}
.rp-nums{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:8px}.rp-nums>div{border:1px solid var(--line);border-radius:8px;padding:9px 12px}
.rp-nums span{display:block;font:500 10px var(--m);letter-spacing:.08em;text-transform:uppercase;color:var(--mut)}.rp-nums b{font-size:20px;letter-spacing:-.02em}
.rp-blocks{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:6px 28px}.rp-block .dl>div{grid-template-columns:1fr auto;padding:8px 0}.rp-block .dl dd{text-align:right}
.rp-narr h4{margin:14px 0 4px;font-size:12.5px;color:var(--teal)}.rp-narr p{margin:0;white-space:pre-wrap}
.rp-stamp{margin-top:14px;border:1.5px solid var(--teal);background:#f3fbf9;border-radius:10px;padding:14px 18px;display:flex;flex-direction:column;gap:3px}.rp-stamp b{color:var(--teal);letter-spacing:.1em;font-size:12px}.rp-stamp span{font-size:12.5px}
.rp-signbox{border:1px solid #cfd9d6;border-radius:6px;height:34mm;min-height:120px;padding:8px 10px;position:relative}.rp-signbox b{display:block;font-size:10px;letter-spacing:.1em;color:var(--teal)}.rp-signbox span{display:block;font-size:11px;color:var(--mut);margin-top:4px}
.rp-signbox i{position:absolute;left:10px;right:10px;bottom:26px;border-top:1px solid #8da09c}.rp-signbox em{position:absolute;left:10px;bottom:8px;font-style:normal;font-size:11px}
.tm-steps{display:flex;gap:10px;flex-wrap:wrap}.tm-step{display:flex;align-items:center;gap:8px;padding:6px 14px 6px 8px;border:1px solid var(--line);border-radius:999px;color:var(--mut);font-weight:500}
.tm-step i{font-style:normal;width:22px;height:22px;border-radius:50%;display:grid;place-items:center;background:#eef3f2;font-size:11px}
.tm-step.done{color:#166a3b;border-color:#bfe3d0}.tm-step.done i{background:#16a34a;color:#fff}.tm-step.now{color:var(--teal-d);border-color:var(--teal);background:var(--teal-l);font-weight:600}.tm-step.now i{background:var(--teal);color:#fff}
.tm-check{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:9px}.tm-check li{display:flex;gap:10px;align-items:flex-start}.tm-check li i{font-style:normal;width:20px;height:20px;border-radius:50%;display:grid;place-items:center;flex:none;font-size:11px;margin-top:1px}
.tm-check li.ok i{background:#dcf3e5;color:#166a3b}.tm-check li.no i{background:#fbefd0;color:#8a5a0b}.tm-check small{display:block;color:var(--mut);font-size:11.5px;font-weight:400}.tm-check b{font-weight:500;font-size:13px}
.tm-inline{display:flex;gap:6px;justify-content:flex-end;align-items:center;flex-wrap:wrap}.tm-inline select,.tm-inline input{height:32px;font:inherit;font-size:12px;border:1px solid var(--line);border-radius:6px;padding:0 6px}
.pres-bar{position:fixed;left:50%;bottom:16px;transform:translateX(-50%);display:flex;gap:10px;align-items:center;background:#10302c;color:#fff;padding:8px 12px;border-radius:999px;z-index:60;box-shadow:0 10px 30px rgba(0,0,0,.3)}.pres-bar[hidden]{display:none}.pres-bar span{font-size:12px;max-width:46vw;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
body.pres .sidebar,body.pres .top,body.pres .page-head,body.pres .m-install,body.pres .scrim{display:none!important}
body.pres{background:#fff}body.pres .content{padding:28px 6vw 90px;max-width:none}
body.pres .rp-sec{display:none;border:0;padding:0;font-size:16px}body.pres .rp-sec.cur{display:block}
body.pres .rp-sec h2{font-size:28px}body.pres .rp-kpi b{font-size:40px}body.pres .rp-hero h1{font-size:36px}body.pres .tbl{font-size:15px}body.pres .rp-msgs li,body.pres .rp-att li{font-size:16px}
@media(max-width:900px){.rp-kpis,.rp-nums{grid-template-columns:repeat(2,1fr)}.rp-sec{padding:18px}}
@media print{
  .rp-sec{border:0;padding:0 0 8px;margin:0;break-before:page;page-break-before:always}.rp-sec.rp-first{break-before:auto;page-break-before:auto}
  .rp-hero{padding:14px 16px}.rp-hero h1{font-size:20px}.rp-kpi b{font-size:21px}.rp-sec h2{font-size:15px}
  .rp-signbox{height:34mm;break-inside:avoid}.rp-stamp,.rp-att li,.rp-kpi{break-inside:avoid}.pres-bar{display:none!important}
  .sc-tbl tr{break-inside:avoid}
}

/* ===== Kelompok textarea (JSA & HIRA) ===== */
.grp-editor{margin-top:22px;padding-top:18px;border-top:1px solid var(--line)}
.grp-list{display:flex;flex-direction:column;gap:12px;margin:14px 0}
.grp-item{border:1px solid var(--line);border-radius:10px;background:#fafcfb;padding:12px 14px}
.grp-bar{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;font-size:12.5px}
.grp-bar b{color:var(--teal)}
.grp-acts{display:flex;gap:4px}.grp-acts button{border:1px solid var(--line);background:#fff;border-radius:6px;min-width:28px;height:28px;cursor:pointer;color:var(--mut);display:inline-flex;align-items:center;justify-content:center;font:600 13px var(--f)}
.grp-acts button:hover{border-color:#c9d6d3;color:var(--ink)}.grp-acts .grp-del:hover{color:var(--red);border-color:#f0b4ae}.grp-acts button:disabled{opacity:.35;cursor:not-allowed}
.grp-cols{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.grp-cols label{display:flex;flex-direction:column;gap:6px;font-size:12.5px;font-weight:500}.grp-cols textarea{resize:vertical;min-height:84px}
.grp-tbl td{vertical-align:top;white-space:normal;line-height:1.5}
@media(max-width:760px){.grp-cols{grid-template-columns:1fr}}
@media print{.grp-tbl{width:100%;border-collapse:collapse}.grp-tbl th,.grp-tbl td{border:1px solid #cfd9d6;padding:5px 7px;font-size:10.5px}.grp-tbl th{background:#eef6f4;color:#0f766e}.grp-tbl tr{break-inside:avoid;page-break-inside:avoid}}

/* Peta lokasi kejadian pada detail laporan insiden */
.rec-map{margin:14px 0 0;height:300px;border-radius:10px;overflow:hidden;border:1px solid var(--line)}.rec-map iframe{width:100%;height:100%;border:0;display:block}

/* ===== P2K3 / Komite K3: peta kepatuhan rapat bulanan, kehadiran, laporan ===== */
.p2-grid{display:grid;grid-template-columns:repeat(12,1fr);gap:6px}
.p2-m{border:1px solid var(--line);border-radius:8px;padding:6px 0;text-align:center;font:500 10.5px var(--m);color:var(--mut);background:#fff}
.p2-m b{display:block;font:600 15px var(--f);line-height:1.25}
.p2-m.ok{background:#dcf3e5;border-color:#bfe3cd;color:#166a3b}
.p2-m.miss{background:#fdf0ef;border-color:#f3c5c5;color:#a32626}
.p2-m.planned{background:#e8f0fb;border-color:#c5d6f2;color:#1e4f9c}
.p2-m.pending{background:#fbf0de;border-color:#f0dcae;color:#8a5a0b}
.p2-m.future,.p2-m.na{opacity:.5}
.p2-legend{display:flex;gap:14px;flex-wrap:wrap;margin:10px 0 0;font-size:11.5px;color:var(--mut)}.p2-legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;vertical-align:-1px;border:1px solid var(--line)}
.p2-legend .ok{background:#dcf3e5}.p2-legend .miss{background:#fdf0ef}.p2-legend .planned{background:#e8f0fb}.p2-legend .pending{background:#fbf0de}
.p2-att select{min-width:130px}.p2-att input[type=text]{min-width:160px}
.p2-sign{display:none;grid-template-columns:1fr 1fr;gap:40px;margin-top:36px;text-align:center}.p2-sign div{padding-top:64px;border-top:0}.p2-sign b{display:block;border-top:1px solid #333;padding-top:6px;font-weight:600}
@media(max-width:700px){.p2-grid{grid-template-columns:repeat(6,1fr)}}
@media print{.p2-sign{display:grid}.p2-m{border-color:#999}.p2-att select,.p2-att input{border:0;background:none;padding:0}}

/* Audit SMK3: pil hasil penilaian tambahan (Minor, Kritikal, Belum dinilai) */
.ck-opt input:checked+span.warn{background:#c98324;border-color:#c98324;color:#fff}
.ck-opt input:checked+span.crit{background:#7f1d1d;border-color:#7f1d1d;color:#fff}
.ck-opt input:checked+span.nil{background:#fff;border-color:#8a9b97;color:#44605b;box-shadow:inset 0 0 0 1px #8a9b97}
.smk-el>summary{list-style:revert}
.kpi small.red{color:var(--red)}

/* HIRA: hierarki pengendalian per kelompok + panel risiko residual */
.grp-ctl-wrap{margin-top:12px;padding-top:10px;border-top:1px dashed var(--line)}
.grp-ctl-h{display:block;font-size:12.5px;font-weight:600;color:var(--teal-d);margin-bottom:8px}
.grp-ctl{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:10px}
.grp-ctl label,.grp-legacy{display:flex;flex-direction:column;gap:5px;font-size:12.5px;font-weight:500}
.grp-ctl label small,.grp-legacy small{display:block;font-weight:400;color:var(--mut);font-size:11.5px}
.grp-ctl label b{display:inline-flex;width:18px;height:18px;border-radius:50%;background:var(--teal);color:#fff;font-size:11px;align-items:center;justify-content:center;margin-right:4px}
.grp-ctl textarea,.grp-legacy textarea{resize:vertical;min-height:62px}
.grp-legacy{margin-top:10px;padding:8px 10px;border-radius:8px;background:#fff8e6;border:1px solid #f0d9a0}
.grp-tier{margin:0 0 4px}.grp-tier b{color:var(--teal-d)}
.hira-res{margin-top:22px;padding-top:18px;border-top:1px solid var(--line)}
.hira-res-grid{display:grid;grid-template-columns:repeat(2,minmax(0,220px)) 1fr;gap:12px;margin-top:12px;align-items:end}
.hira-res-grid label{display:flex;flex-direction:column;gap:6px;font-size:12.5px;font-weight:500}
.hira-res-out{font-weight:600;color:var(--teal-d);padding:10px 12px;background:#eef6f4;border-radius:8px;min-height:20px}
@media(max-width:760px){.hira-res-grid{grid-template-columns:1fr}}

/* pencarian: header global + filter dropdown pada daftar modul */
.top-search{position:relative;display:flex;align-items:center;flex:0 1 300px;margin:0 0 0 18px;padding:0}
.top-search svg{position:absolute;left:11px;top:0;bottom:0;margin:auto 0;width:15px;height:15px;color:var(--mut);pointer-events:none}
.top-search input{width:100%;height:36px;padding:0 12px 0 34px;margin:0}
.toolbar{flex-wrap:wrap;justify-content:flex-start}.toolbar .search{min-width:220px}.toolbar .flt{width:auto;max-width:200px;height:38px}.toolbar .muted{margin-left:auto}
@media (max-width:760px){.top-search{display:none}}

/* Pengganti gaya inline berwarna (agar ikut tema gelap) */
.fld-lock{background:#f3f4f6;cursor:not-allowed}
.pre-box{background:#f5f8f7;border-radius:8px;padding:10px;font-size:12px;overflow-x:auto;margin:0}
.txt-red{color:#a32a22}.txt-amber{color:#8a5a0b}.txt-orange{color:#b45309}
.vf-ico.green{--tone-l:#e6f3f1;--tone:#0f766e}.vf-ico.amber{--tone-l:#fbf0de;--tone:#b7791f}.vf-ico.red{--tone-l:#fde8e6;--tone:#dc2626}
