/* styles.css - BIBB Thesaurus (ORCID zu DSpace Layout) */ /* =========================== Variablen & Reset =========================== */ :root { --primary-color: #1a3a5c; --primary-light: #2a5a8c; --primary-dark: #0f2840; --secondary-color: #006699; --accent-color: #00a3cc; --success-color: #28a745; --warning-color: #ffc107; --danger-color: #dc3545; --info-color: #17a2b8; --text-primary: #333; --text-secondary: #666; --text-muted: #999; --bg-gradient: linear-gradient(135deg, #e8eef5 0%, #f0f4f8 100%); --bg-light: #f8f9fa; --bg-lighter: #fafbfc; --border-color: #e0e0e0; --border-light: #f0f0f0; --shadow-sm: 0 2px 4px rgba(0,0,0,0.08); --shadow-md: 0 4px 12px rgba(0,0,0,0.1); --shadow-lg: 0 8px 24px rgba(0,0,0,0.12); --radius-sm: 4px; --radius-md: 8px; --radius-lg: 12px; --transition: all 0.3s ease; } * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; line-height: 1.6; color: var(--text-primary); background: var(--bg-gradient); min-height: 100vh; display: flex; flex-direction: column; } /* =========================== Layout Container =========================== */ .page-wrapper { min-height: 100vh; display: flex; flex-direction: column; } .container { max-width: 1200px; margin: 0 auto; padding: 0 20px; } .main-content { flex: 1; padding: 40px 0; } /* =========================== Header & Navigation =========================== */ .site-header { background: var(--primary-color); color: white; padding: 0; box-shadow: var(--shadow-md); } .site-header .container { display: flex; justify-content: space-between; align-items: center; padding: 15px 20px; } .site-logo { display: flex; flex-direction: column; text-decoration: none; color: white; } .site-title { font-size: 1.4em; font-weight: 700; color: white; } .site-subtitle { font-size: 0.85em; opacity: 0.8; font-weight: 400; } .main-nav ul { list-style: none; display: flex; gap: 5px; margin: 0; padding: 0; } .main-nav a { color: white; text-decoration: none; font-weight: 500; transition: var(--transition); padding: 10px 18px; border-radius: var(--radius-sm); display: block; font-size: 0.95em; } .main-nav a:hover, .main-nav a.active { background: rgba(255,255,255,0.15); } /* =========================== Cards =========================== */ .card { background: white; border-radius: var(--radius-lg); box-shadow: var(--shadow-md); padding: 35px 40px; margin-bottom: 30px; } .card-title { font-size: 1.6em; font-weight: 600; color: var(--primary-color); margin: 0 0 15px 0; } .card-description { color: var(--text-secondary); font-size: 1em; margin-bottom: 30px; } /* =========================== Nav Cards (Feature Cards) =========================== */ .nav-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 25px; margin-top: 10px; } .nav-card { background: white; border-radius: var(--radius-md); padding: 25px 30px; border: 1px solid var(--border-color); border-left: 4px solid var(--border-color); transition: var(--transition); text-decoration: none; color: inherit; display: block; } .nav-card:hover { border-left-color: var(--primary-color); box-shadow: var(--shadow-md); transform: translateY(-2px); } .nav-card-icon { font-size: 2.5em; margin-bottom: 15px; display: block; } .nav-card h3 { font-size: 1.15em; font-weight: 600; color: var(--primary-color); margin-bottom: 10px; } .nav-card p { color: var(--text-secondary); font-size: 0.9em; margin: 0; line-height: 1.5; } /* =========================== Section Headers =========================== */ .section-title { font-size: 1.3em; font-weight: 600; color: var(--text-primary); margin: 30px 0 20px 0; } /* =========================== Project Items / List Items =========================== */ .project-list { display: flex; flex-direction: column; gap: 15px; } .project-item { background: white; border-radius: var(--radius-md); padding: 20px 25px; border: 1px solid var(--border-color); border-left: 4px solid var(--primary-color); display: flex; justify-content: space-between; align-items: center; transition: var(--transition); } .project-item:hover { box-shadow: var(--shadow-sm); } .project-info h4 { font-size: 1.1em; font-weight: 600; color: var(--primary-color); margin: 0 0 5px 0; } .project-meta { font-size: 0.85em; color: var(--text-muted); } .project-actions { display: flex; gap: 10px; } /* =========================== Buttons =========================== */ .btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; padding: 10px 20px; border-radius: var(--radius-sm); font-weight: 500; text-decoration: none; border: none; cursor: pointer; transition: var(--transition); font-size: 0.9em; } .btn:hover { transform: translateY(-1px); box-shadow: var(--shadow-sm); } .btn-primary { background: var(--primary-color); color: white; } .btn-primary:hover { background: var(--primary-light); color: white; } .btn-secondary { background: var(--secondary-color); color: white; } .btn-secondary:hover { background: var(--primary-color); } .btn-success { background: var(--success-color); color: white; } .btn-success:hover { background: #218838; } .btn-danger { background: var(--danger-color); color: white; } .btn-danger:hover { background: #c82333; } .btn-info { background: var(--info-color); color: white; } .btn-info:hover { background: #138496; } .btn-outline { background: transparent; border: 2px solid var(--primary-color); color: var(--primary-color); } .btn-outline:hover { background: var(--primary-color); color: white; } .btn-sm { padding: 6px 14px; font-size: 0.85em; } .btn-lg { padding: 14px 28px; font-size: 1em; } /* =========================== Tables - Bootstrap Table Anpassungen =========================== */ .fixed-table-container { border: 1px solid var(--border-color); border-radius: var(--radius-md); overflow: hidden; } .fixed-table-toolbar { background: var(--bg-light); padding: 15px 20px; border-bottom: 1px solid var(--border-color); } .fixed-table-toolbar .search input { border-radius: var(--radius-md); border: 1px solid var(--border-color); padding: 10px 15px; font-size: 0.95em; } .fixed-table-toolbar .search input:focus { border-color: var(--primary-color); box-shadow: 0 0 0 3px rgba(26,58,92,0.1); outline: none; } .bootstrap-table .table { margin-bottom: 0; } .bootstrap-table .table thead th { background: var(--primary-color); color: white; font-weight: 600; border: none; padding: 14px 12px; font-size: 0.95em; } .bootstrap-table .table tbody tr { transition: var(--transition); } .bootstrap-table .table tbody tr:hover { background: rgba(26,58,92,0.03); } .bootstrap-table .table tbody td { padding: 14px 12px; vertical-align: middle; border-color: var(--border-light); } /* Suchfeld doppelt so breit */ .bootstrap-table .search input.form-control { width: 400px; /* Standard ist ~200px, Wert nach Bedarf anpassen */ } .fixed-table-pagination { padding: 15px 20px; background: var(--bg-light); border-top: 1px solid var(--border-color); } .page-item.active .page-link { background-color: var(--primary-color); border-color: var(--primary-color); } .page-link { color: var(--primary-color); padding: 8px 14px; } .page-link:hover { color: var(--primary-dark); background: var(--bg-light); } /* Action Buttons in Tabelle */ .table-actions { display: flex; gap: 6px; justify-content: center; } .table-actions .btn { width: 34px; height: 34px; padding: 0; display: inline-flex; align-items: center; justify-content: center; border-radius: var(--radius-sm); } .table-actions .btn:hover { transform: scale(1.1); } /* =========================== Forms =========================== */ .form-group { margin-bottom: 20px; } .form-label { display: block; font-weight: 500; margin-bottom: 8px; color: var(--text-primary); } .form-control { width: 100%; padding: 12px 15px; border: 1px solid var(--border-color); border-radius: var(--radius-md); font-size: 1em; transition: var(--transition); } .form-control:focus { border-color: var(--primary-color); box-shadow: 0 0 0 3px rgba(26,58,92,0.1); outline: none; } .form-control:disabled { background: var(--bg-light); cursor: not-allowed; color: var(--text-muted); } .form-select { width: 100%; padding: 12px 15px; border: 1px solid var(--border-color); border-radius: var(--radius-md); font-size: 1em; background: white; cursor: pointer; } .form-select:focus { border-color: var(--primary-color); box-shadow: 0 0 0 3px rgba(26,58,92,0.1); outline: none; } textarea.form-control { resize: vertical; min-height: 100px; } /* =========================== Modals =========================== */ .modal-content { border: none; border-radius: var(--radius-lg); box-shadow: var(--shadow-lg); } .modal-header { background: var(--primary-color); color: white; border-radius: var(--radius-lg) var(--radius-lg) 0 0; padding: 18px 25px; border-bottom: none; } .modal-header .modal-title { font-weight: 600; font-size: 1.15em; display: flex; align-items: center; gap: 10px; } .modal-header .btn-close { filter: brightness(0) invert(1); opacity: 0.8; } .modal-header .btn-close:hover { opacity: 1; } .modal-body { padding: 30px; } .modal-footer { padding: 18px 25px; border-top: 1px solid var(--border-light); background: var(--bg-lighter); border-radius: 0 0 var(--radius-lg) var(--radius-lg); gap: 10px; } /* =========================== Alerts =========================== */ .alert { padding: 15px 20px; border-radius: var(--radius-md); margin-bottom: 20px; border: none; display: flex; align-items: center; gap: 12px; } .alert i { font-size: 1.2em; } .alert-success { background: #d4edda; color: #155724; } .alert-danger { background: #f8d7da; color: #721c24; } .alert-warning { background: #fff3cd; color: #856404; } .alert-info { background: #d1ecf1; color: #0c5460; } /* =========================== Autocomplete Dropdown =========================== */ .autocomplete-dropdown { position: fixed; z-index: 9999; background: white; border: 1px solid var(--border-color); border-radius: var(--radius-md); box-shadow: var(--shadow-lg); max-height: 300px; overflow-y: auto; } .autocomplete-dropdown .dropdown-item { padding: 12px 16px; cursor: pointer; color: var(--text-primary); text-decoration: none; display: block; transition: var(--transition); border-bottom: 1px solid var(--border-light); } .autocomplete-dropdown .dropdown-item:last-child { border-bottom: none; } .autocomplete-dropdown .dropdown-item:hover, .autocomplete-dropdown .dropdown-item.active { background: var(--primary-color); color: white; } /* =========================== Relations Table =========================== */ .relations-table { width: 100%; border-collapse: collapse; margin-top: 15px; } .relations-table th { background: var(--bg-light); padding: 12px 15px; text-align: left; font-weight: 600; border-bottom: 2px solid var(--border-color); color: var(--text-secondary); } .relations-table td { padding: 12px 15px; border-bottom: 1px solid var(--border-light); } .relations-table tr:hover { background: rgba(26,58,92,0.02); } /* =========================== Stats Grid =========================== */ .stats-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 20px; margin-top: 20px; } .stat-item { background: var(--bg-light); padding: 20px; border-radius: var(--radius-md); text-align: center; border: 1px solid var(--border-light); } .stat-number { font-size: 2.2em; font-weight: 700; color: var(--primary-color); line-height: 1; } .stat-label { font-size: 0.9em; color: var(--text-secondary); margin-top: 8px; } /* =========================== Footer =========================== */ .site-footer { background: var(--primary-dark); color: white; padding: 20px 0; margin-top: auto; } .site-footer .container { display: flex; justify-content: space-between; align-items: center; } .footer-links { list-style: none; display: flex; gap: 25px; margin: 0; padding: 0; } .footer-links a { color: rgba(255,255,255,0.7); text-decoration: none; transition: var(--transition); font-size: 0.9em; } .footer-links a:hover { color: white; } .footer-copyright { color: rgba(255,255,255,0.6); font-size: 0.85em; } /* =========================== Utilities =========================== */ .text-center { text-align: center; } .text-right { text-align: right; } .text-muted { color: var(--text-muted); } .mt-10 { margin-top: 10px; } .mt-20 { margin-top: 20px; } .mt-30 { margin-top: 30px; } .mb-10 { margin-bottom: 10px; } .mb-20 { margin-bottom: 20px; } .mb-30 { margin-bottom: 30px; } .d-none { display: none; } .d-block { display: block; } .d-flex { display: flex; } .justify-between { justify-content: space-between; } .align-center { align-items: center; } .gap-10 { gap: 10px; } .gap-20 { gap: 20px; } .w-100 { width: 100%; } /* =========================== Responsive =========================== */ @media (max-width: 992px) { .site-header .container { flex-direction: column; gap: 15px; } .main-nav ul { flex-wrap: wrap; justify-content: center; } .card { padding: 25px; } .nav-grid { grid-template-columns: 1fr; } } @media (max-width: 768px) { .site-footer .container { flex-direction: column; gap: 15px; text-align: center; } .footer-links { flex-wrap: wrap; justify-content: center; } .project-item { flex-direction: column; align-items: flex-start; gap: 15px; } .project-actions { width: 100%; } .project-actions .btn { flex: 1; } .stats-grid { grid-template-columns: 1fr 1fr; } } @media (max-width: 480px) { .card-title { font-size: 1.3em; } .stats-grid { grid-template-columns: 1fr; } .btn { width: 100%; justify-content: center; } .table-actions { flex-direction: column; } } /* =========================== Print Styles =========================== */ @media print { .site-header, .site-footer, .btn, .table-actions { display: none; } .card { box-shadow: none; border: 1px solid var(--border-color); } body { background: white; } }