Files
igny8/backend/staticfiles/admin/css/igny8_admin.css
IGNY8 VPS (Salman) 90aa99b2c1 css django
2025-12-14 15:41:42 +00:00

1472 lines
30 KiB
CSS

/* ===================================================================
IGNY8 DJANGO ADMIN - MODERN UI DESIGN
===================================================================
Built from scratch using IGNY8 frontend design system
Design tokens from: frontend/src/styles/tokens.css
Author: IGNY8 Design System
Last Updated: 2025-12-14
=================================================================== */
/* ===================================================================
DESIGN TOKENS - Matching Frontend App
=================================================================== */
:root {
/* Primary Brand Colors */
--color-primary: #0693e3;
--color-primary-dark: #0472b8;
/* Success */
--color-success: #0bbf87;
--color-success-dark: #08966b;
/* Warning */
--color-warning: #ff7a00;
--color-warning-dark: #cc5f00;
/* Danger */
--color-danger: #ef4444;
--color-danger-dark: #d13333;
/* Purple */
--color-purple: #5d4ae3;
--color-purple-dark: #3a2f94;
/* Backgrounds */
--color-navy: #0d1b2a;
--color-navy-light: #142b3f;
--color-surface: #f8fafc;
--color-panel: #ffffff;
--color-panel-alt: #f1f5f9;
/* Text */
--color-text: #555a68;
--color-text-dim: #64748b;
--color-text-light: #e5eaf0;
--color-stroke: #e2e8f0;
/* Border Radius */
--radius-base: 6px;
/* Shadows */
--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
/* Transitions */
--transition-base: 150ms cubic-bezier(0.4, 0, 0.2, 1);
}
/* ===================================================================
GLOBAL RESET & BASE
=================================================================== */
* {
box-sizing: border-box;
}
body {
margin: 0;
padding: 0;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
font-size: 14px;
line-height: 1.6;
color: var(--color-text);
background: var(--color-surface);
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
a {
color: var(--color-primary);
text-decoration: none;
transition: color var(--transition-base);
}
a:hover {
color: var(--color-primary-dark);
}
/* ===================================================================
HEADER - Primary Navigation
=================================================================== */
#header {
background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-dark) 100%);
box-shadow: var(--shadow-md);
position: sticky;
top: 0;
z-index: 100;
}
#branding {
padding: 14px 24px;
display: flex;
align-items: center;
}
#branding h1 {
margin: 0;
font-size: 18px;
font-weight: 600;
letter-spacing: -0.01em;
}
#branding h1 a {
color: white;
display: flex;
align-items: center;
gap: 8px;
transition: opacity var(--transition-base);
}
#branding h1 a:hover {
opacity: 0.9;
}
#branding h1 i {
font-size: 20px;
}
/* User Tools */
#user-tools {
position: absolute;
top: 0;
right: 0;
padding: 14px 24px;
display: flex;
align-items: center;
gap: 8px;
font-size: 13px;
color: white;
}
#user-tools strong {
font-weight: 600;
margin-right: 4px;
}
#user-tools a {
color: white;
padding: 8px 14px;
border-radius: var(--radius-base);
background: rgba(255, 255, 255, 0.12);
border: 1px solid rgba(255, 255, 255, 0.18);
transition: all var(--transition-base);
font-weight: 500;
white-space: nowrap;
}
#user-tools a:hover {
background: rgba(255, 255, 255, 0.22);
transform: translateY(-1px);
box-shadow: 0 3px 8px rgba(0, 0, 0, 0.15);
}
/* Dashboard Link */
.dashboard-link {
display: inline-flex;
align-items: center;
gap: 6px;
padding: 8px 14px;
margin-right: 8px;
background: rgba(255, 255, 255, 0.15);
color: white;
border-radius: var(--radius-base);
border: 1px solid rgba(255, 255, 255, 0.2);
font-weight: 500;
transition: all var(--transition-base);
}
.dashboard-link:hover {
background: rgba(255, 255, 255, 0.25);
transform: translateY(-1px);
box-shadow: 0 3px 8px rgba(0, 0, 0, 0.15);
}
.dashboard-link i {
font-size: 14px;
}
/* ===================================================================
LAYOUT - Content Structure
=================================================================== */
#content {
padding: 24px;
max-width: 1600px;
margin: 0 auto;
}
#content-main {
background: var(--color-panel);
padding: 32px;
border-radius: 8px;
box-shadow: var(--shadow-sm);
}
.colM,
.colMS {
margin-right: 260px;
}
#changelist {
background: var(--color-panel);
padding: 32px;
border-radius: 8px;
box-shadow: var(--shadow-sm);
}
/* ===================================================================
SIDEBAR - Module Navigation
=================================================================== */
#content-related {
float: right;
width: 240px;
position: relative;
}
.module {
margin-bottom: 24px;
background: var(--color-panel);
border-radius: 8px;
box-shadow: var(--shadow-sm);
overflow: hidden;
}
.module h2 {
background: white;
color: var(--color-text);
padding: 16px 20px 12px;
margin: 0;
font-size: 11px;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 1px;
display: flex;
align-items: center;
gap: 8px;
border-bottom: 2px solid var(--color-primary);
}
.module h2 i {
color: var(--color-primary);
font-size: 12px;
}
.module table {
width: 100%;
background: white;
}
.module tr {
border-bottom: 1px solid var(--color-panel-alt);
transition: background-color var(--transition-base);
}
.module tr:last-child {
border-bottom: none;
}
.module tr:hover {
background-color: rgba(6, 147, 227, 0.03);
}
.module td {
padding: 12px 20px;
}
.module a {
color: var(--color-text);
font-size: 13px;
font-weight: 500;
transition: color var(--transition-base);
}
.module a:hover {
color: var(--color-primary);
}
/* Sidebar Add Links - Icon Only */
.module .addlink,
.module a.addlink {
display: inline-flex !important;
align-items: center !important;
justify-content: center !important;
font-size: 0 !important;
padding: 0 !important;
margin-left: auto !important;
float: right !important;
}
.module .addlink:before,
.module a.addlink:before {
content: "\f067";
font-family: "Font Awesome 6 Free";
font-weight: 900;
font-size: 11px;
display: inline-flex;
align-items: center;
justify-content: center;
width: 22px;
height: 22px;
border-radius: 4px;
background: linear-gradient(135deg, var(--color-success) 0%, var(--color-success-dark) 100%);
color: white;
transition: all var(--transition-base);
box-shadow: 0 2px 4px rgba(11, 191, 135, 0.2);
}
.module .addlink:hover:before,
.module a.addlink:hover:before {
background: linear-gradient(135deg, var(--color-success-dark) 0%, #067354 100%);
transform: translateY(-1px) scale(1.05);
box-shadow: 0 4px 8px rgba(11, 191, 135, 0.3);
}
/* ===================================================================
BUTTONS - Modern Style System
=================================================================== */
/* Base Button */
.button,
button[type="submit"],
input[type="submit"],
input[type="button"],
.submit-row input,
a.button {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 8px;
height: 40px;
padding: 0 20px;
font-size: 14px;
font-weight: 600;
border-radius: var(--radius-base);
border: none;
cursor: pointer;
transition: all var(--transition-base);
white-space: nowrap;
background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-dark) 100%);
color: white;
box-shadow: 0 2px 4px rgba(6, 147, 227, 0.2);
}
.button:hover,
button[type="submit"]:hover,
input[type="submit"]:hover,
input[type="button"]:hover {
background: linear-gradient(135deg, var(--color-primary-dark) 0%, #035a8f 100%);
transform: translateY(-1px);
box-shadow: 0 4px 12px rgba(6, 147, 227, 0.3);
}
.button:active {
transform: translateY(0);
}
.button:disabled,
button[type="submit"]:disabled {
opacity: 0.5;
cursor: not-allowed;
transform: none;
}
/* Success Buttons */
input[name="_save"],
input[name="_continue"],
input[name="_addanother"],
.button.success {
background: linear-gradient(135deg, var(--color-success) 0%, var(--color-success-dark) 100%);
box-shadow: 0 2px 4px rgba(11, 191, 135, 0.2);
}
input[name="_save"]:hover,
input[name="_continue"]:hover,
input[name="_addanother"]:hover {
background: linear-gradient(135deg, var(--color-success-dark) 0%, #067354 100%);
box-shadow: 0 4px 12px rgba(11, 191, 135, 0.3);
}
/* Delete Buttons */
.deletelink,
.deletelink-box a,
a.deletelink,
input[name="_delete"],
.button.danger {
background: linear-gradient(135deg, var(--color-danger) 0%, var(--color-danger-dark) 100%);
color: white;
box-shadow: 0 2px 4px rgba(239, 68, 68, 0.2);
}
.deletelink:hover,
.deletelink-box a:hover,
a.deletelink:hover,
input[name="_delete"]:hover {
background: linear-gradient(135deg, var(--color-danger-dark) 0%, #b82222 100%);
box-shadow: 0 4px 12px rgba(239, 68, 68, 0.3);
}
/* Object Tools - Add/Import Buttons */
.object-tools {
float: right;
margin: 0 0 20px;
padding: 0;
list-style: none;
display: flex;
gap: 12px;
}
.object-tools li {
margin: 0;
padding: 0;
list-style: none;
}
.object-tools a {
display: inline-flex;
align-items: center;
gap: 8px;
height: 40px;
padding: 0 20px;
font-size: 14px;
font-weight: 600;
border-radius: var(--radius-base);
background: linear-gradient(135deg, var(--color-success) 0%, var(--color-success-dark) 100%);
color: white;
transition: all var(--transition-base);
box-shadow: 0 2px 4px rgba(11, 191, 135, 0.2);
}
.object-tools a:hover {
background: linear-gradient(135deg, var(--color-success-dark) 0%, #067354 100%);
transform: translateY(-1px);
box-shadow: 0 4px 12px rgba(11, 191, 135, 0.3);
}
.object-tools a:before {
content: "\f067";
font-family: "Font Awesome 6 Free";
font-weight: 900;
font-size: 13px;
}
/* Export Button */
a[href*="export"],
.button.export {
background: linear-gradient(135deg, var(--color-purple) 0%, var(--color-purple-dark) 100%);
box-shadow: 0 2px 4px rgba(93, 74, 227, 0.2);
}
a[href*="export"]:hover {
background: linear-gradient(135deg, var(--color-purple-dark) 0%, #2b1f6b 100%);
box-shadow: 0 4px 12px rgba(93, 74, 227, 0.3);
}
a[href*="export"]:before {
content: "\f56d";
font-family: "Font Awesome 6 Free";
font-weight: 900;
}
/* ===================================================================
SEARCH & TOOLBAR
=================================================================== */
#toolbar {
padding: 20px;
background: var(--color-panel);
border: 1px solid var(--color-stroke);
border-radius: 8px;
margin-bottom: 20px;
}
#toolbar form {
display: flex;
gap: 12px;
align-items: center;
}
#toolbar input[type="text"],
#searchbar {
flex: 1;
min-width: 300px;
max-width: 500px;
height: 40px;
padding: 0 16px;
border: 1px solid var(--color-stroke);
border-radius: var(--radius-base);
font-size: 14px;
color: var(--color-text);
background: white;
transition: all var(--transition-base);
}
#toolbar input[type="text"]:focus,
#searchbar:focus {
outline: none;
border-color: var(--color-primary);
box-shadow: 0 0 0 3px rgba(6, 147, 227, 0.1);
}
#toolbar button[type="submit"],
#toolbar input[type="submit"] {
height: 40px;
padding: 0 24px;
}
/* ===================================================================
ACTIONS BAR
=================================================================== */
.actions {
padding: 20px;
background: var(--color-panel);
border: 1px solid var(--color-stroke);
border-radius: 8px;
margin-bottom: 20px;
display: flex;
align-items: center;
gap: 16px;
}
.actions label {
font-weight: 600;
color: var(--color-text);
font-size: 14px;
margin: 0;
}
.actions select {
min-width: 240px;
height: 40px;
padding: 0 16px;
border: 1px solid var(--color-stroke);
border-radius: var(--radius-base);
font-size: 14px;
color: var(--color-text);
background: white;
cursor: pointer;
transition: all var(--transition-base);
}
.actions select:focus {
outline: none;
border-color: var(--color-primary);
box-shadow: 0 0 0 3px rgba(6, 147, 227, 0.1);
}
.actions button,
.actions input[type="submit"] {
height: 40px;
padding: 0 24px;
}
/* Action Checkbox */
.action-checkbox {
width: 18px;
height: 18px;
border-radius: 4px;
border: 1.5px solid var(--color-stroke);
cursor: pointer;
transition: all var(--transition-base);
}
.action-checkbox:checked {
background: var(--color-primary);
border-color: var(--color-primary);
}
/* ===================================================================
FILTERS PANEL
=================================================================== */
#changelist-filter {
position: absolute;
top: 0;
right: 0;
width: 240px;
background: var(--color-panel);
border-radius: 8px;
box-shadow: var(--shadow-sm);
padding: 20px;
}
#changelist-filter h2 {
font-size: 11px;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 1px;
color: var(--color-text);
padding-bottom: 12px;
margin: 0 0 16px;
border-bottom: 2px solid var(--color-primary);
display: flex;
align-items: center;
gap: 8px;
}
#changelist-filter h2:before {
content: "\f0b0";
font-family: "Font Awesome 6 Free";
font-weight: 900;
color: var(--color-primary);
}
#changelist-filter h3 {
font-size: 13px;
font-weight: 600;
color: var(--color-text);
margin: 20px 0 8px;
}
#changelist-filter ul {
list-style: none;
padding: 0;
margin: 0 0 16px;
}
#changelist-filter li {
padding: 8px 0;
border-bottom: 1px solid var(--color-panel-alt);
}
#changelist-filter li:last-child {
border-bottom: none;
}
#changelist-filter a {
color: var(--color-text);
font-size: 13px;
transition: color var(--transition-base);
}
#changelist-filter a:hover {
color: var(--color-primary);
}
#changelist-filter a.selected {
color: var(--color-primary);
font-weight: 600;
}
/* ===================================================================
TABLES - Modern Data Display
=================================================================== */
.results {
overflow-x: auto;
margin-top: 20px;
}
#result_list {
width: 100%;
border-collapse: separate;
border-spacing: 0;
}
#result_list thead th {
background: white;
color: var(--color-text);
padding: 16px;
font-size: 11px;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.8px;
text-align: left;
border-bottom: 2px solid var(--color-stroke);
position: sticky;
top: 0;
z-index: 10;
}
#result_list thead th a {
color: var(--color-text);
font-weight: 700;
}
#result_list thead th.sorted {
color: var(--color-primary);
}
#result_list thead th.sorted a {
color: var(--color-primary);
}
/* Table Sorting Icons */
#result_list thead th.sorted.ascending a:after {
content: "\f0d8";
font-family: "Font Awesome 6 Free";
font-weight: 900;
margin-left: 6px;
opacity: 0.6;
}
#result_list thead th.sorted.descending a:after {
content: "\f0d7";
font-family: "Font Awesome 6 Free";
font-weight: 900;
margin-left: 6px;
opacity: 0.6;
}
/* Table Body */
#result_list tbody tr {
transition: background-color var(--transition-base);
}
#result_list tbody tr:nth-child(odd) {
background: white;
}
#result_list tbody tr:nth-child(even) {
background: #fafbfc;
}
#result_list tbody tr:hover {
background: rgba(6, 147, 227, 0.04);
}
#result_list td {
padding: 16px;
color: var(--color-text);
font-size: 14px;
border-bottom: 1px solid var(--color-panel-alt);
}
#result_list td a {
color: var(--color-primary);
font-weight: 500;
}
/* Action Checkbox Column */
#result_list td.action-checkbox {
width: 40px;
text-align: center;
}
/* ===================================================================
FORMS - Clean Input Design
=================================================================== */
.form-row {
margin-bottom: 24px;
}
.form-row label {
display: block;
font-size: 13px;
font-weight: 600;
color: var(--color-text);
margin-bottom: 8px;
}
.form-row input[type="text"],
.form-row input[type="email"],
.form-row input[type="password"],
.form-row input[type="number"],
.form-row input[type="url"],
.form-row textarea,
.form-row select {
width: 100%;
height: 40px;
padding: 0 16px;
border: 1px solid var(--color-stroke);
border-radius: var(--radius-base);
font-size: 14px;
color: var(--color-text);
background: white;
transition: all var(--transition-base);
}
.form-row textarea {
height: auto;
min-height: 100px;
padding: 12px 16px;
resize: vertical;
}
.form-row input:focus,
.form-row textarea:focus,
.form-row select:focus {
outline: none;
border-color: var(--color-primary);
box-shadow: 0 0 0 3px rgba(6, 147, 227, 0.1);
}
/* Helptext */
.help,
.helptext {
display: block;
margin-top: 6px;
font-size: 12px;
color: var(--color-text-dim);
font-style: italic;
}
/* Required Fields */
.required:after {
content: " *";
color: var(--color-danger);
font-weight: 600;
}
/* Error Messages */
.errorlist {
list-style: none;
padding: 12px 16px;
margin: 8px 0;
background: rgba(239, 68, 68, 0.1);
border-left: 3px solid var(--color-danger);
border-radius: var(--radius-base);
color: var(--color-danger);
font-size: 13px;
}
.errorlist li {
margin: 0;
}
/* Success Messages */
.success,
.messagelist .success {
padding: 12px 16px;
margin: 16px 0;
background: rgba(11, 191, 135, 0.1);
border-left: 3px solid var(--color-success);
border-radius: var(--radius-base);
color: var(--color-success-dark);
font-size: 14px;
}
/* Warning Messages */
.warning,
.messagelist .warning {
padding: 12px 16px;
margin: 16px 0;
background: rgba(255, 122, 0, 0.1);
border-left: 3px solid var(--color-warning);
border-radius: var(--radius-base);
color: var(--color-warning-dark);
font-size: 14px;
}
/* Error Messages */
.error,
.messagelist .error {
padding: 12px 16px;
margin: 16px 0;
background: rgba(239, 68, 68, 0.1);
border-left: 3px solid var(--color-danger);
border-radius: var(--radius-base);
color: var(--color-danger-dark);
font-size: 14px;
}
/* Info Messages */
.info,
.messagelist .info {
padding: 12px 16px;
margin: 16px 0;
background: rgba(6, 147, 227, 0.1);
border-left: 3px solid var(--color-primary);
border-radius: var(--radius-base);
color: var(--color-primary-dark);
font-size: 14px;
}
/* ===================================================================
SUBMIT ROW - Form Actions
=================================================================== */
.submit-row {
padding: 24px 0 0;
margin-top: 24px;
border-top: 1px solid var(--color-stroke);
display: flex;
gap: 12px;
align-items: center;
}
/* ===================================================================
PAGINATION
=================================================================== */
.paginator {
display: flex;
align-items: center;
gap: 8px;
padding: 20px 0;
font-size: 13px;
color: var(--color-text);
}
.paginator a,
.paginator span {
display: inline-flex;
align-items: center;
justify-content: center;
min-width: 36px;
height: 36px;
padding: 0 8px;
border-radius: var(--radius-base);
transition: all var(--transition-base);
}
.paginator a {
color: var(--color-text);
background: white;
border: 1px solid var(--color-stroke);
}
.paginator a:hover {
background: var(--color-panel-alt);
border-color: var(--color-primary);
color: var(--color-primary);
}
.paginator .this-page {
background: var(--color-primary);
color: white;
font-weight: 600;
border: 1px solid var(--color-primary);
}
.paginator .disabled {
opacity: 0.4;
pointer-events: none;
}
/* ===================================================================
BREADCRUMBS
=================================================================== */
.breadcrumbs {
padding: 16px 24px;
background: white;
border-bottom: 1px solid var(--color-stroke);
font-size: 13px;
color: var(--color-text-dim);
}
.breadcrumbs a {
color: var(--color-primary);
font-weight: 500;
}
.breadcrumbs a:hover {
color: var(--color-primary-dark);
}
/* ===================================================================
CALENDAR WIDGET
=================================================================== */
.calendarbox,
.clockbox {
background: white;
border: 1px solid var(--color-stroke);
border-radius: 8px;
box-shadow: var(--shadow-lg);
padding: 16px;
}
.calendar {
width: 100%;
}
.calendar th,
.calendar td {
padding: 8px;
text-align: center;
border-radius: 4px;
}
.calendar th {
font-weight: 600;
color: var(--color-text);
font-size: 12px;
text-transform: uppercase;
letter-spacing: 0.5px;
}
.calendar td a {
display: block;
padding: 8px;
border-radius: 4px;
color: var(--color-text);
transition: all var(--transition-base);
}
.calendar td a:hover {
background: var(--color-panel-alt);
color: var(--color-primary);
}
.calendar td.selected a {
background: var(--color-primary);
color: white;
font-weight: 600;
}
/* ===================================================================
INLINE FORMS
=================================================================== */
.inline-group {
margin-bottom: 32px;
padding: 20px;
background: var(--color-panel-alt);
border-radius: 8px;
}
.inline-group h2 {
margin: 0 0 16px;
font-size: 16px;
font-weight: 600;
color: var(--color-text);
}
.inline-related {
margin-bottom: 16px;
padding: 16px;
background: white;
border: 1px solid var(--color-stroke);
border-radius: var(--radius-base);
}
/* ===================================================================
DASHBOARD - Custom Styles
=================================================================== */
.dashboard-container {
padding: 20px;
max-width: 1600px;
margin: 0 auto;
}
.dashboard-header {
background: linear-gradient(135deg, var(--color-navy) 0%, var(--color-navy-light) 100%);
color: white;
padding: 32px;
border-radius: 8px;
margin-bottom: 32px;
box-shadow: var(--shadow-md);
}
.dashboard-header h1 {
margin: 0 0 8px;
font-size: 28px;
font-weight: 600;
letter-spacing: -0.02em;
}
.dashboard-header p {
margin: 0;
opacity: 0.9;
font-size: 14px;
}
.metrics-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
gap: 20px;
margin-bottom: 32px;
}
.metric-card {
background: white;
padding: 24px;
border-radius: 8px;
box-shadow: var(--shadow-sm);
border: 1px solid var(--color-stroke);
}
.metric-card h3 {
margin: 0 0 16px;
font-size: 14px;
font-weight: 600;
color: var(--color-text);
display: flex;
align-items: center;
gap: 8px;
}
.metric-card h3 i {
font-size: 16px;
}
.metric-row {
display: flex;
justify-content: space-between;
align-items: center;
padding: 12px 0;
border-bottom: 1px solid var(--color-panel-alt);
}
.metric-row:last-child {
border-bottom: none;
}
.metric-label {
font-size: 13px;
color: var(--color-text-dim);
}
.metric-value {
font-size: 16px;
font-weight: 600;
}
.metric-value.success {
color: var(--color-success);
}
.metric-value.warning {
color: var(--color-warning);
}
.metric-value.error {
color: var(--color-danger);
}
.metric-value.info {
color: var(--color-primary);
}
.quick-actions {
background: white;
padding: 24px;
border-radius: 8px;
box-shadow: var(--shadow-sm);
border: 1px solid var(--color-stroke);
}
.quick-actions h3 {
margin: 0 0 20px;
font-size: 16px;
font-weight: 600;
color: var(--color-text);
display: flex;
align-items: center;
gap: 8px;
}
.action-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
gap: 12px;
}
.action-button {
display: flex;
flex-direction: column;
align-items: center;
gap: 8px;
padding: 20px;
background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-dark) 100%);
color: white;
border-radius: 8px;
font-weight: 500;
transition: all var(--transition-base);
box-shadow: 0 2px 4px rgba(6, 147, 227, 0.2);
}
.action-button:hover {
transform: translateY(-2px);
box-shadow: 0 6px 16px rgba(6, 147, 227, 0.3);
}
.action-button.action-button-neutral {
background: linear-gradient(135deg, var(--color-navy) 0%, var(--color-navy-light) 100%);
box-shadow: 0 2px 4px rgba(13, 27, 42, 0.3);
}
.action-button.action-button-neutral:hover {
box-shadow: 0 6px 16px rgba(13, 27, 42, 0.4);
}
.action-button i {
font-size: 24px;
}
.action-button .label {
font-size: 13px;
}
/* Dashboard Header Enhancements */
.dashboard-header-content h1 {
display: flex;
align-items: center;
gap: 12px;
}
.dashboard-header-content h1 i {
font-size: 32px;
}
.dashboard-nav a {
display: inline-flex;
align-items: center;
gap: 8px;
}
/* Alert Section Heading */
.alerts-section h2 {
margin: 0 0 16px;
font-size: 18px;
font-weight: 600;
color: var(--color-text);
display: flex;
align-items: center;
gap: 10px;
}
.alerts-section h2 i {
color: var(--color-primary);
font-size: 20px;
}
/* No Alerts Section */
.no-alerts .icon i {
color: var(--color-success);
font-size: 48px;
}
.no-alerts h3 {
margin: 0 0 8px;
color: var(--color-success);
font-size: 20px;
font-weight: 600;
}
.no-alerts p {
margin: 0;
color: var(--color-text-dim);
font-size: 14px;
}
/* Metric Card Icons */
.metric-card h3 i {
color: var(--color-primary);
font-size: 18px;
}
.metric-card:nth-child(1) h3 i {
color: var(--color-primary);
}
.metric-card:nth-child(2) h3 i {
color: var(--color-purple);
}
.metric-card:nth-child(3) h3 i {
color: var(--color-success);
}
.metric-card:nth-child(4) h3 i {
color: var(--color-warning);
}
.metric-card:nth-child(5) h3 i {
color: var(--color-primary);
}
/* Quick Actions Heading */
.quick-actions h3 i {
color: var(--color-warning);
font-size: 18px;
}
/* Alert Cards */
.alert-card {
padding: 16px 20px;
border-radius: 8px;
margin-bottom: 12px;
display: flex;
align-items: center;
justify-content: space-between;
box-shadow: var(--shadow-sm);
}
.alert-card.error {
background: rgba(239, 68, 68, 0.1);
border-left: 4px solid var(--color-danger);
}
.alert-card.warning {
background: rgba(255, 122, 0, 0.1);
border-left: 4px solid var(--color-warning);
}
.alert-card.info {
background: rgba(6, 147, 227, 0.1);
border-left: 4px solid var(--color-primary);
}
.alert-content {
display: flex;
align-items: center;
gap: 12px;
flex: 1;
}
.alert-icon {
font-size: 24px;
}
.alert-message {
font-size: 14px;
font-weight: 500;
color: var(--color-text);
}
.alert-action {
padding: 8px 16px;
background: white;
border: 1px solid var(--color-stroke);
border-radius: var(--radius-base);
text-decoration: none;
color: var(--color-text);
font-size: 13px;
font-weight: 500;
transition: all var(--transition-base);
}
.alert-action:hover {
background: var(--color-panel-alt);
border-color: var(--color-primary);
color: var(--color-primary);
}
/* ===================================================================
ALERTS SECTION
=================================================================== */
.alerts-section {
margin-bottom: 32px;
padding: 20px;
background: white;
border-radius: 8px;
box-shadow: var(--shadow-sm);
border: 1px solid var(--color-stroke);
}
.no-alerts {
text-align: center;
padding: 32px;
}
.no-alerts .icon {
margin-bottom: 12px;
}
.alert-item {
padding: 16px;
margin-bottom: 12px;
border-radius: var(--radius-base);
display: flex;
justify-content: space-between;
align-items: center;
}
.alert-item.warning {
background: rgba(255, 122, 0, 0.1);
border-left: 3px solid var(--color-warning);
}
.alert-item.error {
background: rgba(239, 68, 68, 0.1);
border-left: 3px solid var(--color-danger);
}
/* ===================================================================
RESPONSIVE DESIGN
=================================================================== */
@media (max-width: 1024px) {
.colM,
.colMS {
margin-right: 0;
}
#content-related {
float: none;
width: 100%;
margin-top: 32px;
}
#changelist-filter {
position: static;
width: 100%;
margin-bottom: 24px;
}
.metrics-grid {
grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
}
.action-grid {
grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
}
}
@media (max-width: 768px) {
#user-tools {
position: static;
padding: 12px 16px;
flex-wrap: wrap;
border-top: 1px solid rgba(255, 255, 255, 0.1);
}
#content {
padding: 16px;
}
#content-main,
#changelist {
padding: 20px;
}
.object-tools {
float: none;
flex-direction: column;
width: 100%;
}
.object-tools a {
width: 100%;
justify-content: center;
}
.metrics-grid {
grid-template-columns: 1fr;
}
.action-grid {
grid-template-columns: repeat(2, 1fr);
}
}
/* ===================================================================
UTILITY CLASSES
=================================================================== */
.hidden {
display: none !important;
}
.text-center {
text-align: center;
}
.text-right {
text-align: right;
}
.mt-0 { margin-top: 0; }
.mt-1 { margin-top: 8px; }
.mt-2 { margin-top: 16px; }
.mt-3 { margin-top: 24px; }
.mt-4 { margin-top: 32px; }
.mb-0 { margin-bottom: 0; }
.mb-1 { margin-bottom: 8px; }
.mb-2 { margin-bottom: 16px; }
.mb-3 { margin-bottom: 24px; }
.mb-4 { margin-bottom: 32px; }
.p-0 { padding: 0; }
.p-1 { padding: 8px; }
.p-2 { padding: 16px; }
.p-3 { padding: 24px; }
.p-4 { padding: 32px; }
/* ===================================================================
END OF IGNY8 ADMIN STYLES
=================================================================== */