@import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&display=swap");:root{--bg:#060a10;--bg-raised:#0c1018;--card:#0f1520;--card-hover:#131b28;--muted:#1c2738;--border:#1e2d42;--border-bright:#2a3f5c;--text:#e8ecf2;--subtext:#8896a8;--text-bright:#f1f5fb;--primary:#6366f1;--primary-light:#818cf8;--primary-glow:rgba(99,102,241,.18);--accent:#06b6d4;--accent-light:#22d3ee;--danger:#f43f5e;--danger-light:#fb7185;--success:#10b981;--success-light:#34d399;--warning:#f59e0b;--warning-light:#fbbf24;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--radius-xl:22px;--radius-pill:999px;--shadow-sm:0 1px 3px rgba(0,0,0,.24),0 1px 2px rgba(0,0,0,.18);--shadow-md:0 4px 16px rgba(0,0,0,.32),0 1px 4px rgba(0,0,0,.2);--shadow-lg:0 10px 40px rgba(0,0,0,.4),0 2px 8px rgba(0,0,0,.22);--shadow-xl:0 20px 60px rgba(0,0,0,.45),0 4px 14px rgba(0,0,0,.25);--shadow-glow:0 0 30px var(--primary-glow),0 0 60px rgba(99,102,241,.08);--shadow-glow-cyan:0 0 24px rgba(6,182,212,.12),0 0 50px rgba(6,182,212,.06);--ease-out:cubic-bezier(0.16,1,0.3,1);--ease-spring:cubic-bezier(0.34,1.56,0.64,1);--dur-fast:.12s;--dur-normal:.22s;--dur-smooth:.35s}*,:after,:before{box-sizing:border-box}body,html{height:100%;margin:0}body{font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,Apple Color Emoji,Segoe UI Emoji,sans-serif;color:var(--text);background:var(--bg);background-image:radial-gradient(ellipse 1200px 700px at 0 0,rgba(99,102,241,.06),transparent 60%),radial-gradient(ellipse 1000px 600px at 100% 0,rgba(6,182,212,.05),transparent 60%),radial-gradient(ellipse 800px 800px at 50% 100%,rgba(99,102,241,.03),transparent 60%);background-attachment:fixed;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.nn-card{background:linear-gradient(145deg,rgba(15,21,32,.92),rgba(12,16,24,.88));border:1px solid var(--border);border-radius:var(--radius-lg);backdrop-filter:blur(12px) saturate(1.2);-webkit-backdrop-filter:blur(12px) saturate(1.2);box-shadow:var(--shadow-md),inset 0 1px 0 rgba(255,255,255,.04),inset 0 0 0 1px rgba(255,255,255,.02);transition:box-shadow var(--dur-normal) var(--ease-out),border-color var(--dur-normal) var(--ease-out)}.nn-btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;height:44px;padding:0 18px;border-radius:var(--radius-md);border:1px solid transparent;font-weight:700;font-size:.875rem;letter-spacing:.3px;cursor:pointer;transition:transform var(--dur-fast) var(--ease-spring),box-shadow var(--dur-normal) var(--ease-out),background var(--dur-normal) var(--ease-out),border-color var(--dur-normal) var(--ease-out),filter var(--dur-normal) var(--ease-out);position:relative;overflow:hidden}.nn-btn:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(255,255,255,.06),transparent 60%);pointer-events:none;border-radius:inherit}.nn-btn:hover{transform:translateY(-1px);filter:brightness(1.08)}.nn-btn:active{transform:translateY(1px) scale(.98);filter:brightness(.95)}.nn-btn:disabled{opacity:.5;cursor:not-allowed;transform:none;filter:none}.nn-btn-primary{color:#fff;background:linear-gradient(135deg,var(--primary),#4f46e5);box-shadow:0 6px 20px rgba(99,102,241,.28),inset 0 1px 0 rgba(255,255,255,.1)}.nn-btn-primary:hover{box-shadow:0 10px 32px rgba(99,102,241,.38),inset 0 1px 0 rgba(255,255,255,.12)}.nn-btn-ghost{color:var(--text);background:var(--bg-raised);border-color:var(--border)}.nn-btn-ghost:hover{background:var(--card-hover);border-color:var(--border-bright)}.nn-btn-danger{color:#fff;background:linear-gradient(135deg,var(--danger),#e11d48);box-shadow:0 6px 20px rgba(244,63,94,.22)}.nn-btn-danger:hover{box-shadow:0 10px 28px rgba(244,63,94,.32)}.nn-btn-success{color:#fff;background:linear-gradient(135deg,var(--success),#059669);box-shadow:0 6px 20px rgba(16,185,129,.22)}.nn-icon-btn{width:42px;height:42px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-md);background:var(--bg-raised);border:1px solid var(--border);color:var(--subtext);cursor:pointer;transition:all var(--dur-normal) var(--ease-out);position:relative}.nn-icon-btn:hover{background:var(--card-hover);color:var(--text-bright);border-color:var(--border-bright);box-shadow:var(--shadow-sm)}.nn-icon-btn:active{transform:translateY(1px) scale(.96)}.nn-table{width:100%;border-collapse:separate;border-spacing:0}.nn-table thead th{text-align:left;font-weight:800;font-size:.82rem;letter-spacing:.5px;text-transform:uppercase;padding:14px 16px;color:var(--subtext);background:rgba(6,10,16,.8);position:sticky;top:0;z-index:1;border-bottom:2px solid var(--border);backdrop-filter:blur(8px)}.nn-table tbody td{padding:14px 16px;border-bottom:1px solid rgba(30,45,66,.5);color:var(--text)}.nn-table tbody td,.nn-tr{transition:background var(--dur-fast) var(--ease-out)}.nn-tr:hover{background:rgba(99,102,241,.04)}.badge{display:inline-flex;align-items:center;gap:.4rem;padding:5px 12px;border-radius:var(--radius-pill);font-weight:700;font-size:.78rem;border:1px solid transparent;letter-spacing:.2px}.badge-success{color:var(--success-light);background:rgba(16,185,129,.1);border-color:rgba(16,185,129,.25)}.badge-warn{color:var(--warning-light);background:rgba(245,158,11,.08);border-color:rgba(245,158,11,.2)}.badge-danger{color:var(--danger-light);background:rgba(244,63,94,.08);border-color:rgba(244,63,94,.2)}.nn-input,.nn-select,.nn-textarea{width:100%;color:var(--text);background:var(--bg-raised);border:1.5px solid var(--border);border-radius:var(--radius-md);padding:12px 14px;outline:none;font-size:.9rem;transition:border-color var(--dur-normal) var(--ease-out),box-shadow var(--dur-normal) var(--ease-out),background var(--dur-normal) var(--ease-out)}.nn-input:focus,.nn-select:focus,.nn-textarea:focus{border-color:var(--primary-light);box-shadow:0 0 0 3px var(--primary-glow);background:rgba(15,21,32,.95)}.nn-input::placeholder{color:rgba(136,150,168,.5)}label{color:var(--subtext);font-size:.85rem;font-weight:600;margin-bottom:.5rem;display:inline-block;letter-spacing:.2px}.modal-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.65);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:50;animation:nn-backdrop-in .2s ease-out}@keyframes nn-backdrop-in{0%{opacity:0}to{opacity:1}}.modal{width:100%;max-width:480px;border-radius:var(--radius-xl);padding:24px;animation:nn-modal-in .25s var(--ease-spring)}@keyframes nn-modal-in{0%{opacity:0;transform:scale(.92) translateY(10px)}to{opacity:1;transform:scale(1) translateY(0)}}.modal-success{border:1px solid rgba(16,185,129,.25);background:linear-gradient(180deg,rgba(16,185,129,.06),var(--card))}.modal-fail{border:1px solid rgba(244,63,94,.25);background:linear-gradient(180deg,rgba(244,63,94,.06),var(--card))}.text-dim{color:var(--subtext)}.page-wrap{padding:24px}.page-title{font-weight:900;font-size:1.6rem;letter-spacing:.2px;margin-bottom:18px;background:linear-gradient(135deg,var(--text-bright),var(--subtext));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.section-title{font-weight:800;font-size:1.1rem;margin:6px 0 12px;color:var(--text-bright)}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.grid{display:grid;gap:16px}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}@media (max-width:860px){.grid-2{grid-template-columns:1fr}}.skeleton{background:linear-gradient(90deg,rgba(99,102,241,.04) 25%,rgba(99,102,241,.08) 50%,rgba(99,102,241,.04) 75%);background-size:200% 100%;animation:nn-skeleton 1.5s ease-in-out infinite;border-radius:var(--radius-md)}@keyframes nn-skeleton{0%{background-position:200% 0}to{background-position:-200% 0}}.category-grid .nn-table td.name-cell,.category-grid .nn-table th.name-cell{white-space:normal!important;overflow-wrap:anywhere;word-break:break-word;max-width:36ch}.nn-select{min-height:44px;padding:10px 40px 10px 14px;background:var(--bg-raised);border:1.5px solid var(--border);color:var(--text);border-radius:var(--radius-md);-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%238896a8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' xmlns='http://www.w3.org/2000/svg'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;background-size:18px 18px;transition:border-color var(--dur-normal) var(--ease-out),box-shadow var(--dur-normal) var(--ease-out),background var(--dur-normal) var(--ease-out)}.nn-select:hover{border-color:var(--border-bright)}.nn-select:focus{outline:none;border-color:var(--primary-light);box-shadow:0 0 0 3px var(--primary-glow)}.nn-select::-ms-expand{display:none}.nn-select option{background:var(--bg-raised);color:var(--text)}.nn-select:disabled{opacity:.5;cursor:not-allowed}.nn-select[data-fit]{width:auto;max-width:100%}.nn-select.is-invalid{border-color:var(--danger);box-shadow:0 0 0 3px rgba(244,63,94,.15)}@keyframes nn-fade-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.nn-fade-in{animation:nn-fade-in .3s var(--ease-out)}@keyframes nn-scale-in{0%{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}.nn-scale-in{animation:nn-scale-in .25s var(--ease-spring)}@keyframes nn-slide-up{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.nn-slide-up{animation:nn-slide-up .3s var(--ease-out)}@keyframes nn-pulse-glow{0%,to{box-shadow:0 0 0 0 rgba(244,63,94,.25)}50%{box-shadow:0 0 16px 6px rgba(244,63,94,.15)}}.nn-pulse-glow{animation:nn-pulse-glow 2.5s ease-in-out infinite}@keyframes nn-toast-in{0%{opacity:0;transform:translateX(-50%) translateY(-12px) scale(.95)}to{opacity:1;transform:translateX(-50%) translateY(0) scale(1)}}@keyframes nn-toast-out{0%{opacity:1}to{opacity:0;transform:translateX(-50%) translateY(-10px)}}.nn-card-interactive{cursor:pointer;transition:transform var(--dur-fast) var(--ease-spring),box-shadow var(--dur-normal) var(--ease-out),border-color var(--dur-normal) var(--ease-out)}.nn-card-interactive:hover{transform:translateY(-3px);box-shadow:var(--shadow-lg),0 0 20px rgba(99,102,241,.06);border-color:rgba(99,102,241,.2)}.nn-card-interactive:active{transform:translateY(0)}.nn-status-dot{width:9px;height:9px;border-radius:50%;display:inline-block;flex-shrink:0}.nn-status-dot--online{background:var(--success);box-shadow:0 0 8px rgba(16,185,129,.6),0 0 16px rgba(16,185,129,.2)}.nn-status-dot--offline{background:#4b5563}.nn-status-dot--pulse{animation:nn-dot-pulse 2s ease-in-out infinite}@keyframes nn-dot-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.85)}}::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:rgba(99,102,241,.2);border-radius:10px;transition:background .2s ease}::-webkit-scrollbar-thumb:hover{background:rgba(99,102,241,.35)}.nn-text-wrap{overflow-wrap:anywhere;word-break:break-word;white-space:normal}.nn-divider{height:1px;background:linear-gradient(90deg,transparent,var(--border),transparent);border:none;margin:14px 0}.nn-printer-status{display:inline-flex;align-items:center;gap:6px;padding:5px 12px;border-radius:var(--radius-pill);font-size:12px;font-weight:700;letter-spacing:.2px;border:1px solid transparent}.nn-printer-status--online{color:var(--success-light);background:rgba(16,185,129,.08);border-color:rgba(16,185,129,.2)}.nn-printer-status--offline{color:var(--danger-light);background:rgba(244,63,94,.06);border-color:rgba(244,63,94,.18)}@keyframes nn-spin{to{transform:rotate(1turn)}}@keyframes nn-spin-pulse{0%{opacity:.6}50%{opacity:1}to{opacity:.6}}.nn-spinner{width:44px;height:44px;border-radius:50%;border:3px solid rgba(99,102,241,.15);border-top:3px solid var(--primary-light);animation:nn-spin .8s linear infinite,nn-spin-pulse 1.5s ease-in-out infinite}.nn-spinner-sm{width:24px;height:24px;border-width:2.5px}.nn-spinner-lg{width:56px;height:56px;border-width:4px}.nn-overlay{position:fixed;inset:0;z-index:9000;display:grid;place-items:center;background:rgba(6,10,16,.6);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);animation:nn-backdrop-in .2s ease-out}.nn-accent-line{height:2px;background:linear-gradient(90deg,var(--primary),var(--accent),var(--primary));background-size:200% 100%;animation:nn-accent-shift 4s ease-in-out infinite;border-radius:2px}@keyframes nn-accent-shift{0%,to{background-position:0 0}50%{background-position:100% 0}}:focus-visible{outline:2px solid var(--primary-light);outline-offset:2px}