:root{--navy: #123f58;--blue: #12658a;--light-blue: #dceaf2;--sky: #9fd0e8;--input: #fff0b8;--input-border: #c9b25a;--ok: #1f7a45;--ok-bg: #e6f4ea;--bad: #c02e24;--bad-bg: #fdeae8;--warn: #b88600;--warn-bg: #fff6d6;--slate: #54626e;--muted: #e4e8ec;--grid: #d6dee5;--border: #9fb0bd;--bg: #f7fafc;--panel: #e8f0f5;--ink: #19232a;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--ink);background:var(--bg);-webkit-text-size-adjust:100%}*{box-sizing:border-box}body{margin:0;background:var(--bg)}button{font:inherit;cursor:pointer}input,select,textarea{font:inherit}.app-title{font-weight:800;color:var(--navy);text-align:center;margin-top:30vh}.loading,.empty-state{padding:40px 16px;text-align:center;color:var(--slate)}.muted{color:var(--slate)}.hint{font-size:12px;color:var(--slate);padding:4px 12px}.error{color:var(--bad);font-weight:600}.app-header{position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:10px;background:var(--navy);color:#fff;padding:10px 12px;padding-top:max(10px,env(safe-area-inset-top))}.app-header .logo{width:36px;height:36px;border-radius:50%;background:#fff;padding:3px}.app-header .titles{display:flex;flex-direction:column;min-width:0;flex:1}.app-header .titles b{font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.app-header .titles small{font-size:11px;color:var(--sky)}.sync{border:0;border-radius:12px;padding:4px 9px;font-size:11px;color:#fff;background:#ffffff24;white-space:nowrap}.sync .dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:5px;vertical-align:middle}.sync-synced .dot{background:#3ccf7a}.sync-pending .dot{background:#f2c94c}.sync-offline .dot{background:#9aa5ad}.sync-error .dot,.sync-relogin .dot,.sync-password .dot{background:#ff6b5e}.banner{margin:8px 12px;padding:8px 10px;border-radius:6px;font-size:13px;border-left:4px solid}.banner-bad{background:var(--bad-bg);border-color:var(--bad);color:#7a1d16}.banner-info{background:var(--light-blue);border-color:var(--blue);color:var(--navy)}.banner-warn{background:var(--warn-bg);border-color:var(--warn);color:#6b4e00}.banner button{margin-left:8px}.toasts{position:fixed;left:12px;right:12px;bottom:76px;z-index:50;display:flex;flex-direction:column;gap:6px;pointer-events:none}.toast{background:var(--navy);color:#fff;padding:10px 12px;border-radius:8px;font-size:13px;box-shadow:0 4px 12px #00000040}.toast-error{background:var(--bad)}.splash{width:100%;min-height:100vh;border:0;background:var(--navy);color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;text-align:center}.logo-xl{width:140px;height:140px;border-radius:50%;background:#fff;padding:10px}.splash-title{font-size:22px;font-weight:800;letter-spacing:1px}.splash-sub{color:var(--sky)}.splash-dev{font-size:12px;opacity:.8;margin-top:18px}.splash-tap{font-size:12px;opacity:.7;margin-top:30px}.login{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:16px}.login-card{width:100%;max-width:380px;background:#fff;border-radius:12px;padding:20px;box-shadow:0 6px 20px #0000001f;text-align:center}.login-card h1{font-size:18px;color:var(--navy);margin:10px 0 2px}.logo-lg{width:72px;height:72px}.login-card form{text-align:left;margin-top:14px}.field{display:flex;flex-direction:column;gap:3px;margin-bottom:9px;font-size:12px;font-weight:700;color:var(--navy)}.field input,.field select,.field textarea{font-weight:400;color:var(--ink);border:1px solid var(--border);border-radius:6px;padding:9px;font-size:15px;background:#fff}.field .in,input.in{background:var(--input);border-color:var(--input-border)}.btn{border:0;border-radius:6px;padding:11px 12px;font-weight:700;color:#fff;background:var(--blue);font-size:13px}.btn:disabled{opacity:.45;cursor:default}.btn-primary{width:100%;background:var(--navy)}.btn-send{background:var(--ok)}.btn-danger,.btn-clear{background:#c2410c}.btn-ghost{background:transparent;color:var(--blue);border:1px solid var(--blue)}.btn-approve{background:var(--ok)}.btn-reject{background:var(--bad)}.btn-dark{background:#44546a}.screen{min-height:100vh;padding-bottom:72px}.toolbar{display:flex;gap:8px;padding:10px 12px}.search{flex:1;border:1px solid var(--border);border-radius:6px;padding:9px;font-size:15px}.list{padding:0 12px;display:flex;flex-direction:column;gap:8px}.card{background:#fff;border:1px solid var(--grid);border-radius:8px;padding:10px 12px;text-align:left;width:100%;color:var(--ink)}.card-title{font-weight:700;color:var(--navy)}.card-meta{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:var(--slate);margin-top:3px;gap:6px}.pending-note{color:var(--warn);font-weight:700;font-size:12px}.account{text-align:center;font-size:12px;color:var(--slate);padding:16px}.account button{background:none;border:0;color:var(--blue);text-decoration:underline}.badge{font-size:10px;padding:2px 7px;border-radius:9px;font-weight:700;white-space:nowrap}.badge-draft{background:var(--muted);color:var(--slate)}.badge-dikirim{background:var(--light-blue);color:var(--blue)}.badge-disetujui{background:var(--ok-bg);color:var(--ok)}.badge-ukur_ulang{background:var(--bad-bg);color:var(--bad)}.status-row{display:flex;gap:8px;align-items:center;padding:6px 12px;font-size:12px}.tabs{display:flex;background:#fff;border-bottom:1px solid var(--grid);position:sticky;top:56px;z-index:4}.tabs button{flex:1;border:0;background:none;padding:11px 0;font-weight:700;color:var(--slate);border-bottom:3px solid transparent}.tabs button.on{color:var(--blue);border-bottom-color:var(--blue)}.info{padding:12px}.label-small{font-size:11px;font-weight:700;color:var(--navy);margin-top:6px}.fname{background:#fff;border:1px solid var(--border);border-radius:6px;padding:8px;font-weight:700;color:var(--navy);font-size:13px;word-break:break-word}.mini-chart{display:block;width:calc(100% - 24px);margin:10px 12px 0;padding:0;border:1px solid var(--grid);border-radius:6px;background:#fff}.qc-summary{padding:8px 12px;font-size:13px;font-weight:700;color:var(--navy)}.qc-summary .ok{color:var(--ok)}.qc-summary .bad{color:var(--bad)}.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}.data-table{border-collapse:collapse;font-size:12px;min-width:100%}.data-table th{background:var(--blue);color:#fff;padding:5px 4px;font-weight:600;position:sticky;top:0}.data-table th.no{background:var(--slate)}.data-table td{border:1px solid var(--grid);padding:2px 4px;text-align:center;background:#fff}.data-table tr.odd td{background:#f8fbfd}.data-table td.no{padding:0;background:var(--muted)}.data-table td.no button{border:0;background:none;width:34px;height:36px;font-weight:700;color:var(--slate)}.data-table td.no-ok{background:var(--ok)}.data-table td.no-ok button{color:#fff}.data-table td.no-bad{background:var(--bad)}.data-table td.no-bad button{color:#fff}.data-table td.cell-in{padding:1px;background:var(--input)}.data-table input.in{width:86px;height:34px;border:1px solid var(--input-border);border-radius:3px;text-align:right;padding:0 6px;font-size:14px}.data-table input.err{border:2px solid var(--bad)}.data-table td.calc{background:var(--light-blue);min-width:72px}.data-table td.qc{min-width:110px}.data-table td.qc-ok{background:var(--ok-bg);color:var(--ok);font-weight:700}.data-table td.qc-bad{background:var(--bad-bg);color:var(--bad);font-weight:700}.actions{display:flex;gap:6px;padding:8px 12px}.actions .btn{flex:1}.gps{display:flex;flex-direction:column;gap:2px;margin:-2px 0 9px}.gps .btn{width:100%}.gps .hint{padding:2px 0}.gps-error{color:var(--bad)}.grafik{padding:12px}.toggle{display:flex;gap:8px;align-items:center;font-size:13px;padding:8px 0}.bottom-nav{position:fixed;left:0;right:0;bottom:0;z-index:6;display:flex;background:var(--navy);padding:6px;padding-bottom:max(6px,env(safe-area-inset-bottom))}.bottom-nav button{flex:1;border:0;background:none;color:#fff;font-size:11px;padding:6px 0;border-radius:6px}.bottom-nav button:disabled{opacity:.35}.chart{display:block;width:100%;height:auto;background:#fff}.chart .chart-title{font-size:13px;font-weight:700;fill:var(--navy)}.chart .grid{stroke:#e1e8ed;stroke-width:1}.chart .frame{fill:none;stroke:var(--border);stroke-width:1}.chart .tick{font-size:11px;fill:#555}.chart .tick-x,.chart .axis{text-anchor:middle}.chart .tick-y{text-anchor:end}.chart .axis{font-size:12px;fill:#444}.chart .curve{fill:none;stroke:var(--blue);stroke-width:2.5}.chart .pt{fill:var(--blue)}.chart .empty{font-size:14px;fill:#888;text-anchor:middle}.chart .raw{fill:none;stroke-width:1.5}.chart .seg0{stroke:#c02e24}.chart .seg1{stroke:#b88600}.chart .seg2{stroke:#1f7a45}.chart .seg3{stroke:#7b3fa0}.chart .seg4{stroke:#44546a}.sheet{position:fixed;left:0;right:0;bottom:0;max-height:70vh;overflow-y:auto;z-index:20;background:#fff;border-radius:14px 14px 0 0;box-shadow:0 -6px 20px #00000040;padding:12px 14px 80px}.sheet-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;color:var(--navy)}.history{list-style:none;margin:0;padding:0;font-size:13px}.history li{border-bottom:1px solid var(--grid);padding:7px 0}.h-meta{font-size:11px;color:var(--slate)}.admin-nav{display:flex;gap:6px;padding:8px 12px;background:var(--panel)}.admin-nav button{border:0;background:none;padding:6px 10px;border-radius:6px;font-weight:700;color:var(--blue)}.admin-nav button.on{background:var(--blue);color:#fff}.admin-nav .spacer{flex:1}.filters{display:flex;flex-wrap:wrap;gap:6px;padding:8px 12px;font-size:12px;align-items:center}.filters select,.filters input{border:1px solid var(--border);border-radius:6px;padding:5px;font-size:12px}.admin-split{display:flex;flex-direction:column}.admin-table{border-collapse:collapse;width:100%;font-size:13px;background:#fff}.admin-table th{background:var(--blue);color:#fff;text-align:left;padding:6px}.admin-table td{border-bottom:1px solid var(--grid);padding:7px 6px}.admin-table tr{cursor:pointer}.admin-table tr.selected td{background:var(--light-blue)}.admin-detail{background:#fff;border-top:2px solid var(--blue);padding:12px}.admin-detail h3{margin:0 0 4px;color:var(--navy);font-size:16px}.admin-detail textarea{width:100%;min-height:64px}.admin-detail .btns{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.admin-detail .btn-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}.admin-detail .btn-grid-3{grid-template-columns:repeat(3,1fr)}.detail-panel{border:1px solid var(--grid);border-radius:8px;padding:10px;margin-top:12px;background:#f7f9fb}.panel-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.panel-title{font-size:11px;font-weight:700;letter-spacing:.08em;color:var(--slate)}.detail-panel .hint{margin:-4px 0 0;padding:0}.panel-sep{display:flex;align-items:center;gap:8px;margin:14px 0 0;font-size:11px;color:var(--slate)}.panel-sep:before,.panel-sep:after{content:"";flex:1;border-top:1px dashed var(--border)}.btn-tall{min-height:48px;font-size:14px}.btn-danger-outline{background:#fff;color:#c2410c;border:1px solid #c2410c}.btn-sm{padding:7px 10px;font-size:12px}.btn:disabled{opacity:.55}.users-toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:10px 12px}.users-toolbar .search{min-width:0;flex:1 1 100%}.users-toolbar .btn{flex:1 1 100%}.chips{display:flex;gap:6px;flex-wrap:wrap}.chip{border:1px solid var(--border);background:#fff;color:var(--slate);border-radius:14px;padding:5px 11px;font-size:12px;font-weight:700}.chip.on{background:var(--blue);border-color:var(--blue);color:#fff}.user-form{background:#fff;margin:0 12px 12px;border-radius:8px;border:1px solid var(--border);padding:12px}.user-form-head{display:flex;flex-direction:column;gap:2px;margin-bottom:8px;color:var(--navy);font-size:13px}.user-form-head .muted{font-size:12px}.user-form-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:6px}.user-form-actions .btn{flex:1}.form-grid{display:grid;grid-template-columns:1fr;gap:4px}.field-err{color:var(--bad);font-weight:400;font-size:12px}.field input[aria-invalid=true]{border-color:var(--bad)}.pw-wrap{display:flex;gap:6px}.pw-wrap input{flex:1;min-width:0}.pw-toggle{border:1px solid var(--border);background:#fff;color:var(--blue);border-radius:6px;padding:0 10px;font-size:12px;font-weight:700}.user-list{list-style:none;margin:0 12px 16px;padding:0;background:#fff;border-radius:8px;border:1px solid var(--border)}.user-row{display:grid;grid-template-columns:40px 1fr auto;grid-template-areas:"av main act" "av tags tags" "av sync sync";column-gap:10px;row-gap:4px;padding:10px 12px;border-bottom:1px solid var(--grid);align-items:center}.user-row:last-child{border-bottom:0}.user-row.inactive{background:#f6f7f8}.user-row.inactive .user-main,.user-row.inactive .avatar{opacity:.6}.avatar{grid-area:av;align-self:start;width:40px;height:40px;border-radius:50%;background:var(--light-blue);color:var(--navy);font-weight:800;display:flex;align-items:center;justify-content:center}.user-main{grid-area:main;min-width:0}.user-main .muted{font-size:12px}.user-name{font-weight:700;color:var(--navy);display:flex;gap:6px;align-items:center;flex-wrap:wrap}.user-tags{grid-area:tags;display:flex;gap:4px;flex-wrap:wrap}.user-sync{grid-area:sync;font-size:12px}.user-actions{grid-area:act;display:flex;justify-content:flex-end;align-self:start}.row-menu{position:relative}.menu-scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:14}.kebab{border:1px solid var(--border);background:#fff;color:var(--navy);border-radius:6px;width:36px;height:36px;font-size:20px;line-height:1;font-weight:700}.kebab[aria-expanded=true]{background:var(--light-blue)}.menu{position:absolute;right:0;top:40px;z-index:15;min-width:170px;background:#fff;border:1px solid var(--border);border-radius:8px;box-shadow:0 6px 18px #0000002e;padding:4px;display:flex;flex-direction:column}.menu button{border:0;background:none;text-align:left;padding:10px 12px;font-size:14px;color:var(--ink);border-radius:6px}.menu button:hover,.menu button:focus-visible{background:var(--light-blue)}.menu button.danger{color:var(--bad)}.badge-role-admin{background:var(--navy);color:#fff}.badge-role-operator{background:var(--light-blue);color:var(--blue)}.badge-active{background:var(--ok-bg);color:var(--ok)}.badge-inactive{background:var(--muted);color:var(--slate)}.badge-warn{background:var(--warn-bg);color:#6b4e00}.badge-self{background:var(--sky);color:var(--navy)}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000059;z-index:19}@media(min-width:640px){.users-toolbar .search{flex:1 1 260px}.users-toolbar .btn{flex:0 0 auto}.user-row{grid-template-columns:40px minmax(160px,1.4fr) 1.4fr 1fr 44px;grid-template-areas:"av main tags sync act"}.user-actions{align-self:center}.user-form-actions .btn{flex:0 0 auto}}@media(min-width:900px){.admin-split{flex-direction:row;align-items:flex-start}.admin-split .admin-list{flex:1;min-width:0}.admin-split .admin-detail{width:380px;border-top:0;border-left:2px solid var(--blue);position:sticky;top:56px;max-height:calc(100vh - 56px);overflow-y:auto}.form-grid{grid-template-columns:repeat(4,1fr);align-items:start}.sheet-dialog{left:50%;right:auto;bottom:auto;top:20vh;width:440px;transform:translate(-50%);border-radius:12px;padding:14px}}.install-gate{min-height:100vh;background:var(--navy);color:#fff;display:flex;flex-direction:column;align-items:center;padding:32px 20px 24px;text-align:center;gap:10px}.install-gate h1{margin:4px 0 0;font-size:22px}.install-icon{width:76px;height:76px;border-radius:18px;background:#fff}.install-lead{margin:0;color:var(--sky)}.install-why{list-style:none;padding:0;margin:4px 0;font-size:14px;display:flex;flex-direction:column;gap:4px}.install-why li:before{content:"✓ ";color:#7fd6a0;font-weight:800}.install-card{width:100%;max-width:420px;background:#fff;color:var(--ink);border-radius:12px;padding:16px;text-align:left;font-size:14px;display:flex;flex-direction:column;gap:8px}.install-card b{color:var(--navy)}.install-card ol{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:6px}.install-card p{margin:0}.install-btn{width:100%;padding:14px;font-size:15px}.install-note{font-size:13px;color:var(--sky);margin:4px 0 0}.install-card .install-note{color:var(--slate)}.ios-share{display:inline-block;border:1px solid var(--border);border-radius:4px;padding:0 4px;color:var(--blue)}.install-bypass{margin-top:auto;border:0;background:none;color:var(--sky);opacity:.8;text-decoration:underline;font-size:12px;padding:16px 8px 0}
