:root{--primary: #4f6ef7;--primary-dark: #3b56d6;--primary-light: #eef1fe;--accent: #7c5cff;--bg: #f5f7fc;--bg-soft: #eef1f8;--card: #ffffff;--text: #1f2733;--text-soft: #4a5568;--muted: #8a94a6;--border: #eaeef5;--border-strong: #dde3ee;--danger: #f0556b;--danger-light: #fdecef;--green: #1fb978;--green-light: #e7f8f0;--warn: #e8922b;--shadow-sm: 0 1px 3px rgba(20, 30, 60, .06), 0 1px 2px rgba(20, 30, 60, .04);--shadow-md: 0 6px 20px rgba(28, 42, 84, .08);--shadow-lg: 0 18px 50px rgba(26, 38, 76, .18);--radius: 14px;--radius-sm: 10px;--radius-xs: 8px}*{box-sizing:border-box;margin:0;padding:0}html,body,#app{height:100%}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;background:var(--bg);color:var(--text);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:#cdd5e6;border-radius:8px;border:2px solid var(--bg)}::-webkit-scrollbar-thumb:hover{background:#b6c0d6}::-webkit-scrollbar-track{background:transparent}button{font-family:inherit;cursor:pointer;border:none;border-radius:var(--radius-xs);padding:9px 18px;font-size:14px;font-weight:600;transition:.18s ease;letter-spacing:.2px}button:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:linear-gradient(135deg,var(--primary),var(--accent));color:#fff;box-shadow:0 6px 16px #4f6ef752}.btn-primary:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 9px 22px #4f6ef766}.btn-ghost{background:#fff;border:1px solid var(--border-strong);color:var(--text-soft)}.btn-ghost:hover:not(:disabled){border-color:var(--primary);color:var(--primary);background:var(--primary-light)}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover:not(:disabled){filter:brightness(.95);transform:translateY(-1px)}input,select{font-family:inherit;font-size:14px;border:1px solid var(--border-strong);border-radius:var(--radius-xs);padding:11px 14px;outline:none;transition:.18s ease;width:100%;background:#fff;color:var(--text)}input::placeholder{color:#aab2c2}input:focus,select:focus{border-color:var(--primary);box-shadow:0 0 0 4px #4f6ef724;background:#fff}select{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%238a94a6' d='M6 8L2 4h8z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;padding-right:34px}.mini-btn{padding:6px 13px;font-size:13px;border-radius:8px}.login-wrap{min-height:100%;display:flex;align-items:center;justify-content:center;background:radial-gradient(1200px 600px at 15% 10%,#5a73ff 0%,transparent 55%),radial-gradient(1000px 500px at 90% 90%,#8a5cff 0%,transparent 50%),linear-gradient(135deg,#3b56d6,#4f6ef7 60%,#7c5cff);padding:24px}.login-card{width:380px;background:#fffffff5;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:20px;padding:40px 34px;box-shadow:var(--shadow-lg);border:1px solid rgba(255,255,255,.5)}.login-brand{width:60px;height:60px;border-radius:16px;margin:0 auto 18px;background:linear-gradient(135deg,var(--primary),var(--accent));display:flex;align-items:center;justify-content:center;color:#fff;font-size:26px;box-shadow:0 8px 20px #4f6ef766}.login-card h1{font-size:20px;text-align:center;margin-bottom:6px;color:var(--text);font-weight:700}.login-sub{text-align:center;color:var(--muted);font-size:13px;margin-bottom:26px}.field{margin-bottom:18px}.field label{display:block;font-size:13px;color:var(--text-soft);margin-bottom:7px;font-weight:600}.login-row{display:flex;align-items:center;gap:8px;margin-bottom:22px}.login-row input[type=checkbox]{width:auto;accent-color:var(--primary);transform:scale(1.1)}.login-card .btn-primary{width:100%;padding:12px;font-size:15px}.login-err{color:var(--danger);font-size:13px;text-align:center;margin-bottom:14px;min-height:18px}.switch-link{margin-top:18px;text-align:center;color:var(--primary);font-size:13px;cursor:pointer;font-weight:600;padding:6px;border-radius:8px;transition:.15s}.switch-link:hover{background:var(--primary-light)}.admin-wrap{display:flex;min-height:100vh}.admin-side{width:232px;background:linear-gradient(180deg,#1c2540,#232e52);color:#cfd6e2;padding:22px 0;flex-shrink:0;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;box-shadow:4px 0 24px #141c3840}.admin-logo{font-size:18px;font-weight:800;color:#fff;padding:0 24px 18px;border-bottom:1px solid rgba(255,255,255,.08);display:flex;align-items:center;gap:10px}.admin-logo .logo-dot{width:12px;height:12px;border-radius:4px;background:linear-gradient(135deg,var(--primary),var(--accent));box-shadow:0 0 12px #7c5cffcc}.admin-side nav{padding:16px 0;flex:1;overflow-y:auto}.nav-item{padding:12px 24px;cursor:pointer;font-size:14px;border-left:3px solid transparent;transition:.15s;color:#aeb8d0;font-weight:500}.nav-item:hover{background:#ffffff0f;color:#fff}.nav-item.active{background:linear-gradient(90deg,rgba(79,110,247,.22),transparent);color:#fff;border-left-color:var(--primary)}.admin-foot{padding:16px 24px;border-top:1px solid rgba(255,255,255,.08)}.admin-user{font-size:13px;color:#9aa6b8;margin-bottom:10px}.admin-main{flex:1;padding:28px 34px 60px;overflow-x:hidden;min-width:0}.admin-main h2{font-size:21px;margin-bottom:20px;font-weight:700}.admin-main h3{font-size:15px;margin-bottom:14px;font-weight:700;color:var(--text)}.section-head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:16px}.section-head>div{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.inline-input{width:auto;min-width:150px}.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:22px}.stat-card{background:var(--card);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow-sm);border:1px solid var(--border);transition:.2s ease;position:relative;overflow:hidden}.stat-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-md)}.stat-card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:linear-gradient(180deg,var(--primary),var(--accent))}.sc-num{font-size:26px;font-weight:800;color:var(--text);letter-spacing:.5px}.sc-num.green{color:var(--green)}.sc-num.warn{color:var(--warn)}.sc-label{color:var(--muted);font-size:13px;margin-top:8px}.panel{background:var(--card);border-radius:var(--radius);padding:22px;margin-bottom:18px;box-shadow:var(--shadow-sm);border:1px solid var(--border)}.panel-row{display:grid;grid-template-columns:1fr 1fr;gap:18px}.panel-row .panel{margin-bottom:0}.trend{display:flex;align-items:flex-end;gap:8px;height:170px;padding-top:10px;overflow-x:auto}.trend-bar{display:flex;flex-direction:column;align-items:center;gap:6px;flex-shrink:0}.trend-bar .bar{width:24px;background:linear-gradient(180deg,#6b82ff,var(--primary));border-radius:6px 6px 0 0;min-height:4px;transition:.2s}.trend-bar:hover .bar{filter:brightness(1.1)}.trend-bar .bar-d{font-size:11px;color:var(--muted)}.data-table{width:100%;background:var(--card);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-sm);border-collapse:collapse;border:1px solid var(--border)}.data-table th,.data-table td{padding:13px 16px;text-align:left;border-bottom:1px solid var(--border);font-size:14px}.data-table tbody tr{transition:background .15s}.data-table tbody tr:hover{background:#f8faff}.data-table tbody tr:last-child td{border-bottom:none}.data-table th{background:#f7f9fd;color:var(--muted);font-weight:700;font-size:13px;border-bottom:1px solid var(--border-strong);white-space:nowrap}.data-table td.num,.data-table th.num,.mini-table td.num,.mini-table th.num{text-align:right;font-variant-numeric:tabular-nums}.data-table .muted{color:var(--muted)}.ops{display:flex;gap:6px;flex-wrap:wrap}.badge{padding:3px 11px;border-radius:20px;font-size:12px;font-weight:600}.badge.ok{background:var(--green-light);color:var(--green)}.badge.off{background:var(--danger-light);color:var(--danger)}.stat-line{color:var(--muted);font-size:13px;margin:4px 2px 14px}.stat-line b{color:var(--text)}.mini-table{width:100%;border-collapse:collapse}.mini-table td{padding:9px 8px;border-bottom:1px solid var(--border);font-size:13px}.mini-table tr:last-child td{border-bottom:none}.mini-table td.num{color:var(--primary);font-weight:700}.pager{display:flex;align-items:center;gap:14px;justify-content:center;margin-top:16px;color:var(--muted);font-size:13px}.pager button{box-shadow:none}.settle-group{border:1px solid var(--border);border-radius:var(--radius);padding:16px;margin-bottom:14px;background:#fff;box-shadow:var(--shadow-sm)}.settle-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;flex-wrap:wrap;gap:10px}.settle-head .green{color:var(--green)}.empty{color:var(--muted);text-align:center;padding:40px 20px;border:1px dashed var(--border-strong);border-radius:var(--radius);background:#fafbfe}.modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;background:#141c3880;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;z-index:100;animation:fade .15s ease}@keyframes fade{0%{opacity:0}to{opacity:1}}.modal{background:#fff;border-radius:18px;width:400px;padding:26px;box-shadow:var(--shadow-lg);animation:pop .18s ease}@keyframes pop{0%{transform:translateY(12px) scale(.98);opacity:0}to{transform:none;opacity:1}}.modal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.modal-head h2{font-size:18px}.modal .field{margin-bottom:15px}.modal .field label{display:block;font-size:13px;color:var(--text-soft);margin-bottom:7px;font-weight:600}.modal .field select,.modal .field input{width:100%}.modal-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:10px}.close-x{background:none;border:none;font-size:22px;color:var(--muted);padding:0 4px;line-height:1}.close-x:hover{color:var(--text)}.toast{position:fixed;top:24px;left:50%;transform:translate(-50%);background:#232e52;color:#fff;padding:11px 24px;border-radius:10px;z-index:200;font-size:14px;box-shadow:var(--shadow-lg);animation:pop .2s ease;font-weight:500}.loading{text-align:center;padding:60px;color:var(--muted)}.app-wrap{max-width:1080px;margin:0 auto;padding:24px 16px 80px}.topbar{display:flex;justify-content:space-between;align-items:center;background:linear-gradient(135deg,#fff,#fbfcff);border-radius:var(--radius);padding:22px 26px;box-shadow:var(--shadow-sm);margin-bottom:18px;border:1px solid var(--border)}.quota-title{font-size:22px;font-weight:800}.quota-title small{font-size:14px;font-weight:600;color:var(--primary);margin-left:8px;background:var(--primary-light);padding:3px 12px;border-radius:20px}.quota-hint{color:var(--muted);font-size:13px;margin-top:6px}.topbar-actions{display:flex;gap:10px;align-items:center}.member-no{font-size:14px;color:var(--text-soft);font-weight:600;padding:6px 12px;background:var(--primary-light);border-radius:8px}.toolbar{display:flex;gap:14px;align-items:center;flex-wrap:wrap;background:var(--card);border-radius:var(--radius);padding:16px 18px;margin-bottom:16px;box-shadow:var(--shadow-sm);border:1px solid var(--border)}.date-picker{display:flex;align-items:center;gap:8px;color:var(--text-soft);font-weight:600;border:1px solid var(--border-strong);border-radius:var(--radius-xs);padding:9px 14px;cursor:pointer;background:#fff}.date-picker input{border:none;width:auto;padding:0;cursor:pointer}.search-box{flex:1;min-width:200px}.tabs{display:flex;gap:12px;margin-bottom:16px}.tab{background:var(--card);border:1px solid var(--border-strong);padding:11px 20px;border-radius:12px;display:flex;align-items:center;gap:8px;font-weight:700;color:var(--text-soft);cursor:pointer;transition:.18s ease;box-shadow:var(--shadow-sm)}.tab:hover{border-color:var(--primary)}.tab.active{border-color:var(--primary);color:var(--primary);background:var(--primary-light)}.tab strong{background:var(--primary);color:#fff;border-radius:20px;padding:1px 10px;font-size:12px}.tab.active strong{background:var(--primary)}.tip{color:var(--muted);font-size:13px;margin:10px 2px 14px}.table{background:var(--card);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-sm);border:1px solid var(--border)}.tr{display:grid;grid-template-columns:56px 1fr 110px 100px 120px;align-items:center;padding:13px 18px;border-bottom:1px solid var(--border);transition:background .15s}.tr:hover:not(.head){background:#f8faff}.tr.head{background:#f7f9fd;color:var(--muted);font-size:13px;font-weight:700;border-bottom:1px solid var(--border-strong)}.tr:last-child{border-bottom:none}.tr .qty-input{width:78px;text-align:center;padding:8px}.tr .price,.tr .subtotal{font-variant-numeric:tabular-nums;text-align:right}.tr .subtotal{font-weight:700;color:var(--text)}.tr .row-check{display:flex;align-items:center;gap:8px}.tr .row-check input{width:auto;accent-color:var(--primary);transform:scale(1.1)}.tr.head .num-col{text-align:right}.tr.head .num-col.qty-col{text-align:center}.tr .readonly-qty{display:block;text-align:center}.group:not(.settled) .tr{grid-template-columns:56px 48px 1fr 100px 90px 120px}.group:not(.settled) .tr .qty-input{width:70px}.group.settled .tr{grid-template-columns:56px 1fr 110px 100px 120px}.footer-bar{position:sticky;bottom:0;background:#ffffffeb;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-radius:var(--radius);padding:15px 20px;margin-top:14px;display:flex;justify-content:space-between;align-items:center;box-shadow:0 -4px 18px #141e3c12;border:1px solid var(--border)}.footer-bar .totals{display:flex;gap:26px;font-size:14px;color:var(--text-soft)}.footer-bar .totals b{color:var(--primary);font-size:16px}.batch-bar{display:flex;align-items:center;gap:12px;margin:8px 2px;font-size:13px;color:var(--text-soft)}.group{background:var(--card);border-radius:var(--radius);padding:18px;margin-bottom:14px;box-shadow:var(--shadow-sm);border:1px solid var(--border)}.group.settled{background:#fafbfe;border-color:var(--border-strong);border-left:4px solid var(--green)}.group-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;flex-wrap:wrap;gap:10px}.group-head .g-date{font-weight:800;font-size:16px;color:var(--text)}.group-head .g-total{color:var(--green);font-weight:700}.badge-settled{background:var(--green-light);color:var(--green);padding:3px 12px;border-radius:20px;font-size:12px;font-weight:700}.readonly-qty{font-weight:700;color:var(--text-soft);font-variant-numeric:tabular-nums}.cat-title{font-weight:700;margin:16px 2px 10px;font-size:14px;color:var(--text-soft)}.cat-count{color:var(--muted);font-weight:500;font-size:13px;margin-left:6px}@media (max-width: 720px){.admin-side{display:none}.stat-grid{grid-template-columns:repeat(2,1fr)}.panel-row{grid-template-columns:1fr}.admin-main{padding:18px 14px 50px}}
