:root{--ink:#17312f;--muted:#6b7f7d;--green:#0f766e;--green2:#14b8a6;--pale:#e9f7f4;--red:#dc4c4c;--yellow:#d99b22;--line:#dce8e5;--bg:#f5f8f7;--white:#fff;--shadow:0 12px 35px rgba(18,66,61,.1);font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;color:var(--ink)}
*{box-sizing:border-box}html,body{max-width:100%;overflow-x:hidden}body{margin:0;background:var(--bg)}button,input,select,textarea{font:inherit;max-width:100%;min-width:0}button,.button{cursor:pointer}.hidden{display:none!important}.login-shell{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at 90% 10%,#bde9df,transparent 35%),var(--bg)}.login-card{width:min(440px,100%);background:#fff;padding:38px;border-radius:28px;box-shadow:var(--shadow)}.brand-mark{width:52px;height:52px;border-radius:16px;background:var(--green);color:#fff;display:grid;place-items:center;font-weight:800}.eyebrow{font-size:.72rem;font-weight:800;letter-spacing:.14em;color:var(--green);margin:16px 0 7px}.login-card h1{font-size:2rem;line-height:1.08;margin:0 0 12px}.muted{color:var(--muted);margin:4px 0}label{display:grid;gap:7px;margin:16px 0;font-size:.84rem;font-weight:700;min-width:0}input,select,textarea{width:100%;border:1px solid var(--line);border-radius:12px;padding:13px;background:#fff;color:var(--ink)}textarea{min-height:90px;resize:vertical}.primary,.secondary,.button{border:0;border-radius:12px;padding:13px 18px;font-weight:800;text-decoration:none;text-align:center}.primary{background:var(--green);color:#fff}.secondary{background:var(--pale);color:var(--green)}.full{width:100%}details{margin-top:20px;color:var(--muted);line-height:1.7}header{height:68px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 max(20px,calc((100% - 1040px)/2));position:sticky;top:0;z-index:5}.logo{font-size:1.25rem;font-weight:900;color:var(--ink);text-decoration:none}.logo span{color:var(--green)}.header-actions{display:flex;gap:8px}.header-actions select{padding:8px;width:190px}.icon-btn{border:0;background:var(--pale);width:40px;height:40px;border-radius:12px;color:var(--green);font-size:1.2rem;flex:0 0 40px}.tabs{display:flex;justify-content:center;gap:8px;padding:14px;background:#fff;border-bottom:1px solid var(--line);position:sticky;top:68px;z-index:4}.tabs button{border:0;background:transparent;padding:9px 18px;color:var(--muted);font-weight:700;border-radius:10px}.tabs button.active{background:var(--pale);color:var(--green)}.page{width:min(920px,100%);margin:auto;padding:28px 20px 80px}.welcome,.section-title,.status-top,.dialog-head{display:flex;justify-content:space-between;align-items:center;min-width:0}.dialog-head>div{min-width:0}.welcome h2,.section-title h2,.dialog-head h2{margin:0;overflow-wrap:anywhere}.badge{background:var(--pale);color:var(--green);padding:7px 11px;border-radius:20px;font-size:.72rem;font-weight:800}.status-card{background:#fff;border-radius:24px;padding:24px;margin:22px 0;box-shadow:var(--shadow);text-align:center}.status-top{text-align:left}.status-top h3{margin:3px 0}.status-dot{width:12px;height:12px;border-radius:50%;background:#b6c4c2}.status-dot.live{background:var(--green2);box-shadow:0 0 0 6px #d7f5ef}.timer{font-size:clamp(2.8rem,12vw,4.5rem);font-variant-numeric:tabular-nums;font-weight:800;letter-spacing:-.06em;margin:26px 0 6px}.center{text-align:center}.clock-button{margin:25px auto 8px;width:170px;height:170px;border-radius:50%;border:9px solid #d6f4ee;background:linear-gradient(145deg,var(--green2),var(--green));color:#fff;display:flex;flex-direction:column;gap:6px;align-items:center;justify-content:center;box-shadow:0 12px 25px rgba(15,118,110,.25)}.clock-button.out{background:linear-gradient(145deg,#e96d6d,#bf3434);border-color:#fae0e0}.clock-button span{font-size:1.7rem}.clock-button strong{font-size:1.1rem}.break-actions{display:flex;justify-content:center;gap:10px}.break-actions button,#correctionBtn{border:1px solid var(--line);background:#fff;border-radius:10px;padding:10px 14px;color:var(--ink)}.notice{padding:14px;background:#fff9e7;border:1px solid #f5e3a9;color:#715b1d;border-radius:13px;font-size:.84rem;overflow-wrap:anywhere}.list{display:grid;gap:10px;min-width:0}.list-item{background:#fff;border:1px solid var(--line);padding:15px;border-radius:15px;display:flex;align-items:center;justify-content:space-between;gap:12px;min-width:0}.list-item>div{min-width:0}.list-item strong{display:block;overflow-wrap:anywhere}.list-item small{color:var(--muted);overflow-wrap:anywhere}.pill{font-size:.69rem;font-weight:800;padding:5px 8px;border-radius:20px;background:var(--pale);color:var(--green)}.pill.OUTSIDE,.pill.REJECTED{background:#fde8e8;color:var(--red)}.pill.PENDING,.pill.LOW_ACCURACY{background:#fff3cf;color:#976900}.empty{padding:24px;text-align:center;color:var(--muted);background:#fff;border:1px dashed var(--line);border-radius:15px}.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:22px 0}.stat{padding:17px;background:#fff;border:1px solid var(--line);border-radius:15px}.stat strong{font-size:1.8rem;display:block}.stat small{color:var(--muted)}dialog{border:0;border-radius:24px;padding:0;width:min(540px,calc(100vw - 24px));max-width:calc(100vw - 24px);max-height:calc(100dvh - 24px);overflow:hidden;box-shadow:0 30px 90px #062e2866}dialog::backdrop{background:#0c2522a8;backdrop-filter:blur(3px)}.dialog-card{padding:25px;width:100%;max-width:100%;max-height:calc(100dvh - 24px);overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}.dialog-head .eyebrow{margin:0 0 4px}.gps-box,.gps-result{display:flex;gap:12px;align-items:center;padding:14px;border-radius:13px;background:var(--bg);border:1px solid var(--line);margin:16px 0}.gps-box span{font-size:1.8rem;color:var(--green)}.gps-box small{display:block;color:var(--muted)}.gps-result.good{background:#e8f8f2;border-color:#9edcc9}.gps-result.bad{background:#fff2dc;border-color:#efcb84}.error-text{color:var(--red);font-size:.82rem;line-height:1.45;overflow-wrap:anywhere}.toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,150%);background:var(--ink);color:#fff;padding:13px 18px;border-radius:12px;z-index:20;transition:.25s;max-width:90%;box-shadow:var(--shadow)}.toast.show{transform:translate(-50%,0)}
@media(max-width:680px){header{padding:0 14px}.header-actions select{width:135px}.tabs{justify-content:space-around}.tabs button{padding:9px 11px}.page{padding:20px 14px 90px}.stat-grid{grid-template-columns:repeat(2,1fr)}.status-card{padding:19px}.clock-button{width:155px;height:155px}.section-title{align-items:flex-start;gap:10px}.section-title .button{padding:10px;font-size:.78rem}}
.manual-label{display:block;color:var(--muted);margin:-2px 0 14px}.admin-grid{display:grid;grid-template-columns:1.35fr 1fr;gap:22px;margin-top:28px}.admin-grid section{min-width:0}.check-label{display:flex;align-items:center;gap:9px}.check-label input{width:auto}.correction-actions{display:flex;gap:6px;flex-wrap:wrap}.correction-actions button{border:0;border-radius:8px;padding:7px 10px;font-size:.75rem;font-weight:800}.approve{background:var(--pale);color:var(--green)}.reject{background:#fde8e8;color:var(--red)}
@media(max-width:680px){.admin-grid{grid-template-columns:1fr}}
@media print{header,.tabs,button,.notice{display:none!important}.page{width:100%;padding:0}.stat,.list-item{break-inside:avoid}}
.tabs{justify-content:flex-start;overflow-x:auto;scrollbar-width:thin;padding-left:max(14px,calc((100% - 1100px)/2));padding-right:max(14px,calc((100% - 1100px)/2))}
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 15px;min-width:0}.form-grid>*{min-width:0}.wide-dialog{width:min(760px,calc(100vw - 24px))}.admin-row{align-items:flex-start}.admin-row .meta{display:flex;gap:7px;flex-wrap:wrap;margin-top:5px}.row-actions{display:flex;gap:7px;flex-shrink:0}.row-actions button{border:1px solid var(--line);background:#fff;border-radius:9px;padding:8px 10px}.row-actions .danger-button{border-color:#fecaca;background:#fff1f2;color:#b91c1c}.row-actions .danger-button:hover{background:#ffe4e6;border-color:#fda4af}.report-card{display:flex;gap:12px;align-items:end;flex-wrap:wrap;background:#fff;padding:20px;border-radius:16px;border:1px solid var(--line)}.report-card label{margin:0;min-width:min(180px,100%)}.member-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;min-width:0}.member-option{display:flex;align-items:center;gap:8px;padding:8px;background:var(--bg);border-radius:9px;min-width:0;overflow-wrap:anywhere}.member-option input{width:auto;flex:0 0 auto}fieldset{min-width:0;border:1px solid var(--line);border-radius:12px;margin:15px 0;padding:12px}legend{font-size:.85rem;font-weight:800}.inactive{opacity:.6}
@media(max-width:680px){.tabs{justify-content:flex-start}}
@media(max-width:560px){.form-grid,.member-grid{grid-template-columns:1fr}.list-item.admin-row{align-items:flex-start;flex-direction:column}.row-actions{width:100%}.row-actions button{flex:1}}
.map-canvas{width:100%;height:320px;border:1px solid var(--line);border-radius:14px;background:linear-gradient(135deg,#edf3f2,#dfe9e7);margin:12px 0;overflow:hidden}.compact-map{height:220px}.autocomplete-host{min-height:48px}.map-canvas:empty::after{content:"Peta OpenStreetMap tidak tersedia — gunakan koordinat manual";display:grid;place-items:center;height:100%;padding:20px;text-align:center;color:var(--muted);font-size:.85rem}.address-search{display:grid;grid-template-columns:1fr auto;gap:8px}.address-results{display:grid;gap:5px;margin-top:6px}.address-results button{text-align:left;background:#fff;border:1px solid var(--line);color:var(--ink);padding:9px 11px}.leaflet-pin{display:block;width:22px;height:22px;border:3px solid #fff;border-radius:50% 50% 50% 0;box-shadow:0 2px 6px #0005;transform:rotate(-45deg)}.work-pin{background:#0f766e}.staff-pin{background:#2563eb}.waze-link{display:inline-flex;margin:0 0 12px;background:#1f2937;color:#fff}.leaflet-control-layers-expanded{font-family:inherit}
.staff-modal{width:min(780px,calc(100% - 24px));max-height:92vh}.staff-form-dialog{width:100%;max-height:92vh;overflow:auto;padding:0}.sticky-dialog-head{position:sticky;top:0;background:#fff;padding:24px 26px 18px;border-bottom:1px solid var(--line);z-index:3}.sticky-dialog-head .eyebrow{margin-top:0}.sticky-dialog-head .muted{font-size:.84rem;margin-top:6px}.form-section{margin:18px 26px;padding:18px 20px;border:1px solid var(--line);border-radius:16px;background:#fbfdfc}.form-section h3{margin:0 0 4px;font-size:.92rem;color:var(--green)}.form-section label{margin:13px 0}.required{color:var(--red)}.status-toggle{display:flex;align-items:center;gap:12px;padding:13px 14px;background:var(--pale);border-radius:12px}.status-toggle input{width:19px;height:19px}.status-toggle span{display:grid;gap:2px}.status-toggle small{color:var(--muted);font-weight:500}.dialog-footer{position:sticky;bottom:0;display:flex;justify-content:flex-end;gap:10px;padding:16px 26px;background:#fff;border-top:1px solid var(--line);z-index:3}.dialog-footer button{min-width:130px}.staff-form-dialog>.error-text{padding:0 26px}
.project-modal{width:min(780px,calc(100% - 24px));max-height:92vh}.project-form-dialog{width:100%;max-height:92vh;overflow:auto;padding:0}.project-form-dialog>.error-text{padding:0 26px}.form-help{font-size:.82rem;margin:7px 0 12px}.project-form-dialog fieldset{margin:8px 0 0;background:#fff}
.file-help{color:var(--muted);font-weight:500}.attachment-link{display:inline-flex;margin-top:7px;color:var(--green);font-size:.8rem;font-weight:800;text-decoration:none}.attachment-link:hover{text-decoration:underline}
@media(max-width:560px){dialog,.staff-modal,.project-modal{width:calc(100% - 12px);max-width:calc(100% - 12px);max-height:calc(100dvh - 12px);margin-inline:auto;border-radius:18px}.dialog-card,.staff-form-dialog,.project-form-dialog{max-height:calc(100dvh - 12px);padding:18px}.staff-form-dialog,.project-form-dialog{padding:0}.sticky-dialog-head{padding:18px}.form-section{margin:12px 12px;padding:14px}.dialog-footer{padding:12px;flex-wrap:wrap}.dialog-footer button{min-width:0;flex:1}.map-canvas{height:240px}.address-search{grid-template-columns:1fr}.address-search button{width:100%}}
button.stat{width:100%;text-align:left;color:var(--ink);transition:transform .15s,border-color .15s,box-shadow .15s}button.stat:hover{transform:translateY(-2px);border-color:#91c9c1;box-shadow:0 8px 20px rgba(15,118,110,.1)}button.stat:focus-visible{outline:3px solid #99d7ce;outline-offset:2px}.stat-hint{display:block;margin-top:8px!important;color:var(--green)!important;font-weight:700}.detail-modal{width:min(700px,calc(100% - 24px));max-height:88vh}.detail-modal>.dialog-card{max-height:88vh;overflow:auto}.detail-list{margin-top:18px}.static-footer{position:static;padding:16px 0 0;margin-top:16px}.detail-icon{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;background:var(--pale);color:var(--green);font-weight:900;flex-shrink:0}
.tabs{align-items:stretch;gap:6px;padding-top:10px;padding-bottom:10px}.tabs button{display:flex;align-items:center;justify-content:center;min-height:54px;padding-top:10px;padding-bottom:10px;line-height:1.25;border-radius:12px}.tabs button.active{box-shadow:inset 0 0 0 1px rgba(15,118,110,.06)}.tabs button:focus-visible{outline:3px solid #99d7ce;outline-offset:2px}
.home-leave-card{margin:22px 0;background:#fff;border:1px solid var(--line);border-radius:20px;padding:20px;box-shadow:var(--shadow)}.home-leave-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:15px}.home-leave-head .eyebrow{margin:0 0 4px}.home-leave-head h3{margin:0}.leave-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.leave-summary-item{display:flex;gap:10px;align-items:center;padding:14px;border-radius:14px;background:var(--bg);min-width:0}.leave-summary-item.remaining{background:linear-gradient(145deg,#eaf8f5,#f7fcfb)}.leave-summary-icon{width:34px;height:34px;display:grid;place-items:center;flex:0 0 34px;border-radius:10px;background:#fff;color:var(--green);font-weight:900}.leave-summary-item div{display:grid;min-width:0}.leave-summary-item small{color:var(--muted);font-weight:700;overflow-wrap:anywhere}.leave-summary-item strong{font-size:1.15rem;color:var(--ink)}.leave-summary-item span:not(.leave-summary-icon){font-size:.7rem;color:var(--muted)}.leave-pending{grid-column:1/-1;margin:2px 0 0;padding:10px 12px;border-radius:10px;background:#fff7df;color:#806018;font-size:.8rem;font-weight:700}
.compact-title{margin:0 0 10px}.compact-title h3{margin:0}.claim-items{display:grid;gap:12px}.claim-item{border:1px solid var(--line);border-radius:14px;padding:15px;background:#fbfdfc}.claim-item .icon-btn{width:32px;height:32px;font-size:1rem}
@media(max-width:760px){.leave-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:420px){.leave-summary-grid{grid-template-columns:1fr}}
.login-card{position:relative}.login-card>.language-switcher{position:absolute;top:20px;right:20px}.language-switcher{width:auto!important;min-width:118px;padding:8px 10px!important}.header-actions .language-switcher{width:132px}
@media(max-width:560px){.login-card{padding-top:82px}.login-card>.language-switcher{top:18px;right:18px}.header-actions .language-switcher{width:92px;min-width:92px}.header-actions{max-width:72%}}
.map-canvas:empty::after{content:"OpenStreetMap is unavailable — use manual coordinates"}html[lang="ms"] .map-canvas:empty::after{content:"Peta OpenStreetMap tidak tersedia — gunakan koordinat manual"}
.section-actions{display:flex;align-items:center;gap:8px}.section-actions select{width:auto;min-width:170px;padding:11px}
@media(max-width:560px){.section-title{flex-direction:column}.section-actions{width:100%;flex-wrap:wrap}.section-actions select,.section-actions button{flex:1;min-width:140px}}
.module-hero{position:relative;overflow:hidden;padding:24px;border:1px solid #cce7e1;border-radius:22px;background:linear-gradient(135deg,#fff 0%,#ecf9f6 100%);box-shadow:0 10px 28px rgba(15,118,110,.08);margin-bottom:18px}.module-hero::after{content:"";position:absolute;width:180px;height:180px;border-radius:50%;right:-70px;top:-100px;background:rgba(20,184,166,.09);pointer-events:none}.claim-hero{background:linear-gradient(135deg,#fff 0%,#f0f7ff 100%);border-color:#d7e5f5}.claim-hero::after{background:rgba(37,99,235,.07)}.module-title{display:flex;align-items:center;gap:15px;min-width:0}.module-icon{width:54px;height:54px;display:grid;place-items:center;flex:0 0 54px;border-radius:17px;background:var(--green);color:#fff;font-size:1.25rem;font-weight:900;box-shadow:0 8px 18px rgba(15,118,110,.22)}.claim-hero .module-icon{background:#2563eb;box-shadow:0 8px 18px rgba(37,99,235,.2)}.module-hero .eyebrow{margin:0 0 4px}.module-subtitle{margin:6px 0 0;color:var(--muted);font-size:.86rem}.module-hero .section-actions{position:relative;z-index:1}
@media(max-width:680px){.module-hero{padding:18px}.module-title{align-items:flex-start}.module-icon{width:46px;height:46px;flex-basis:46px;border-radius:14px}.module-subtitle{font-size:.8rem}}
.salary-card{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:19px 22px;margin:0 0 18px;background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:0 8px 22px rgba(18,66,61,.06)}.salary-card h3,.salary-card .eyebrow{margin:0}.salary-form{display:flex;align-items:end;gap:9px}.salary-form label{margin:0;min-width:190px}.salary-form button{white-space:nowrap}.salary-card .pill{display:inline-flex;margin-top:7px}
@media(max-width:680px){.salary-card,.salary-form{align-items:stretch;flex-direction:column}.salary-form label{min-width:0}.salary-form button{width:100%}}
