:root{--bg:#f6f7f9;--surface:#fff;--border:#e2e5ea;--text:#1a1d23;--text-muted:#6b7280;--primary:#2563eb;--primary-dark:#1d4ed8;--success:#16a34a;--danger:#dc2626;--warning:#d97706;--radius:10px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0}a{color:var(--primary);text-decoration:none}.app-shell{min-height:100vh;display:flex}.sidebar{background:var(--surface);border-right:1px solid var(--border);flex-direction:column;gap:4px;width:220px;padding:20px 14px;display:flex}.sidebar .brand{margin-bottom:18px;padding:0 8px;font-size:1.1rem;font-weight:700}.sidebar .brand small{color:var(--text-muted);font-size:.75rem;font-weight:400;display:block}.nav-link{border-radius:var(--radius);color:var(--text);padding:9px 12px;font-size:.92rem;display:block}.nav-link.active,.nav-link:hover{color:var(--primary-dark);background:#eef2ff}.nav-user{border-top:1px solid var(--border);color:var(--text-muted);margin-top:auto;padding-top:12px;font-size:.85rem}.main-content{flex:1;max-width:1100px;padding:24px 28px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:18px;padding:18px 20px}.card h3{color:var(--text-muted);margin-top:0;font-size:.95rem;font-weight:600}.stat-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;margin-bottom:18px;display:grid}.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px 18px}.stat-card .label{color:var(--text-muted);font-size:.8rem}.stat-card .value{margin-top:4px;font-size:1.5rem;font-weight:700}.stat-card .value.positive{color:var(--success)}.stat-card .value.negative{color:var(--danger)}table{border-collapse:collapse;width:100%;font-size:.9rem}th,td{text-align:left;border-bottom:1px solid var(--border);padding:8px 10px}th{color:var(--text-muted);font-weight:600}button,.btn{background:var(--primary);color:#fff;cursor:pointer;border:none;border-radius:8px;padding:9px 16px;font-size:.9rem}button:hover{background:var(--primary-dark)}button.secondary{background:var(--surface);color:var(--text);border:1px solid var(--border)}button.secondary:hover{background:#f1f2f4}button:disabled{opacity:.6;cursor:not-allowed}input,select{border:1px solid var(--border);border-radius:8px;width:100%;padding:8px 10px;font-size:.9rem}label{color:var(--text-muted);margin-bottom:4px;font-size:.82rem;display:block}.form-grid{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));align-items:end;gap:12px;display:grid}.badge{border-radius:999px;padding:2px 8px;font-size:.75rem;font-weight:600;display:inline-block}.badge.new{color:#3730a3;background:#e0e7ff}.badge.packed{color:#92400e;background:#fef3c7}.badge.paid{color:#1e40af;background:#dbeafe}.badge.done{color:#166534;background:#dcfce7}.print-only{display:none}@media print{.sidebar,.no-print,.page-header{display:none!important}.app-shell{display:block}.main-content{max-width:100%;padding:0}.card{box-shadow:none;border:none;margin-bottom:8px;padding:0}.print-only{display:block}}.login-page{background:var(--bg);justify-content:center;align-items:center;min-height:100vh;display:flex}.login-box{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);width:320px;padding:32px}.login-box h1{margin-bottom:4px;font-size:1.2rem}.login-box p{color:var(--text-muted);margin-top:0;margin-bottom:20px;font-size:.85rem}.login-box .field{margin-bottom:14px}.login-box button{width:100%;margin-top:6px}.error-text{color:var(--danger);margin:8px 0;font-size:.85rem}.success-text{color:var(--success);margin:8px 0;font-size:.85rem}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-bottom:18px;display:flex}.page-header h2{margin:0}.mapping-row{grid-template-columns:140px 1fr;align-items:center;gap:10px;margin-bottom:8px;display:grid}@media (width<=720px){.app-shell{flex-direction:column}.sidebar{flex-direction:row;align-items:center;width:100%;padding:10px;overflow-x:auto}.sidebar .brand,.nav-user{display:none}.main-content{padding:16px}}
