.login-container{display:flex;justify-content:center;align-items:center;height:100%;width:100%;position:absolute;top:0;left:0}.login-card{background:linear-gradient(135deg,#4f46e5,#3b82f6);padding:50px 40px;border-radius:16px;box-shadow:0 20px 50px #00000026;width:100%;max-width:400px;text-align:center}.login-card h1{font-size:28px;margin-bottom:30px;color:#fff}.login-card input{width:100%;padding:14px 12px;margin-bottom:15px;border:1px solid var(--border-primary);border-radius:10px;font-size:16px;outline:none;background-color:var(--bg-secondary);color:var(--text-primary);transition:.3s}.login-card input:focus{border-color:var(--bg-accent);box-shadow:0 0 8px #4f46e533}.login-card button{width:100%;padding:14px;margin-top:10px;background:#fff;color:#4f46e5;font-size:16px;font-weight:600;border:none;border-radius:10px;cursor:pointer;transition:.3s}.login-card button:hover{background:#f0f0f0}.login-card button:disabled{opacity:.7;cursor:not-allowed}.error-message{background:var(--danger-bg);color:var(--danger-text);padding:10px;border-radius:8px;margin-bottom:15px;font-weight:500}.success-message{background:var(--success-bg);color:var(--success-text);padding:10px;border-radius:8px;margin-bottom:15px;font-weight:500}.extra-links{margin-top:20px}.extra-links a{color:#fff;font-weight:500;text-decoration:none;font-size:.9rem}.extra-links a:hover{text-decoration:underline}.dashboard-container{max-width:1200px;margin:0 auto;padding:2rem}.dashboard-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem;border-bottom:1px solid var(--border-primary);padding-bottom:1rem}.dashboard-header h2{margin:0;font-size:2rem;color:var(--text-primary)}.netbox-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1.5rem}.netbox-card{background:var(--bg-secondary);border-radius:12px;border:1px solid var(--border-primary);box-shadow:0 4px 12px #0000000d;padding:1.5rem;display:flex;flex-direction:column;transition:transform .2s ease,box-shadow .2s ease}.netbox-card:hover{transform:translateY(-4px);box-shadow:0 8px 20px #00000014}.netbox-card h3{margin:0 0 .5rem;color:var(--text-primary)}.netbox-url{font-size:.9rem;color:var(--text-secondary);word-break:break-all;flex-grow:1;margin-bottom:1.5rem}.form-card{grid-column:1 / -1;margin-bottom:1.5rem}.form-card form{display:flex;flex-direction:column;gap:1rem}.form-card input{width:100%;padding:12px;border:1px solid var(--border-primary);border-radius:8px;font-size:1rem;background-color:var(--bg-primary);color:var(--text-primary)}.form-buttons{display:flex;gap:1rem;margin-top:.5rem}.btn{padding:.75rem 1rem;border:1px solid var(--border-primary);border-radius:8px;font-weight:600;cursor:pointer;transition:background-color .2s ease,transform .1s ease;background-color:var(--bg-secondary);color:var(--text-primary)}.btn:hover{background-color:var(--bg-primary)}.btn:active{transform:scale(.98)}.btn.primary{background:var(--bg-accent);color:var(--text-on-accent);border-color:var(--bg-accent)}.btn.primary:hover{background:var(--bg-accent-hover)}.btn.danger{background:var(--danger-bg);color:var(--danger-text);border-color:var(--danger-bg)}.btn.danger:hover{opacity:.8}.netbox-buttons{display:grid;grid-template-columns:1fr 1fr;gap:.75rem;margin-top:auto}.netbox-buttons .full-width{grid-column:1 / -1}.no-netbox-message{color:var(--text-secondary);font-style:italic;grid-column:1 / -1}.search-input{width:100%;padding:10px 12px;border:1px solid var(--border-primary);border-radius:8px;font-size:.95rem;background-color:var(--bg-secondary);color:var(--text-primary);transition:border-color .2s,box-shadow .2s}.admin-form-select{width:100%;padding:12px;border:1px solid var(--border-primary);border-radius:8px;font-size:1rem;background-color:var(--bg-primary);color:var(--text-primary)}.nbv-root{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;overflow:hidden;background:#000}.nbv-bar{position:fixed;top:0;left:0;right:0;height:56px;display:flex;align-items:center;justify-content:space-between;padding:6px 12px;gap:12px;transform:translateY(-120%);transition:transform .24s cubic-bezier(.2,.9,.2,1),opacity .16s;background:#141414d9;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);box-shadow:0 8px 20px #00000073;z-index:9999;opacity:0}.nbv-bar--visible{transform:translateY(0);opacity:1}.nbv-left,.nbv-right{display:flex;align-items:center;gap:12px}.nbv-title{color:#fff;font-weight:700;font-size:15px;max-width:60vw;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nbv-btn{background:#ffffff14;color:#fff;border:1px solid rgba(255,255,255,.15);padding:8px 12px;border-radius:8px;font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:center}.nbv-btn.pin.pinned{background:#111;border-color:#ffdd57;color:#ffdd57}.nbv-hotspot{position:fixed;top:0;left:0;right:0;height:8px;z-index:9998}.nbv-iframe{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;border:none;z-index:0}.viewer-status{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:18px;color:#ddd;background:#111;z-index:10000}.viewer-error{color:#ffb4b4}.admin-container{max-width:1200px;margin:0 auto;padding:2rem}.admin-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem;border-bottom:1px solid var(--border-primary);padding-bottom:1rem}.admin-header h2{margin:0;font-size:2rem;color:var(--text-primary)}.admin-card{background:var(--bg-secondary);border-radius:12px;border:1px solid var(--border-primary);box-shadow:0 4px 12px #0000000d;padding:1.5rem 2rem;margin-bottom:2rem}.admin-card h3{margin:0 0 1.5rem;color:var(--text-primary);border-bottom:1px solid var(--bg-primary);padding-bottom:1rem}.admin-form{display:flex;flex-direction:column;gap:1rem;max-width:500px}.admin-form input{width:100%;padding:12px;border:1px solid var(--border-primary);border-radius:8px;font-size:1rem;background-color:var(--bg-primary);color:var(--text-primary)}.user-list{list-style:none;padding:0;margin-top:1.5rem}.user-list-item{display:flex;justify-content:space-between;align-items:center;padding:1rem 0;border-bottom:1px solid var(--bg-primary)}.user-list-item:last-child{border-bottom:none}.user-info span{margin-right:1rem;padding:.25rem .5rem;border-radius:6px;font-size:.9rem;font-weight:500}.role-master{background-color:#fef3c7;color:#92400e}.role-admin{background-color:#dbeafe;color:#1e40af}.role-viewer{background-color:#e0e7ff;color:#3730a3}.status-active{color:#059669}.status-inactive{color:#9ca3af}.assignment-section{display:grid;grid-template-columns:1fr 1fr;gap:2rem;margin-top:1.5rem}.assignment-list{border:1px solid var(--border-primary);border-radius:8px;padding:1rem;height:300px;overflow-y:auto;background-color:var(--bg-primary)}.assignment-list label{display:block;padding:.5rem;border-radius:4px;cursor:pointer;color:var(--text-primary)}.assignment-list label:hover{background-color:var(--bg-secondary)}.assignment-list input{margin-right:.75rem}.message{padding:1rem;border-radius:8px;margin-bottom:1.5rem;font-weight:500}.search-input{width:100%;padding:10px 12px;margin-bottom:1rem;border:1px solid var(--border-primary);border-radius:8px;font-size:.95rem;background-color:var(--bg-primary);color:var(--text-primary);transition:border-color .2s,box-shadow .2s}.search-input:focus{outline:none;border-color:var(--bg-accent);box-shadow:0 0 0 2px #4f46e533}.user-actions{display:flex;gap:1rem;align-items:center}.role-selector{min-width:110px;padding:8px;border:1px solid var(--border-primary);border-radius:8px;background-color:var(--bg-secondary);color:var(--text-primary);cursor:pointer}.role-selector:disabled{background-color:var(--bg-primary);cursor:not-allowed;opacity:.7}.admin-form .admin-form-select,.admin-form-container .admin-form-select{width:100%;padding:12px;border:1px solid var(--border-primary);border-radius:8px;font-size:1rem;background-color:var(--bg-primary);color:var(--text-primary);-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px}body.dark-mode .admin-form .admin-form-select,body.dark-mode .admin-form-container .admin-form-select{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23dee2e6' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e")}.navbar{display:flex;justify-content:space-between;align-items:center;padding:0 40px;background:linear-gradient(135deg,#4f46e5,#3b82f6);color:#fff;box-shadow:0 4px 10px #00000026;position:fixed;width:100%;top:0;left:0;z-index:100;height:70px;box-sizing:border-box}.navbar-logo{display:flex;align-items:center;text-decoration:none;cursor:pointer}.navbar-logo-img{height:220px;width:auto;display:block}.navbar-links{display:flex;align-items:center;gap:20px}.navbar-links a{color:#fff;text-decoration:none;font-weight:600;font-size:.95rem;transition:opacity .2s}.navbar-links a:hover{opacity:.8}.navbar-logout-btn{background:#ffffff1a;border:1px solid rgba(255,255,255,.2);color:#fff;padding:8px 12px;border-radius:6px;cursor:pointer;font-weight:600;transition:background .2s}.navbar-logout-btn:hover{background:#fff3}:root{--bg-primary: #f3f4f6;--bg-secondary: #ffffff;--bg-accent: #4f46e5;--bg-accent-hover: #4338ca;--text-primary: #111827;--text-secondary: #6b7280;--text-on-accent: #ffffff;--border-primary: #d1d5db;--danger-bg: #fee2e2;--danger-text: #b91c1c;--success-bg: #d1fae5;--success-text: #065f46}body.dark-mode{--bg-primary: #111827;--bg-secondary: #1f2937;--bg-accent: #6366f1;--bg-accent-hover: #4f46e5;--text-primary: #f9fafb;--text-secondary: #9ca3af;--text-on-accent: #ffffff;--border-primary: #4b5563;--danger-bg: #450a0a;--danger-text: #fecaca;--success-bg: #064e3b;--success-text: #a7f3d0}*{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;background-color:var(--bg-primary);color:var(--text-primary);transition:background-color .2s,color .2s}.app-container{display:flex;flex-direction:column;min-height:100vh}.app-container.viewer-mode .main-content{padding-top:0}.main-content{padding-top:70px;flex-grow:1;width:100%}
