:root{--bg1:#eef2ff;--bg2:#f8fafc;--card:rgba(255,255,255,.86);--text:#0f172a;--muted:#64748b;--line:#e2e8f0;--primary:#2563eb;--primary2:#1d4ed8;--danger:#dc2626;--success:#16a34a;--warning:#d97706;--shadow:0 24px 80px rgba(15,23,42,.13);--radius:24px}*{box-sizing:border-box}body{min-height:100vh;color:var(--text);background:radial-gradient(circle at top left, rgba(59,130,246,.22), transparent 34%), radial-gradient(circle at bottom right, rgba(99,102,241,.2), transparent 35%), linear-gradient(135deg, var(--bg1), var(--bg2));margin:0;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,Microsoft YaHei,Arial,sans-serif}.app{width:min(1180px,100% - 32px);margin:0 auto;padding:34px 0}.hero{justify-content:space-between;align-items:center;gap:20px;margin-bottom:22px;display:flex}.brand{align-items:center;gap:14px;display:flex}.logo{color:#fff;letter-spacing:.5px;background:linear-gradient(135deg,#2563eb,#7c3aed);border-radius:18px;place-items:center;width:52px;height:52px;font-weight:900;display:grid;box-shadow:0 16px 30px rgba(37,99,235,.28)}h1,h2,h3,p{margin:0}h1{letter-spacing:-.04em;font-size:max(24px,min(4vw,38px))}.sub{color:var(--muted);margin-top:6px;line-height:1.6}.pill{color:#1e40af;white-space:nowrap;background:rgba(255,255,255,.66);border:1px solid rgba(37,99,235,.18);border-radius:999px;align-items:center;gap:8px;padding:10px 14px;font-size:13px;display:inline-flex}.grid{grid-template-columns:420px 1fr;align-items:start;gap:22px;display:grid}@media (max-width:920px){.grid{grid-template-columns:1fr}.hero{flex-direction:column;align-items:flex-start}}.card{background:var(--card);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-radius:var(--radius);box-shadow:var(--shadow);border:1px solid rgba(226,232,240,.8);overflow:hidden}.card-body{padding:24px}.card-title{justify-content:space-between;align-items:center;gap:12px;margin-bottom:18px;display:flex}.card-title h2,.card-title h3{letter-spacing:-.02em;font-size:20px}.auth-tabs{border:1px solid var(--line);background:#f1f5f9;border-radius:16px;grid-template-columns:1fr 1fr;margin-bottom:18px;padding:4px;display:grid}.tab{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:12px;padding:11px 10px;font-weight:700}.tab.active{color:var(--primary);background:#fff;box-shadow:0 8px 24px rgba(15,23,42,.08)}.field{margin-bottom:14px}label{color:#334155;margin-bottom:7px;font-size:13px;font-weight:700;display:block}input[type=text],input[type=password],input[type=number],input[type=file]{border:1px solid var(--line);background:rgba(255,255,255,.9);border-radius:15px;outline:none;width:100%;padding:13px 14px;font-size:15px;transition:box-shadow .15s,border .15s,transform .15s}input:focus{border-color:rgba(37,99,235,.55);box-shadow:0 0 0 4px rgba(37,99,235,.12)}.btn{cursor:pointer;color:#fff;background:linear-gradient(135deg, var(--primary), #7c3aed);border:0;border-radius:15px;width:100%;padding:13px 16px;font-size:15px;font-weight:800;transition:transform .15s,filter .15s,opacity .15s;box-shadow:0 16px 30px rgba(37,99,235,.24)}.btn:hover{filter:brightness(1.02);transform:translateY(-1px)}.btn:disabled{opacity:.56;cursor:not-allowed;transform:none}.btn.secondary{color:#1e293b;border:1px solid var(--line);box-shadow:none;background:#fff}.btn.danger{background:linear-gradient(135deg,#dc2626,#f97316)}.btn.small{width:auto;box-shadow:none;border-radius:12px;padding:9px 12px;font-size:13px}.link-btn{color:var(--primary);cursor:pointer;background:0 0;border:0;padding:0;font-weight:800}.hint{text-align:center;color:var(--muted);margin-top:13px;font-size:14px;line-height:1.6}.hidden{display:none!important}.userbar{border-bottom:1px solid var(--line);background:rgba(255,255,255,.58);justify-content:space-between;align-items:center;gap:12px;padding:16px 20px;display:flex}.avatar{color:#1d4ed8;background:#dbeafe;border-radius:14px;place-items:center;width:40px;height:40px;font-weight:900;display:grid}.user-meta{align-items:center;gap:12px;min-width:0;display:flex}.user-meta strong{display:block}.user-meta span{color:var(--muted);font-size:13px}.dropzone{text-align:center;cursor:pointer;background:rgba(37,99,235,.04);border:2px dashed rgba(37,99,235,.32);border-radius:22px;margin-bottom:16px;padding:24px;transition:background .15s,border-color .15s,transform .15s}.dropzone:hover,.dropzone.dragover{background:rgba(37,99,235,.08);border-color:rgba(37,99,235,.62);transform:translateY(-1px)}.dropzone .big{margin-bottom:8px;font-size:34px}.progress-wrap{background:#e2e8f0;border-radius:999px;height:12px;margin:16px 0 0;overflow:hidden}.progress-bar{background:linear-gradient(90deg,#2563eb,#7c3aed);border-radius:999px;width:0%;height:100%;transition:width .2s}.stats{grid-template-columns:repeat(3,1fr);gap:12px;margin-top:16px;display:grid}.stat{border:1px solid var(--line);background:rgba(255,255,255,.65);border-radius:18px;padding:14px}.stat b{letter-spacing:-.03em;font-size:24px;display:block}.stat span{color:var(--muted);font-size:13px}.log{color:#dbeafe;white-space:pre-wrap;background:#0f172a;border-radius:20px;height:390px;padding:16px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:13px;line-height:1.65;overflow:auto}.split{grid-template-columns:1fr 1fr;gap:14px;display:grid}@media (max-width:720px){.split,.stats{grid-template-columns:1fr}}.admin-tools{grid-template-columns:1fr 1fr;gap:18px;display:grid}@media (max-width:980px){.admin-tools{grid-template-columns:1fr}}table{border-collapse:collapse;border-radius:16px;width:100%;font-size:14px;overflow:hidden}th,td{border-bottom:1px solid var(--line);text-align:left;vertical-align:middle;padding:12px}th{color:#475569;text-transform:uppercase;letter-spacing:.04em;background:#f8fafc;font-size:12px}tr:last-child td{border-bottom:0}.badge{color:#334155;background:#e2e8f0;border-radius:999px;align-items:center;padding:5px 9px;font-size:12px;font-weight:800;display:inline-flex}.badge.ok{color:#166534;background:#dcfce7}.badge.used{color:#991b1b;background:#fee2e2}.badge.admin{color:#5b21b6;background:#ede9fe}.toast{color:#fff;opacity:0;z-index:20;text-align:center;background:rgba(15,23,42,.94);border-radius:16px;max-width:min(520px,100% - 32px);padding:13px 16px;font-weight:700;transition:all .22s;position:fixed;bottom:26px;left:50%;transform:translate(-50%)translateY(120px);box-shadow:0 24px 70px rgba(15,23,42,.26)}.toast.show{opacity:1;transform:translate(-50%)translateY(0)}.note{color:#92400e;background:rgba(251,191,36,.09);border:1px solid rgba(217,119,6,.22);border-radius:18px;margin-top:14px;padding:13px 14px;font-size:14px;line-height:1.55}
