:root{--green-900:#14401f;--green-700:#1f6f3f;--green-600:#2a8a4f;--green-100:#e3f1e8;--amber:#c97a16;--red:#c0392b;--ink:#1c2421;--muted:#647067;--line:#e2e7e3;--surface:#fff;--bg:#e6eae6;--radius:12px;--shadow:0 1px 2px #1428190f, 0 4px 16px #1428190d;--font:system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font);color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}h1,h2,h3{letter-spacing:-.01em;margin:0;font-weight:650}.app{grid-template-columns:240px 1fr;min-height:100%;display:grid}.sidebar{background:var(--green-900);color:#dfeee4;flex-direction:column;gap:4px;height:100vh;padding:22px 14px;display:flex;position:sticky;top:0}.brand{align-items:center;gap:10px;padding:4px 10px 22px;display:flex}.brand .logo{background:linear-gradient(135deg, var(--green-600), var(--green-700));border-radius:9px;place-items:center;width:34px;height:34px;font-size:20px;display:grid}.brand b{color:#fff;font-size:17px}.brand span{color:#8fb79c;font-size:11px;font-weight:500;display:block}.nav-link{color:#b9d4c4;border-radius:9px;align-items:center;gap:11px;padding:10px 12px;font-size:14.5px;font-weight:550;transition:background .12s,color .12s;display:flex}.nav-link:hover{color:#fff;background:#ffffff0f}.nav-link.active{background:var(--green-600);color:#fff}.nav-link .ic{text-align:center;width:20px;font-size:16px}.main{width:100%;max-width:1200px;padding:28px 34px 60px}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:16px;margin-bottom:22px;display:flex}.page-head h1{font-size:25px}.page-head p{color:var(--muted);margin:4px 0 0;font-size:14px}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.stat-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px;margin-bottom:26px;display:grid}.stat{padding:18px 20px}.stat .label{color:var(--muted);font-size:13px;font-weight:550}.stat .value{letter-spacing:-.02em;margin-top:6px;font-size:30px;font-weight:700}.stat .sub{color:var(--muted);margin-top:3px;font-size:12.5px}.stat.accent{background:linear-gradient(135deg, var(--green-700), var(--green-600));color:#fff;border:none}.stat.accent .label,.stat.accent .sub{color:#cfe8d8}.table-wrap{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:14px}thead th{text-align:left;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--line);background:#fafbfa;padding:12px 16px;font-size:12px}tbody td{border-bottom:1px solid var(--line);padding:12px 16px}tbody tr:last-child td{border-bottom:none}tbody tr:hover{background:#f8faf8}.badge{border-radius:999px;padding:2px 9px;font-size:12px;font-weight:600;display:inline-block}.badge.green{background:var(--green-100);color:var(--green-700)}.badge.gray{color:var(--muted);background:#eceeec}.badge.amber{color:var(--amber);background:#fbf0dd}.chip{background:var(--green-100);color:var(--green-700);border-radius:6px;margin:1px;padding:1px 8px;font-size:12px;font-weight:600;display:inline-block}.btn{cursor:pointer;background:var(--green-700);color:#fff;border:1px solid #0000;border-radius:9px;align-items:center;gap:8px;padding:9px 16px;font-family:inherit;font-size:14px;font-weight:600;transition:filter .12s,background .12s;display:inline-flex}.btn:hover{filter:brightness(1.06)}.btn:disabled{opacity:.5;cursor:not-allowed;filter:none}.btn.ghost{color:var(--green-700);border-color:var(--line);background:0 0}.btn.ghost:hover{background:var(--green-100)}.muted{color:var(--muted)}.empty{text-align:center;color:var(--muted);padding:50px 20px}.spinner{text-align:center;color:var(--muted);padding:50px}input.reading-input{border:1px solid var(--line);text-align:right;border-radius:8px;width:110px;padding:9px 11px;font-family:inherit;font-size:15px}input.reading-input:focus{outline:2px solid var(--green-600);border-color:#0000}input.reading-input.filled{border-color:var(--green-600);background:#f4fbf6}.syncbar{border-radius:var(--radius);flex-wrap:wrap;align-items:center;gap:14px;margin-bottom:18px;padding:14px 18px;display:flex}.syncbar.online{background:var(--green-100)}.syncbar.offline{background:#fbeae8}.dot{border-radius:50%;width:10px;height:10px}.dot.on{background:var(--green-600)}.dot.off{background:var(--red)}.syncbar .status{font-weight:650}.syncbar .grow{flex:1}.sidebar-foot{border-top:1px solid #ffffff1a;margin-top:auto;padding-top:8px}.who{color:#8fb79c;align-items:center;gap:11px;padding:8px 12px;font-size:13.5px;font-weight:600;display:flex}.who .ic{text-align:center;width:20px}.nav-link.signout{cursor:pointer;width:100%;font:inherit;color:#b9d4c4;background:0 0;border:none}.nav-link.signout:hover{color:#fff;background:#ffffff0f}.login-wrap{background:linear-gradient(160deg,#14401f,#0d2a14);place-items:center;min-height:100vh;padding:20px;display:grid}.login-card{flex-direction:column;gap:14px;width:100%;max-width:380px;padding:30px 28px;display:flex}.login-brand{align-items:center;gap:11px;margin-bottom:4px;display:flex}.login-brand .logo{background:linear-gradient(135deg, var(--green-600), var(--green-700));border-radius:10px;place-items:center;width:40px;height:40px;font-size:22px;display:grid}.login-brand b{color:var(--ink);font-size:18px}.login-brand span{color:var(--muted);font-size:11px;font-weight:500;display:block}.login-card h2{margin-bottom:4px;font-size:20px}.login-card label{color:var(--muted);flex-direction:column;gap:5px;font-size:13px;font-weight:600;display:flex}.login-card input{border:1px solid var(--line);border-radius:8px;padding:10px 12px;font-family:inherit;font-size:15px}.login-card input:focus{outline:2px solid var(--green-600);border-color:#0000}.login-card .btn{justify-content:center;margin-top:6px;padding:11px}.login-error{color:var(--red);background:#fbeae8;border-radius:8px;padding:9px 12px;font-size:13.5px;font-weight:600}.form-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;display:grid}.field{color:var(--muted);flex-direction:column;gap:5px;font-size:13px;font-weight:600;display:flex}.field>span{color:var(--muted)}.field input,.field select,.field textarea{color:var(--ink);border:1px solid var(--line);background:#fff;border-radius:8px;padding:9px 11px;font-family:inherit;font-size:14.5px}.field input:focus,.field select:focus,.field textarea:focus{outline:2px solid var(--green-600);border-color:#0000}.field input:disabled{color:var(--muted);background:#f3f5f3}.field textarea{resize:vertical}.field-check{color:var(--ink);align-items:center;gap:9px;font-size:14px;font-weight:550;display:flex}.field-check input{width:17px;height:17px}table select,table input{font-family:inherit}table select{border:1px solid var(--line);background:#fff;border-radius:8px;padding:8px 10px;font-size:14px}tfoot td{border-top:2px solid var(--line);padding:12px 16px}.site-picker{border:1px solid var(--line);border-radius:8px;flex-wrap:wrap;gap:6px;max-height:140px;padding:8px;display:flex;overflow-y:auto}.site-chip{cursor:pointer;color:var(--ink);background:#f3f5f3;border-radius:7px;align-items:center;gap:5px;padding:4px 9px;font-size:13px;font-weight:600;display:inline-flex}.site-chip.on{background:var(--green-100);color:var(--green-700)}.site-chip input{width:14px;height:14px}.modal-backdrop{z-index:50;background:#141e1873;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.modal{flex-direction:column;gap:13px;width:100%;max-width:440px;padding:24px;display:flex}.modal h2{font-size:19px}.receipt-page{max-width:760px;margin:0 auto;padding:24px 20px 60px}.receipt-toolbar{align-items:center;gap:10px;margin-bottom:20px;display:flex}.receipt{border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);background:#fff;padding:40px 44px}.receipt-head{border-bottom:2px solid var(--green-700);justify-content:space-between;align-items:flex-start;padding-bottom:18px;display:flex}.receipt-logo{font-size:30px}.receipt-head h2{color:var(--green-900);margin-top:4px;font-size:23px}.receipt-meta{text-align:right;font-size:14px}.receipt-meta div:nth-child(2){font-size:18px;font-weight:700}.receipt-parties{flex-wrap:wrap;justify-content:space-between;gap:24px;margin:24px 0;display:flex}.receipt-label{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-size:11px;font-weight:600;display:block}.receipt-name{margin-top:2px;font-size:16px;font-weight:650}.receipt-dates{text-align:right;font-size:14px;line-height:1.7}.receipt-dates .receipt-label{margin-right:6px;display:inline}.receipt-table{border-collapse:collapse;width:100%;margin:8px 0 4px;font-size:14px}.receipt-table th{text-align:left;border-bottom:1px solid var(--line);color:var(--muted);text-transform:uppercase;letter-spacing:.04em;padding:10px 12px;font-size:12px}.receipt-table td{border-bottom:1px solid var(--line);padding:11px 12px}.receipt-table tfoot td{border-top:2px solid var(--green-700);border-bottom:none;padding-top:14px}.receipt-notes{margin-top:20px;font-size:14px}.receipt-foot{text-align:center;margin-top:30px;font-size:13px}@media print{.no-print{display:none!important}body{background:#fff}.receipt-page{max-width:none;padding:0}.receipt{box-shadow:none;border:none;padding:0}}@media (width<=760px){.app{grid-template-columns:1fr}.sidebar{z-index:10;flex-direction:row;align-items:center;gap:2px;height:auto;padding:10px;position:sticky;top:0;overflow-x:auto}.brand{padding:4px 10px}.brand span{display:none}.nav-link{white-space:nowrap;padding:8px 11px}.nav-link .label{display:none}.nav-link .ic{font-size:19px}.main{padding:18px 16px 50px}}.combo{position:relative}.combo-list{z-index:20;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);max-height:240px;margin-top:4px;position:absolute;top:100%;left:0;right:0;overflow-y:auto}.combo-item{text-align:left;cursor:pointer;width:100%;font:inherit;color:var(--ink);background:0 0;border:none;padding:9px 12px;display:block}.combo-item:hover,.combo-item.active{background:var(--green-100)}.combo-empty{color:var(--muted);padding:9px 12px;font-size:13px}.progress{background:var(--line);border-radius:999px;height:8px;overflow:hidden}.progress>span{background:var(--green-600);height:100%;transition:width .25s;display:block}.spin{vertical-align:-2px;border:2px solid var(--line);border-top-color:var(--green-600);border-radius:50%;width:14px;height:14px;margin-right:6px;animation:.7s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.analytics-grid{grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:16px;margin-top:8px;display:grid}.chart-card{padding:18px}.chart-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:14px;display:flex}.chart-head h3{margin:0}.chart-head .muted{font-size:13px}.chart-note{margin:10px 0 0;font-size:12px}.big-stat{flex-wrap:wrap;gap:28px;margin-bottom:16px;display:flex}.big-stat .value{font-size:26px;font-weight:700;line-height:1.1}.keypad{grid-template-columns:repeat(3,1fr);gap:10px;margin:14px 0;display:grid}.key{border:1px solid var(--line);background:var(--surface);border-radius:var(--radius);cursor:pointer;color:var(--ink);padding:16px 0;font-size:22px;font-weight:600}.key:active{background:var(--green-100)}.key:disabled{opacity:.45;cursor:default}.pin-dots{justify-content:center;gap:12px;margin:12px 0 4px;display:flex}.pin-dot{border:2px solid var(--muted);border-radius:50%;width:14px;height:14px}.pin-dot.on{background:var(--green-600);border-color:var(--green-600)}.link-btn{width:100%;color:var(--green-700);cursor:pointer;font:inherit;background:0 0;border:none;margin-top:12px;padding:6px;display:block}.link-btn:hover{text-decoration:underline}
