/* ImmoTeams Main Stylesheet */

/* ===== Variables ===== */
:root {
    /* Colors */
    --primary: #1976D2;
    --primary-light: #2196F3;
    --primary-lighter: #64B5F6;
    --primary-button: #5797D4;
    --green-button: #4DAF4F;
    --purple-button: #9C27B0;
    --secondary: #28A69A;
    --success: #388E3C;
    --warning: #FB8C00;
    --danger: #D32F2F;
    --text-primary: #495057;
    --text-secondary: #757575;
    --background: #f5f5f5; /*TODO: #f5f5f5 */
    --background-light: #f8f9fa; /*TODO: #f5f5f5 */

    /* Border Radius */
    --radius-card: 12px;
    --radius-button: 8px;
    --radius-image: 8px;
    --radius-input: 8px;
    --radius-badge: 8px;
    --radius-dialog: 12px;

    /* Shadows */
    --shadow-badge: 0 4px 8px rgba(0, 0, 0, 0.1);
    --shadow-box: 0 1px 2px 0 rgba(60, 64, 67, .3), 0 1px 3px 1px rgba(60, 64, 67, .15);
    --shadow-button: 0 2px 4px rgba(0, 0, 0, 0.1);
    --shadow-dialog: 0 8px 24px rgba(0, 0, 0, 0.2);
}

/* ===== Base Styles ===== */
body {
    margin: 0;
    overflow-x: hidden;
    min-height: 100vh;
    background: var(--background);
}

.bg-light {
    background: var(--background-light);
}

.bg-primary-light {
    background: rgba(25, 118, 210, 0.1);
}

/* Header Profile */
.header-profile-container {
    position: relative;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 2px;
    height: 60px;
    width: 60px;
    border-radius: 50%;
    transition: background-color 0.2s ease;
}

.header-profile-container:hover {
    background-color: rgba(25, 118, 210, 0.1);
}

.header-profile-img {
    width: 44px !important;
    height: 44px !important;
    object-fit: cover !important;
    border: 2px solid var(--primary) !important;
    box-sizing: border-box !important;
    transition: transform 0.2s ease !important;
}

/* ===== Typography ===== */
.text-h1 {
    font-size: 2.5rem;
    font-weight: 600;
    line-height: 1.2;
    color: var(--primary);
}

.text-h2 {
    font-size: 2rem;
    font-weight: 600;
    line-height: 1.3;
    color: var(--primary);
}

.text-h3 {
    font-size: 1.75rem;
    font-weight: 500;
    line-height: 1.4;
    color: var(--primary);
}

.text-h4 {
    font-size: 1.5rem;
    font-weight: 500;
    line-height: 1.4;
    color: var(--primary);
}

.text-h6 {
    font-size: 1.2rem;
    font-weight: 500;
    line-height: 1.4;
    color: var(--primary);
}

.text-title {
    font-size: 1.2rem;
    font-weight: 500;
    line-height: 1.4;
    color: var(--text-primary);
}

.text-body {
    font-size: 1rem;
    line-height: 1.6;
    color: var(--text-primary);
}

.text-caption {
    font-size: 0.875rem;
    line-height: 1.4;
    color: var(--text-secondary);
}

.text-special-title {
    background: linear-gradient(135deg, #1976D2 0%, #2196F3 50%, #64B5F6 100%);
    background-clip: text;
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.1);
    letter-spacing: 1px;
    margin-bottom: 1rem;
}

.text-primary {
    color: var(--primary) !important;
}

.text-white {
    color: #ffffff !important;
}

.text-warning {
    color: var(--warning) !important;
}

/* ===== Layout Components ===== */
.header {
    background: linear-gradient(135deg, #f0f0f0 0%, #f5f5f5 50%, #fafafa 100%);
    border-radius: 12px 12px 2px 2px;
    margin-top: 16px;
    padding: 16px 16px;
    border-width: 0;
    box-sizing: border-box;
    box-shadow: var(--shadow-box);
    align-items: center;
    justify-content: space-between;
}

.subheader {
    background: linear-gradient(135deg, #f4f4f4 0%, #f4f4f4 50%, #ffffff 100%);
    padding: 16px 28px 16px 30px;
    box-sizing: border-box;
    color: #3c4043;
    border-width: 0;
    box-shadow: var(--shadow-box);
    align-items: center;
    justify-content: space-between;
}

.footer {
    background: linear-gradient(135deg, #f0f0f0 0%, #f5f5f5 50%, #fafafa 100%);
    padding: 20px;
    border-radius: 2px 2px 12px 12px;
    box-shadow: var(--shadow-box);
    align-items: center;
}

/* ===== Utilities ===== */
.flex-center {
    display: flex;
    align-items: center;
    justify-content: center;
}

.rounded-full {
    border-radius: 50% !important;
}

.rounded-b-lg {
    border-radius: 2px 2px 12px 12px;
}

.rounded-t-lg {
    border-radius: 12px 12px 2px 2px;
}

.overflow-hidden {
    overflow: hidden;
}

/* TODO:  obsolet? */
.flex-2 {
    flex: 2;
}

.w-40 {
    width: 40px;
}

.w-48 {
    width: 12rem;
}

.w-90 {
    width: 90%;
}

.w-96 {
    width: 24rem;
}

.w-150 {
    width: 150px;
}

.w-200 {
    width: 200px;
}

.w-300 {
    width: 300px;
}

.min-w-200 {
    min-width: 200px;
}

.min-w-400 {
    min-width: 400px;
}

.min-w-600 {
    min-width: 600px;
}

.max-w-400 {
    max-width: 400px;
}

.h-46 {
    height: 46px;
}

.h-200 {
    height: 200px;
}

.dialog-600 {
    min-width: 600px !important;
    max-width: 900px !important;
}

/* ===== Profile Picture ===== */
.profile-picture {
    width: 150px;
    height: 150px;
    border-radius: 50%;
    object-fit: cover;
    border: 6px solid #ffffff !important;
    box-sizing: border-box !important;
}

/* ===== Containers ===== */

.body-container {
    align-items: center;
    padding: 0px;
    gap: 0px;
}

.container-sm {
    width: 100%;
    max-width: 600px;
    margin: 0 auto;
    padding: 20px;
}

.login-container {
    height: 90vh;
    width: 100vw;
    margin: 0;
    padding: 0;
}

/* ===== Cards ===== */
.card {
    background: #ffffff;
    border-radius: var(--radius-card);
    box-shadow: var(--shadow-box);
    padding: 1.5rem;
}

.card:hover {
    transform: translateY(-2px);
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15);
    transition: all 0.2s ease;
}

.section-card {
    background: white;
    border-radius: var(--radius-card);
    box-shadow: var(--shadow-box);
    padding: 1.5rem;
    width: 100%;
    margin-bottom: 16px;
}

.dialog-card {
    background: #ffffff;
    border-radius: var(--radius-dialog) !important;
    box-shadow: var(--shadow-dialog) !important;
    padding: 1.5rem;
}

.input-card {
    background: #ffffff;
    border-radius: var(--radius-card);
    box-shadow: var(--shadow-box);
    padding: 1.5rem;
}

.card-flat {
    box-shadow: none;
}


/* ===== Buttons ===== */
.header-btn {
    color: var(--primary) !important;
    font-size: 1.1rem;
    height: 36px;
}

.header-title-btn {
    color: var(--primary) !important;
    font-size: 1.75rem;
    font-weight: 600;
    letter-spacing: 0.5px;
    line-height: 1;
}


.btn-primary {
    background: var(--primary-button) !important;
    color: white !important;
}

.btn-primary:hover {
    background: #1565C0;
}

.btn-secondary {
    background: var(--secondary) !important;
    color: white !important;
}

.btn-secondary:hover {
    background: #616161;
}

.btn-green {
    background: var(--green-button) !important;
    color: white !important;
}

.btn-green:hover {
    background: #616161;
}

.btn-purple {
    background: var(--purple-button) !important;
    color: white !important;
}

.btn-purple:hover {
    background: #1565C0;
}

.btn-success {
    background: var(--success);
    color: white;
}

.btn-success:hover {
    background: #2E7D32;
}

.btn-danger {
    background: var(--danger) !important;
    color: white !important;
}

.btn-danger:hover {
    background: #C62828;
}

/* ===== Image ===== */

.img {
    border-radius: var(--radius-image);
    transition: all 0.2s ease;
}

/* ===== Inputs ===== */

.input {
    border-radius: var(--radius-input);
    transition: all 0.2s ease;
}

/* ===== Links ===== */
.link {
    text-decoration: none;
    font-weight: 500;
    transition: all 0.2s ease;
}

/* ===== Badges ===== */
.badge {
    font-size: 0.8rem;
    padding: 6px 10px;
    border-radius: var(--radius-badge);
    font-weight: 500;
    transition: all 0.2s ease;
}

.badge:hover {
    transform: translateY(-1px);
    box-shadow: var(--shadow-badge);
}

/* ===== Decision Badges ===== */
.decision-badge {
    font-size: 0.85rem;
    padding: 0.2rem 0.5rem;
    font-weight: 500;
    display: inline-flex;
    align-items: center;
    border-radius: 4px;
}

/* ===== Status Badges ===== */
.status-badge {
    font-size: 0.8rem;
    padding: 6px 10px;
    border-radius: var(--radius-badge);
    font-weight: 500;
    transition: all 0.2s ease;
    position: relative;
}

.status-badge:hover {
    transform: translateY(-1px);
    box-shadow: var(--shadow-badge);
}

.request-count-badge {
    position: absolute;
    top: -8px;
    right: -8px;
    font-size: 0.7rem;
    padding: 4px 6px;
    border-radius: 12px;
    background: var(--danger);
    color: white;
    min-width: 20px;
    height: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.status-badge-large {
    font-size: 1.6rem !important;
    padding: 6px 10px !important;
    border-radius: 8px !important;
    font-weight: 500 !important;
    transition: all 0.2s ease !important;
    position: absolute !important;
    top: 40px !important;
    right: 40px !important;
    z-index: 1 !important;
}

.status-badge-large:hover {
    transform: translateY(-1px);
    box-shadow: var(--shadow-badge);
}

.request-count-badge-large {
    position: absolute !important;
    top: -8px !important;
    right: -8px !important;
    font-size: 1.2rem !important;
    padding: 6px 6px !important;
    border-radius: 12px !important;
    background: var(--danger) !important;
    color: white !important;
    min-width: 20px !important;
    height: 20px !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
}

/* ===== Status Colors ===== */
.status-frei {
    background: #4CAF50 !important;
    color: white !important;
}

.status-angefragt {
    background: var(--primary) !important;
    color: white !important;
}

.status-reserviert {
    background: var(--warning) !important;
    color: white !important;
}

.status-verkauft {
    background: var(--danger) !important;
    color: white !important;
}

.status-neu {
    background: var(--primary) !important;
    color: white !important;
}

.status-in-bearbeitung {
    background: var(--warning) !important;
    color: white !important;
}

.status-abgeschlossen {
    background: var(--success) !important;
    color: white !important;
}

.status-abgelehnt {
    background: var(--danger) !important;
    color: white !important;
}

.status-angenommen {
    background: var(--success) !important;
    color: white !important;
}

.status-genehmigt {
    background: var(--success) !important;
    color: white !important;
}

.status-abgebrochen {
    background: var(--warning) !important;
    color: white !important;
}

.status-pausiert {
    background: var(--warning) !important;
    color: white !important;
}


/* ===== Gradients ===== */
.gradient-blue {
    background: linear-gradient(135deg, var(--primary) 0%, var(--primary-light) 50%, var(--primary-lighter) 100%);
    position: relative;
}

.gradient-green {
    background: linear-gradient(135deg, #388E3C 0%, #4CAF50 50%, #81C784 100%);
}

.gradient-red {
    background: linear-gradient(135deg, #D32F2F 0%, #F44336 50%, #E57373 100%);
}

.gradient-purple {
    background: linear-gradient(135deg, #7B1FA2 0%, #9C27B0 50%, #BA68C8 100%);
}

.gradient-orange {
    background: linear-gradient(135deg, #E64A19 0%, #FF5722 50%, #FF8A65 100%);
}

/* ===== Team Colors ===== */
.team-main-text {
    color: var(--primary) !important;
}

.team-sub-text {
    color: #4CAF50 !important;
}

.team-partnership-text {
    color: #9C27B0 !important;
}

.team-shared-text {
    color: #FF5722 !important;
}

.team-main {
    background: var(--primary) !important;
}

.team-sub {
    background: #4CAF50 !important;
}

.team-partnership {
    background: #9C27B0 !important;
}

.team-shared {
    background: #FF5722 !important;
}

.team-main-outline {
    color: var(--primary) !important;
    background-color: transparent !important;
    border: 1px solid currentColor !important;
}

.team-sub-outline {
    color: #4CAF50 !important;
    background-color: transparent !important;
    border: 1px solid currentColor !important;
}

.team-partnership-outline {
    color: #9C27B0 !important;
    background-color: transparent !important;
    border: 1px solid currentColor !important;
}

.team-shared-outline {
    color: #FF5722 !important;
    background-color: transparent !important;
    border: 1px solid currentColor !important;
}

/* ===== Status Colors ===== */
.status-available {
    background: #4CAF50;
}

.status-requested {
    background: var(--primary);
}

.status-reserved {
    background: #FB8C00;
}

.status-sold {
    background: #D32F2F;
}

/* ===== Icons ===== */
.icon-xl {
    font-size: 3.8rem;
}

.icon-lg {
    font-size: 2.5rem;
}

.icon-2x {
    font-size: 2rem;
}

.icon-md {
    font-size: 1.5rem;
}

.icon-sm {
    font-size: 1.2rem;
}

/* ==== Button Styles ==== */
.q-btn {
    font-weight: 500 !important;
    border-radius: var(--radius-button) !important;
    transition: all 0.3s ease !important;
}

.q-btn:hover {
    transform: translateY(-1px) !important;
    box-shadow: var(--shadow-button) !important;
}

/* ===== Card Styles ===== */
.q-card {
    border-width: 0 !important;
    box-shadow: 0 1px 2px 0 rgba(60, 64, 67, .3), 0 1px 3px 1px rgba(60, 64, 67, .15) !important;
    box-sizing: border-box !important;
}

/* ===== Table Styles ===== */
.q-table {
    background: white;
    border-radius: 8px;
}

.q-table tbody tr:hover {
    background-color: #f8fafc;
}

.q-table thead tr th {
    font-weight: 600;
    background-color: #e4f3fd;
    transition: background-color 0.2s ease;
}

.q-table thead tr th:hover {
    background-color: var(--primary);
}

.q-table td, .q-table th {
    padding: 8px 16px;
}

.q-table th .q-icon {
    transition: transform 0.2s ease;
}

.q-table th:hover .q-icon {
    transform: scale(1.2);
}

/* Column widths */
.q-table th.col-auto {
    width: auto !important;
    white-space: nowrap;
}

.q-table th.col-expand {
    width: 100% !important;
}

.q-table th.col-actions {
    width: 120px !important;
    min-width: 120px !important;
    max-width: 120px !important;
}

.q-table th.col-date {
    width: 150px !important;
    min-width: 150px !important;
    white-space: nowrap;
}

.q-table th.col-badge {
    width: 90px !important;
    min-width: 90px !important;
    text-align: center;
}

.q-table th.col-status {
    width: 120px !important;
    min-width: 120px !important;
    text-align: center;
}

/* Classes for the TD elements (to match the columns) */
.q-table td.col-expand {
    width: 100% !important;
}

.q-table td.col-actions {
    width: 120px !important;
    min-width: 120px !important;
    max-width: 120px !important;
}

.q-table td.col-badge {
    width: 90px !important;
    min-width: 90px !important;
    text-align: center;
}

.q-table td.col-date {
    width: 150px !important;
    min-width: 150px !important;
}

.q-table td.col-auto {
    width: auto !important;
    white-space: nowrap;
}

.q-table td.col-decision {
    width: 120px !important;
    min-width: 120px !important;
    text-align: center;
}

.q-table td.col-status {
    width: 120px !important;
    min-width: 120px !important;
    text-align: center;
}

.can-manage {
    background-color: rgba(25, 118, 210, 0.05);
}

/* Center badges in table cells */
.badge-cell {
    display: flex !important;
    justify-content: center !important;
    align-items: center !important;
    gap: 4px !important;
    flex-wrap: wrap !important;
}

.badge-cell .q-badge {
    margin: 2px !important;
}

/* Action buttons */
.action-buttons {
    display: flex !important;
    justify-content: center !important;
    align-items: center !important;
    gap: 4px !important;
}

.action-button {
    font-size: 0.7rem !important;
    padding: 4px 4px !important;
    border-radius: 4px !important;
    transition: all 0.2s ease !important;
}

.action-button:hover {
    background: rgba(25, 118, 210, 0.1) !important;
    transform: translateY(-1px);
}

/* Filter section */
.filter-section {
    display: flex;
    gap: 1rem;
    margin-bottom: 1rem;
    flex-wrap: wrap;
}

.filter-input {
    min-width: 200px;
    flex: 1;
}

/* Project thumbnail */
.project-thumb {
    width: 40px;
    height: 40px;
    object-fit: cover;
    border-radius: 4px;
    transition: all 0.2s ease;
    opacity: 1;
}

/* Projektname mit Badge */
.project-name-with-badge {
    display: flex;
    align-items: center;
    gap: 12px;
}

.project-name-with-badge .q-badge {
    margin-left: 12px;
}

/* Thumbnail container hover effects */
.thumbnail-link {
    display: block !important;
    transition: all 0.2s ease !important;
}

.thumbnail-link:hover .project-thumb {
    opacity: 0.9 !important;
}

.thumbnail-link:hover .q-icon {
    opacity: 0.9 !important;
}

.thumbnail-link .q-icon {
    opacity: 1 !important;
    transition: all 0.2s ease !important;
}

/* Request card styles */
.request-project-thumb {
    width: 32px;
    height: 32px;
    object-fit: cover;
    border-radius: 4px;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}

/* Icon mit gleicher Größe wie Projektbild */
.request-project-icon {
    width: 32px !important;
    height: 32px !important;
    font-size: 32px !important;
    color: var(--primary);
}

.request-info {
    min-width: 280px !important;
}

.case-card {
    transition: all 0.2s ease;
    border: 1px solid rgba(0, 0, 0, 0.05);
    min-width: 320px;
    border-radius: 8px;
    position: relative;
    overflow: hidden;
}

.case-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
    border-color: var(--primary-lighter);
}

/* Farbige Leiste für verschiedene Anfragetypen */
.case-card::before {
    content: '';
    position: absolute;
    left: 0;
    top: 0;
    bottom: 0;
    width: 4px;
    background-color: var(--primary);
}

/* Eigene Anfragen */
.case-card.own-request::before {
    background-color: var(--purple-button);
}

/* Fremde Anfragen */
.case-card.foreign-request::before {
    background-color: var(--primary);
}

.case-card .text-body {
    color: var(--text-primary) !important;
    font-size: 0.9rem !important;
}

.case-card .text-caption {
    color: var(--text-secondary) !important;
    font-size: 0.85rem !important;
    line-height: 1.4 !important;
}

/* Badge für den Anfragestatus */
.request-type-badge {
    position: absolute;
    top: 8px;
    right: 8px;
    font-size: 0.7rem;
    padding: 2px 8px;
    border-radius: 12px;
    background-color: var(--primary-lighter);
    color: white;
}

.request-type-badge.own {
    background-color: var(--purple-button);
}

/* Project link */
.project-link {
    color: var(--primary);
    text-decoration: none;
    transition: all 0.2s ease;
    align-items: center;
    gap: 8px;
}

.project-link:hover {
    color: var(--primary);
    text-decoration: underline;
}

.project-link .project-thumb {
    width: 32px !important;
    height: 32px !important;
    object-fit: cover !important;
    border-radius: 4px !important;
    transition: all 0.2s ease !important;
}

.project-link .project-icon {
    width: 32px !important;
    height: 32px !important;
    color: var(--primary) !important;
}

/* Project link in expose/request pages */
.expose-project-link .project-thumb,
.expose-project-link .project-icon {
    width: 1.4rem !important;
    height: 1.4rem !important;
    font-size: 1.4rem !important;
}

/* Apartment link */
.apartment-link {
    color: var(--primary);
    text-decoration: none;
    transition: all 0.2s ease;
}

.apartment-link:hover {
    color: var(--primary);
    text-decoration: underline;
}

/* Context menu */
.q-menu {
    border-radius: 8px;
    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1) !important;
}

/* Tooltip styling */
.q-tooltip {
    background-color: #ffffff !important;
    color: var(--text-primary) !important;
    font-weight: 400 !important;
    border-radius: 4px !important;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15) !important;
    padding: 8px 12px !important;
    max-width: 300px !important;
    font-size: 0.9rem !important;
    line-height: 1.4 !important;
}

.q-tooltip .text-weight-bold {
    color: var(--text-primary) !important;
    margin-bottom: 4px !important;
}

.q-item {
    padding: 12px 16px;
    min-height: 48px;
    transition: all 0.2s ease;
}

.q-item:hover {
    background: rgba(25, 118, 210, 0.1);
}

.q-item__section--avatar {
    min-width: 40px;
}

.q-item__section--avatar .q-icon {
    font-size: 1.2rem;
}

.q-separator {
    margin: 4px 0;
}

/* Center status badges in table cells */
.q-td .q-badge {
    display: flex !important;
    justify-content: center !important;
    align-items: center !important;
    margin: 0 !important;
}

/* Notes tooltip */
.notes-tooltip {
    max-width: 300px !important;
    white-space: pre-wrap !important;
    line-height: 1.4 !important;
}

/* File Uploads */
.file-upload {
    width: 100%;
    min-height: 180px;
    border: 3px dashed var(--primary-lighter);
    border-radius: var(--radius-image);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 1rem;
    transition: all 0.3s ease;
    background: linear-gradient(135deg, #f8f9fa 0%, #ffffff 100%);
    padding: 2rem;
}

.file-upload:hover {
    border-color: var(--primary);
    background: rgba(25, 118, 210, 0.05);
    transform: translateY(-2px);
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.1);
}

.file-upload .q-uploader__header {
    font-size: 1.2rem !important;
    color: var(--primary) !important;
    background: transparent !important;
}

.file-upload .q-icon {
    font-size: 4rem !important;
    color: var(--primary-button);
}

.file-upload:hover .q-icon {
    color: var(--primary-button);
}


/* Project Components */

/* Project Cards */
.project-main-card,
.gallery-card,
.documents-card,
.link-card,
.sharing-card {
    background: white;
    border-radius: var(--radius-card);
    box-shadow: var(--shadow-box);
    padding: 2rem;
    margin-bottom: 0.5rem;
    position: relative;
    width: 100%;
}

/* Form Fields */
.text-weight-bold {
    font-weight: 500 !important;
    color: var(--text-primary) !important;
    font-size: 0.9rem !important;
}

.select-field-sm {
    max-width: 200px !important;
    font-size: 0.9rem !important;
    padding: 4px 8px !important;
}


/* Profile Image */
.profile-image-container {
    width: 100%;
    height: 100%;
    position: relative;
}

.profile-image {
    aspect-ratio: 1.5;
    width: 100%;
    display: block;
    object-fit: contain;
    border-radius: var(--radius-image);
    cursor: pointer;
    transition: transform 0.2s ease;
}

.profile-image:hover {
    transform: scale(1.02);
}

.image-controls {
    position: absolute;
    top: 8px;
    right: 8px;
    background-color: rgba(255 255, 255, 0.9);
    border-radius: 4px;
    padding: 4px;
    opacity: 0;
    transition: opacity 0.2s ease;
    z-index: 1;
}

.profile-image-container:hover .image-controls {
    opacity: 1;
}

.control-btn {
    margin: 0 2px !important;
    min-height: 24px !important;
    min-width: 24px !important;
    padding: 0 !important;
}

/* Enlarged Image Dialog */
.enlarged-image-dialog {
    max-width: 90vw;
    max-height: 90vh;
    padding: 1rem;
    background: white;
    border-radius: var(--radius-dialog);
}

.enlarged-profile-image {
    max-width: 80vw;
    max-height: 70vh;
    object-fit: contain;
    border-radius: var(--radius-image);
}

.image-delete-btn {
    position: absolute !important;
    top: 12px;
    right: 12px;
    opacity: 0.8;
    transition: opacity 0.2s ease;
    background: rgba(255, 255, 255, 0.9) !important;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}

.image-delete-btn:hover {
    opacity: 1;
    transform: translateY(-1px);
}


/* Gallery */
.modal-card {
    background: #ffffff;
    border-radius: var(--radius-dialog);
    box-shadow: var(--shadow-dialog);
}

.modal-image {
    height: 70vh;
    object-fit: contain;
}

.modal-image .q-img__image {
    object-fit: contain !important;
}

.modal-image-number {
    font-size: 0.9rem !important;
    color: var(--text-primary) !important;
    white-space: nowrap !important;
}

.modal-image-caption {
    flex: 1 !important;
    color: #000000 !important;
    font-size: 1rem !important;
    margin-left: 1rem !important;
}

.modal-caption-container {
    flex: 1 !important;
    margin: 0 1rem !important;
    display: flex !important;
    gap: 0.5rem !important;
    align-items: center !important;
}

.modal-caption-input {
    flex: 1 !important;
    min-width: 300px !important;
}

.modal-save-btn {
    white-space: nowrap !important;
}

.modal-action-buttons {
    display: flex !important;
    gap: 0.5rem !important;
    align-items: center !important;
}

.gallery-grid {
    width: 100%;
    gap: 1.5rem;
}

.gallery-item-container {
    position: relative;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    transform: translateX(0);
}

.gallery-item-container[draggable="true"] {
    cursor: move;
    z-index: 1;
}

.gallery-item-container[draggable="true"]:hover {
    transform: translateY(-4px);
    box-shadow: var(--shadow-dialog);
}

/* Styles for the dragged item */
.gallery-item-container[draggable="true"]:active {
    transform: scale(1.05);
    opacity: 0.8;
    z-index: 2;
    box-shadow: var(--shadow-dialog);
}

/* Styles for the drop target */
.gallery-item-container.drag-over {
    transform: translateX(20px);
    position: relative;
}

.gallery-item-container.drag-over::before {
    content: '';
    position: absolute;
    left: -20px;
    top: 0;
    width: 4px;
    height: 100%;
    background: var(--primary);
    border-radius: 2px;
    animation: pulse 1.5s infinite;
    z-index: 1;
}

.gallery-item-container.drag-over .gallery-item {
    box-shadow: -8px 0 16px rgba(25, 118, 210, 0.1);
    transform: scale(1.02);
}

@keyframes pulse {
    0% {
        box-shadow: 0 0 0 0 rgba(25, 118, 210, 0.4);
    }
    70% {
        box-shadow: 0 0 0 6px rgba(25, 118, 210, 0);
    }
    100% {
        box-shadow: 0 0 0 0 rgba(25, 118, 210, 0);
    }
}

.gallery-item {
    position: relative;
    cursor: pointer;
    transition: all 0.3s ease;
    border-radius: var(--radius-image);
    box-shadow: var(--shadow-box);
    overflow: hidden;
}

.gallery-image {
    aspect-ratio: 1.5;
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 0.3s ease;
}

.gallery-item:hover .gallery-image {
    transform: scale(1.05);
}

.gallery-number {
    position: absolute !important;
    bottom: 8px;
    right: 8px;
    background: rgba(0, 0, 0, 0.7) !important;
    color: white !important;
    padding: 4px 8px !important;
    border-radius: 4px;
    font-size: 0.875rem !important;
    opacity: 0;
    transition: opacity 0.2s ease;
}

.gallery-item:hover .gallery-number {
    opacity: 1;
}

.gallery-delete-btn {
    position: absolute !important;
    color: var(--danger) !important;
    top: 28px;
    right: 8px;
    opacity: 0;
    transition: opacity 0.2s ease;
    background: rgba(255, 255, 255, 0.9) !important;
    box-shadow: var(--shadow-box);
    height: 32px;
    width: 32px;
    padding: 4px;
    border-radius: 4px;
}

.gallery-item:hover .gallery-delete-btn {
    opacity: 1;
}

.drag-handle {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    background: rgba(0, 0, 0, 0.5);
    color: white;
    opacity: 0;
    transition: opacity 0.2s ease;
    z-index: 1;
    display: flex;
    justify-content: center;
    padding: 4px;
    cursor: move;
}

.gallery-item-container[draggable="true"]:hover .drag-handle {
    opacity: 1;
}

/* Documents */
.documents-scroll-area {
    width: 100%;
    overflow-x: auto;
    padding: 1rem 0;
}

.documents-row {
    display: flex;
    gap: 1.5rem;
    padding: 0.5rem;
    flex-wrap: wrap;
}

.document-item {
    padding: 1.25rem;
    border-radius: var(--radius-card);
    background: white;
    transition: all 0.3s ease;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
    margin-bottom: 1rem;
}

.document-item:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1);
}

.document-icon {
    font-size: 2.2rem;
    margin-right: 1.25rem;
    color: var(--primary);
    transition: transform 0.3s ease;
}

.document-item:hover .document-icon {
    transform: scale(1.1);
}

.document-name {
    font-weight: 500;
    color: var(--text-primary);
    font-size: 1.1rem;
    margin-bottom: 0.25rem;
}

.document-actions {
    gap: 0.5rem;
}

.document-upload {
    width: 100%;
    min-height: 120px;
    border: 2px dashed #e0e0e0;
    border-radius: var(--radius-image);
    display: flex;
    align-items: center;
    justify-content: center;
    margin-top: 1rem;
    transition: all 0.2s ease;
}

.document-upload:hover {
    border-color: var(--primary);
    background: rgba(25, 118, 210, 0.05);
}

/* Modern Form Fields */
.field-input,
.field-textarea {
    border: 1px solid #e0e0e0 !important;
    border-radius: var(--radius-input) !important;
    transition: all 0.2s ease !important;
    background: white !important;
    padding: 8px 12px !important;
    font-size: 0.9rem !important;
    line-height: 1.4 !important;
    color: var(--text-primary) !important;
    min-height: 32px !important;
}

.field-textarea {
    min-height: 80px !important;
    resize: vertical !important;
}

.field-input:hover,
.field-textarea:hover {
    border-color: var(--primary-light) !important;
    background: rgba(25, 118, 210, 0.02) !important;
}

.field-input:focus,
.field-textarea:focus {
    border-color: var(--primary) !important;
    box-shadow: 0 0 0 2px rgba(25, 118, 210, 0.1) !important;
    background: white !important;
}

.select-field-sm {
    max-width: 200px !important;
    font-size: 0.9rem !important;
    padding: 4px 8px !important;
    border: 1px solid #e0e0e0 !important;
    border-radius: var(--radius-input) !important;
    transition: all 0.2s ease !important;
    background: white !important;
}

.select-field-sm:hover {
    border-color: var(--primary-light) !important;
    background: rgba(25, 118, 210, 0.02) !important;
}

.select-field-sm:focus {
    border-color: var(--primary) !important;
    box-shadow: 0 0 0 2px rgba(25, 118, 210, 0.1) !important;
    background: white !important;
}

/* Form Labels */
.text-caption {
    font-size: 0.85rem !important;
    color: var(--text-secondary) !important;
}

.text-body {
    font-size: 0.9rem !important;
    color: var(--text-primary) !important;
    line-height: 1.4 !important;
}

/* Address Display */
.address-line {
    margin: 0 !important;
    padding: 0 !important;
    line-height: 1.2 !important;
}

/* Maps Link */
.maps-link {
    text-decoration: none !important;
    display: flex !important;
    align-items: center !important;
    opacity: 0.8 !important;
    transition: all 0.2s ease !important;
}

.maps-link:hover {
    opacity: 1 !important;
    text-decoration: none !important;
    transform: translateY(-1px) !important;
}

/* Business Card Layout */
.business-card-layout {
    padding: 1.5rem;
    background: white;
    border-radius: var(--radius-card);
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
    margin-bottom: 1rem;
    transition: all 0.3s ease;
}

.business-card-layout:hover {
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1);
    transform: translateY(-2px);
}

/* Form Layout */
.q-mb-sm {
    margin-bottom: 1rem !important;
}

.q-mb-lg {
    margin-bottom: 2rem !important;
}

.q-mb-xl {
    margin-bottom: 3rem !important;
}

.q-mt-xl {
    margin-top: 3rem !important;
}

.q-gutter-y-md {
    row-gap: 1.5rem !important;
}

.q-gutter-x-xl {
    column-gap: 3rem !important;
}

.q-col-gutter-md {
    margin: -12px !important;
}

.q-col-gutter-md > * {
    padding: 12px !important;
}


/* Tabs */
.q-tabs {
    background: transparent !important;
    border-bottom: 2px solid rgba(25, 118, 210, 0.1) !important;
}

.q-tab {
    font-size: 1.1rem !important;
    font-weight: 500 !important;
    color: var(--text-primary) !important;
    padding: 0.75rem 1.5rem !important;
    min-height: 48px !important;
    transition: all 0.3s ease !important;
}

.q-tab:hover {
    color: var(--primary) !important;
    background: rgba(25, 118, 210, 0.05) !important;
}

.q-tab--active {
    color: var(--primary) !important;
    font-weight: 600 !important;
}

.q-tab__indicator {
    height: 3px !important;
    border-radius: 3px 3px 0 0 !important;
    background: var(--primary) !important;
}


/* Q-Image adjustments */
.q-img__image--with-transition {
    transition: none;
}

.q-img__image {
    opacity: 1;
}

/* ===== Trash View Styles ===== */
.trash-badge {
    border-radius: 4px;
    padding: 4px 8px;
    font-size: 0.8rem;
    font-weight: 500;
    margin-left: 12px;
    background: var(--primary);
    color: white;
}

/* Info Dialog */
.info-dialog-card {
    border-radius: 12px;
    box-shadow: var(--shadow-dialog);
    max-width: 90%;
    width: 600px !important;
    max-width: 600px !important;
    overflow: hidden !important;
}

.info-card-item {
    background-color: #f9f9f9;
    border-radius: 8px;
    padding: 16px;
    margin-bottom: 10px;
    width: 100%;
    border: 1px solid #e0e0e0;
}

.info-card-item:hover {
    background-color: #f5f5f5;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
}

.info-section-title {
    color: var(--primary);
    font-weight: 500;
    margin-bottom: 8px;
    font-size: 1rem;
}

/* Info Badge Styling */
.info-badge {
    border-radius: 12px;
    font-size: 0.75rem;
    padding: 2px 8px;
    margin-left: 8px;
}

/* Dialog Buttons */
.dialog-buttons {
    display: flex;
    justify-content: flex-end;
    gap: 12px;
    margin-top: 24px;
    width: 100%;
}

.q-dialog .q-btn {
    font-size: 0.9rem;
    letter-spacing: 0.5px;
    height: 36px;
}

/* Dialog Button Positioning */
.dialog-buttons {
    display: flex;
    justify-content: flex-end;
    gap: 12px;
    margin-top: 24px;
}

.dialog-buttons-space-between {
    display: flex;
    justify-content: space-between;
    width: 100%;
    margin-top: 24px;
}

/* Action Buttons in Tables */
.q-btn.action-button {
    min-width: 30px !important;
    width: 30px !important;
    height: 30px !important;
    padding: 0 !important;
    margin: 0 2px !important;
    border-radius: 4px !important;
}

.action-buttons-container {
    display: flex !important;
    justify-content: center !important;
    align-items: center !important;
    gap: 2px !important;
    padding: 0 !important;
}

.q-badge.rounded {
    border-radius: 12px !important;
}

/* Deleted Badge next to project name */
.deleted-badge {
    margin-left: 8px;
    border-radius: 12px;
    background-color: #D32F2F;
    color: white;
    padding: 2px 8px;
    font-size: 0.75rem;
}

.no-click {
    pointer-events: none;
}

.badge-count {
    border-radius: 12px !important;
    min-width: 22px;
    height: 22px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 500 !important;
}

.cursor-pointer {
    cursor: pointer;
}

.cursor-pointer:hover {
    background: rgba(0, 0, 0, 0.03);
}

.hover-highlight {
    transition: background-color 0.2s ease;
}

.hover-highlight:hover {
    background-color: rgba(25, 118, 210, 0.05);
}

tr.cursor-pointer td.no-click {
    pointer-events: auto;
}

/* Project Card Styles */
.project-card {
    display: flex;
    flex-direction: column;
    height: 100%; /* Ensure card takes full height of its container */
    transition: all 0.3s ease;
    position: relative;
}

.project-card:hover {
    transform: translateY(-4px); /* Slightly less lift */
    box-shadow: 0 6px C(0, 0, 0, 0.12); /* Softer shadow */
}

.project-card-img,
.project-card-img-placeholder {
    height: 200px; /* Reduced height for compactness */
    object-fit: cover; /* Ensure image covers the area */
    width: 100%;
}

.project-card-img-placeholder {
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: #eeeeee; /* Lighter grey */
}

/* Ensure the main content section fills available space */
.project-card .q-card__section--vert {
    flex-grow: 1;
    display: flex;
    flex-direction: column;
    padding: 12px; /* Reduced padding */
}

/* Container for the main text content (name, address, details) */
.project-card-content {
    flex-grow: 1; /* Allow content to push footer down */
    display: flex;
    flex-direction: column;
}

/* Container for project name and address to reserve space */
.project-title-address {
    min-height: 60px; /* Reserve space for name + address */
    display: flex;
    flex-direction: column;
    justify-content: center; /* Center content vertically if address is missing */
    text-align: center;
    margin-bottom: 8px; /* Reduced margin */
}

.project-title-address .project-link {
    display: block;
    margin-bottom: 4px;
}

/* Style for the address label itself */
.project-address-label {
    min-height: 1.4em; /* Reserve height even if empty */
    display: block;
}

/* Status counters section */
.status-counters {
    margin: 8px 0; /* Reduced vertical margin */
    display: flex; /* Use flexbox for alignment */
    flex-wrap: wrap; /* Allow wrapping on smaller screens */
    gap: 8px; /* Add gap between items */
}

/* Individual status counter item container */
.status-badge-column {
    display: flex; /* Arrange badge and label in a row */
    align-items: center; /* Vertically center items */
    padding: 4px 8px; /* Add some padding */
    border-radius: 6px; /* Rounded corners */
    background-color: #f5f5f5; /* Subtle background */
    transition: background-color 0.2s ease;
}

.status-badge-column:hover {
    background-color: #eeeeee;
}

.status-badge-column .badge-count {
    /* Keep existing styles like border-radius, height, width, flex alignment */
    padding: 0 6px; /* Adjust horizontal padding */
    font-size: 0.85rem; /* Fine-tune size */
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); /* Add subtle shadow */
}

.status-badge-column .text-caption {
    font-size: 0.8rem; /* Slightly larger caption */
    margin-left: 6px; /* Space between badge and label */
    color: var(--text-primary); /* Darker text */
}

/* Info rows (Flächen, Preise, etc.) */
.info-row {
    align-items: baseline; /* Use baseline alignment */
}

.info-row .col-3 {
    flex-basis: 80px; /* Fixed width for labels */
    flex-grow: 0;
}

.info-row .col {
    text-align: right;
}

.info-value-row {
    line-height: 1.2;
}

.info-label-von-bis {
    font-size: 0.75rem;
    color: var(--text-secondary);
}

/* Card actions footer */
.project-card .q-card__actions {
    padding: 8px 12px; /* Reduced padding */
    border-top: 1px solid #eeeeee; /* Separator line */
}

/* Custom Tab Navigation */
.tabs-header-custom {
    border-bottom: 1px solid #e0e0e0;
    margin-bottom: 16px;
}

/* Trash table specific styles */
.trash-table-actions .q-btn {
    opacity: 0.85;
    transition: all 0.2s ease;
}

.trash-table-actions .q-btn:hover {
    opacity: 1;
    transform: translateY(-1px);
}

.trash-info-card {
    transition: all 0.2s ease;
}

.trash-info-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}

.export-btn {
    transition: all 0.2s ease;
}

.export-btn:hover {
    background-color: rgba(25, 118, 210, 0.1) !important;
}

/* Context menu item hover effects */
.trash-context-item {
    transition: all 0.2s ease;
}

.trash-context-item:hover {
    background-color: rgba(25, 118, 210, 0.1);
}

.tab-btn-custom {
    background: transparent !important;
    color: #333 !important;
    border-radius: 0 !important;
    padding: 12px 16px !important;
    margin: 0 !important;
    border-bottom: 3px solid transparent !important;
    transition: all 0.2s ease !important;
}

.tab-btn-active {
    color: var(--primary) !important;
    border-bottom: 3px solid var(--primary) !important;
    background: rgba(0, 0, 0, 0.03) !important;
}

.tab-btn-custom:hover {
    background: rgba(0, 0, 0, 0.03) !important;
}

/* Welcome Banner Close Button */
.welcome-banner-close-btn {
    position: absolute !important;
    top: 0.75rem !important;
    right: 0.75rem !important;
    opacity: 0 !important;
    transition: opacity 0.2s ease !important;
    color: white !important;
    background-color: rgba(0, 0, 0, 0.1) !important;
}

.gradient-blue:hover .welcome-banner-close-btn {
    opacity: 1 !important;
}

/* Expose links in request cards */
.expose-link {
    color: var(--primary) !important;
    font-weight: 500 !important;
    text-decoration: none !important;
    transition: color 0.2s ease-in-out;
}

.expose-link:hover {
    color: var(--primary-darken) !important;
    text-decoration: underline !important;
}

/* ===== Request Detail Dialog Styles ===== */
:root {
    /* Status Colors */
    --status-new: var(--primary);
    --status-requested: var(--warning);
    --status-approved: var(--success);
    --status-rejected: var(--danger);
    --status-cancelled: var(--warning);
    --status-paused: #9E9E9E;

    /* Status Colors - Light Variants */
    --status-new-light: rgba(25, 118, 210, 0.1);
    --status-requested-light: rgba(251, 140, 0, 0.1);
    --status-approved-light: rgba(56, 142, 60, 0.1);
    --status-rejected-light: rgba(211, 47, 47, 0.1);
    --status-cancelled-light: rgba(251, 140, 0, 0.1);
    --status-paused-light: rgba(158, 158, 158, 0.1);
}

.request-detail-dialog-container {
    max-width: 90vw;
    max-height: 90vh;
}

.request-detail-dialog {
    max-width: 1100px !important;
    width: 90% !important;
    border-radius: var(--radius-dialog);
    box-shadow: var(--shadow-dialog) !important;
}

/* Dialog Header */
.dialog-header {
    border-bottom: 1px solid rgba(0, 0, 0, 0.06);
    position: relative;
}

.dialog-header:after {
    content: '';
    position: absolute;
    bottom: -1px;
    left: 0;
    width: 100%;
    height: 2px;
    background: linear-gradient(to right, rgba(25, 118, 210, 0.6), rgba(25, 118, 210, 0));
}

.status-neu-header:after {
    background: linear-gradient(to right, var(--primary), rgba(25, 118, 210, 0));
}

.status-requested-header:after {
    background: linear-gradient(to right, var(--warning), rgba(251, 140, 0, 0));
}

.status-approved-header:after {
    background: linear-gradient(to right, var(--success), rgba(56, 142, 60, 0));
}

.status-rejected-header:after {
    background: linear-gradient(to right, var(--danger), rgba(211, 47, 47, 0));
}

.status-cancelled-header:after {
    background: linear-gradient(to right, var(--warning), rgba(251, 140, 0, 0));
}

.status-paused-header:after {
    background: linear-gradient(to right, #9E9E9E, rgba(158, 158, 158, 0));
}

/* Status Banner */
.request-status-banner {
    padding: 16px 24px !important;
    color: white !important;
    border-radius: var(--radius-dialog) var(--radius-dialog) 0 0 !important;
}

.request-status-banner.status-neu {
    background: linear-gradient(135deg, var(--primary) 0%, var(--primary-light) 100%);
}

.request-status-banner.status-requested {
    background: linear-gradient(135deg, var(--warning) 0%, #FFA726 100%);
}

.request-status-banner.status-approved {
    background: linear-gradient(135deg, var(--success) 0%, #66BB6A 100%);
}

.request-status-banner.status-rejected {
    background: linear-gradient(135deg, var(--danger) 0%, #EF5350 100%);
}

.request-status-banner.status-cancelled {
    background: linear-gradient(135deg, var(--warning) 0%, #FFA726 100%);
}

.request-status-banner.status-paused {
    background: linear-gradient(135deg, #9E9E9E 0%, #BDBDBD 100%);
}

/* Request type badge */
.request-type-badge {
    padding: 6px 10px !important;
    border-radius: 20px !important;
    font-weight: 500 !important;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15) !important;
    display: flex !important;
    align-items: center !important;
}

/* Status Timeline */
.status-timeline-card {
    background: white;
    border-radius: 12px !important;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05) !important;
    padding: 16px !important;
    margin: 0 !important;
    gap: 0 !important;
    position: relative;
    overflow: hidden !important;
    width: 100% !important;
}

.status-timeline-card:before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 4px;
    height: 100%;
    background: var(--primary);
    opacity: 0.5;
}

/* Original timeline styles (kept for backward compatibility) */
.timeline-container {
    display: flex;
    justify-content: space-between;
    align-items: center;
    width: 100%;
    position: relative;
    padding-left: 16px;
    padding-right: 16px;
}

.timeline-step {
    display: flex;
    flex-direction: column;
    align-items: center;
    position: relative;
    min-width: 100px;
    color: #9E9E9E;
}

.timeline-icon {
    font-size: 1.5rem !important;
    margin-bottom: 8px;
    color: #9E9E9E;
    background: white;
    border-radius: 50%;
    padding: 8px;
    border: 2px solid #E0E0E0;
    width: 40px;
    height: 40px;
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 2;
}

.timeline-label {
    font-size: 0.9rem;
    font-weight: 500;
    margin-bottom: 4px;
    text-align: center;
}

.timeline-date {
    font-size: 0.8rem;
    color: var(--text-secondary);
    text-align: center;
}

.timeline-current {
    font-size: 0.8rem;
    font-weight: 500;
    color: var(--primary);
    background: var(--status-new-light);
    border-radius: 12px;
    padding: 2px 8px;
    margin-top: 4px;
}

.timeline-line {
    flex: 1;
    height: 2px;
    background: #E0E0E0;
    margin: 0 -20px;
    position: relative;
    top: -20px;
    z-index: 1;
    color: transparent;
}

/* Timeline step states */
.timeline-step.active {
    color: var(--text-primary);
}

.timeline-step.active .timeline-icon {
    color: white;
    border-color: var(--primary);
    background: var(--primary);
}

.timeline-step.active.completed-approved .timeline-icon {
    border-color: var(--success);
    background: var(--success);
}

.timeline-step.active.completed-rejected .timeline-icon {
    border-color: var(--danger);
    background: var(--danger);
}

.timeline-step.active.completed-cancelled .timeline-icon {
    border-color: var(--warning);
    background: var(--warning);
}

.timeline-step.active.completed-paused .timeline-icon {
    border-color: #9E9E9E;
    background: #9E9E9E;
}

.timeline-step.upcoming .timeline-icon {
    color: var(--text-secondary);
    border-color: #BDBDBD;
}

.timeline-line.active {
    background: linear-gradient(to right, var(--primary), var(--primary));
}

/* New compact timeline styles */
.compact-timeline-container {
    display: flex;
    justify-content: space-between;
    align-items: center;
    width: 100%;
    position: relative;
    padding: 8px 16px;
    max-width: 100%;
    overflow-x: hidden !important;
}

.compact-timeline-step {
    display: flex;
    flex-direction: column;
    position: relative;
    color: #9E9E9E;
    flex: 1;
}

.compact-timeline-icon {
    font-size: 1.2rem !important;
    color: #9E9E9E;
    background: white;
    border-radius: 50%;
    padding: 4px;
    border: 2px solid #E0E0E0;
    width: 28px;
    height: 28px;
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 2;
}

.compact-timeline-label {
    font-size: 0.85rem;
    font-weight: 500;
    margin-bottom: 2px;
    line-height: 1.2;
}

.compact-timeline-date {
    font-size: 0.75rem;
    color: var(--text-secondary);
    line-height: 1.2;
}

.compact-timeline-current {
    font-size: 0.75rem;
    font-weight: 500;
    color: var(--primary);
    background: var(--status-new-light);
    border-radius: 10px;
    padding: 1px 6px;
    display: inline-block;
}

.compact-timeline-arrow {
    font-size: 1rem !important;
    color: #E0E0E0;
    margin: 0 4px;
}

.compact-timeline-arrow.active {
    color: var(--primary);
}

/* Compact timeline step states */
.compact-timeline-step.active {
    color: var(--text-primary);
}

.compact-timeline-step.active .compact-timeline-icon {
    color: white;
    border-color: var(--primary);
    background: var(--primary);
}

.compact-timeline-step.active.completed-approved .compact-timeline-icon {
    border-color: var(--success);
    background: var(--success);
}

.compact-timeline-step.active.completed-rejected .compact-timeline-icon {
    border-color: var(--danger);
    background: var(--danger);
}

.compact-timeline-step.active.completed-cancelled .compact-timeline-icon {
    border-color: var(--warning);
    background: var(--warning);
}

.compact-timeline-step.active.completed-paused .compact-timeline-icon {
    border-color: #9E9E9E;
    background: #9E9E9E;
}

.compact-timeline-step.upcoming .compact-timeline-icon {
    color: var(--text-secondary);
    border-color: #BDBDBD;
}

/* Info cards with status-specific styling */
.dialog-content {
    display: block !important;
    width: 100% !important;
}

.info-grid {
    display: flex !important;
    flex-direction: column !important;
    gap: 6px !important;
    width: 100% !important;
}

.info-item {
    margin-bottom: 6px !important;
    padding: 6px !important;
    border-radius: 8px;
    width: 100% !important;
    transition: background-color 0.2s ease;
}

.info-item:hover {
    background-color: rgba(0, 0, 0, 0.02);
}

.info-value {
    font-size: 0.95rem;
    color: var(--text-primary);
    font-weight: 400;
}

/* Links in info items */
.info-value.project-link,
.info-value.apartment-link {
    color: var(--primary);
    text-decoration: none;
    transition: all 0.2s ease;
}

.info-value.project-link:hover,
.info-value.apartment-link:hover {
    text-decoration: underline;
    opacity: 0.9;
}

/* Enhanced status badge */
.status-badge-enhanced {
    padding: 8px 16px !important;
    border-radius: 20px !important;
    font-weight: 500 !important;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1) !important;
    display: flex !important;
    align-items: center !important;
    font-size: 0.9rem !important;
}

/* Card Header Row */
.card-header-row {
    border-bottom: 1px solid rgba(0, 0, 0, 0.05);
    padding-bottom: 8px;
    margin-bottom: 10px !important;
    width: 100% !important;
}

/* Info Cards */
.request-info-card-container {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.5rem;
    width: 100%;
    max-width: 100%;
}

.request-info-card {
    width: 100%;
    transition: all 0.2s ease;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05) !important;
    border-radius: 8px;
    padding: 16px !important;
    margin-bottom: 0.5rem;
    gap: 0 !important;
    overflow: hidden;
    break-inside: avoid;
}

/* Fix for collapsible sections */
.info-grid {
    display: block !important;
    height: auto !important;
    max-height: none !important;
    overflow: visible !important;
}

.notes-container,
.withdrawal-container {
    display: block !important;
    height: auto !important;
    max-height: none !important;
    overflow: visible !important;
    width: 100% !important;
}

/* Fix for compact timeline */
.compact-timeline-container {
    overflow: visible !important;
    height: auto !important;
    max-height: none !important;
    display: flex !important;
    flex-wrap: nowrap !important;
    align-items: center !important;
}

.compact-timeline-step {
    flex: 1 !important;
    min-width: 0 !important;
    overflow: visible !important;
}

/* Notes and Withdrawal Content */
.notes-content,
.withdrawal-content {
    background-color: #f8f9fa;
    border-radius: 8px;
    padding: 12px !important;
    font-size: 0.9rem;
    line-height: 1.5;
}

.withdrawal-content {
    background-color: rgba(211, 137, 47, 0.05);
    border-left: 4px solid var(--warning);
}

/* Dialog footer */
.dialog-footer {
    position: relative !important;
    border-top: 1px solid rgba(0, 0, 0, 0.12) !important;
    margin-top: auto !important;
    padding-top: 12px !important;
}

/* Section headings in request detail dialog */
.request-detail-dialog .text-h5 {
    font-size: 1.3rem !important;
    font-weight: 600 !important;
    letter-spacing: 0.3px !important;
}

.request-detail-dialog .text-h4 {
    font-size: 1.6rem !important;
    font-weight: 600 !important;
    letter-spacing: 0.3px !important;
}

.request-detail-dialog .text-h6 {
    font-size: 1.1rem !important;
    font-weight: 600 !important;
    letter-spacing: 0.2px !important;
}

/* Improved spacing for labels */
.request-detail-dialog .text-caption {
    font-size: 0.9rem !important;
    font-weight: 500 !important;
    color: var(--text-secondary) !important;
}

/* Badge styling in request detail dialog */
.request-detail-dialog .status-badge {
    padding: 8px 12px !important;
    font-weight: 500 !important;
    letter-spacing: 0.5px !important;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1) !important;
}

.request-detail-dialog .icon-sm {
    font-size: 1.1rem !important;
}

.request-detail-dialog .icon-md {
    font-size: 1.5rem !important;
}

/* Responsive adjustments */
@media (max-width: 768px) {
    .request-info-card-container {
        grid-template-columns: 1fr !important;
    }

    .request-detail-dialog {
        width: 95% !important;
        max-width: 95% !important;
    }

    /* Original timeline responsive styles */
    .timeline-container {
        flex-direction: column;
        align-items: flex-start;
        gap: 16px;
    }

    .timeline-step {
        flex-direction: row;
        width: 100%;
        align-items: center;
        gap: 16px;
    }

    .timeline-line {
        width: 2px;
        height: 32px;
        margin: 0;
        margin-left: 19px;
        top: 0;
    }

    .timeline-icon {
        margin-bottom: 0;
        margin-right: 12px;
    }

    .timeline-label, .timeline-date {
        text-align: left;
    }

    /* Compact timeline responsive styles */
    .compact-timeline-container {
        flex-direction: column;
        align-items: flex-start;
        gap: 8px;
        padding: 8px;
    }

    .compact-timeline-step {
        width: 100%;
        margin-bottom: 8px;
    }

    .compact-timeline-arrow {
        transform: rotate(90deg);
        margin: 4px 0;
        align-self: center;
    }
}

/* ===== Dialog Close Button ===== */
.dialog-close-btn {
    position: absolute !important;
    top: 12px !important;
    right: 12px !important;
    padding: 0 !important;
    margin: 0 !important;
    border-radius: 50% !important;
    color: var(--text-secondary) !important;
    transition: all 0.2s ease !important;
    z-index: 10 !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    cursor: pointer;
}

.dialog-close-btn:hover {
    color: var(--text-primary) !important;
    transform: rotate(90deg) !important;
}

.dialog-close-btn:focus {
    outline: none !important;
}

/* ===== Comprehensive Request Dialog Styles ===== */
/* Container class - similar to gallery modal */
.comprehensive-request-dialog-container {
    max-width: 90vw;
    max-height: 90vh;
}

/* Dialog content card - resembles the modal-card from image gallery */
.comprehensive-request-dialog {
    background: #ffffff;
    border-radius: var(--radius-dialog);
    box-shadow: var(--shadow-dialog);
    height: 80% !important;
}

.comprehensive-request-dialog .q-tab-panels {
    background-color: transparent;
}

/* Request count badges */
.request-count {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    min-width: 22px;
    height: 22px;
    font-size: 0.8rem;
    font-weight: bold;
    margin-left: 8px;
    padding: 0 6px;
    background-color: var(--q-primary);
    color: white;
}


/* ===== Apartment Table Columns Styles ===== */

.column-item-container {
    transition: all 0.2s ease;
    margin-bottom: 8px;
}

.column-item-container[draggable="true"] {
    cursor: move;
}

/* Style for the item being dragged */
.column-item-container.dragging {
    opacity: 0.5;
    transform: rotate(2deg);
    z-index: 1000;
}

/* Style for drop zones */
.column-item-container.drag-over {
    margin-top: 20px;
    border-top: 3px solid #1976d2;
    background-color: rgba(25, 118, 210, 0.05);
}

.column-item-container.drag-over::before {
    content: "Hier ablegen";
    display: block;
    text-align: center;
    color: #1976d2;
    font-size: 12px;
    font-weight: bold;
    margin-top: -15px;
    margin-bottom: 10px;
}

.drag-column-handle {
    cursor: move;
    padding: 4px 8px;
    color: #000000;
    transition: color 0.2s ease;
    display: flex;
    align-items: center;
    justify-content: center;
    min-width: 32px;
    border-radius: 4px;
}

.drag-column-handle:hover {
    color: #1976d2;
    background-color: rgba(25, 118, 210, 0.1);
}

.drag-column-handle .q-icon {
    font-size: 18px !important;
}

/* ===== Layout Toggle Styles ===== */
.layout-toggle-container {
    display: flex !important;
    align-items: center !important;
    margin-left: 8px !important;
}

.layout-toggle-btn {
    background: rgba(255, 255, 255, 0.9) !important;
    color: var(--primary) !important;
    border: 1px solid rgba(25, 118, 210, 0.2) !important;
    transition: all 0.3s ease !important;
    font-size: 0.9rem !important;
    height: 36px !important;
    border-radius: 6px !important;
    padding: 0 12px !important;
}

.layout-toggle-btn:hover {
    background: rgba(25, 118, 210, 0.1) !important;
    border-color: var(--primary) !important;
    transform: translateY(-1px) !important;
}

.layout-toggle-btn .q-icon {
    transition: transform 0.3s ease !important;
}

.layout-toggle-btn:hover .q-icon {
    transform: scale(1.1) !important;
}

/* ===== YouTube Video Modal Styles ===== */

/* YouTube Modal Container */
.youtube-modal {
    max-width: 90vw !important;
    max-height: 90vh !important;
    width: 1200px;
    background: #ffffff;
    border-radius: var(--radius-dialog);
    box-shadow: var(--shadow-dialog);
    overflow: hidden;
}

/* YouTube Modal Header */
.youtube-header {
    border-bottom: 1px solid rgba(0, 0, 0, 0.12);
    padding: 16px 24px;
    background: linear-gradient(135deg, #FF0000 0%, #CC0000 100%);
    color: white;
}

.youtube-header .text-h6 {
    color: white !important;
    margin: 0;
    font-weight: 600;
}

.youtube-header .q-btn {
    color: white !important;
    background: rgba(255, 255, 255, 0.1) !important;
    transition: all 0.2s ease !important;
}

.youtube-header .q-btn:hover {
    background: rgba(255, 255, 255, 0.2) !important;
    transform: scale(1.1) !important;
}

/* YouTube Content Container */
.youtube-content {
    width: 100%;
    padding: 0;
    margin: 0;
}

.youtube-container {
    position: relative;
    width: 100%;
    height: 0;
    padding-bottom: 56.25%; /* 16:9 Aspect Ratio */
    overflow: hidden;
    background: #000000;
}

.youtube-container iframe {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    border: none;
}

/* Video Buttons */
.btn-video {
    background: linear-gradient(45deg, #FF0000, #CC0000) !important;
    color: white !important;
    padding: 10px 20px !important;
    border-radius: 6px !important;
    font-weight: 500 !important;
    transition: all 0.3s ease !important;
    box-shadow: 0 2px 8px rgba(255, 0, 0, 0.3) !important;
    display: flex !important;
    align-items: center !important;
    gap: 8px !important;
}

.btn-video:hover {
    background: linear-gradient(45deg, #CC0000, #990000) !important;
    transform: translateY(-2px) !important;
    box-shadow: 0 4px 16px rgba(255, 0, 0, 0.4) !important;
}

.btn-video .q-icon {
    font-size: 1.2rem !important;
}

/* YouTube Icon Styling */
.youtube-icon {
    color: #FF0000 !important;
    transition: all 0.2s ease !important;
}

.youtube-icon:hover {
    color: #CC0000 !important;
    transform: scale(1.1) !important;
}

/* YouTube Input Field Styling */
.youtube-url-input {
    border: 2px solid #e0e0e0 !important;
    border-radius: var(--radius-input) !important;
    transition: all 0.2s ease !important;
    background: white !important;
}

.youtube-url-input:hover {
    border-color: #FF0000 !important;
    background: rgba(255, 0, 0, 0.02) !important;
}

.youtube-url-input:focus {
    border-color: #FF0000 !important;
    box-shadow: 0 0 0 2px rgba(255, 0, 0, 0.1) !important;
    background: white !important;
}

/* Responsive Design */
@media (max-width: 768px) {
    .youtube-modal {
        width: 95vw;
        margin: 10px;
        max-height: 85vh;
    }

    .youtube-container {
        padding-bottom: 75%; /* Adjusted for mobile - slightly more square */
    }

    .youtube-header {
        padding: 12px 16px;
    }

    .youtube-header .text-h6 {
        font-size: 1rem !important;
    }

    .btn-video {
        padding: 8px 16px !important;
        font-size: 0.9rem !important;
    }
}

@media (max-width: 480px) {
    .youtube-modal {
        width: 98vw;
        margin: 5px;
        max-height: 80vh;
    }

    .youtube-container {
        padding-bottom: 85%; /* Even more square for very small screens */
    }

    .youtube-header {
        padding: 10px 12px;
    }

    .btn-video {
        width: 100% !important;
        justify-content: center !important;
    }
}

/* ===== Partnerships Section ===== */
.partnerships-grid {
    width: 100%;
    gap: 1rem;
}

.partnership-card {
    width: 100%;
    border-radius: var(--radius-card);
    box-shadow: var(--shadow-box);
    transition: all 0.2s ease;
}

.partnership-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 6px 16px rgba(0, 0, 0, 0.12);
}

.status-chip {
    padding: 4px 10px;
    border-radius: 12px;
    font-weight: 500;
    font-size: 0.8rem;
    border: 1px solid transparent;
}

.status-chip.active {
    background: #E3F2FD !important;
    color: #0D47A1;
    border-color: #90CAF9;
}

.status-chip.paused {
    background: #FFF3E0 !important;
    color: #E65100;
    border-color: #FFCC80;
}

.status-chip.dissolved {
    background: #FFEBEE !important;
    color: #B71C1C;
    border-color: #EF9A9A;
}


/* ===== Exposé Hero Section ===== */
.expose-hero {
    position: relative;
    width: 100%;
    min-height: 400px;
    border-radius: var(--radius-card);
    background: linear-gradient(135deg, var(--primary) 0%, var(--primary-light) 100%);
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
    overflow: hidden;
    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);
    margin-bottom: 16px;
}

.expose-hero-overlay {
    position: absolute;
    inset: 0;
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
    padding: 22px 28px;
    background: linear-gradient(
            180deg,
            rgba(0, 0, 0, 0.25) 0%,
            rgba(0, 0, 0, 0.55) 60%,
            rgba(0, 0, 0, 0.65) 100%
    );
}

.hero-title {
    color: #ffffff !important;
    font-size: 2.8rem !important;
    font-weight: 700 !important;
    line-height: 1.2 !important;
    text-shadow: 0 3px 12px rgba(0, 0, 0, 0.4) !important;
    margin: 0 0 8px 0 !important;
    letter-spacing: -0.5px !important;
}

.hero-meta {
    color: rgba(255, 255, 255, 0.96) !important;
    gap: 10px !important;
    margin-bottom: 8px !important;
}

.hero-meta .project-link,
.hero-meta .text-caption,
.hero-meta .q-icon {
    color: rgba(255, 255, 255, 0.96) !important;
    font-size: 0.95rem !important;
}

.hero-meta .project-thumb {
    width: 40px !important;
    height: 40px !important;
    object-fit: cover !important;
    border-radius: 6px !important;
    border: 1px solid rgba(255, 255, 255, 0.35) !important;
}

.hero-status {
    position: absolute !important;
    top: 16px !important;
    right: 16px !important;
    border-radius: 999px !important;
    padding: 6px 12px !important;
    box-shadow: var(--shadow-badge) !important;
}

.hero-chips {
    gap: 10px !important;
    flex-wrap: wrap !important;
}

.hero-chips .chip {
    display: inline-flex !important;
    align-items: center !important;
    gap: 6px !important;
    background: rgba(255, 255, 255, 0.20) !important;
    color: #ffffff !important;
    border: 1px solid rgba(255, 255, 255, 0.35) !important;
    border-radius: 999px !important;
    padding: 8px 14px !important;
    backdrop-filter: blur(4px);
    font-weight: 500 !important;
    font-size: 0.9rem !important;
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15) !important;
}

@media (max-width: 768px) {
    .expose-hero {
        min-height: 320px;
    }

    .hero-title {
        font-size: 2rem !important;
    }

    .hero-chips .chip {
        font-size: 0.85rem !important;
        padding: 6px 12px !important;
    }
}

/* ===== KPI Row ===== */

/* Center KPI tiles (labels and values) */
.kpi-tile {
    background: linear-gradient(135deg, #ffffff 0%, #f9fbff 100%);
    border: 1px solid rgba(25, 118, 210, 0.10);
    border-radius: var(--radius-card);
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
    padding: 18px 16px;
    display: flex;
    align-items: center;
    gap: 6px;
    height: 100%;
    transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;
}

.kpi-tile:hover {
    transform: translateY(-3px);
    box-shadow: 0 6px 20px rgba(0, 0, 0, 0.12);
    border-color: rgba(25, 118, 210, 0.25);
}

.kpi-icon {
    font-size: 2.5rem !important;
    color: var(--primary) !important;
    margin: 0 0 6px 0 !important;
    opacity: 0.85;
}

.kpi-text {
    align-items: center !important;
    text-align: center !important;
    gap: 4px !important;
    flex: 1;
}

.kpi-title {
    font-size: 0.875rem !important;
    color: var(--text-secondary) !important;
    font-weight: 500 !important;
    letter-spacing: 0.3px !important;
}

.kpi-value {
    font-size: 1.6rem !important;
    font-weight: 700 !important;
    color: var(--text-primary) !important;
    line-height: 1.15 !important;
    letter-spacing: -0.5px !important;
}

/* ===== Info Cards (Wohnung / Stellplatz) ===== */
.info-card {
    width: 100%;
    background: #ffffff;
    border-radius: var(--radius-card);
    box-shadow: 0 2px 12px rgba(0, 0, 0, 0.08);
    padding: 20px;
    border: 1px solid rgba(25, 118, 210, 0.08);
    transition: all 0.2s ease;
}

.info-card:hover {
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);
    border-color: rgba(25, 118, 210, 0.15);
}

.info-card-header {
    border-bottom: 2px solid rgba(25, 118, 210, 0.12);
    padding-bottom: 10px;
    margin-bottom: 16px !important;
    width: 100%;
}

.info-card-header .text-h4 {
    font-size: 1.4rem !important;
    font-weight: 600 !important;
}

/* ===== Exposé Page Layout Enhancements ===== */
.expose-page {
    gap: 16px !important;
    width: 100% !important;
    max-width: 1400px !important;
    margin: 0 auto !important;
}

.expose-main-card {
    background: transparent !important;
    box-shadow: none !important;
    padding: 0 !important;
}

/* KPI grid: 3 columns for optimal readability and balance */
.kpi-grid {
    display: grid !important;
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    gap: 18px !important;
}

@media (max-width: 640px) {
    .kpi-grid {
        grid-template-columns: 1fr !important;
        gap: 12px !important;
    }
}

/* Ensure KPI tiles stretch inside grid cells */
.kpi-grid .kpi-tile {
    width: 100% !important;
}

/* Exposé container should stretch children to full width */
.expose-page {
    align-items: stretch !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
}

/* Compact headers inside cards on Exposé */
.expose-page .info-card-header {
    border-bottom: 2px solid rgba(25, 118, 210, 0.12);
    padding-bottom: 8px !important;
    margin-bottom: 12px !important;
    width: 100%;
}

.detail-group-title {
    font-size: 1.05rem;
    font-weight: 600;
    color: var(--text-primary);
    margin: 2px 0 6px 0;
}

/* Compact link buttons and action buttons */
.link-buttons .q-btn,
.btn-compact {
    padding: 4px 10px !important;
    min-height: 28px !important;
    border-radius: var(--radius-button) !important;
    font-size: 0.9rem !important;
    margin: 0 8px 8px 0 !important;
}

.btn-compact .q-icon {
    font-size: 1rem !important;
}

.link-buttons {
    gap: 8px !important;
}

/* More visible "Freigegeben" */
.freigegeben-badge {
    background: linear-gradient(135deg, var(--purple-button) 0%, #BA68C8 100%) !important;
    color: #ffffff !important;
    border: none !important;
    box-shadow: var(--shadow-badge) !important;
    display: inline-flex !important;
    align-items: center !important;
    gap: 6px !important;
    padding: 6px 10px !important;
    border-radius: var(--radius-badge) !important;
}

/* Unified fact label/value styles for consistent alignment across cards */
.fact-label {
    font-size: 0.875rem;
    font-weight: 500;
    color: var(--text-secondary);
    margin: 0 0 2px 0;
    line-height: 1.1;
}

.fact-value {
    font-size: 1.1rem;
    font-weight: 400;
    color: var(--text-primary);
    letter-spacing: -0.3px;
    margin: 0;
    line-height: 1.2;
}


/* Cross-section column alignment inside location card (shared grid across sections) */
.location-card {
    display: grid !important;
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    column-gap: 24px !important;
    row-gap: 12px !important;
    align-items: start !important;
}

/* Ensure header, group titles, and separators span the full width */
.location-card .info-card-header,
.location-card .detail-group-title,
.location-card .q-separator {
    grid-column: 1 / -1 !important;
}

/* Merge each section grid into the parent so columns align across sections */
.location-card .details-grid-3 {
    display: contents !important;
}

.location-card .details-grid-3 .nicegui-column {
    gap: 4px;
}

/* Responsive fallback: stack to 1 column on small screens */
@media (max-width: 900px) {
    .location-card {
        grid-template-columns: 1fr !important;
    }
}
