:root{--bg: #f2f6fc;--panel: #ffffff;--panel-2: #f7faff;--text: #16233a;--muted: #5b6b85;--line: #dbe4f0;--head: #eaf1fb;--head-text: #33496b;--accent: #2563eb;--accent-soft: #e6efff;--primary: #2563eb;--primary-hover: #1d4ed8;--pos: #0e8a5f;--neg: #d32f2f;--hover: #f0f5ff;--warn-bg: #fff6e5;--warn-line: #f0b44c;--info-bg: #eaf2ff;--hero-1: #1e40af;--hero-2: #3b82f6;--shadow: 0 1px 2px rgb(15 35 75 / .06), 0 2px 8px rgb(15 35 75 / .04);--radius: 12px;color-scheme:light;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--text)}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg: #0c1424;--panel: #131e33;--panel-2: #111a2d;--text: #e4ebf7;--muted: #94a5c0;--line: #24334d;--head: #17243c;--head-text: #a9bbd8;--accent: #60a5fa;--accent-soft: #1a2c4b;--primary: #2563eb;--primary-hover: #3b82f6;--pos: #34d399;--neg: #f87171;--hover: #182844;--warn-bg: #3a2e17;--warn-line: #b8862f;--info-bg: #15264a;--hero-1: #1e3a8a;--hero-2: #1d4ed8;--shadow: none;color-scheme:dark}}:root[data-theme=dark]{--bg: #0c1424;--panel: #131e33;--panel-2: #111a2d;--text: #e4ebf7;--muted: #94a5c0;--line: #24334d;--head: #17243c;--head-text: #a9bbd8;--accent: #60a5fa;--accent-soft: #1a2c4b;--primary: #2563eb;--primary-hover: #3b82f6;--pos: #34d399;--neg: #f87171;--hover: #182844;--warn-bg: #3a2e17;--warn-line: #b8862f;--info-bg: #15264a;--hero-1: #1e3a8a;--hero-2: #1d4ed8;--shadow: none;color-scheme:dark}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}.wrap{max-width:1180px;margin:0 auto;padding:20px 20px 48px}.boot,.empty{padding:40px 16px;text-align:center;color:var(--muted)}.muted{color:var(--muted)}.small{font-size:13px}.pos{color:var(--pos)}.neg{color:var(--neg)}button{font:inherit;font-size:14px;padding:8px 14px;border-radius:9px;cursor:pointer;border:1px solid var(--line);background:var(--panel);color:var(--text);transition:border-color .15s,background-color .15s}button:hover:not(:disabled){border-color:var(--accent)}button:disabled{opacity:.4;cursor:default}button.primary{background:var(--primary);border-color:var(--primary);color:#fff;font-weight:600}button.primary:hover:not(:disabled){background:var(--primary-hover);border-color:var(--primary-hover)}button.danger{color:var(--neg)}button.danger.solid{background:var(--neg);border-color:var(--neg);color:#fff}button.link-btn{border:none;background:none;padding:2px 4px;color:var(--accent);font-size:14px;font-weight:600}button.link-btn:hover{text-decoration:underline}button:focus-visible,summary:focus-visible,.field:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.field{font:inherit;font-size:14px;padding:8px 12px;border-radius:9px;border:1px solid var(--line);background:var(--panel);color:var(--text)}.field:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}select.field{cursor:pointer}.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:18px}.brand{display:flex;align-items:center;gap:12px}.logo{width:40px;height:40px;border-radius:11px;display:grid;place-items:center;font-weight:800;font-size:15px;color:#fff;background:linear-gradient(135deg,var(--hero-1),var(--hero-2));letter-spacing:.5px}h1{margin:0;font-size:22px;line-height:1.2}.theme-toggle{position:relative;width:60px;height:32px;padding:0;border-radius:999px;border:1px solid var(--line);background:#cfd9e8;flex:none}.theme-toggle[aria-checked=true]{background:#2a3a55;border-color:#2a3a55}.theme-toggle:hover:not(:disabled){border-color:var(--accent)}.theme-toggle .knob{position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:50%;display:grid;place-items:center;background:var(--primary);color:#fff;box-shadow:0 1px 3px #0000004d;transition:transform .2s ease}.theme-toggle[aria-checked=true] .knob{transform:translate(28px)}.theme-toggle svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}.theme-toggle[aria-checked=true] svg{fill:currentColor;stroke:none}.hero{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:20px 24px;margin-bottom:16px;border-radius:16px;color:#fff;background:linear-gradient(120deg,var(--hero-1),var(--hero-2));box-shadow:0 6px 20px #1e40af2e}.hero-total{display:flex;flex-direction:column;gap:2px;min-width:0}.hero-label{font-size:13px;opacity:.85;text-transform:uppercase;letter-spacing:.8px}.hero-amount{font-size:34px;line-height:1.15;font-variant-numeric:tabular-nums}.hero-meta{font-size:13px;opacity:.85;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.pill-neg{background:#fee2e2;color:#b91c1c;font-weight:700;font-size:11px;padding:2px 8px;border-radius:999px;opacity:1}.hero button.add{background:#fff;color:#1e40af;border-color:#fff;font-weight:700;padding:11px 20px;font-size:15px}.hero button.add:hover:not(:disabled){background:#eef4ff;border-color:#eef4ff}.controls{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:10px;margin-bottom:12px;box-shadow:var(--shadow)}.filters{display:flex;gap:8px;flex:1 1 420px;min-width:0}.filters select.field{width:180px;flex:none}.search-box{position:relative;flex:1 1 auto;max-width:380px}.search-box svg{position:absolute;left:11px;top:50%;width:16px;height:16px;transform:translateY(-50%);fill:none;stroke:var(--muted);stroke-width:2;stroke-linecap:round;pointer-events:none}.search-box .field{width:100%;padding-left:34px}.actions{display:flex;gap:8px}.filter-info{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:14px;color:var(--muted);background:var(--info-bg);border-radius:10px;padding:8px 14px;margin-bottom:12px}.menu{position:relative}.menu summary{list-style:none;font-size:14px;padding:8px 14px;border-radius:9px;cursor:pointer;border:1px solid var(--line);background:var(--panel);color:var(--text);-webkit-user-select:none;user-select:none;white-space:nowrap}.menu summary::-webkit-details-marker{display:none}.menu summary:hover,.menu[open] summary{border-color:var(--accent)}.menu-list{position:absolute;right:0;top:calc(100% + 6px);z-index:20;min-width:230px;display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:6px;box-shadow:0 10px 30px #0a193c33}.menu-list button{border:none;text-align:left;padding:10px 12px;border-radius:8px;background:transparent}.menu-list button:hover:not(:disabled){background:var(--hover)}.menu-list hr{border:none;border-top:1px solid var(--line);margin:4px 0;width:100%}.summary{display:grid;grid-template-columns:1fr auto 1fr auto 1fr auto 1.2fr;align-items:center;gap:10px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:14px 18px;margin-bottom:12px;box-shadow:var(--shadow)}.summary i{font-style:normal;color:var(--muted);font-size:18px;text-align:center}.sum-item span{display:block;font-size:12px;color:var(--muted);margin-bottom:2px}.sum-item b{font-size:17px;font-variant-numeric:tabular-nums}.sum-item.end{text-align:right;background:var(--accent-soft);border-radius:10px;padding:8px 12px}.sum-item.end b{font-size:20px}.banner{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;border:1px solid var(--line);border-radius:var(--radius);padding:10px 14px;margin-bottom:12px;font-size:14px}.banner.warn{background:var(--warn-bg);border-color:var(--warn-line)}.banner.info{background:var(--info-bg);border-color:var(--accent)}.banner-actions{display:flex;gap:8px}.table-wrap{overflow-x:auto;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}table{width:100%;border-collapse:collapse;min-width:1020px}th{background:var(--head);color:var(--head-text);font-weight:700;font-size:12px;padding:11px 8px;text-align:left;letter-spacing:.6px;border-bottom:1px solid var(--line)}th.c-num{text-align:right;padding-right:14px}th.c-no{text-align:center}td{border-top:1px solid var(--line);padding:3px 4px;vertical-align:middle}tbody tr:first-child td{border-top:none}tbody tr:nth-child(2n){background:var(--panel-2)}tbody tr:hover{background:var(--hover)}td input{width:100%;font:inherit;font-size:14px;color:var(--text);border:1px solid transparent;background:transparent;padding:8px;border-radius:7px}td input:hover{border-color:var(--line)}td input:focus{outline:none;border-color:var(--accent);background:var(--panel);box-shadow:0 0 0 3px var(--accent-soft)}td input::placeholder{color:var(--muted);opacity:.55}td input[readonly]{cursor:default}td input[readonly]:hover{border-color:transparent}.c-no{width:44px;text-align:center;color:var(--muted);font-size:12px;position:relative}.c-date{width:150px}.c-ket{min-width:240px}.c-num{width:140px;text-align:right;font-variant-numeric:tabular-nums}.c-num input{text-align:right}.total{font-weight:700;padding-right:14px}.c-act{width:136px;white-space:nowrap;text-align:center}button.icon{padding:4px 8px;font-size:13px;border-color:transparent;background:transparent;color:var(--muted)}button.icon:hover:not(:disabled){border-color:var(--line);color:var(--text)}button.icon.del:hover:not(:disabled){color:var(--neg);border-color:var(--neg)}tfoot td{border-top:2px solid var(--line);background:var(--head);font-weight:700;padding:11px 14px}tfoot .lbl{text-align:right;color:var(--head-text);font-size:12px;letter-spacing:.6px}.hint{color:var(--muted);font-size:13px;margin-top:14px;line-height:1.6}kbd{border:1px solid var(--line);border-radius:4px;padding:0 4px;font-size:12px}button.status{border:none;background:none;padding:0 2px;font-size:13px;line-height:1;cursor:pointer}.status.pending,.status.saving{color:#d99a1e}.status.saving{animation:pulse 1s infinite}.status.conflict{color:#e07b00;font-size:15px}.status.error{color:var(--neg);font-weight:800}.status.inline{font-size:11px}@keyframes pulse{50%{opacity:.3}}tr.st-conflict td,tr.st-error td{background:color-mix(in srgb,var(--neg) 8%,transparent)}.date-input{position:relative;display:block}.date-btn{width:100%;display:flex;align-items:center;justify-content:space-between;gap:6px;border:1px solid transparent;background:transparent;padding:8px;font-variant-numeric:tabular-nums}.date-btn:hover:not(:disabled){border-color:var(--line)}.date-btn:disabled{opacity:1;cursor:default}.date-native{position:absolute;left:0;bottom:0;width:100%;height:0;opacity:0;border:0;padding:0;pointer-events:none}.modal-bg{position:fixed;top:0;right:0;bottom:0;left:0;background:#050f238c;display:grid;place-items:center;padding:16px;z-index:50}.modal{width:100%;max-width:420px;max-height:calc(100vh - 32px);overflow:auto;background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:18px 20px;display:flex;flex-direction:column;gap:12px}.modal-head{display:flex;justify-content:space-between;align-items:center}.modal h2{margin:0;font-size:18px}.modal p{margin:0}.modal input{font:inherit;font-size:15px;padding:9px 10px;border-radius:9px;border:1px solid var(--line);background:var(--bg);color:var(--text)}.modal input:focus{outline:none;border-color:var(--accent)}code{background:var(--bg);padding:1px 6px;border-radius:4px}@media(max-width:900px){.summary{grid-template-columns:1fr 1fr 1fr}.summary i{display:none}.sum-item.end{grid-column:1 / -1;text-align:left}}@media(max-width:720px){.wrap{padding:14px 12px 40px}h1{font-size:20px}.logo{width:36px;height:36px;font-size:14px}.topbar{margin-bottom:14px}.hero{flex-direction:column;align-items:stretch;padding:18px;gap:14px}.hero-amount{font-size:30px}.hero button.add{width:100%;padding:12px;font-size:16px}.controls{flex-direction:column;align-items:stretch;padding:10px}.filters{flex-direction:column;flex:none}.filters select.field,.search-box{width:100%;max-width:none}.field{font-size:16px;padding:10px 12px}.search-box .field{padding-left:36px}.actions{display:grid;grid-template-columns:1fr 1fr}.actions button,.menu summary{width:100%;text-align:center;padding:10px}.menu-list{left:0;right:auto;width:min(280px,calc(100vw - 48px))}.summary{grid-template-columns:1fr 1fr;padding:12px}.sum-item:first-child{grid-column:1 / -1}.desktop-only{display:none}td input,.date-btn{font-size:16px}.table-wrap{overflow:visible;background:none;border:none;box-shadow:none}table,tbody,tfoot{display:block;min-width:0}thead{display:none}tbody tr,tfoot tr{display:grid;grid-template-columns:1fr 1fr;gap:2px 10px;background:var(--panel)!important;border:1px solid var(--line);border-radius:14px;padding:10px 12px;margin-bottom:10px;box-shadow:var(--shadow)}td{border:none;padding:0}td[data-label]:before{content:attr(data-label);display:block;font-size:11px;color:var(--muted);margin:6px 0 0 8px}.c-no{grid-column:1 / -1;display:flex;gap:6px;align-items:center;text-align:left;width:auto;font-weight:600}.c-no .no:before{content:"Transaksi #"}.c-date,.c-ket,.c-note{grid-column:1 / -1;width:auto}.c-num{width:auto;text-align:left}.c-num input{text-align:left}.total{padding:8px 8px 0;font-size:17px}td.total:before{margin-left:0}.c-act{grid-column:1 / -1;display:flex;justify-content:flex-end;gap:6px;width:auto;margin-top:6px;border-top:1px solid var(--line);padding-top:8px}button.icon{padding:7px 13px;border-color:var(--line)}td.empty{display:block}tfoot tr{background:var(--head)!important}tfoot td:empty,tfoot .lbl{display:none}tfoot td{font-weight:700;padding:0 8px;background:none;border:none}tfoot td:before{margin-left:0!important}.modal{padding:16px}}
