/* Font Definitions */
@font-face {
    font-display: swap;
    font-family: 'Font Awesome 6 Pro';
    font-style: normal;
    font-weight: 400;
    src: url('../fonts/fa-regular-400.woff2') format('woff2'),
    url('../fonts/fa-regular-400.ttf') format('truetype');
}

@font-face {
    font-display: swap;
    font-family: 'Font Awesome 6 Pro';
    font-style: normal;
    font-weight: 900;
    src: url('../fonts/fa-solid-900.woff2') format('woff2'),
    url('../fonts/fa-solid-900.ttf') format('truetype');
}

@font-face {
    font-display: swap;
    font-family: 'Font Awesome 6 Pro';
    font-style: normal;
    font-weight: 100;
    src: url('../fonts/fa-thin-100.woff2') format('woff2'),
    url('../fonts/fa-thin-100.ttf') format('truetype');
}

@font-face {
    font-display: swap;
    font-family: 'Source Code Pro';
    font-style: normal;
    font-weight: 400;
    src: url('../fonts/source-code-pro-1.woff2') format('woff2');
}

@font-face {
    font-display: swap;
    font-family: 'Playfair Display';
    font-style: normal;
    font-weight: 900;
    src: url('../fonts/playfair-display-1.woff2') format('woff2');
}

/* Grundlegende Styles */
html, body {
    margin: 0 !important;
    padding: 0 !important;
    min-height: 100vh !important;
    display: flex !important;
    flex-direction: column !important;
    font-family: 'Source Code Pro', sans-serif !important;
    background-color: #fff !important;
}

body {
    padding-top: 50px !important;
}

* {
    font-family: 'Source Code Pro', sans-serif !important;
}

input, button, select, textarea, .form-control {
    font-family: 'Source Code Pro', sans-serif !important;
}

.navbar, .navbar-nav, .nav-link {
    font-family: 'Source Code Pro', sans-serif !important;
}

.dropdown-item {
    font-family: 'Source Code Pro', sans-serif !important;
}

/* Main Container */
#main {
    flex: 1 0 auto;
    padding-top: 1rem !important;
    margin: 0 !important;
}

/* Login Page Styles */
#page-login {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    min-height: calc(100vh - 115px) !important;
    width: 100% !important;
    background-color: #f5f5f5 !important;
    margin-top: -20px !important;
    padding-top: 40px !important;
}

.col-md-6.offset-md-3 {
    margin: 0 auto !important;
    padding: 0 15px !important;
    display: flex !important;
    justify-content: center !important;
    width: 100% !important;
    max-width: 100% !important;
}

#login-box {
    background: #003854 !important;
    padding: 40px !important;
    border-radius: 12px !important;
    box-shadow: 0 10px 25px rgba(0, 0, 0, 0.2) !important;
    color: white !important;
    width: 100% !important;
    max-width: 480px !important;
}

.login-icon {
    text-align: center !important;
    margin-bottom: 30px !important;
    background: transparent !important;
    padding: 20px !important;
}

.login-icon img {
    max-width: 200px !important;
    height: auto !important;
    /* Entfernt den Filter, da das Logo die richtigen Farben bereits enthält */
}

#login-box .input-group {
    width: 100% !important;
    display: flex !important;
    margin-bottom: 20px !important;  /* Abstand zwischen den Eingabefeldern */
}

/* Input Fields in Login */
#login-box .input-group-text {
    min-width: 42px !important;
    width: 42px !important;
    background-color: #00CAC0 !important;
    border: none !important;
    color: white !important;
    display: flex !important;
    justify-content: center !important;
    align-items: center !important;
}

#login-box .form-control {
    flex: 1 1 auto !important;
    min-width: 0 !important;
    width: calc(100% - 42px) !important;
    background-color: rgba(255, 255, 255, 0.9) !important;
    border: none !important;
    color: #003854 !important;
    padding: 12px !important;
}

#login-box .form-control:focus {
    box-shadow: 0 0 0 0.2rem rgba(0, 202, 192, 0.25) !important;
}

#login-box .row {
    margin: 0 !important;
    width: 100% !important;
}

/* Login Button */
#login-box .btn-primary {
    width: 100% !important;
    margin-top: 15px !important;  /* Abstand über dem Button */
    margin-bottom: 15px !important;  /* Abstand unter dem Button */
    padding: 12px !important;
    background-color: #00CAC0 !important;
    border: none !important;
    font-weight: bold !important;
    text-transform: uppercase !important;
}

#login-box .btn-primary:hover {
    background-color: #009b92 !important;
    transform: translateY(-2px) !important;
    box-shadow: 0 6px 8px rgba(0, 0, 0, 0.2) !important;
}

/* Remember Me Checkbox */

#login-box .form-check {
    margin: 20px 0 !important;  /* Mehr Abstand vor und nach der Checkbox */
}

#login-box .form-check-label {
    color: white !important;
    font-family: 'Source Code Pro', sans-serif !important;
}

#login-box .form-check-input:checked {
    background-color: #00CAC0 !important;
    border-color: #00CAC0 !important;
}

#login-box .divider {
    margin: 25px 0 !important;  /* Mehr Abstand um die Trennlinie */
    border-bottom: 1px solid rgba(255, 255, 255, 0.1) !important;
}

/* Language Selection */
#login-footer {
    text-align: center !important;
    margin-top: 20px !important;
}

#login-footer .btn-link {
    color: #f5f5f5 !important;
    font-family: 'Source Code Pro', sans-serif !important;
    text-decoration: none !important;
}

#login-footer .btn-link:hover {
    color: #00CAC0 !important;
}

#change-language-options {
    margin-top: 15px !important;
}

#languageDropDown {
    border: 1px solid #dee2e6 !important;
    border-radius: 4px !important;
    font-family: 'Source Code Pro', sans-serif !important;
}

/* Navigation & Header */
.navbar {
    background-color: #003854 !important;
    border-bottom: solid 1px #e7e7e7;
    padding: 0 !important;
    box-shadow: 0 2px 2px 0 rgba(0,0,0,.14), 0 3px 1px -2px rgba(0,0,0,.12), 0 1px 5px 0 rgba(0,0,0,.2) !important;
}

.navbar .bi {
    font-size: 1.3rem !important;
}

.navbar-light .navbar-nav .nav-link {
    color: white !important;
}

/* Dashboard Styles */
.dashboard {
    margin-top: 15px !important;
    background-color: #fcfcfc !important;
    border-radius: 2px !important;
    box-shadow: 0 0 5px 1px #99988e !important;
}

.dashboard-header {
    background: #003854 !important;
    padding: 5px 20px !important;
    color: #fff !important;
    letter-spacing: 1px !important;
    font-family: 'Playfair Display', serif !important;
    font-size: 18px !important;
}

.dashboard-header .btn-link {
    color: white !important;
    padding: 0 !important;
    margin: 0 !important;
}

.dashboard-contents {
    padding: 15px !important;
    border: 1px solid #4c4854 !important;
}

.dashboard-contents .timespan {
    padding: 3px !important;
    font-style: italic !important;
    color: #777 !important;
    border-bottom: 1px solid #E9E9E9 !important;
}

/* Reservierungen */
.reservation {
    padding: 3px 0 !important;
    border-bottom: 1px solid #E9E9E9 !important;
    margin: 0 3px !important;
}

.reservation:hover {
    cursor: pointer !important;
    background-color: #eaf2f2 !important;
    color: #222 !important;
}

/* Verfügbarkeit */
.availabilityDashboard .header {
    font-family: 'Playfair Display', serif !important;
    color: #00CAC0 !important;
    font-size: 24pt !important;
    font-weight: bold !important;
    margin: 20px 0 !important;
    padding: 10px 0 !important;
}

.availabilityDashboard .resourceName {
    text-overflow: ellipsis !important;
    color: #428181 !important;
    border-radius: 4px !important;
    padding: 2px !important;
    display: inline-block !important;
    margin-right: 2px !important;
    background-color: #cfe4dd !important;
}

.availabilityDashboard .resourceName a {
    color: #000 !important;
}

.availabilityDashboard .availability {
    font-style: italic !important;
    color: #585754 !important;
}

.availability-item {
    padding: 5px 0 !important;
}

.availability-item .btn {
    background-color: #58AC58 !important;
    color: #fff !important;
    border-color: #458c45 !important;
    padding: 1px 20px !important;
}

.availability-item .btn:hover {
    background-color: #4e9d4e !important;
    border-color: #3d7b3d !important;
}

/* Footer */
.footer {
    background-color: #003854 !important;
    color: white !important;
    padding: 15px 0 !important;
    text-align: center !important;
    box-shadow: 0 -4px 10px rgba(0, 0, 0, 0.1) !important;
    flex-shrink: 0 !important;
    margin-top: auto !important;
}

.footer a {
    color: #00CAC0 !important;
    text-decoration: none !important;
    transition: color 0.3s ease !important;
}

.footer a:hover {
    color: white !important;
}

/* Badge Styles */
.badge {
    background-color: #00CAC0 !important;
    color: white !important;
}

/* Buttons */
.btn-link {
    text-decoration: none !important;
}

.btn-xs,
.btn-primary,
.btn-default {
    background-color: #003854 !important;
    color: white !important;
    border: none !important;
    padding: 8px 15px !important;
    border-radius: 4px !important;
    transition: background-color 0.2s !important;
}

.btn-xs:hover,
.btn-primary:hover,
.btn-default:hover {
    background-color: #00CAC0 !important;
}

/* Grundlegende Tabellenstyling für mehr Luftigkeit */
table.reservations {
    border-spacing: 2px;
    border-collapse: separate;
    margin: 10px 0;
}

/* Zellenabstände und Padding */
table.reservations td {
    padding: 6px 4px;
    height: 50px;
    position: relative;
    border: 1px solid #e0e0e0;
}

/* Ressourcennamen-Spalte */
table.reservations td.resourcename {
    padding: 8px 12px;
    height: 60px;
    font-size: 0.95em;
    background-color: #f8f8f8;
    border-right: 2px solid #d0d0d0;
}

/* Zeitslot-Headers */
table.reservations thead td {
    padding: 8px 4px;
    background-color: #f0f0f0;
    font-weight: 600;
    border-bottom: 2px solid #d0d0d0;
}

/* Reservierbare Slots */
td.reservable {
    background-color: #ffffff;
    transition: background-color 0.2s;
}

td.reservable:hover {
    background-color: #f0f8ff;
}

/* Reservierte Slots */
td.reserved {
    background-color: #e3e8ed;
    border: 1px solid #c5ccd3;
}

/* Vergangene Zeitslots */
td.pasttime {
    background-color: #f5f5f5;
    opacity: 0.7;
}

/* Unreservierbare Slots */
td.unreservable {
    background-color: #ffe5e5;
    opacity: 0.7;
}

/* Heute-Markierung */
tr.today td {
    background-color: #fff8dc;
}

/* Zeitslot-Labels */
.reslabel {
    font-size: 0.9em;
    color: #666;
}

/* Resourcen Gruppierung */
.resourceNameSelector {
    color: #333;
    text-decoration: none;
    display: block;
    padding: 4px;
}

/* Verbessertes Layout für mobile Ansicht */
@media (max-width: 768px) {
    table.reservations td {
        padding: 4px 2px;
        height: 40px;
        font-size: 0.85em;
    }

    table.reservations td.resourcename {
        padding: 6px 8px;
        height: 50px;
    }
}

/* Verbesserte Lesbarkeit der Reservierungsdetails */
.reservation {
    padding: 4px;
    margin: 2px;
    border-radius: 3px;
}

/* Farbkodierung für verschiedene Reservierungszustände */
.reserved.mine {
    background-color: #d4e6f1;
    border: 1px solid #a9cce3;
}

.reserved.participating {
    background-color: #d5f5e3;
    border: 1px solid #abebc6;
}

.reserved.pending {
    background-color: #fdebd0;
    border: 1px solid #fad7a0;
}

/* Verbesserte Sichtbarkeit der Zeitslot-Trenner */
table.reservations td:not(:last-child) {
    border-right: 1px dotted #ccc;
}

/* Bessere visuelle Hierarchie */
.schedule_title {
    margin: 20px 0;
    padding: 10px 0;
    border-bottom: 2px solid #eee;
}