/* Indiko - Consolidated Styles */ /* CSS Variables */ :root { --mahogany: #26242b; --lavender: #d9d0de; --old-rose: #bc8da0; --rosewood: #a04668; --berry-crush: #ab4967; } /* Reset */ * { margin: 0; padding: 0; box-sizing: border-box; } /* Base */ body { font-family: "Space Grotesk", sans-serif; background: var(--mahogany); color: var(--lavender); min-height: 100vh; display: flex; flex-direction: column; align-items: center; padding: 2.5rem 1.25rem; } /* Typography */ h1 { font-size: 2rem; font-weight: 700; background: linear-gradient( 135deg, var(--old-rose), var(--berry-crush), var(--rosewood) ); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; letter-spacing: -0.125rem; } h2 { font-size: 1.5rem; font-weight: 600; color: var(--lavender); margin-bottom: 1.5rem; letter-spacing: -0.05rem; } .subtitle { color: var(--old-rose); font-size: 1rem; font-weight: 300; letter-spacing: 0.05rem; } /* Links */ a { color: var(--berry-crush); text-decoration: none; transition: color 0.2s; } a:hover { color: var(--rosewood); text-decoration: underline; } /* Forms */ label { display: block; color: var(--old-rose); font-size: 0.875rem; font-weight: 500; margin-bottom: 0.5rem; text-transform: uppercase; letter-spacing: 0.05rem; } input[type="text"], input[type="email"], input[type="url"], input[type="number"], input[type="password"], input[type="datetime-local"], textarea { width: 100%; padding: 0.875rem 1rem; background: rgba(12, 23, 19, 0.6); border: 2px solid var(--rosewood); border-radius: 0; color: var(--lavender); font-size: 1rem; font-family: "Space Grotesk", sans-serif; transition: border-color 0.2s; letter-spacing: 0.025rem; } input:focus, textarea:focus { outline: none; border-color: var(--berry-crush); background: rgba(12, 23, 19, 0.8); } input::placeholder, textarea::placeholder { color: rgba(217, 208, 222, 0.4); } input:disabled, textarea:disabled { opacity: 0.5; cursor: not-allowed; } textarea { resize: vertical; min-height: 4rem; } .form-group { margin-bottom: 1.5rem; } .form-help { font-size: 0.75rem; color: var(--old-rose); margin-top: 0.25rem; } /* Buttons */ button { position: relative; padding: 1rem 2rem; background: var(--berry-crush); color: var(--lavender); border: 4px solid var(--mahogany); border-radius: 0; font-size: 1rem; font-weight: 700; cursor: pointer; font-family: "Space Grotesk", sans-serif; transition: all 0.15s ease; text-transform: uppercase; letter-spacing: 0.1rem; box-shadow: 6px 6px 0 var(--mahogany); } button::before { content: ""; position: absolute; top: -4px; left: -4px; right: -4px; bottom: -4px; background: transparent; border: 4px solid var(--rosewood); pointer-events: none; transition: all 0.15s ease; } button:hover:not(:disabled) { transform: translate(3px, 3px); box-shadow: 3px 3px 0 var(--mahogany); } button:hover:not(:disabled)::before { top: -7px; left: -7px; right: -7px; bottom: -7px; } button:active:not(:disabled) { transform: translate(6px, 6px); box-shadow: 0 0 0 var(--mahogany); } button:disabled { opacity: 0.5; cursor: not-allowed; } .secondary-btn, .button-secondary { background: transparent; color: var(--old-rose); box-shadow: 4px 4px 0 var(--mahogany); } .secondary-btn::before, .button-secondary::before { border-color: var(--old-rose); } .secondary-btn:hover:not(:disabled), .button-secondary:hover:not(:disabled) { background: rgba(188, 141, 160, 0.1); } /* Small action buttons - clean style with subtle backgrounds */ .btn-edit, .btn-delete, .btn-copy, .btn-disable, .revoke-btn { padding: 0.5rem 1rem; font-family: "Space Grotesk", sans-serif; font-size: 0.875rem; font-weight: 600; cursor: pointer; transition: all 0.2s; text-transform: none; letter-spacing: normal; box-shadow: none; position: static; border: 2px solid transparent; } .btn-edit::before, .btn-delete::before, .btn-copy::before, .btn-disable::before, .revoke-btn::before { display: none; } .btn-edit:hover:not(:disabled), .btn-delete:hover:not(:disabled), .btn-copy:hover:not(:disabled), .btn-disable:hover:not(:disabled), .revoke-btn:hover:not(:disabled) { transform: none; } .btn-edit { background: rgba(188, 141, 160, 0.2); color: var(--lavender); border: 2px solid var(--old-rose); } .btn-edit:hover:not(:disabled) { background: rgba(188, 141, 160, 0.3); } .btn-delete, .revoke-btn { background: rgba(160, 70, 104, 0.2); color: var(--lavender); border: 2px solid var(--rosewood); } .btn-delete:hover:not(:disabled), .revoke-btn:hover:not(:disabled) { background: rgba(160, 70, 104, 0.3); } .btn-disable { background: rgba(229, 115, 115, 0.2); color: var(--lavender); border: 2px solid #e57373; } .btn-disable:hover:not(:disabled) { background: rgba(229, 115, 115, 0.3); } .btn-copy { background: rgba(188, 141, 160, 0.2); color: var(--lavender); border: 2px solid var(--old-rose); } .btn-copy:hover:not(:disabled) { background: rgba(188, 141, 160, 0.3); } .btn-edit:disabled, .btn-delete:disabled, .btn-copy:disabled, .btn-disable:disabled, .revoke-btn:disabled { opacity: 0.5; cursor: not-allowed; } /* Messages */ .message { padding: 0.875rem; margin-bottom: 1rem; border-radius: 0.5rem; font-size: 0.875rem; letter-spacing: 0.025rem; display: none; } .message.show { display: block; } .message.error { background: rgba(160, 70, 104, 0.2); border: 2px solid var(--rosewood); color: var(--lavender); } .message.success { background: rgba(188, 141, 160, 0.2); border: 2px solid var(--old-rose); color: var(--lavender); } /* Cards */ .card { background: rgba(188, 141, 160, 0.05); border: 1px solid var(--old-rose); padding: 1.5rem; } .card-title { font-size: 1.125rem; font-weight: 600; color: var(--lavender); margin-bottom: 1rem; } /* Avatars */ .avatar, .profile-avatar, .user-avatar { width: 4rem; height: 4rem; border-radius: 50%; background: var(--berry-crush); display: flex; align-items: center; justify-content: center; font-size: 1.5rem; font-weight: 700; color: var(--lavender); text-transform: uppercase; flex-shrink: 0; overflow: hidden; } .avatar img, .profile-avatar img, .user-avatar img { width: 100%; height: 100%; border-radius: 50%; object-fit: cover; } /* Badges */ .badge, .user-badge, .scope-badge { display: inline-block; padding: 0.25rem 0.75rem; font-size: 0.75rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.05rem; } .badge-admin { background: var(--berry-crush); color: var(--lavender); } .badge-role { background: rgba(188, 141, 160, 0.2); color: var(--lavender); border: 1px solid var(--old-rose); } .badge-status { border: 1px solid var(--old-rose); } .badge-status.active { background: rgba(139, 195, 74, 0.2); color: #a5d6a7; border-color: #81c784; } .badge-status.suspended { background: rgba(244, 67, 54, 0.2); color: #ef9a9a; border-color: #e57373; } .badge-status.inactive { background: rgba(158, 158, 158, 0.2); color: #bdbdbd; border-color: #9e9e9e; } /* Header */ header { width: 100%; max-width: 56.25rem; margin-bottom: 2rem; } .header-nav { display: flex; gap: 1rem; margin-top: 0.5rem; } .header-nav a { color: var(--old-rose); text-decoration: none; font-size: 0.875rem; font-weight: 500; padding: 0.5rem 1rem; border: 1px solid var(--old-rose); transition: all 0.2s; } .header-nav a:hover { background: rgba(188, 141, 160, 0.1); color: var(--berry-crush); border-color: var(--berry-crush); } .header-nav a.active { background: var(--berry-crush); color: var(--lavender); border-color: var(--berry-crush); } /* Main */ main { flex: 1; width: 100%; max-width: 56.25rem; } /* Footer */ footer { width: 100%; max-width: 56.25rem; padding: 1rem; text-align: center; color: var(--old-rose); font-size: 0.875rem; font-weight: 300; letter-spacing: 0.05rem; } footer a { color: var(--berry-crush); text-decoration: none; transition: color 0.2s; } footer a:hover { color: var(--rosewood); text-decoration: underline; } /* Utility Classes */ .loading, .error, .empty { text-align: center; padding: 2rem; color: var(--old-rose); font-size: 1rem; } .error { color: var(--rosewood); } .back-link { text-align: center; margin-top: 2rem; font-size: 0.875rem; } .back-link a { color: var(--berry-crush); text-decoration: none; } .back-link a:hover { text-decoration: underline; } /* Divider */ .divider { display: flex; align-items: center; text-align: center; margin: 1.5rem 0; color: var(--old-rose); font-size: 0.875rem; font-weight: 300; } .divider::before, .divider::after { content: ""; flex: 1; border-bottom: 1px solid rgba(188, 141, 160, 0.3); } .divider span { padding: 0 1rem; } /* Modals */ .modal { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.8); justify-content: center; align-items: center; z-index: 1000; } .modal-content { background: var(--mahogany); border: 2px solid var(--old-rose); padding: 2rem; max-width: 40rem; width: 90%; max-height: 90vh; overflow-y: auto; } .modal-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; } .modal-header h3 { font-size: 1.5rem; color: var(--lavender); margin: 0; } .modal-close { background: none; border: none; color: var(--old-rose); font-size: 1.5rem; cursor: pointer; padding: 0; line-height: 1; } .modal-close:hover { color: var(--berry-crush); } .modal-actions { display: flex; gap: 1rem; justify-content: flex-end; margin-top: 2rem; } /* Button Groups */ .button-group { display: flex; gap: 1rem; margin-top: 2rem; }