/** * Theme Styles * * Main theme styles, colors, and custom components * @package Apus_Theme * @since 1.0.0 */ :root { /* Primary Colors */ --primary-color: #0d6efd; --secondary-color: #6c757d; --success-color: #198754; --danger-color: #dc3545; --warning-color: #ffc107; --info-color: #0dcaf0; --light-color: #f8f9fa; --dark-color: #212529; /* Brand Colors */ --brand-primary: #0d6efd; --brand-secondary: #6c757d; /* Neutral Colors */ --white: #ffffff; --black: #000000; --gray-100: #f8f9fa; --gray-200: #e9ecef; --gray-300: #dee2e6; --gray-400: #ced4da; --gray-500: #adb5bd; --gray-600: #6c757d; --gray-700: #495057; --gray-800: #343a40; --gray-900: #212529; /* Spacing */ --spacing-xs: 0.25rem; --spacing-sm: 0.5rem; --spacing-md: 1rem; --spacing-lg: 1.5rem; --spacing-xl: 2rem; --spacing-2xl: 3rem; --spacing-3xl: 4rem; /* Font family */ --font-family-base: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; --font-family-serif: Georgia, "Times New Roman", serif; /* Font sizes */ --font-size-base: 16px; --font-size-sm: 14px; --font-size-lg: 18px; --font-size-xl: 20px; --font-size-2xl: 24px; --font-size-3xl: 32px; /* Line height */ --line-height-base: 1.5; --line-height-sm: 1.25; --line-height-lg: 1.75; /* Border radius */ --border-radius: 0.25rem; --border-radius-sm: 0.125rem; --border-radius-lg: 0.5rem; /* Box shadow */ --box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075); --box-shadow-sm: 0 0.0625rem 0.125rem rgba(0, 0, 0, 0.075); --box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175); /* Transition */ --transition-base: all 0.3s ease-in-out; --transition-fade: opacity 0.15s linear; --transition-collapse: height 0.35s ease; /* Z-index */ --z-dropdown: 1000; --z-sticky: 1020; --z-fixed: 1030; --z-modal-backdrop: 1040; --z-modal: 1050; --z-popover: 1060; --z-tooltip: 1070; } /* Global styles */ * { margin: 0; padding: 0; box-sizing: border-box; } *::before, *::after { box-sizing: border-box; } html { font-size: 16px; scroll-behavior: smooth; } body { font-family: var(--font-family-base); font-size: var(--font-size-base); line-height: var(--line-height-base); color: var(--gray-900); background-color: var(--white); transition: var(--transition-base); } /* Typography */ h1, h2, h3, h4, h5, h6 { margin-bottom: var(--spacing-md); font-weight: 700; line-height: 1.2; color: var(--gray-900); } h1 { font-size: var(--font-size-3xl); } h2 { font-size: var(--font-size-2xl); } h3 { font-size: var(--font-size-xl); } h4 { font-size: var(--font-size-lg); } h5 { font-size: var(--font-size-base); } h6 { font-size: var(--font-size-sm); } p { margin-bottom: var(--spacing-md); } a { color: var(--primary-color); text-decoration: none; transition: var(--transition-base); } a:hover { color: #0b5ed7; text-decoration: underline; } a:focus { outline: 2px solid var(--primary-color); outline-offset: 2px; } /* Lists */ ul, ol { margin-bottom: var(--spacing-md); padding-left: 2rem; } ul ul, ul ol, ol ul, ol ol { margin-bottom: 0; } li { margin-bottom: 0.25rem; } /* Code */ code, pre { font-family: var(--font-family-monospace); color: var(--gray-900); background-color: var(--gray-100); border-radius: var(--border-radius-lg); } code { padding: 0.25rem 0.5rem; font-size: 0.875em; } pre { padding: var(--spacing-md); margin-bottom: var(--spacing-md); overflow-x: auto; } pre code { padding: 0; font-size: inherit; background-color: transparent; } /* Blockquote */ blockquote { margin-bottom: var(--spacing-md); padding-left: var(--spacing-md); border-left: 4px solid var(--gray-300); color: var(--gray-700); } blockquote p:last-child { margin-bottom: 0; } /* Images */ img { max-width: 100%; height: auto; display: block; } figure { margin-bottom: var(--spacing-md); } figcaption { font-size: var(--font-size-sm); color: var(--gray-600); margin-top: 0.5rem; } /* Tables */ table { width: 100%; margin-bottom: var(--spacing-md); border-collapse: collapse; background-color: transparent; } table th, table td { padding: 0.75rem; border-bottom: 1px solid var(--gray-300); text-align: left; vertical-align: top; } table thead th { background-color: var(--gray-100); font-weight: 700; border-bottom: 2px solid var(--gray-300); } table tbody tr:hover { background-color: var(--gray-50); } table tbody tr:nth-child(even) { background-color: var(--gray-50); } /* Forms */ .form-group { margin-bottom: var(--spacing-md); } label { display: inline-block; margin-bottom: 0.5rem; font-weight: 500; } input, textarea, select, .form-control { width: 100%; padding: 0.5rem 0.75rem; font-family: inherit; font-size: inherit; line-height: var(--line-height-base); color: var(--gray-900); background-color: var(--white); border: 1px solid var(--gray-300); border-radius: var(--border-radius-lg); transition: var(--transition-base); } input:focus, textarea:focus, select:focus, .form-control:focus { outline: none; border-color: var(--primary-color); box-shadow: 0 0 0 0.2rem rgba(13, 110, 253, 0.25); } textarea { min-height: 120px; resize: vertical; } /* Buttons */ button, .btn, input[type="button"], input[type="submit"], input[type="reset"] { display: inline-block; padding: 0.5rem 1rem; font-family: inherit; font-size: var(--font-size-base); font-weight: 500; line-height: var(--line-height-base); text-align: center; white-space: nowrap; vertical-align: middle; cursor: pointer; user-select: none; border: 1px solid transparent; border-radius: var(--border-radius-lg); background-color: var(--primary-color); color: var(--white); text-decoration: none; transition: var(--transition-base); } button:hover, .btn:hover, input[type="button"]:hover, input[type="submit"]:hover, input[type="reset"]:hover { background-color: #0b5ed7; text-decoration: none; } button:focus, .btn:focus, input[type="button"]:focus, input[type="submit"]:focus, input[type="reset"]:focus { outline: none; box-shadow: 0 0 0 0.2rem rgba(13, 110, 253, 0.5); } button:disabled, .btn:disabled, input[type="button"]:disabled, input[type="submit"]:disabled, input[type="reset"]:disabled { opacity: 0.65; cursor: not-allowed; } /* Button variants */ .btn-secondary { background-color: var(--secondary-color); color: var(--white); } .btn-secondary:hover { background-color: #5a6268; } .btn-success { background-color: var(--success-color); color: var(--white); } .btn-success:hover { background-color: #157347; } .btn-danger { background-color: var(--danger-color); color: var(--white); } .btn-danger:hover { background-color: #bb2d3b; } .btn-warning { background-color: var(--warning-color); color: var(--gray-900); } .btn-warning:hover { background-color: #ffbb33; } .btn-info { background-color: var(--info-color); color: var(--white); } .btn-info:hover { background-color: #0aa8cc; } .btn-light { background-color: var(--light-color); color: var(--gray-900); border-color: var(--gray-300); } .btn-light:hover { background-color: #e2e6ea; } .btn-dark { background-color: var(--dark-color); color: var(--white); } .btn-dark:hover { background-color: #1a1e21; } /* Button sizes */ .btn-sm { padding: 0.25rem 0.5rem; font-size: var(--font-size-sm); } .btn-lg { padding: 0.75rem 1.5rem; font-size: var(--font-size-lg); } /* Alerts */ .alert { padding: var(--spacing-md); margin-bottom: var(--spacing-md); border: 1px solid transparent; border-radius: var(--border-radius-lg); } .alert-primary { background-color: #cfe2ff; border-color: #b6d4fe; color: #084298; } .alert-secondary { background-color: #e2e3e5; border-color: #d3d6d8; color: #41464b; } .alert-success { background-color: #d1e7dd; border-color: #badbcc; color: #0f5132; } .alert-danger { background-color: #f8d7da; border-color: #f5c2c7; color: #842029; } .alert-warning { background-color: #fff3cd; border-color: #ffecb5; color: #664d03; } .alert-info { background-color: #d1ecf1; border-color: #bee5eb; color: #0c5460; } /* Cards */ .card { display: flex; flex-direction: column; background-color: var(--white); border: 1px solid var(--gray-300); border-radius: var(--border-radius-lg); overflow: hidden; box-shadow: var(--box-shadow); transition: var(--transition-base); } .card:hover { box-shadow: var(--box-shadow-lg); } .card-header { padding: var(--spacing-md); background-color: var(--gray-100); border-bottom: 1px solid var(--gray-300); font-weight: 600; } .card-body { padding: var(--spacing-md); flex: 1; } .card-footer { padding: var(--spacing-md); background-color: var(--gray-100); border-top: 1px solid var(--gray-300); } .card-title { margin-bottom: 0.5rem; font-size: var(--font-size-lg); font-weight: 600; } .card-text { margin-bottom: 0; color: var(--gray-700); } /* Badges */ .badge { display: inline-block; padding: 0.25rem 0.5rem; font-size: 0.75rem; font-weight: 600; line-height: 1; text-align: center; white-space: nowrap; vertical-align: baseline; border-radius: var(--border-radius); background-color: var(--primary-color); color: var(--white); } .badge-secondary { background-color: var(--secondary-color); } .badge-success { background-color: var(--success-color); } .badge-danger { background-color: var(--danger-color); } .badge-warning { background-color: var(--warning-color); color: var(--gray-900); } .badge-info { background-color: var(--info-color); } .badge-light { background-color: var(--light-color); color: var(--gray-900); } .badge-dark { background-color: var(--dark-color); } /* Helpers */ .text-primary { color: var(--primary-color) !important; } .text-secondary { color: var(--secondary-color) !important; } .text-success { color: var(--success-color) !important; } .text-danger { color: var(--danger-color) !important; } .text-warning { color: var(--warning-color) !important; } .text-info { color: var(--info-color) !important; } .text-light { color: var(--light-color) !important; } .text-dark { color: var(--dark-color) !important; } .text-muted { color: var(--gray-600) !important; } .bg-primary { background-color: var(--primary-color) !important; } .bg-secondary { background-color: var(--secondary-color) !important; } .bg-success { background-color: var(--success-color) !important; } .bg-danger { background-color: var(--danger-color) !important; } .bg-warning { background-color: var(--warning-color) !important; } .bg-info { background-color: var(--info-color) !important; } .bg-light { background-color: var(--light-color) !important; } .bg-dark { background-color: var(--dark-color) !important; } .bg-white { background-color: var(--white) !important; } /* Margin and Padding */ .m-0 { margin: 0 !important; } .mt-0 { margin-top: 0 !important; } .mb-0 { margin-bottom: 0 !important; } .ml-0 { margin-left: 0 !important; } .mr-0 { margin-right: 0 !important; } .p-0 { padding: 0 !important; } .pt-0 { padding-top: 0 !important; } .pb-0 { padding-bottom: 0 !important; } .pl-0 { padding-left: 0 !important; } .pr-0 { padding-right: 0 !important; } /* Dividers */ hr { border: 0; border-top: 1px solid var(--gray-300); margin: var(--spacing-lg) 0; } /* Focus visible */ :focus-visible { outline: 2px solid var(--primary-color); outline-offset: 2px; } /* Selection */ ::selection { background-color: var(--primary-color); color: var(--white); }