:root{--bg: #f4f5f7;--panel: #ffffff;--ink: #1f2430;--muted: #6b7280;--line: #e5e7eb;--brand: #4f46e5;--brand-dark: #4338ca;--green: #16a34a;--red: #dc2626;--amber: #d97706;--radius: 12px;--shadow: 0 1px 3px rgba(0, 0, 0, .08), 0 1px 2px rgba(0, 0, 0, .04)}*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--ink)}a{color:var(--brand);text-decoration:none}.app{display:flex;min-height:100vh}.sidebar{width:240px;background:#111827;color:#e5e7eb;padding:20px 14px;flex-shrink:0;display:flex;flex-direction:column;min-height:100vh}.sidebar-foot{margin-top:auto;padding-top:20px;border-top:1px solid #1f2937}.brand{font-size:18px;font-weight:700;margin-bottom:24px}.sidebar nav{display:flex;flex-direction:column;gap:4px}.sidebar nav a{color:#cbd5e1;padding:10px 12px;border-radius:8px;font-weight:500}.sidebar nav a:hover{background:#1f2937;color:#fff}.sidebar nav a.active{background:var(--brand);color:#fff}.content{flex:1;padding:28px 32px;max-width:1100px}h1{font-size:24px;margin:0 0 4px}h2{font-size:18px;margin:0 0 12px}.page-head{margin-bottom:22px;display:flex;align-items:center;justify-content:space-between;gap:16px}.subtitle{color:var(--muted);margin:0}.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow);margin-bottom:20px}.grid{display:grid;gap:16px}.grid.cols-3{grid-template-columns:repeat(3,1fr)}.grid.cols-4{grid-template-columns:repeat(4,1fr)}.stat{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px;box-shadow:var(--shadow)}.stat .label{color:var(--muted);font-size:13px}.stat .value{font-size:26px;font-weight:700;margin-top:4px}.stat .value.green{color:var(--green)}.stat .value.brand{color:var(--brand)}label.field{display:block;margin-bottom:12px;font-size:14px;font-weight:500}label.field span{display:block;margin-bottom:4px;color:var(--muted);font-weight:500}input,select,textarea{width:100%;padding:9px 11px;border:1px solid var(--line);border-radius:8px;font-size:14px;font-family:inherit;background:#fff}input:focus,select:focus,textarea:focus{outline:2px solid var(--brand);border-color:var(--brand)}textarea{resize:vertical;min-height:90px}.row{display:flex;gap:12px}.row>*{flex:1}button{cursor:pointer;border:none;border-radius:8px;padding:9px 16px;font-size:14px;font-weight:600;background:var(--brand);color:#fff;font-family:inherit}button:hover{background:var(--brand-dark)}button:disabled{opacity:.5;cursor:not-allowed}button.ghost{background:transparent;color:var(--ink);border:1px solid var(--line)}button.ghost:hover{background:var(--bg)}button.danger{background:var(--red)}button.small{padding:5px 10px;font-size:13px}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--line);font-size:14px}th{color:var(--muted);font-weight:600;font-size:13px}tr:hover td{background:#fafafa}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}.badge{display:inline-block;padding:2px 9px;border-radius:999px;font-size:12px;font-weight:600}.badge.pending_deposit{background:#fef3c7;color:var(--amber)}.badge.deposited{background:#dcfce7;color:var(--green)}.badge.sold{background:#dbeafe;color:#2563eb}.badge.rejected{background:#fee2e2;color:var(--red)}.badge.returned{background:#fef3c7;color:var(--amber)}.badge.donated{background:#f3f4f6;color:var(--muted)}.badge.unpaid{background:#fee2e2;color:var(--red)}.muted{color:var(--muted)}.error{color:var(--red);font-size:14px}.success{color:var(--green);font-size:14px}.toolbar{display:flex;gap:10px;align-items:center;margin-bottom:16px;flex-wrap:wrap}.spacer{flex:1}.scan-input{font-size:22px;padding:16px;text-align:center;letter-spacing:1px}.basket-total{font-size:36px;font-weight:800}.pay-buttons{display:flex;gap:10px}.pay-buttons button{flex:1;padding:14px;font-size:16px}.photo-thumb{width:56px;height:56px;object-fit:cover;border-radius:8px;border:1px solid var(--line)}.photo-big{max-width:100%;border-radius:10px;border:1px solid var(--line)}.scan-preview{display:flex;gap:16px;align-items:center;background:#f8fafc;border:2px solid var(--brand);border-radius:var(--radius);padding:14px;margin:14px 0}.scan-preview img{width:160px;height:160px;object-fit:cover;border-radius:10px;border:1px solid var(--line);background:#fff}.scan-preview .no-photo{width:160px;height:160px;display:flex;align-items:center;justify-content:center;border:1px dashed var(--line);border-radius:10px;color:var(--muted);text-align:center}.scan-preview-info .d{font-size:22px;font-weight:700;margin:4px 0}.scan-preview-info .pp{font-size:30px;font-weight:800;color:var(--green);margin-bottom:6px}.auth-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#4f46e5,#7c3aed);padding:20px}.auth-card{background:#fff;border-radius:16px;padding:32px;width:100%;max-width:440px;box-shadow:0 10px 40px #0003}.auth-brand{font-size:18px;font-weight:700;color:var(--brand);margin-bottom:12px}.auth-card h1{font-size:22px}.public{max-width:640px;margin:0 auto;padding:24px 16px}.public .hero{text-align:center;margin-bottom:20px}.public .big-amount{font-size:44px;font-weight:800;color:var(--green)}.portal{max-width:920px;margin:0 auto;padding:28px 20px}.print-only{display:none}.verif{max-width:760px}.scanner-video{width:100%;max-width:440px;aspect-ratio:4 / 3;object-fit:cover;background:#000;border-radius:12px;display:block}@media(max-width:760px){.app{flex-direction:column}.sidebar{width:100%;min-height:auto;flex-direction:column}.sidebar nav{flex-direction:row;flex-wrap:wrap}.sidebar nav a{flex:1 1 auto;text-align:center}.sidebar-foot{margin-top:12px}.content{padding:16px;max-width:none}.row{flex-direction:column}.grid.cols-3,.grid.cols-4{grid-template-columns:repeat(2,1fr)}.scan-preview{flex-direction:column;align-items:stretch;text-align:center}.scan-preview img,.scan-preview .no-photo{width:100%;height:auto;aspect-ratio:1}}.labels-sheet{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.label-card{border:1px dashed #999;border-radius:6px;padding:8px;text-align:center;page-break-inside:avoid}.label-card .desc{font-size:12px;font-weight:600;min-height:30px}.label-card .price{font-size:18px;font-weight:800}@media print{@page{size:A4;margin:10mm}.sidebar,.no-print{display:none!important}.print-only{display:block!important}.content,.portal{padding:0;max-width:none;margin:0}.panel{box-shadow:none;border:none}body{background:#fff}.labels-sheet{gap:4mm}.label-card{border-color:#666}}
