        /* DESKTOP */
        .calendar-wrapper {
            width: 100%;
            overflow: hidden;
        }

        .calendar-table {
            border-collapse: separate;
            border-spacing: 4px;
            width: 100%;
            table-layout: fixed;
        }

        .calendar-table th {
            /* background: #f0f4ff; */
            font-weight: 600;
            text-align: center;
        }

        .calendar-table td {
            position: relative;
            height: 95px;
            background: #ffffff;
            border: 1px solid #d3d3d3 !important; /* borda cinza fina */
            border-radius: 0 !important;          /* bordas retas */
            vertical-align: middle;
            text-align: left;
            padding: 4px;
            overflow: hidden;
        }

        .day-number {
            position: absolute;
            top: 6px;
            right: 8px;
            font-size: 0.85rem;
            font-weight: 600;
        }

        /* CORES */
        /* .has-event { */
            /* background: #d8ecff !important; */
            /* border: 1px solid #d3d3d3 !important; */
            /* border-radius: 0 !important; */
        /* } */

        .holiday {
            background: #e6ffe6 !important;
            border: 1px solid #d3d3d3 !important;
            border-radius: 0 !important;
        }

        .weekend {
            background: #FFF5EE !important;
        }

		.today {
			background: #fff7cc !important; /* amarelo suave */
			border: 1px solid #d3d3d3 !important; /* borda cinza fina */
			border-radius: 0 !important;
			z-index: 10 !important;
			position: relative !important;
		}

		.has-event.today,
		.holiday.today,
		.weekend.today {
			background: #fff7cc !important;
			border: 1px solid #d3d3d3 !important; /* borda cinza fina */
		}


        /* EVENTOS */
        .event-preview-wrapper {
            position: absolute;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -10%);
            display: flex;
            flex-direction: column;
            align-items: center;
            gap: 4px;
            width: 100%;
        }

        .event-row {
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 6px;
        }

        .event-dot {
            width: 8px;
            height: 8px;
            background: #32cd32;
            border-radius: 50%;
        }
		
		.event-dot.past {
			background-color: #b5b5b5 !important; /* cinzento */
		}		

        .event-title-preview {
            font-size: 0.70rem;
            font-weight: 600;
            max-width: 90%;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }
		
		.event-title-preview.past {
			color: #b5b5b5 !important;
		}

        /* FERIADOS — igual aos eventos */
        .holiday-title {
            font-size: 0.70rem !important;
            font-weight: 600 !important;
            color: #1f7a1f;
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 4px;
            max-width: 90%;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }

        .holiday-icon {
            font-size: 0.65rem !important;
        }

        /* INTERAÇÃO */
        .day-cell.has-event,
        .day-cell.holiday {
            cursor: pointer !important;
        }

        .day-cell.has-event:hover,
        .day-cell.holiday:hover {
            background-color: #e0f0ff !important;
            transform: scale(1.03);
            transition: 0.15s ease;
        }

        .day-cell.has-event:active,
        .day-cell.holiday:active {
            transform: scale(0.96);
            transition: 0.08s ease;
        }

        .day-cell {
            position: relative;
            overflow: hidden;
        }

        .day-cell:active::after {
            content: "";
            position: absolute;
            width: 120%;
            height: 120%;
            background: rgba(0, 123, 255, 0.25);
            border-radius: 50%;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%) scale(0);
            animation: ripple 0.4s ease-out;
        }

        @keyframes ripple {
            to {
                transform: translate(-50%, -50%) scale(1);
                opacity: 0;
            }
        }

        /* MOBILE */
        @media (max-width: 768px) {

            .calendar-table,
            .calendar-table thead,
            .calendar-table tbody,
            .calendar-table tr,
            .calendar-table th,
            .calendar-table td {
                display: block;
                width: 100%;
            }

            .calendar-table thead {
                display: none;
            }

            .calendar-table tr {
                margin-bottom: 12px;
                background: #f9f9f9;
                padding: 8px;
                border-radius: 12px;
            }

            .calendar-table td {
                height: 80px;
                margin-bottom: 6px;
            }
        }
			.select-large.form-select {
				padding-top: 0.75rem !important;     /* py-3 */
				padding-bottom: 0.75rem !important;
				padding-left: 1.5rem !important;     /* px-4 */
				padding-right: 1.5rem !important;

				font-size: 0.85rem !important;       /* fonte mais pequena */
				line-height: 1.2 !important;

				height: auto !important;             /* força altura */
				min-height: 48px !important;         /* garante altura visual */

				border-radius: 0 !important;         /* cantos quadrados */
				border: 1px solid #d3d3d3 !important;/* borda azul igual ao calendário */

				width: auto !important;              /* permite ajustar largura */
				min-width: 130px !important;         /* garante largura mínima */
			}
			
			@media (max-width: 768px) {

			/* Aumenta o espaçamento vertical entre botões e selects */
			.calendar-controls {
				display: flex;
				flex-direction: column;
				gap: 12px !important;
				width: 100%;
			}

			/* Selects ocupam 100% da largura no mobile */
			.calendar-controls select {
				width: 100% !important;
			}

			/* Botões também ocupam 100% */
			.calendar-controls button {
				width: 100% !important;
			}
		}

			/* Texto da descrição do evento no modal, metade do tamanho */
			#eventsModal .list-group-item {
				font-size: 0.9rem !important;  
				line-height: normal !important; /* line-height padrão do browser */
			}

			#eventsModal .list-group-item p {
				margin-bottom: 0.25rem !important;  /* espaçamento interno reduzido */
			}
			/* Capitaliza o título dos eventos no modal */
			.list-group-item h6 {
				text-transform: uppercase; /* deixa todas as letras em maiúsculas */
				font-weight: 600;           /* mantém o peso da fonte */
			}

		.event-title-preview {
			display: block;
			white-space: nowrap;
			overflow: hidden;
			text-overflow: ellipsis;
		}

/* Imagem do modal — centrada e com altura equilibrada */
.event-img {
    width: 100%;
    height: 220px;          /* altura aumentada */
    object-fit: cover;      /* corta mantendo proporção */
    object-position: center;/* centra verticalmente */
    display: block;
    border-bottom: 1px solid #ddd;
}

@media (max-width: 768px) {
    .event-img {
        height: 170px;      /* altura ideal no telemóvel */
        object-position: center;
    }
}
#calendarBody {
    opacity: 0;
    transform: translateY(5px);
    transition: opacity .25s ease, transform .25s ease;
}

#calendarBody.loaded {
    opacity: 1;
    transform: translateY(0);
}

.holiday-title.cultural {
    display: flex;
    align-items: center;
    gap: 4px;
    font-size: 11px;
    line-height: 1.1;
    color: #7a3cff; /* roxo cultural */
    font-weight: 600;
}

.holiday-icon {
    font-size: 13px;
}
/* ============================
   Destaque para dias com eventos
============================ */
.has-event {
    background: #e8f3ff !important; /* azul suave */
    border-color: #bcdcff !important;
    position: relative;
}

/* Borda lateral elegante */
.has-event::before {
    content: "";
    position: absolute;
    left: 0;
    top: 0;
    width: 4px;
    height: 100%;
    background: #2b7bff;
    border-radius: 4px 0 0 4px;
}
/* ============================
   Gradiente suave para dias com eventos
============================ */
.has-event {
    background: linear-gradient(135deg, #e8f3ff 0%, #f4faff 100%) !important;
    border-color: #bcdcff !important;
    position: relative;
    transition: background .35s ease, border-color .35s ease;
}

/* Borda lateral elegante */
.has-event::before {
    content: "";
    position: absolute;
    left: 0;
    top: 0;
    width: 4px;
    height: 100%;
    background: #2b7bff;
    border-radius: 4px 0 0 4px;
}

	
		