:root{--green:#087f62;--deep:#054f3e;--bg:#f4f8f5;--card:#fff;--ink:#15382e;--muted:#667d73;--line:#dfe9e2;--soft:#e5f3ec;--red:#b42335;--amber:#9c6515;--shadow:0 8px 32px #143b2410;color-scheme:light}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.6 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}body.dark{--bg:#101f19;--card:#182d23;--ink:#edf5ef;--muted:#a6bdb0;--line:#30493a;--soft:#244a38;--green:#43c49b;--deep:#143f2c;--red:#ff9ea8;--amber:#e8c077;color-scheme:dark}button,input,select,textarea{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer;border:1px solid var(--line);border-radius:12px;padding:11px 17px;background:var(--card);color:var(--ink);font-weight:650}button:disabled{opacity:.55;cursor:default}button:hover:not(:disabled){border-color:var(--green)}button.primary{background:var(--green);color:#fff;border-color:var(--green)}body.dark button.primary{color:#06271b}button.danger{color:var(--red)}button.small{padding:7px 11px;font-size:13px}a{color:var(--green)}input,select,textarea{width:100%;border:1px solid var(--line);border-radius:10px;background:var(--card);color:var(--ink);padding:11px 13px}input[type=checkbox]{width:18px;height:18px;accent-color:var(--green)}label{display:block;font-size:13px;font-weight:650;margin:13px 0 5px}textarea{resize:vertical;min-height:95px}h1,h2,h3,p{margin-top:0}h1{font-size:29px;line-height:1.2;letter-spacing:-.6px}h2{font-size:22px;line-height:1.35;margin-bottom:10px}h3{font-size:17px;margin-bottom:8px}.muted{color:var(--muted)}.small{font-size:13px}.eyebrow{font-size:11px;letter-spacing:1.6px;text-transform:uppercase;font-weight:750}.shell{max-width:1120px;margin:auto;padding:0 24px 100px}.header{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:24px 0}.brand{display:flex;align-items:center;gap:12px}.brand img{width:46px;height:46px;object-fit:contain;border-radius:12px;background:white}.brand strong{display:block;font-size:16px}.brand span{color:var(--muted);font-size:12px}.actions{display:flex;gap:9px;align-items:center;flex-wrap:wrap}.hero{position:relative;background:linear-gradient(120deg,#054f3e,#0d8264);color:white;border-radius:24px;padding:32px;margin:4px 0 22px;overflow:hidden}.hero:after{content:"";position:absolute;width:250px;height:250px;border:40px solid #ffffff09;border-radius:50%;right:-60px;top:-100px;pointer-events:none}.hero p{color:#d3eee1;margin-bottom:5px}.hero h1{margin-bottom:13px;position:relative;z-index:1}.hero .eyebrow{color:#b8dfcd}.hero .hero-date{font-size:13px;opacity:.9}.nav{display:flex;gap:8px;margin:0 0 24px;flex-wrap:wrap}.nav button{border:0;background:transparent;color:var(--muted);font-size:14px}.nav button.active{background:var(--soft);color:var(--green)}.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.card{background:var(--card);border:1px solid var(--line);border-radius:20px;padding:22px;box-shadow:var(--shadow);margin-bottom:17px;min-width:0}.grid .card{margin-bottom:0}.child-head{display:flex;align-items:center;gap:12px;margin-bottom:18px}.avatar{width:48px;height:48px;border-radius:14px;background:var(--soft);color:var(--green);display:grid;place-items:center;font-weight:800;font-size:18px;flex-shrink:0}.child-head h2{font-size:19px;margin:0}.stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:16px 0}.stat{background:var(--bg);border-radius:12px;padding:12px;min-width:0}.stat span{display:block;font-size:11px;color:var(--muted)}.stat strong{font-size:14px;overflow-wrap:anywhere}.badge{display:inline-block;border-radius:7px;background:var(--soft);color:var(--green);padding:3px 8px;font-size:11px;font-weight:700}.badge.pending{color:var(--amber);background:#d6a34315}.badge.bad{color:var(--red);background:#e94d6115}.notice{border-left:3px solid var(--green);background:var(--soft);padding:13px 16px;border-radius:0 10px 10px 0;margin:15px 0;font-size:13px}.notice.warn{border-color:var(--amber);background:#d6a34310}.row{display:flex;justify-content:space-between;align-items:center;gap:15px;border-bottom:1px solid var(--line);padding:13px 0}.row:last-child{border-bottom:0}.row p{margin:3px 0 0;font-size:13px;color:var(--muted)}.row strong,.break{overflow-wrap:anywhere}.row-end{text-align:right;flex-shrink:0}.section-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:20px 0 16px}.section-head h2{margin:0}.empty{text-align:center;color:var(--muted);padding:25px 15px}.loading{text-align:center;padding:50px;color:var(--muted)}.login{max-width:430px;margin:8vh auto 30px;padding:0 20px}.login .card{padding:32px}.login .logo{width:68px;height:68px;object-fit:contain;background:white;border-radius:14px;margin-bottom:18px}.login h1{font-size:28px}.login button.primary{width:100%;margin-top:22px}.check{display:flex;align-items:center;gap:9px;font-size:13px;line-height:1.45}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.form-grid label{margin-top:6px}.backdrop{position:fixed;inset:0;background:#062219aa;display:flex;align-items:center;justify-content:center;padding:18px;z-index:20;overflow:auto}.dialog{background:var(--card);border:1px solid var(--line);border-radius:22px;max-width:530px;width:100%;padding:25px;max-height:92vh;overflow:auto}.dialog .close{float:right;padding:4px 12px}.qr{display:block;width:min(100%,260px);height:auto;margin:16px auto;background:white;border-radius:8px}.total{background:var(--soft);padding:14px;border-radius:12px;text-align:center}.total span{display:block;font-size:12px;color:var(--muted)}.total strong{font-size:27px;color:var(--green)}.calendar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px;margin:18px 0}.calendar div{text-align:center;border-radius:9px;padding:9px 0;background:var(--bg);font-size:12px}.calendar .HADIR{background:var(--soft);color:var(--green)}.calendar .SAKIT,.calendar .IZIN{background:#d6a34318;color:var(--amber)}.calendar .ALPHA{background:#e94d6118;color:var(--red)}.calendar .outside{background:transparent}.calendar b{display:block;font-size:9px}.invoice-check{display:flex;align-items:center;gap:10px}.invoice-check input{flex-shrink:0}.body-text{white-space:pre-wrap;overflow-wrap:anywhere}.footer{text-align:center;font-size:11px;color:var(--muted);padding-top:25px}#toast{position:fixed;bottom:90px;left:50%;transform:translateX(-50%);background:var(--ink);color:var(--card);padding:12px 18px;border-radius:13px;max-width:92vw;z-index:100;display:none}.tab-content{min-height:220px}.receipt{color:#152c22;background:white;max-width:650px;margin:auto;padding:35px}.receipt .row{border-color:#ddd}.print-only{display:none}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #d9b65c;outline-offset:3px}
@media(max-width:680px){.shell{padding:0 16px 105px}.header{padding:17px 0}.brand strong{font-size:14px}.header .actions button{padding:7px 10px;font-size:12px}.hero{padding:24px 21px;border-radius:20px}.hero h1{font-size:25px}.grid{grid-template-columns:1fr;gap:15px}.card{padding:19px;border-radius:17px}.nav{position:fixed;bottom:0;left:0;right:0;background:var(--card);border-top:1px solid var(--line);display:grid;grid-template-columns:repeat(5,1fr);gap:0;margin:0;padding:10px 5px calc(10px + env(safe-area-inset-bottom));z-index:10}.nav button{font-size:11px;padding:10px 2px;border-radius:9px;white-space:nowrap}.stats{gap:6px}.stat{padding:10px}.stat strong{font-size:12px}.form-grid{grid-template-columns:1fr}.row{gap:9px}.row-end{max-width:45%}.dialog{padding:21px}.calendar div{padding:8px 0;font-size:11px}.section-head h2{font-size:20px}.login{margin-top:5vh}.footer{font-size:10px}}
@media print{body{background:white}.header,.nav,.hero,.footer,#toast,.backdrop .close,.no-print{display:none!important}.shell{max-width:none;padding:0}.dialog{max-height:none;border:0;box-shadow:none;padding:0}.backdrop{position:static;background:none;padding:0}.receipt{padding:15px}.print-only{display:block}}

@media print{body:has(.receipt) #app{display:none!important}body:has(.receipt) .backdrop{position:static!important;background:white!important;padding:0!important}.dialog:has(.receipt){width:100%!important;max-width:none!important;box-shadow:none!important;border:0!important}.backdrop .close{display:none!important}}
