/* =================================================================== 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 =================================================================== */