:root{--green:#087840;--dark:#092e20;--line:#dce7df;--muted:#718078}*{box-sizing:border-box}body{margin:0;background:#f3f6f3;color:#16231c;font-family:Arial,sans-serif}a{text-decoration:none}button,.homebuttons a{cursor:pointer}.brand{display:flex;align-items:center;gap:11px}.brand img,.formhead img,.login img,.landing img{width:54px;height:54px;border-radius:11px;object-fit:cover}.brand b,.brand small{display:block}.brand small{font-size:9px;color:#8eb7a3;margin-top:4px}aside{position:fixed;width:255px;inset:0 auto 0 0;background:var(--dark);color:#fff;padding:24px 16px}aside nav{display:grid;gap:7px;margin-top:30px}aside nav a{padding:14px;border-radius:10px;color:#aec9bc;font-size:13px}aside nav a:hover,aside nav .priority{background:#ffffff14;color:#fff}aside nav em{float:right;background:#efad39;color:#2c210b;border-radius:20px;padding:2px 7px;font-style:normal}.admin{margin-left:255px}.top{height:80px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 35px}.top h1{font-size:18px}.top span,.top a{font-size:11px;color:var(--muted)}.content{padding:30px 35px}.hero{padding:40px;border-radius:22px;background:linear-gradient(120deg,#0d7844,#06492e);color:#fff}.hero label{font-size:9px;letter-spacing:.15em;color:#a8e2c1}.hero h1{font:34px Georgia,serif}.hero em{color:#8ed6ae;font-style:normal}.hero a{display:inline-block;background:#fff;color:var(--green);padding:12px 16px;border-radius:9px;font-size:11px}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:15px;margin-top:18px}.stats article,.panel{background:#fff;border:1px solid var(--line);border-radius:15px;padding:22px}.stats b,.stats span{display:block}.stats b{font:28px Georgia,serif}.stats span{font-size:10px;color:var(--muted)}.landing{min-height:100vh;background:linear-gradient(135deg,#0c7845,#062f1e);display:grid;place-items:center;color:#fff;text-align:center;padding:25px}.landing section{max-width:650px}.landing img{width:115px;height:115px}.landing label{display:block;font-size:10px;letter-spacing:.2em;color:#9cdbb8;margin-top:25px}.landing h1{font:48px Georgia,serif;margin:12px}.landing p{color:#b8dbc8}.homebuttons{display:flex;justify-content:center;gap:10px;margin-top:30px;flex-wrap:wrap}.homebuttons a,button{border:0;background:var(--green);color:#fff;padding:13px 18px;border-radius:9px;font-weight:700;font-size:11px}.homebuttons a{background:#fff;color:var(--green)}.homebuttons .outline{background:transparent;color:#fff;border:1px solid #ffffff55}.login,.request{min-height:100vh;display:grid;place-items:center;padding:20px;background:linear-gradient(140deg,#e9f5ee,#f8faf8)}.login form,.request form{width:min(680px,100%);background:#fff;border:1px solid var(--line);border-radius:23px;padding:38px;display:grid;gap:9px;box-shadow:0 15px 50px #173d2818}.login form{max-width:420px}.login label,.formhead label{font-size:9px;letter-spacing:.16em;color:var(--green);font-weight:bold}.login h1,.formhead h1{font:29px Georgia,serif;margin:6px 0}.login span,.request form>span,.request label,.panel form>span{font-size:10px;font-weight:bold;margin-top:8px}input,select,textarea{width:100%;border:1px solid var(--line);border-radius:8px;padding:12px;font:12px Arial}textarea{min-height:90px}.login small{font-size:9px;color:var(--muted);text-align:center}.login a{font-size:10px;text-align:center;color:var(--green)}.formhead{display:flex;gap:15px;border-bottom:1px solid var(--line);padding:15px 0}.formhead p{font-size:10px;color:var(--muted)}.twocol{display:grid;grid-template-columns:1fr 1fr;gap:12px}.twocol label{display:grid;gap:7px}.scan header{height:95px;background:var(--dark);color:#fff;display:flex;align-items:center;padding:0 4vw}.scan header time{margin-left:auto;font-size:24px}.scan header>a{margin-left:25px;color:#bcd5c8;font-size:10px}.scan>section{max-width:1200px;margin:auto;padding:5vh 4vw;display:grid;grid-template-columns:1.2fr .8fr;gap:20px}.scanbox,.recent{background:#fff;border:1px solid var(--line);border-radius:22px;padding:35px}.scanbox label{font-size:9px;color:var(--green);letter-spacing:.16em;font-weight:bold}.scanbox h1{font:37px Georgia,serif}.scanbox p,.scanbox small{font-size:11px;color:var(--muted)}.scanbox form{display:flex;margin:30px 0}.scanbox input{height:55px;border-radius:10px 0 0 10px}.scanbox button{border-radius:0 10px 10px 0}.recent h2{font:22px Georgia,serif}.recent article{display:flex;align-items:center;gap:10px;padding:12px 0;border-top:1px solid #edf2ef}.recent i{width:36px;height:36px;border-radius:10px;background:#e8f7ee;color:var(--green);display:grid;place-items:center;font-style:normal}.recent article div{flex:1}.recent b,.recent small{display:block;font-size:10px}.recent small{font-size:8px;color:var(--muted)}.recent time{font-size:11px}.notice{position:fixed;right:20px;bottom:20px;background:var(--green);color:#fff;padding:14px 18px;border-radius:10px;z-index:5}.badge,.status{padding:5px 9px;border-radius:15px;background:#fff0d9;color:#a45d00}.approval{display:flex;justify-content:space-between;border:1px solid var(--line);border-radius:12px;padding:17px;margin:12px 0}.approval.waiting{border-left:4px solid #eea931;background:#fffcf7}.approval h3{margin:5px 0}.approval small{color:var(--muted)}.approval blockquote{margin:10px 0;padding:9px;background:#f3f6f4;border-left:2px solid #abc3b6;font-size:11px}.approval form{display:flex;gap:7px;align-items:center}.approval .reject{background:#fff;color:#b52c2c;border:1px solid #e5baba}.status.disetujui{background:#e7f7ed;color:var(--green)}.status.ditolak{background:#ffeded;color:#b52c2c}.addperson{display:grid;grid-template-columns:1fr 2fr 1fr 2fr auto;gap:8px;margin-bottom:20px}table{width:100%;border-collapse:collapse;font-size:11px}th,td{text-align:left;padding:11px;border-bottom:1px solid #e6ece8}.panel>form:not(.addperson){max-width:550px;display:grid;gap:9px}
@media(max-width:750px){aside{position:relative;width:100%;min-height:0}aside nav{grid-template-columns:1fr 1fr}.admin{margin:0}.top,.content{padding-left:15px;padding-right:15px}.stats{grid-template-columns:1fr 1fr}.scan>section{grid-template-columns:1fr}.scanbox,.recent{padding:22px}.scanbox h1{font-size:29px}.scan header time{font-size:17px}.scan header>a{font-size:0}.twocol,.addperson{grid-template-columns:1fr}.approval{display:block}.approval form{margin-top:12px}.panel{overflow-x:auto}}
.cardTools{display:flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--line);border-radius:14px;padding:15px;margin-bottom:20px}.cardTools>div{flex:1}.cardTools b,.cardTools small{display:block}.cardTools small{font-size:9px;color:var(--muted);margin-top:4px}.cardTools a{padding:9px 12px;border:1px solid var(--line);border-radius:8px;color:#53675c;font-size:10px}.cardTools a.selected{background:#e8f7ee;border-color:var(--green);color:var(--green);font-weight:bold}.printTitle{display:none}.idCards{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.identityCard{background:#fff;border:1px solid #cfddd4;border-radius:16px;padding:16px;box-shadow:0 8px 25px #173d2810;break-inside:avoid;position:relative}.identityCard>header{display:flex;align-items:center;gap:9px;border-bottom:2px solid var(--green);padding-bottom:10px}.identityCard>header img{width:39px;height:39px;border-radius:7px}.identityCard>header b,.identityCard>header small{display:block}.identityCard>header b{font:13px Georgia,serif}.identityCard>header small{font-size:7px;letter-spacing:.15em;color:var(--green);margin-top:3px}.identityCard>section{display:flex;align-items:center;gap:12px;padding:15px 0 10px}.identityCard .photo{width:52px;height:61px;border-radius:8px;background:#eaf0ec;color:#6d8277;display:grid;place-items:center;font-size:25px}.identityCard h2{font-size:12px;margin:0 0 5px}.identityCard p,.identityCard section small{font-size:8px;color:var(--muted);margin:0 0 4px}.identityCard footer{text-align:center}.barcodeSvg{width:100%;height:54px;fill:#111;display:block}.identityCard footer code{font-size:8px;letter-spacing:.13em}.printOne{width:100%;margin-top:12px;background:#eef7f2;color:var(--green)}@media(max-width:1050px){.idCards{grid-template-columns:1fr 1fr}}@media(max-width:650px){.idCards{grid-template-columns:1fr}.cardTools{align-items:stretch;flex-wrap:wrap}.cardTools>div{width:100%;flex-basis:100%}}
@media print{@page{size:A4;margin:10mm}body{background:#fff}.printHide,aside,.notice{display:none!important}.admin{margin:0}.cardsPage{padding:0}.printTitle{display:flex;align-items:center;gap:10px;border-bottom:2px solid #087840;margin-bottom:8mm;padding-bottom:3mm}.printTitle img{width:45px;height:45px}.printTitle h1{font-size:15px;margin:0}.printTitle p{font-size:9px;margin:3px 0}.idCards{grid-template-columns:repeat(2,1fr);gap:7mm}.identityCard{box-shadow:none;border:1px solid #777;border-radius:8px;padding:4mm;page-break-inside:avoid}.identityCard.dontPrint{display:none}.identityCard h2{font-size:10pt}.barcodeSvg{height:13mm}}
.photoForm{grid-template-columns:1fr 1.5fr .8fr 1.2fr 2fr 1.4fr auto}.photoForm textarea{min-height:43px}.uploadLabel{font-size:9px;color:var(--muted)}.uploadLabel input{padding:7px;margin-top:3px}.tablePhoto,.noPhoto{width:42px;height:48px;border-radius:7px;object-fit:cover;background:#edf2ef;display:grid;place-items:center}.actualPhoto{object-fit:cover}.identityCard section>div:last-child{min-width:0}.identityCard section small{display:block;max-width:190px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.settingsPanel form{max-width:650px!important}.currentLogo{display:flex;align-items:center;gap:14px;background:#f1f6f3;border-radius:12px;padding:13px;margin-bottom:9px}.currentLogo img{width:75px;height:75px;border-radius:12px;object-fit:cover}.currentLogo b,.currentLogo small{display:block}.currentLogo small{font-size:9px;color:var(--muted);margin-top:4px}@media(max-width:950px){.photoForm{grid-template-columns:1fr 1fr}}@media(max-width:600px){.photoForm{grid-template-columns:1fr}}
.quickEdit{display:grid;gap:4px;min-width:170px}.quickEdit input{padding:6px;font-size:9px}.quickEdit button{padding:7px;font-size:9px}
.qrSvg{width:92px;height:92px;display:block;margin:0 auto}.identityCard footer code{display:block}.importPanel{display:flex;align-items:center;gap:15px;margin-bottom:18px}.importPanel>p{font-size:10px;color:var(--muted)}.importPanel>a,.actionLink{background:#e8f7ee;color:var(--green);padding:10px 13px;border-radius:8px;font-size:10px;font-weight:bold}.importPanel form{display:flex;gap:7px;margin-left:auto}.peopleGrid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin-top:20px}.personEditor{display:grid;grid-template-columns:55px 1fr 1fr;gap:7px;border:1px solid var(--line);border-radius:12px;padding:12px}.personEditor>img,.personEditor>.noPhoto{width:55px;height:65px;grid-row:1/4;object-fit:cover}.personEditor textarea{min-height:42px}.personEditor>div{grid-column:2/4;display:flex;gap:6px}.danger{background:#fff0f0!important;color:#b42c2c!important;border:1px solid #e7bcbc!important}.statusCard{width:min(680px,100%);background:#fff;padding:35px;border-radius:22px}.statusCard>form{display:flex;gap:8px;margin:20px 0}.statusItem{display:flex;justify-content:space-between;align-items:center;border:1px solid var(--line);border-radius:11px;padding:14px;margin-top:9px}.statusItem b,.statusItem span{display:block}.statusItem span,.statusItem p{font-size:9px;color:var(--muted)}.statusItem strong{padding:7px 10px;border-radius:15px;font-size:9px}.statusItem .menunggu{background:#fff0d9;color:#a45c00}.statusItem .disetujui{background:#e8f7ee;color:var(--green)}.statusItem .ditolak{background:#ffeded;color:#b42c2c}.twoPanels{display:grid;grid-template-columns:1fr 1fr;gap:18px}.twoPanels .panel form{display:grid;gap:8px}.userList{grid-column:1/-1}.userList article{display:flex;align-items:center;padding:12px 0;border-top:1px solid var(--line)}.userList article>div{flex:1}.userList b,.userList small{display:block}.userList small{font-size:9px;color:var(--muted);margin-top:3px}.printReportHead{display:none}.reportFilter form{display:flex;gap:8px}.reportPage table{font-size:10px}
@media(max-width:800px){.importPanel{display:block}.importPanel form{margin-top:10px}.peopleGrid,.twoPanels{grid-template-columns:1fr}.personEditor{grid-template-columns:50px 1fr}.personEditor>div{grid-column:1/-1}.statusCard{padding:22px}}
@media print{.printReportHead{display:flex;align-items:center;gap:12px;border-bottom:2px solid #087840;padding-bottom:10px;margin-bottom:15px}.printReportHead img{width:60px;height:60px;object-fit:cover}.printReportHead h1{font-size:16px;margin:0}.printReportHead p,.printReportHead span{font-size:9px}.reportPage{padding:0}.reportPage .panel{border:0;box-shadow:none;padding:0}.qrSvg{width:24mm;height:24mm}.identityCard footer{display:flex;align-items:center;gap:3mm}.identityCard footer code{font-size:7pt}}
.cameraWrap{position:relative;width:100%;aspect-ratio:16/10;background:#071b12;border-radius:16px;overflow:hidden;margin-top:22px}.cameraWrap video{width:100%;height:100%;object-fit:cover}.scanFrame{position:absolute;inset:18%;border:3px solid #36dc85;border-radius:14px;box-shadow:0 0 0 999px #00150b77}.scanFrame:before,.scanFrame:after,.scanFrame span:before,.scanFrame span:after{content:"";position:absolute;width:34px;height:34px;border-color:#fff}.scanFrame:before{left:-3px;top:-3px;border-left:5px solid;border-top:5px solid}.scanFrame:after{right:-3px;top:-3px;border-right:5px solid;border-top:5px solid}.scanFrame span:before{left:-3px;bottom:-3px;border-left:5px solid;border-bottom:5px solid}.scanFrame span:after{right:-3px;bottom:-3px;border-right:5px solid;border-bottom:5px solid}#cameraMessage{position:absolute;left:0;right:0;bottom:15px;text-align:center;color:#fff;font-size:11px;font-weight:bold;text-shadow:0 2px 5px #000}.cameraControls{display:grid;grid-template-columns:1.2fr 1fr auto;gap:8px;margin-top:12px}.cameraControls select{background:#fff}.cameraControls .stopCamera{background:#fff;color:#b32d2d;border:1px solid #e7bebe}.cameraWrap.detected{outline:5px solid #29c875}.cameraWrap.detected #cameraMessage{background:#078449;padding:8px;bottom:0}@media(max-width:750px){.cameraControls{grid-template-columns:1fr}.cameraWrap{aspect-ratio:3/4}.scanbox form{display:grid}.scanbox input,.scanbox button{border-radius:10px;margin-top:7px}}
