:root{--bg-primary:#0f172a;--bg-card:#1e293b;--bg-elevated:#334155;--text-primary:#f8fafc;--text-secondary:#94a3b8;--accent:#10b981;--accent-hover:#059669;--danger:#ef4444;--warning:#f59e0b;--border:#334155;--radius:12px}*{box-sizing:border-box;margin:0;padding:0}body,html{background-color:var(--bg-primary);color:var(--text-primary);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;min-height:100vh;line-height:1.5}.app-container{max-width:900px;margin:0 auto;padding:1.25rem}.header-bar{flex-wrap:wrap;justify-content:space-between;gap:1rem;padding:1rem 1.25rem;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:1.25rem}.brand-title,.header-bar{display:flex;align-items:center}.brand-title{gap:.75rem;font-size:1.25rem;font-weight:700}.badge{display:inline-flex;align-items:center;gap:.35rem;padding:.25rem .65rem;border-radius:9999px;font-size:.75rem;font-weight:600}.badge-online{background:rgba(16,185,129,.15);color:#34d399;border:1px solid rgba(16,185,129,.35)}.badge-offline{background:rgba(245,158,11,.15);color:#fbbf24;border:1px solid rgba(245,158,11,.35)}.badge-store{background:rgba(59,130,246,.18);color:#60a5fa;border:1px solid rgba(59,130,246,.35)}.badge-role{background:rgba(168,85,247,.18);color:#c084fc;border:1px solid rgba(168,85,247,.35)}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem;margin-bottom:1.25rem}.card-title{font-size:1.1rem;font-weight:600;margin-bottom:1rem;display:flex;align-items:center;justify-content:space-between}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));grid-gap:.9rem;gap:.9rem}.form-group{display:flex;flex-direction:column;gap:.35rem;margin-bottom:.85rem}.form-label{font-size:.85rem;font-weight:500;color:var(--text-secondary)}.input,.select{background:var(--bg-primary);color:var(--text-primary);border:1px solid var(--border);border-radius:8px;padding:.65rem .85rem;font-size:.95rem;width:100%;outline:none;transition:border-color .15s ease}.input:focus,.select:focus{border-color:var(--accent)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;padding:.6rem 1.1rem;border-radius:8px;font-size:.9rem;font-weight:600;cursor:pointer;border:1px solid transparent;transition:all .15s ease}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--accent);color:#06281e}.btn-primary:hover:not(:disabled){background:var(--accent-hover);color:#ffffff}.btn-secondary{background:var(--bg-elevated);color:var(--text-primary);border-color:var(--border)}.btn-secondary:hover:not(:disabled){background:#475569}.btn-danger{background:rgba(239,68,68,.15);color:#f87171;border-color:rgba(239,68,68,.35)}.btn-danger:hover:not(:disabled){background:rgba(239,68,68,.3)}.btn-sm{padding:.35rem .7rem;font-size:.8rem}.store-chips{display:flex;flex-wrap:wrap;gap:.45rem;margin-top:.4rem}.store-chip{padding:.3rem .7rem;border-radius:999px;font-size:.8rem;border:1px solid var(--border);background:var(--bg-primary);color:var(--text-secondary);cursor:pointer}.store-chip.active{background:var(--accent);color:#052e16;border-color:var(--accent);font-weight:600}.item-list{display:flex;flex-direction:column;gap:.75rem}.item-row{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.9rem 1rem;background:var(--bg-primary);border:1px solid var(--border);border-radius:10px}.item-row.checked{opacity:.6}.item-main{display:flex;align-items:center;gap:.85rem;flex:1 1}.item-checkbox{width:22px;height:22px;accent-color:var(--accent);cursor:pointer}.item-thumb{width:56px;height:56px;object-fit:cover;border-radius:8px;border:1px solid var(--border);cursor:pointer;flex-shrink:0}.modal-backdrop{position:fixed;inset:0;background:rgba(2,6,23,.8);display:flex;align-items:center;justify-content:center;padding:1rem;z-index:50}.modal-content{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);max-width:480px;width:100%;padding:1.5rem}.table-wrapper{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:.9rem}td,th{text-align:left;padding:.65rem .75rem;border-bottom:1px solid var(--border)}th{color:var(--text-secondary);font-weight:600}.alert{padding:.75rem 1rem;border-radius:8px;margin-bottom:1rem;font-size:.9rem}.alert-error{background:rgba(239,68,68,.15);border:1px solid rgba(239,68,68,.4);color:#fca5a5}.alert-success{background:rgba(16,185,129,.15);border:1px solid rgba(16,185,129,.4);color:#6ee7b7}