/* Hold Admin Panel Styles */ :root { --primary: #2563eb; --primary-hover: #1d4ed8; --danger: #dc2626; --danger-hover: #b91c1c; --warning: #f59e0b; --success: #10b981; --gray-50: #f9fafb; --gray-100: #f3f4f6; --gray-200: #e5e7eb; --gray-300: #d1d5db; --gray-500: #6b7280; --gray-700: #374151; --gray-900: #111827; } * { box-sizing: border-box; margin: 0; padding: 0; } body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; background: var(--gray-50); color: var(--gray-900); line-height: 1.5; } /* Navigation */ .nav { background: var(--gray-900); color: white; padding: 1rem 2rem; display: flex; align-items: center; gap: 2rem; } .nav-brand a { color: white; text-decoration: none; font-weight: 600; font-size: 1.25rem; } .nav-links { list-style: none; display: flex; gap: 1rem; } .nav-links a { color: var(--gray-300); text-decoration: none; padding: 0.5rem 1rem; border-radius: 0.375rem; transition: background 0.2s; } .nav-links a:hover, .nav-links a.active { background: rgba(255, 255, 255, 0.1); color: white; } .nav-user { margin-left: auto; display: flex; align-items: center; gap: 1rem; color: var(--gray-300); } /* Container */ .container { max-width: 1600px; margin: 0 auto; padding: 2rem; } /* Page Header */ .page-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 2rem; } .page-header h1 { margin: 0; } /* Buttons */ .btn { display: inline-flex; align-items: center; justify-content: center; padding: 0.5rem 1rem; border: none; border-radius: 0.375rem; font-size: 0.875rem; font-weight: 500; text-decoration: none; cursor: pointer; transition: background 0.2s; background: var(--gray-200); color: var(--gray-700); } .btn:hover { background: var(--gray-300); } .btn-primary { background: var(--primary); color: white; } .btn-primary:hover { background: var(--primary-hover); } .btn-danger { background: var(--danger); color: white; } .btn-danger:hover { background: var(--danger-hover); } .btn-sm { padding: 0.25rem 0.5rem; font-size: 0.75rem; } .btn-icon { padding: 0.375rem; line-height: 1; } .btn-icon i { width: 16px; height: 16px; } .btn i { width: 16px; height: 16px; margin-right: 0.25rem; } .btn-icon i { margin-right: 0; } .btn-block { width: 100%; } /* Cards */ .card { background: white; border-radius: 0.5rem; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); overflow: hidden; } .card-header { padding: 1rem; background: var(--gray-50); border-bottom: 1px solid var(--gray-200); } .member-header { display: flex; justify-content: space-between; align-items: center; } .member-info { display: flex; flex-direction: column; gap: 0.25rem; } .member-info strong { font-size: 1.1rem; } /* Stats Grid */ .stats-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 1rem; margin-bottom: 2rem; } .stat-card { background: white; padding: 1.5rem; border-radius: 0.5rem; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); } .stat-card h3 { font-size: 0.875rem; color: var(--gray-500); margin-bottom: 0.5rem; } .stat-value { font-size: 2rem; font-weight: 600; } .stat-detail { font-size: 0.875rem; color: var(--gray-500); } /* Sections */ .section { background: white; padding: 1.5rem; border-radius: 0.5rem; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); margin-bottom: 1.5rem; } .section h2 { font-size: 1.125rem; margin-bottom: 1rem; } /* Tables */ .table { width: 100%; border-collapse: collapse; background: white; border-radius: 0.5rem; overflow: hidden; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); } .table th, .table td { padding: 0.75rem 1rem; text-align: left; border-bottom: 1px solid var(--gray-200); } .table th { background: var(--gray-50); font-weight: 600; font-size: 0.75rem; text-transform: uppercase; color: var(--gray-500); } .table td { font-size: 0.875rem; } .table tbody tr:hover { background: var(--gray-50); } .actions { display: flex; gap: 0.25rem; justify-content: flex-end; } .actions-header { text-align: right; } .member-cell { line-height: 1.4; } .member-cell strong { color: var(--gray-900); } .did-code { font-size: 0.75rem; color: var(--gray-500); word-break: break-all; } .permissions-cell .badge { margin-right: 0.25rem; margin-bottom: 0.25rem; } .tier-limit { color: var(--gray-500); } .date-cell { white-space: nowrap; color: var(--gray-500); } /* Badges */ .badge { display: inline-block; padding: 0.125rem 0.5rem; font-size: 0.75rem; border-radius: 9999px; background: var(--gray-200); color: var(--gray-700); } .badge-tier { background: var(--primary); color: white; } .badge-gold { background: #fbbf24; color: #78350f; } /* Progress Bar */ .usage-cell { display: flex; flex-direction: column; gap: 0.25rem; } .progress-bar { width: 100%; height: 4px; background: var(--gray-200); border-radius: 2px; overflow: hidden; } .progress-fill { height: 100%; background: var(--primary); transition: width 0.3s; } .progress-fill.warning { background: var(--warning); } .progress-fill.danger { background: var(--danger); } /* Forms */ .form { max-width: 600px; } .form-group { margin-bottom: 1.5rem; } .form-group label { display: block; font-weight: 500; margin-bottom: 0.5rem; } .form-group input[type="text"], .form-group input[type="email"], .form-group select { width: 100%; padding: 0.5rem 0.75rem; border: 1px solid var(--gray-300); border-radius: 0.375rem; font-size: 1rem; } .form-group input:focus, .form-group select:focus { outline: none; border-color: var(--primary); box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1); } .form-group small { display: block; margin-top: 0.25rem; font-size: 0.75rem; color: var(--gray-500); } /* Input with lookup button */ .input-with-lookup { display: flex; gap: 0.5rem; } .input-with-lookup input { flex: 1; } .handle-lookup-result { margin-top: 0.5rem; font-size: 0.875rem; } .handle-lookup-result .success { color: var(--success); display: flex; align-items: center; gap: 0.25rem; } .handle-lookup-result .success i { width: 16px; height: 16px; } .handle-lookup-result .error { color: var(--danger); } .handle-lookup-result .warning { color: var(--warning); } .handle-lookup-result .loading { color: var(--gray-500); font-style: italic; } .checkbox-group { display: flex; flex-direction: column; gap: 0.75rem; } .checkbox { display: flex; align-items: flex-start; gap: 0.5rem; cursor: pointer; } .checkbox input { margin-top: 0.25rem; } .checkbox span { font-weight: 500; } .checkbox small { display: block; font-weight: normal; color: var(--gray-500); } .form-actions { display: flex; gap: 1rem; margin-top: 2rem; } /* Toggle Settings */ .toggle-setting { display: flex; align-items: flex-start; gap: 1rem; padding: 1rem; background: var(--gray-50); border-radius: 0.375rem; margin-bottom: 1rem; cursor: pointer; } .toggle-setting input { margin-top: 0.25rem; } .toggle-label strong { display: block; } .toggle-label small { color: var(--gray-500); } /* Info List */ .info-list { display: grid; grid-template-columns: auto 1fr; gap: 0.5rem 1rem; } .info-list dt { font-weight: 500; color: var(--gray-500); } .info-list dd { font-family: monospace; } /* Flash Messages */ .flash { padding: 1rem; border-radius: 0.375rem; margin-bottom: 1rem; } .flash-success { background: #d1fae5; color: #065f46; } .flash-error { background: #fee2e2; color: #991b1b; } .flash-warning { background: #fef3c7; color: #92400e; } .flash-info { background: #dbeafe; color: #1e40af; } /* Empty State */ .empty { text-align: center; padding: 2rem; color: var(--gray-500); } /* Loading */ .loading { color: var(--gray-500); font-style: italic; } /* Note */ .note { padding: 1rem; background: var(--gray-100); border-radius: 0.375rem; color: var(--gray-500); font-style: italic; } /* Footer */ .footer { text-align: center; padding: 2rem; color: var(--gray-500); font-size: 0.875rem; } .footer code { font-size: 0.75rem; background: var(--gray-200); padding: 0.125rem 0.375rem; border-radius: 0.25rem; } /* Login Page */ .login-page { background: var(--gray-100); min-height: 100vh; display: flex; align-items: center; justify-content: center; } .login-container { width: 100%; max-width: 400px; padding: 1rem; } .login-card { background: white; padding: 2rem; border-radius: 0.5rem; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); } .login-card h1 { text-align: center; margin-bottom: 0.5rem; } .login-subtitle { text-align: center; color: var(--gray-500); margin-bottom: 1.5rem; } .login-form .form-group { margin-bottom: 1rem; } .login-note { text-align: center; font-size: 0.875rem; color: var(--gray-500); margin-top: 1rem; } .login-footer { text-align: center; margin-top: 2rem; color: var(--gray-500); font-size: 0.75rem; } /* Error Page */ .error-page { text-align: center; padding: 4rem 2rem; } .error-message { color: var(--danger); margin: 1rem 0 2rem; } /* Tier Chart */ .tier-chart { display: flex; flex-direction: column; gap: 0.5rem; } .tier-bar { display: flex; justify-content: space-between; padding: 0.5rem 1rem; background: var(--gray-100); border-radius: 0.25rem; } .tier-name { font-weight: 500; } .tier-count { color: var(--gray-500); } /* Code */ code { font-family: "SF Mono", Monaco, "Cascadia Mono", "Segoe UI Mono", "Roboto Mono", monospace; font-size: 0.875em; background: var(--gray-100); padding: 0.125rem 0.25rem; border-radius: 0.25rem; } /* Responsive */ @media (max-width: 768px) { .nav { flex-wrap: wrap; padding: 1rem; } .nav-links { order: 3; width: 100%; justify-content: center; margin-top: 0.5rem; } .container { padding: 1rem; } .page-header { flex-direction: column; align-items: flex-start; gap: 1rem; } .table { display: block; overflow-x: auto; } }