1 line
4.4 KiB
CSS
1 line
4.4 KiB
CSS
:root{--bg-primary:#0f172a;--bg-secondary:#1e293b;--bg-tertiary:#334155;--text-primary:#f1f5f9;--text-secondary:#cbd5e1;--text-muted:#94a3b8;--accent:#3b82f6;--accent-hover:#2563eb;--success:#10b981;--warning:#f59e0b;--error:#ef4444;--border:#334155;--shadow:rgba(0,0,0,0.3)}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;background:var(--bg-primary);color:var(--text-primary);line-height:1.6}#root{min-height:100vh}.app-container{max-width:1600px;margin:0 auto;padding:2rem}.app-header{margin-bottom:2rem}.app-header h1{font-size:2rem;font-weight:700;margin-bottom:0.5rem}.subtitle{color:var(--text-secondary);font-size:1rem}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;margin-bottom:2rem}.stat-card{background:var(--bg-secondary);padding:1.5rem;border-radius:0.75rem;border:1px solid var(--border);transition:transform 0.2s,box-shadow 0.2s}.stat-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px var(--shadow)}.stat-value{font-size:2.5rem;font-weight:700;color:var(--accent)}.stat-label{color:var(--text-secondary);font-size:0.875rem;margin-top:0.5rem}.search-container{margin-bottom:2rem}.search-input{width:100%;padding:0.875rem 1rem;background:var(--bg-secondary);border:1px solid var(--border);border-radius:0.5rem;color:var(--text-primary);font-size:1rem;transition:border-color 0.2s}.search-input:focus{outline:none;border-color:var(--accent)}.grid-container{background:var(--bg-secondary);border:1px solid var(--border);border-radius:0.75rem;overflow:auto}.grid-table{width:100%;border-collapse:collapse}.grid-table thead{background:var(--bg-tertiary);position:sticky;top:0}.grid-table th{padding:1rem;text-align:left;font-weight:600;border-bottom:2px solid var(--border);white-space:nowrap}.grid-table td{padding:0.875rem 1rem;border-bottom:1px solid var(--border);transition:background 0.2s}.grid-table tbody tr:hover{background:var(--bg-tertiary)}.grid-table tbody tr:last-child td{border-bottom:none}.grid-table td input{width:100%;padding:0.5rem;background:var(--bg-primary);border:1px solid var(--accent);border-radius:0.25rem;color:var(--text-primary);font-size:0.875rem}.badge{padding:0.25rem 0.75rem;border-radius:1rem;font-size:0.75rem;font-weight:600;text-transform:uppercase;display:inline-block}.badge-active{background:rgba(16,185,129,0.2);color:var(--success)}.badge-inactive{background:rgba(148,163,184,0.2);color:var(--text-muted)}.badge-pending{background:rgba(245,158,11,0.2);color:var(--warning)}.empty-state{text-align:center;padding:4rem 2rem}.empty-icon{font-size:4rem;margin-bottom:1rem}.empty-state h3{font-size:1.5rem;margin-bottom:0.5rem}.empty-state p{color:var(--text-secondary)}.toast-container{position:fixed;top:1rem;right:1rem;z-index:1000;display:flex;flex-direction:column;gap:0.5rem}.toast{background:var(--bg-secondary);border:1px solid var(--border);border-radius:0.5rem;padding:1rem 1.5rem;min-width:250px;box-shadow:0 4px 12px var(--shadow);animation:slideIn 0.3s ease-out}.toast-success{border-left:4px solid var(--success)}.toast-error{border-left:4px solid var(--error)}.toast-info{border-left:4px solid var(--accent)}@keyframes slideIn{from{transform:translateX(100%);opacity:0}to{transform:translateX(0);opacity:1}}.shimmer{background:linear-gradient(90deg,var(--bg-secondary) 0%,var(--bg-tertiary) 50%,var(--bg-secondary) 100%);background-size:200% 100%;animation:shimmer 1.5s infinite}@keyframes shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}.loading-skeleton{padding:2rem}.skeleton-header{height:3rem;border-radius:0.5rem;margin-bottom:2rem}.skeleton-content{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:1rem}.skeleton-card{height:150px;border-radius:0.75rem}.error-boundary{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;padding:2rem;text-align:center}.error-boundary h1{font-size:2rem;margin-bottom:1rem;color:var(--error)}.error-boundary button{margin-top:1rem;padding:0.75rem 1.5rem;background:var(--accent);color:white;border:none;border-radius:0.5rem;cursor:pointer;font-size:1rem;transition:background 0.2s}.error-boundary button:hover{background:var(--accent-hover)}@media (max-width:768px){.app-container{padding:1rem}.stats-grid{grid-template-columns:1fr}.app-header h1{font-size:1.5rem}.grid-container{overflow-x:auto}.grid-table{min-width:800px}} |