:root,
[data-theme="mare"] {
    --sea: #006d91;
    --sea-dark: #064b63;
    --sand: #f7efe1;
    --ink: #17333d;
    --body-bg: #fffdf9;
    --footer-text: #dff4fa;
    --hero-start: rgba(5, 61, 81, .93);
    --hero-end: rgba(0, 125, 166, .68);
    --hero-solid-start: #0d7595;
    --hero-solid-end: #54b9cf;
    --apartment-visual-start: #0485aa;
    --apartment-visual-end: #65c5d8;
    --apartment-visual-alt-start: #136f86;
    --apartment-visual-alt-end: #e8b76d;
    --detail-start: #064b63;
    --detail-end: #0788ad;
    --detail-photo-start: rgba(4, 55, 73, .92);
    --detail-photo-end: rgba(4, 55, 73, .45);
}

[data-theme="elegante"] {
    --sea: #8b6f3e;
    --sea-dark: #182b3a;
    --sand: #f4efe4;
    --ink: #19232d;
    --body-bg: #fdfaf4;
    --footer-text: #f8edcf;
    --hero-start: rgba(18, 36, 52, .95);
    --hero-end: rgba(139, 111, 62, .72);
    --hero-solid-start: #20384c;
    --hero-solid-end: #b9954b;
    --apartment-visual-start: #223c52;
    --apartment-visual-end: #b9954b;
    --apartment-visual-alt-start: #6f5a32;
    --apartment-visual-alt-end: #e3c989;
    --detail-start: #182b3a;
    --detail-end: #8b6f3e;
    --detail-photo-start: rgba(24, 43, 58, .92);
    --detail-photo-end: rgba(139, 111, 62, .48);
}

[data-theme="estate"] {
    --sea: #0097a7;
    --sea-dark: #0b6778;
    --sand: #fff3d7;
    --ink: #17313a;
    --body-bg: #fffaf0;
    --footer-text: #e7fbff;
    --hero-start: rgba(11, 103, 120, .93);
    --hero-end: rgba(255, 143, 91, .72);
    --hero-solid-start: #00a8b8;
    --hero-solid-end: #ffb35c;
    --apartment-visual-start: #00a8b8;
    --apartment-visual-end: #ffb35c;
    --apartment-visual-alt-start: #0b6778;
    --apartment-visual-alt-end: #ff8f5b;
    --detail-start: #0b6778;
    --detail-end: #ff8f5b;
    --detail-photo-start: rgba(11, 103, 120, .92);
    --detail-photo-end: rgba(255, 143, 91, .45);
}

[data-theme="autunno"] {
    --sea: #b6652c;
    --sea-dark: #6f3d1f;
    --sand: #fbecd7;
    --ink: #2f241c;
    --body-bg: #fff8ee;
    --footer-text: #ffe8cf;
    --hero-start: rgba(91, 48, 26, .94);
    --hero-end: rgba(184, 97, 42, .72);
    --hero-solid-start: #7f431f;
    --hero-solid-end: #d89b57;
    --apartment-visual-start: #8f4f25;
    --apartment-visual-end: #d89b57;
    --apartment-visual-alt-start: #5f3a22;
    --apartment-visual-alt-end: #c77a3a;
    --detail-start: #6f3d1f;
    --detail-end: #b6652c;
    --detail-photo-start: rgba(91, 48, 26, .92);
    --detail-photo-end: rgba(184, 97, 42, .48);
}

[data-theme="inverno"] {
    --sea: #5f8fb3;
    --sea-dark: #23435f;
    --sand: #edf5f8;
    --ink: #172734;
    --body-bg: #f7fbfd;
    --footer-text: #e9f6ff;
    --hero-start: rgba(35, 67, 95, .95);
    --hero-end: rgba(95, 143, 179, .68);
    --hero-solid-start: #274b68;
    --hero-solid-end: #9ec8dc;
    --apartment-visual-start: #315d7d;
    --apartment-visual-end: #9ec8dc;
    --apartment-visual-alt-start: #23435f;
    --apartment-visual-alt-end: #c7dce8;
    --detail-start: #23435f;
    --detail-end: #5f8fb3;
    --detail-photo-start: rgba(35, 67, 95, .92);
    --detail-photo-end: rgba(95, 143, 179, .45);
}

[data-theme="natale"] {
    --sea: #c51f2f;
    --sea-dark: #8f1018;
    --sand: #fff2dc;
    --ink: #2f1717;
    --body-bg: #fff8f1;
    --footer-text: #ffe9d7;
    --hero-start: rgba(112, 9, 18, .95);
    --hero-end: rgba(198, 31, 47, .78);
    --hero-solid-start: #8f1018;
    --hero-solid-end: #d9a441;
    --apartment-visual-start: #9f121f;
    --apartment-visual-end: #d9a441;
    --apartment-visual-alt-start: #0f5a3a;
    --apartment-visual-alt-end: #c51f2f;
    --detail-start: #8f1018;
    --detail-end: #c51f2f;
    --detail-photo-start: rgba(112, 9, 18, .92);
    --detail-photo-end: rgba(15, 90, 58, .42);
}

[data-theme="primavera"] {
    --sea: #4fa36a;
    --sea-dark: #2f7d59;
    --sand: #eef8df;
    --ink: #1f392c;
    --body-bg: #fbfff3;
    --footer-text: #eaffdf;
    --hero-start: rgba(47, 125, 89, .93);
    --hero-end: rgba(255, 190, 105, .65);
    --hero-solid-start: #43a267;
    --hero-solid-end: #ffd07a;
    --apartment-visual-start: #43a267;
    --apartment-visual-end: #ffd07a;
    --apartment-visual-alt-start: #2f7d59;
    --apartment-visual-alt-end: #9edb8f;
    --detail-start: #2f7d59;
    --detail-end: #4fa36a;
    --detail-photo-start: rgba(47, 125, 89, .92);
    --detail-photo-end: rgba(255, 190, 105, .42);
}

body { color: var(--ink); background: var(--body-bg); }
.navbar { background: linear-gradient(90deg, var(--sea-dark), var(--sea)); }
.hero {
    min-height: 68vh;
    display: grid;
    place-items: center;
    color: white;
    background: linear-gradient(120deg, var(--hero-start), var(--hero-end)),
                linear-gradient(30deg, var(--hero-solid-start), var(--hero-solid-end));
}
.hero h1 { font-size: clamp(2.5rem, 7vw, 5.5rem); line-height: .95; }
.eyebrow { text-transform: uppercase; letter-spacing: .16em; font-weight: 700; font-size: .82rem; }
.section-pad { padding: 5rem 0; }
.apartment-card { border: 0; border-radius: 1.25rem; overflow: hidden; box-shadow: 0 .7rem 2rem rgba(10, 64, 81, .12); }
.apartment-visual { min-height: 220px; display: grid; place-items: center; color: white; background: linear-gradient(135deg, var(--apartment-visual-start), var(--apartment-visual-end)); }
.apartment-visual.alt { background: linear-gradient(135deg, var(--apartment-visual-alt-start), var(--apartment-visual-alt-end)); }
.apartment-cover { width: 100%; height: 250px; object-fit: cover; }
.apartment-icon { font-size: 5rem; }
.feature-icon { font-size: 2.25rem; color: var(--sea); }
.booking-box { margin-top: -3rem; position: relative; border-radius: 1rem; box-shadow: 0 .8rem 2rem rgba(0, 0, 0, .16); }
.home-date-picker { margin-top: .75rem; padding: 1rem; background: #f8fbfc; border: 1px solid rgba(6, 75, 99, .16); border-radius: 1rem; }
.home-date-picker-top { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: 1rem; }
.home-date-picker-nights, .home-date-picker-range { display: block; }
.home-date-picker-nights { color: var(--ink); font-size: 1.2rem; font-weight: 900; }
.home-date-picker-range { color: #5f6b70; }
.home-date-picker-actions { display: flex; align-items: center; gap: .4rem; }
.home-date-month-jump { min-width: 12rem; }
.home-date-picker-months, .public-availability-months { touch-action: pan-y; }
.home-date-picker-months { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.2rem; }
.home-date-month h3 { margin-bottom: .75rem; color: var(--ink); font-size: 1.15rem; font-weight: 900; text-align: center; }
.home-date-weekdays, .home-date-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: .22rem; }
.home-date-weekdays { margin-bottom: .25rem; color: #6c757d; font-size: .82rem; font-weight: 800; text-align: center; }
.home-date-empty { min-height: 2.55rem; }
.home-date-day { position: relative; display: grid; place-items: center; min-height: 2.55rem; padding: .2rem; color: var(--ink); background: #d8f1e1; border: 1px solid rgba(6, 75, 99, .12); border-radius: .55rem; font-weight: 800; line-height: 1; transition: transform .14s ease, box-shadow .14s ease; }
.home-date-day:hover:not(:disabled) { transform: translateY(-1px); box-shadow: 0 .25rem .65rem rgba(6, 75, 99, .16); }
.home-date-day small { position: absolute; right: .2rem; bottom: .12rem; display: flex; gap: .08rem; color: var(--sea-dark); font-size: .58rem; }
.home-date-day.is-unselected { color: #8b949a; background: #eef6f8; cursor: not-allowed; opacity: .78; }
.home-date-day.is-blocked { color: #6f3a40; background: #f8d7da; text-decoration: line-through; }
.home-date-day.is-past { color: #a3a9ad; background: #eef0f1; text-decoration: line-through; cursor: not-allowed; opacity: .72; }
.home-date-day.is-start, .home-date-day.is-end { color: white; box-shadow: inset 0 0 0 3px #ffc107; text-decoration: none; }
.home-date-day.is-start { background: #198754; }
.home-date-day.is-end { background: #0d6efd; }
.home-date-day.is-start::after, .home-date-day.is-end::after { position: absolute; left: 50%; bottom: -.55rem; z-index: 2; padding: .12rem .35rem; color: white; border-radius: 999px; font-size: .58rem; font-weight: 900; line-height: 1; transform: translateX(-50%); box-shadow: 0 .15rem .35rem rgba(0, 0, 0, .18); }
.home-date-day.is-start::after { content: 'IN'; background: #198754; }
.home-date-day.is-end::after { content: 'OUT'; background: #0d6efd; }
.home-date-day.is-range { color: var(--sea-dark); background: #bfe7d1; text-decoration: none; }
.home-date-day.is-range-invalid { color: #842029; background: #f1aeb5; text-decoration: line-through; }
.home-date-picker-legend { display: flex; flex-wrap: wrap; gap: .85rem; margin-top: 1rem; color: #5f6b70; font-size: .9rem; }
.home-date-checkin-swatch, .home-date-checkout-swatch { display: inline-block; width: 1rem; height: 1rem; vertical-align: -.15rem; border: 3px solid #ffc107; border-radius: .2rem; }
.home-date-checkin-swatch { background: #198754; }
.home-date-checkout-swatch { background: #0d6efd; }
@media (max-width: 767.98px) {
    .home-date-picker-top { align-items: flex-start; flex-direction: column; }
    .home-date-picker-actions { align-self: stretch; justify-content: space-between; }
    .home-date-month-jump { flex: 1 1 auto; min-width: 0; }
    .home-date-picker-months { grid-template-columns: 1fr; }
    .home-date-day, .home-date-empty { min-height: 2.35rem; }
}
.hero-free-periods { max-width: 850px; }
.free-periods-carousel { max-width: 850px; margin-inline: auto; overflow: hidden; color: var(--ink); background: white; border: 1px solid rgba(6, 75, 99, .14); border-radius: 1.25rem; box-shadow: 0 .7rem 2rem rgba(0, 0, 0, .22); }
.free-period-slide { display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 225px; padding: 2.1rem 5.5rem 3.2rem; }
.free-period-nights { color: var(--sea-dark); font-size: 1.12rem; font-weight: 700; }
.free-periods-carousel .carousel-indicators [data-bs-target] { width: .65rem; height: .65rem; background-color: var(--sea); border: 0; border-radius: 50%; }
.free-periods-carousel .carousel-control-prev, .free-periods-carousel .carousel-control-next { width: 3.5rem; opacity: 1; }
.free-periods-carousel .carousel-control-prev-icon, .free-periods-carousel .carousel-control-next-icon { width: 2.25rem; height: 2.25rem; padding: .45rem; background-color: var(--sea-dark); background-size: 55%; border-radius: 50%; }
@media (max-width: 575.98px) {
    .free-period-slide { min-height: 250px; padding: 1.8rem 3.4rem 3.3rem; }
    .free-periods-carousel .carousel-control-prev, .free-periods-carousel .carousel-control-next { width: 2.8rem; }
}
.hero-news-box {
    color: var(--ink);
    background: rgba(255, 255, 255, .92);
    border: 1px solid rgba(255, 255, 255, .62);
    border-radius: 1.35rem;
    box-shadow: 0 .95rem 2.4rem rgba(0, 0, 0, .22);
    backdrop-filter: blur(8px);
    padding: 1rem;
}
.home-news-carousel {
    overflow: hidden;
    background:
        radial-gradient(circle at top left, rgba(255, 255, 255, .95), rgba(255, 255, 255, .72)),
        linear-gradient(135deg, rgba(6, 75, 99, .10), rgba(247, 239, 225, .65));
    border: 1px solid rgba(6, 75, 99, .12);
    border-radius: 1rem;
}
.home-news-card {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: .8rem;
    min-height: 265px;
    padding: 1.35rem 3.25rem 2.6rem;
}
.home-news-icon {
    display: grid;
    width: 2.5rem;
    height: 2.5rem;
    place-items: center;
    color: #fff;
    background: linear-gradient(135deg, var(--sea-dark), var(--sea));
    border-radius: .75rem;
    box-shadow: 0 .45rem 1rem rgba(6, 75, 99, .22);
    font-size: 1.12rem;
}
.home-news-date {
    margin-bottom: .35rem;
    color: var(--sea);
    font-size: .9rem;
    font-weight: 800;
}
.home-news-carousel .carousel-indicators [data-bs-target] { width: .65rem; height: .65rem; background-color: var(--sea); border: 0; border-radius: 50%; }
.home-news-carousel .carousel-control-prev, .home-news-carousel .carousel-control-next { width: 3.5rem; opacity: 1; }
.home-news-carousel .carousel-control-prev-icon, .home-news-carousel .carousel-control-next-icon { width: 2.25rem; height: 2.25rem; padding: .45rem; background-color: var(--sea-dark); background-size: 55%; border-radius: 50%; }
@media (max-width: 575.98px) {
    .home-news-card { min-height: 270px; padding: 1.6rem 3.2rem 3rem; text-align: center; }
    .home-news-icon { margin-inline: auto; }
    .home-news-carousel .carousel-control-prev, .home-news-carousel .carousel-control-next { width: 2.8rem; }
}
.bg-sand { background: var(--sand); }
footer { background: var(--sea-dark); color: var(--footer-text); }
footer a { color: white; }
.footer-brand-news {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 1rem;
    flex: 1 1 auto;
    min-width: 0;
}
.footer-brand-block {
    flex: 0 0 auto;
    text-align: center;
}
.footer-brand-block .footer-logo-wrap {
    margin-inline: auto;
}
.footer-news-ticker {
    position: relative;
    display: flex;
    align-items: center;
    gap: .55rem;
    width: min(680px, 58vw);
    max-width: 100%;
    padding: .45rem .65rem;
    color: #102027;
    background: linear-gradient(135deg, rgba(255, 255, 255, .96), rgba(247, 239, 225, .9));
    border: 1px solid rgba(255, 255, 255, .65);
    border-radius: 999px;
    box-shadow: 0 .7rem 1.8rem rgba(0, 0, 0, .16);
    overflow: hidden;
}
.footer-news-label {
    appearance: none;
    border: 0;
    display: inline-flex;
    align-items: center;
    gap: .25rem;
    flex: 0 1 auto;
    min-width: 11rem;
    padding: .35rem .85rem;
    color: #fff;
    background: linear-gradient(135deg, var(--sea-dark), var(--sea));
    border-radius: 999px;
    font-family: inherit;
    font-size: .86rem;
    font-weight: 900;
    line-height: 1.15;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    cursor: pointer;
}
.footer-news-label:focus-visible {
    outline: 2px solid #fff;
    outline-offset: 2px;
}
.footer-news-label .bi-rss {
    flex: 0 0 auto;
    min-width: 1rem;
}
.footer-news-popover {
    --bs-popover-max-width: min(340px, calc(100vw - 24px));
    --bs-popover-header-bg: var(--sea-dark);
    --bs-popover-header-color: #fff;
    --bs-popover-border-color: rgba(6, 75, 99, .35);
    --bs-popover-body-padding-x: 1rem;
    --bs-popover-body-padding-y: .8rem;
    overflow-wrap: anywhere;
}
.footer-news-track-wrap {
    flex: 1 1 auto;
    min-width: 0;
    overflow: hidden;
}
.footer-news-track {
    display: flex;
    align-items: center;
    width: max-content;
    padding-left: 100%;
    animation: footer-news-scroll var(--footer-news-duration, 140s) linear infinite;
    will-change: transform;
}
.footer-news-track:hover { animation-play-state: paused; }
.footer-news-item {
    display: inline-flex;
    align-items: center;
    gap: .45rem;
    padding-inline: .85rem;
    color: #102027;
    text-decoration: none;
    white-space: nowrap;
}
.footer-news-item::after {
    content: '';
    width: .45rem;
    height: .45rem;
    margin-left: .35rem;
    background: var(--sea);
    border-radius: 50%;
    opacity: .65;
}
.footer-news-date {
    --bs-badge-font-size: .72rem;
    --bs-badge-font-weight: 800;
    flex: 0 0 auto;
}
.footer-news-item strong { font-weight: 800; }
.footer-news-item strong {
    display: inline-block;
    max-width: min(360px, 58vw);
    overflow: hidden;
    text-overflow: ellipsis;
    vertical-align: bottom;
}
.footer-news-item:hover strong { text-decoration: underline; }
@keyframes footer-news-scroll {
    from { transform: translateX(0); }
    to { transform: translateX(-50%); }
}
@media (max-width: 575.98px) {
    footer .container { align-items: center; text-align: center; }
    .footer-brand-news { align-items: center; flex-direction: column; width: 100%; }
    .footer-news-ticker { width: min(100%, 430px); border-radius: 999px; }
    .footer-news-label { min-width: 10.5rem; max-width: 62vw; padding-inline: .75rem; }
    .footer-news-label { font-size: .78rem; }
    .footer-news-item { padding-inline: .75rem; }
    .footer-news-item strong { max-width: 48vw; }
}
@media (min-width: 576px) and (max-width: 991.98px) {
    footer .container { align-items: center; text-align: center; }
    .footer-brand-news { align-items: center; flex-direction: column; width: 100%; }
    .footer-news-ticker { width: min(820px, 100%); margin-inline: auto; }
}
@media (max-width: 390px) {
    .footer-news-label { min-width: 9rem; max-width: 58vw; }
    .footer-news-label { font-size: .74rem; }
    .footer-news-label .bi-rss { display: none; }
    .footer-news-date { display: none; }
}
.footer-logo-wrap { display: inline-flex; padding: .45rem .8rem; background: #fffdf9; border-radius: .8rem; }
.footer-logo { display: block; width: min(330px, 70vw); height: auto; }
.home-last-minute-section { max-width: 290px; }
.home-last-minute-list {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: .75rem;
}
.home-last-minute {
    display: flex;
    flex: 0 1 290px;
    flex-direction: column;
    align-items: flex-start;
    min-width: 0;
    max-width: 100%;
    padding: 1rem 1.15rem;
    color: #102027;
    background: linear-gradient(135deg, #fff8d8, #ffd36a);
    border: 1px solid rgba(255, 255, 255, .75);
    border-radius: 1rem;
    box-shadow: 0 .75rem 1.8rem rgba(0, 0, 0, .18);
}
.home-last-minute-label {
    display: inline-flex;
    align-items: center;
    margin-bottom: .35rem;
    padding: .18rem .55rem;
    color: #fff;
    background: #d63384;
    border-radius: 999px;
    font-size: .78rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: .04em;
}
.home-last-minute-price {
    display: grid;
    gap: .1rem;
    align-self: stretch;
    margin-top: .55rem;
    padding: .55rem .7rem;
    background: rgba(255, 255, 255, .7);
    border-radius: .75rem;
}
.home-last-minute-full {
    color: #5f6f78;
    font-size: .82rem;
    text-decoration: line-through;
}
.home-last-minute-price strong {
    color: #0f5132;
    font-size: 1.25rem;
    line-height: 1.1;
}
.home-last-minute-discount {
    color: #9a3412;
    font-size: .78rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: .03em;
}
.home-last-minute a { color: #102027; }
.seasonal-effect { position: fixed; inset: 0; z-index: 2147483000; pointer-events: none; overflow: hidden; }
.seasonal-snow { opacity: 1; }
.seasonal-snow-layer { position: absolute; top: -120vh; left: 0; width: 100%; height: 220vh; background-repeat: repeat; filter: drop-shadow(0 0 2px rgba(35, 83, 110, .42)); animation: seasonalSnowFall 18s linear infinite; }
.seasonal-snow-layer-one {
    opacity: .9;
    background-image:
        radial-gradient(circle, rgba(255, 255, 255, .98) 0 2.4px, rgba(56, 113, 145, .28) 2.6px, transparent 3.4px),
        radial-gradient(circle, rgba(255, 255, 255, .86) 0 1.7px, rgba(56, 113, 145, .22) 1.9px, transparent 2.8px),
        radial-gradient(circle, rgba(255, 255, 255, .78) 0 1.1px, rgba(56, 113, 145, .18) 1.3px, transparent 2px);
    background-size: 180px 180px, 130px 130px, 95px 95px;
    background-position: 12px 24px, 70px 45px, 35px 80px;
}
.seasonal-snow-layer-two {
    opacity: .62;
    filter: blur(.35px) drop-shadow(0 0 2px rgba(35, 83, 110, .38));
    animation-duration: 29s;
    animation-delay: -8s;
    background-image:
        radial-gradient(circle, rgba(255, 255, 255, .92) 0 2.8px, rgba(56, 113, 145, .24) 3px, transparent 3.8px),
        radial-gradient(circle, rgba(255, 255, 255, .72) 0 1.4px, rgba(56, 113, 145, .18) 1.6px, transparent 2.4px);
    background-size: 260px 260px, 170px 170px;
    background-position: 35px 95px, 110px 40px;
}
.seasonal-snow-flake {
    position: absolute;
    top: -2rem;
    left: var(--flake-left);
    display: grid;
    place-items: center;
    width: 1em;
    height: 1em;
    color: #fff;
    font-family: "Segoe UI Symbol", "Apple Color Emoji", "Noto Color Emoji", sans-serif;
    font-size: var(--flake-size);
    font-weight: 700;
    line-height: 1;
    opacity: .98;
    text-shadow:
        0 0 2px rgba(21, 67, 96, .98),
        0 0 6px rgba(21, 67, 96, .72),
        0 .16rem .38rem rgba(0, 0, 0, .38);
    animation: seasonalSnowFlakeFall var(--flake-duration) linear infinite;
    animation-delay: var(--flake-delay);
}
@keyframes seasonalSnowFall {
    from { transform: translate3d(0, 0, 0); }
    to { transform: translate3d(28px, 100vh, 0); }
}
@keyframes seasonalSnowFlakeFall {
    0% { opacity: 0; transform: translate3d(0, -8vh, 0) scale(.65); }
    10% { opacity: .98; }
    100% { opacity: .92; transform: translate3d(var(--flake-drift), 112vh, 0) scale(1); }
}
.seasonal-christmas-ball {
    position: absolute;
    top: -2.5rem;
    left: var(--ball-left);
    width: var(--ball-size);
    height: var(--ball-size);
    border: 2px solid rgba(255, 255, 255, .85);
    border-radius: 50%;
    background:
        radial-gradient(circle at 32% 26%, rgba(255, 255, 255, .95) 0 18%, transparent 19%),
        radial-gradient(circle at 50% 58%, var(--ball-light) 0 15%, transparent 16%),
        linear-gradient(145deg, var(--ball-light), var(--ball-color) 55%, var(--ball-dark));
    box-shadow:
        0 0 0 1px rgba(0, 0, 0, .08),
        0 .18rem .55rem rgba(0, 0, 0, .34);
    animation: seasonalChristmasBallFall var(--ball-duration) ease-in-out infinite;
    animation-delay: var(--ball-delay);
}
.seasonal-christmas-ball::before {
    content: "";
    position: absolute;
    top: -.33em;
    left: 50%;
    width: .46em;
    height: .32em;
    background: #c9a44c;
    border: 1px solid rgba(255, 255, 255, .7);
    border-radius: .12em;
    transform: translateX(-50%);
}
.seasonal-christmas-ball-red { --ball-color: #d92332; --ball-light: #ff7a83; --ball-dark: #891017; }
.seasonal-christmas-ball-gold { --ball-color: #d9a441; --ball-light: #ffe08a; --ball-dark: #9a6812; }
.seasonal-christmas-ball-green { --ball-color: #15834d; --ball-light: #72d89c; --ball-dark: #0a4f2f; }
.seasonal-christmas-ball-blue { --ball-color: #2076c9; --ball-light: #8fc9ff; --ball-dark: #0e4378; }
@keyframes seasonalChristmasBallFall {
    0% { opacity: 0; transform: translate3d(0, -10vh, 0) rotate(0deg) scale(.72); }
    12% { opacity: .96; }
    100% { opacity: .88; transform: translate3d(var(--ball-drift), 112vh, 0) rotate(270deg) scale(1); }
}
.seasonal-easter { z-index: 1015; }
.seasonal-easter-egg {
    --egg-scale: 1;
    --egg-color: #ff5fa2;
    --egg-light: #ffd1e2;
    --egg-dark: #b42169;
    position: absolute;
    bottom: -4rem;
    width: 2.1rem;
    height: 2.9rem;
    opacity: .9;
    border-radius: 50% 50% 46% 46%;
    background:
        radial-gradient(circle at 35% 25%, rgba(255, 255, 255, .92) 0 .32rem, transparent .35rem),
        repeating-linear-gradient(165deg, transparent 0 .42rem, rgba(255, 255, 255, .32) .42rem .56rem),
        linear-gradient(160deg, var(--egg-light) 0 30%, var(--egg-color) 30% 70%, var(--egg-dark) 70% 100%);
    border: 2px solid rgba(255, 255, 255, .88);
    box-shadow:
        0 0 0 1px rgba(6, 75, 99, .16),
        0 .4rem .9rem rgba(0, 0, 0, .22);
    animation: seasonalEasterFloat 12s ease-in-out infinite;
}
.seasonal-easter-egg-pink { --egg-color: #ff5fa2; --egg-light: #ffd1e2; --egg-dark: #b42169; }
.seasonal-easter-egg-yellow { --egg-color: #ffc83d; --egg-light: #fff0a8; --egg-dark: #c47d00; }
.seasonal-easter-egg-sky { --egg-color: #53bfff; --egg-light: #cceeff; --egg-dark: #1676b9; }
.seasonal-easter-egg-green { --egg-color: #55c76a; --egg-light: #c8f6c7; --egg-dark: #1b8737; }
.seasonal-easter-egg-violet { --egg-color: #9b6dff; --egg-light: #ded0ff; --egg-dark: #5630b9; }
.seasonal-easter-egg:nth-child(1) { --egg-scale: .82; left: 6%; animation-duration: 15s; animation-delay: -1s; }
.seasonal-easter-egg:nth-child(2) { --egg-scale: 1.05; left: 16%; animation-duration: 19s; animation-delay: -7s; }
.seasonal-easter-egg:nth-child(3) { --egg-scale: .9; left: 28%; animation-duration: 17s; animation-delay: -4s; }
.seasonal-easter-egg:nth-child(4) { --egg-scale: 1.12; left: 39%; animation-duration: 21s; animation-delay: -11s; }
.seasonal-easter-egg:nth-child(5) { --egg-scale: .78; left: 51%; animation-duration: 16s; animation-delay: -5s; }
.seasonal-easter-egg:nth-child(6) { --egg-scale: 1; left: 63%; animation-duration: 20s; animation-delay: -9s; }
.seasonal-easter-egg:nth-child(7) { --egg-scale: .86; left: 72%; animation-duration: 18s; animation-delay: -3s; }
.seasonal-easter-egg:nth-child(8) { --egg-scale: 1.08; left: 82%; animation-duration: 22s; animation-delay: -13s; }
.seasonal-easter-egg:nth-child(9) { --egg-scale: .92; left: 91%; animation-duration: 17s; animation-delay: -6s; }
.seasonal-easter-egg:nth-child(10) { --egg-scale: .75; left: 96%; animation-duration: 24s; animation-delay: -15s; }
.seasonal-easter-egg:nth-child(11) { --egg-scale: .9; left: 12%; animation-duration: 18s; animation-delay: -10s; }
.seasonal-easter-egg:nth-child(12) { --egg-scale: 1.02; left: 34%; animation-duration: 16s; animation-delay: -12s; }
.seasonal-easter-egg:nth-child(13) { --egg-scale: .8; left: 58%; animation-duration: 20s; animation-delay: -14s; }
.seasonal-easter-egg:nth-child(14) { --egg-scale: 1.1; left: 88%; animation-duration: 17s; animation-delay: -16s; }
@keyframes seasonalEasterFloat {
    0% { margin-left: 0; transform: translateY(0) rotate(0deg) scale(var(--egg-scale)); }
    50% { margin-left: 1.9rem; }
    100% { margin-left: -.8rem; transform: translateY(-115vh) rotate(34deg) scale(var(--egg-scale)); }
}
.seasonal-easter-flower {
    position: absolute;
    bottom: -3rem;
    left: var(--flower-left);
    color: var(--flower-color);
    font-family: "Segoe UI Symbol", "Apple Color Emoji", "Noto Color Emoji", sans-serif;
    font-size: var(--flower-size);
    font-weight: 700;
    line-height: 1;
    opacity: .9;
    text-shadow:
        0 0 2px rgba(255, 255, 255, .9),
        0 .14rem .35rem rgba(0, 0, 0, .25);
    animation: seasonalEasterFlowerFloat var(--flower-duration) ease-in-out infinite;
    animation-delay: var(--flower-delay);
}
.seasonal-easter-flower-pink { --flower-color: #ff4f9a; }
.seasonal-easter-flower-yellow { --flower-color: #f4b400; }
.seasonal-easter-flower-violet { --flower-color: #8e62ff; }
.seasonal-easter-flower-sky { --flower-color: #1fa8ff; }
@keyframes seasonalEasterFlowerFloat {
    0% { opacity: 0; transform: translate3d(0, 0, 0) rotate(0deg) scale(.75); }
    12% { opacity: .95; }
    100% { opacity: .86; transform: translate3d(var(--flower-drift), -112vh, 0) rotate(240deg) scale(1); }
}
@media print {
    .seasonal-effect { display: none; }
}
.admin-shell { min-height: 100vh; background: #f2f5f6; }
.admin-menu-group .dropdown-menu { min-width: 15rem; padding: .45rem; }
.admin-menu-group .dropdown-item { display: flex; align-items: center; gap: .65rem; border-radius: .4rem; }
.admin-menu-group .dropdown-item .bi { width: 1.15rem; color: var(--sea); text-align: center; }

@media (max-width: 767.98px) {
    .admin-dashboard-actions { width: 100%; }
    .admin-menu-group { flex: 1 1 calc(50% - .5rem); }
    .admin-menu-group > .btn { width: 100%; }
}
.apartment-detail-hero { color: white; background: linear-gradient(120deg, var(--detail-start), var(--detail-end)); }
.apartment-detail-hero.has-photo { background: linear-gradient(90deg, var(--detail-photo-start), var(--detail-photo-end)), var(--hero-image) center/cover; }
.apartment-description { font-size: 1.12rem; line-height: 1.8; }
.gallery-photo { width: 100%; aspect-ratio: 4/3; object-fit: cover; border-radius: .8rem; box-shadow: 0 .4rem 1rem rgba(0, 0, 0, .12); transition: transform .2s ease; }
.gallery-photo:hover { transform: translateY(-3px); }
.gallery-button { position: relative; display: block; width: 100%; padding: 0; overflow: hidden; background: transparent; border: 0; border-radius: .8rem; }
.gallery-button:focus-visible { outline: 3px solid var(--sea); outline-offset: 3px; }
.gallery-zoom { position: absolute; right: .75rem; bottom: .75rem; display: grid; place-items: center; width: 2.4rem; height: 2.4rem; color: white; background: rgba(0, 0, 0, .62); border-radius: 50%; }
.photo-gallery-modal .modal-body { min-height: 0; overflow: hidden; }
.photo-gallery-modal .carousel-inner { height: calc(100vh - 72px); }
.photo-gallery-modal .carousel-item { height: 100%; }
.gallery-slide { display: flex; flex-direction: column; align-items: center; justify-content: center; height: 100%; padding: 1rem 5rem 4.5rem; text-align: center; }
.gallery-slide img { display: block; max-width: 100%; max-height: calc(100vh - 190px); object-fit: contain; }
.gallery-caption { max-width: 850px; margin-top: 1rem; text-align: center; }
.photo-gallery-modal .carousel-control-prev, .photo-gallery-modal .carousel-control-next { width: 8%; }
.photo-gallery-modal.timer-active .modal-body { cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 32 32'%3E%3Ccircle cx='16' cy='16' r='15' fill='%23198754' stroke='white' stroke-width='2'/%3E%3Cpath d='M12 9l12 7-12 7z' fill='white'/%3E%3C/svg%3E") 16 16, auto; }
.photo-gallery-modal.timer-paused .gallery-slide img { cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 32 32'%3E%3Ccircle cx='16' cy='16' r='15' fill='%23dc3545' stroke='white' stroke-width='2'/%3E%3Cpath d='M10 9h5v14h-5zm7 0h5v14h-5z' fill='white'/%3E%3C/svg%3E") 16 16, auto; }
@media (max-width: 767.98px) { .gallery-slide { padding-inline: 2.75rem; } .photo-gallery-modal .carousel-control-prev, .photo-gallery-modal .carousel-control-next { width: 12%; } }
.document-card { display: flex; align-items: center; gap: 1rem; height: 100%; padding: 1.25rem; color: var(--ink); background: white; border-radius: .8rem; text-decoration: none; box-shadow: 0 .35rem 1rem rgba(0, 0, 0, .08); }
.document-card > i { color: #c62828; font-size: 2rem; }
.document-card small { display: block; margin-top: .25rem; color: #66747a; }
.admin-media-preview { width: 100%; max-width: 150px; aspect-ratio: 4/3; object-fit: cover; border-radius: .6rem; }
.admin-media-icon { font-size: 3rem; color: var(--sea); }
.availability-legend { font-size: .95rem; }
.availability-swatch { display: inline-block; width: 1rem; height: 1rem; vertical-align: -.15rem; border: 1px solid rgba(0, 0, 0, .15); border-radius: .2rem; }
.availability-swatch.free { background: #d8f1e1; }
.availability-swatch.occupied { background: #f8d7da; }
.site-language-switch {
    display: inline-flex;
    align-items: center;
    gap: .22rem;
    padding: .22rem;
    background: rgba(0, 0, 0, .16);
    border: 1px solid rgba(255, 255, 255, .42);
    border-radius: 999px;
    box-shadow: inset 0 0 0 1px rgba(0, 0, 0, .08);
}
.site-language-label {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.75rem;
    height: 2.05rem;
    color: rgba(255, 255, 255, .9);
    font-size: 1rem;
}
.site-language-option {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.45rem;
    height: 2.05rem;
    padding: 0;
    color: rgba(255, 255, 255, .82);
    border: 2px solid transparent;
    border-radius: 999px;
    font-size: .78rem;
    font-weight: 900;
    letter-spacing: .05em;
    line-height: 1;
    text-decoration: none;
    opacity: .78;
    transition: color .15s ease, background-color .15s ease, border-color .15s ease, opacity .15s ease, transform .15s ease;
}
.site-language-flag {
    display: block;
    width: 1.65rem;
    height: 1.05rem;
    overflow: hidden;
    background: rgba(255, 255, 255, .9);
    border: 1px solid rgba(0, 0, 0, .28);
    border-radius: .14rem;
    box-shadow: 0 .08rem .18rem rgba(0, 0, 0, .2);
    font-size: .62rem;
    font-weight: 900;
    letter-spacing: 0;
    line-height: 1;
}
.site-language-flag-it {
    background: linear-gradient(to right, #009246 0 33.333%, #fff 33.333% 66.666%, #ce2b37 66.666% 100%);
}
.site-language-flag-fr {
    background: linear-gradient(to right, #0055a4 0 33.333%, #fff 33.333% 66.666%, #ef4135 66.666% 100%);
}
.site-language-flag-es {
    background: linear-gradient(to bottom, #aa151b 0 25%, #f1bf00 25% 75%, #aa151b 75% 100%);
}
.site-language-flag-en {
    background:
        linear-gradient(33deg, transparent 48%, #c8102e 48% 52%, transparent 52%),
        linear-gradient(-33deg, transparent 48%, #c8102e 48% 52%, transparent 52%),
        linear-gradient(33deg, transparent 43%, #fff 43% 57%, transparent 57%),
        linear-gradient(-33deg, transparent 43%, #fff 43% 57%, transparent 57%),
        linear-gradient(to right, transparent 45%, #c8102e 45% 55%, transparent 55%),
        linear-gradient(to bottom, transparent 42%, #c8102e 42% 58%, transparent 58%),
        linear-gradient(to right, transparent 38%, #fff 38% 62%, transparent 62%),
        linear-gradient(to bottom, transparent 32%, #fff 32% 68%, transparent 68%),
        #012169;
}
.site-language-option:hover,
.site-language-option:focus-visible {
    color: white;
    background: rgba(255, 255, 255, .18);
    opacity: 1;
    transform: translateY(-1px);
}
.site-language-option.active {
    color: var(--sea-dark);
    background: white;
    border-color: #ffc107;
    box-shadow: 0 .18rem .5rem rgba(0, 0, 0, .22);
    opacity: 1;
}
@media (max-width: 991.98px) {
    .site-language-switch { margin-top: .65rem; }
}
input.form-check-input[type="checkbox"] {
    width: 1.35rem;
    height: 1.35rem;
    background-color: #fff;
    border: 2px solid #52636b;
    box-shadow: 0 .1rem .3rem rgba(23, 51, 61, .16);
    cursor: pointer;
}
input.form-check-input[type="checkbox"]:hover {
    border-color: var(--sea);
}
input.form-check-input[type="checkbox"]:focus {
    border-color: var(--sea);
    box-shadow: 0 0 0 .25rem rgba(0, 109, 145, .22);
}
input.form-check-input[type="checkbox"]:checked {
    background-color: #198754;
    border-color: #146c43;
    box-shadow: 0 .1rem .35rem rgba(25, 135, 84, .28);
}
input.form-check-input[type="checkbox"][required]:not(:checked) {
    background-color: #fff;
    border-color: #dc3545;
    box-shadow: 0 0 0 .2rem rgba(220, 53, 69, .16);
}
input.form-check-input[type="checkbox"][required]:not(:checked) + .form-check-label {
    color: #842029;
    font-weight: 800;
}
.form-switch input.form-check-input[type="checkbox"] {
    width: 2.75rem;
    height: 1.4rem;
}
input.form-check-input[type="checkbox"]:disabled {
    cursor: not-allowed;
    opacity: .58;
}
.privacy-consent-box { display: flex; gap: 1rem; align-items: flex-start; padding: 1rem 1.15rem; background: #fff8e1; border: 2px solid #ffc107; border-radius: 1rem; box-shadow: 0 .5rem 1.5rem rgba(255, 193, 7, .18); }
.privacy-consent-check { flex: 0 0 auto; width: 1.65rem; height: 1.65rem; margin-top: .15rem; border-width: 2px; border-color: #b58100; cursor: pointer; }
.privacy-consent-check:checked { background-color: #198754; border-color: #198754; }
.privacy-consent-label { display: grid; gap: .15rem; margin: 0; cursor: pointer; }
.privacy-consent-title { color: #664d03; font-size: 1.08rem; font-weight: 800; }
.privacy-consent-text { color: #212529; font-size: 1.03rem; line-height: 1.35; }
.privacy-consent-box:has(.privacy-consent-check:checked) { background: #e8f7ef; border-color: #198754; box-shadow: 0 .5rem 1.5rem rgba(25, 135, 84, .16); }
.quote-preview-box { min-height: 4.5rem; padding: 1rem 1.15rem; color: #5f6b70; background: #eef6f8; border: 2px dashed rgba(7, 136, 173, .35); border-radius: 1rem; }
.quote-preview-box.is-loading { border-style: solid; }
.quote-preview-box.is-ready { color: var(--ink); background: #e8f7ef; border-color: #198754; box-shadow: 0 .5rem 1.5rem rgba(25, 135, 84, .13); }
.quote-preview-box.is-warning { color: #664d03; background: #fff8e1; border-color: #ffc107; }
.quote-preview-title { font-weight: 800; }
.quote-preview-meta { color: #5f6b70; font-size: .95rem; }
.quote-preview-total { color: #0f5132; font-size: clamp(1.45rem, 5vw, 2.2rem); font-weight: 900; line-height: 1.05; }
.quote-preview-details { font-size: .95rem; }
.quote-preview-details ul { padding-left: 1.15rem; color: #425058; }
.quote-daily-detail-table { min-width: 720px; font-size: .9rem; }
.quote-daily-detail-table thead th { color: var(--sea-dark); background: #d8edf4; white-space: nowrap; }
.quote-daily-detail-table td { white-space: nowrap; }
.quote-daily-summary-row th, .quote-daily-summary-row td { background: #f8fbfc; }
.quote-daily-total-row th, .quote-daily-total-row td { color: white; background: var(--sea-dark); font-size: 1rem; }
.quote-option-box { width: 100%; padding: .8rem 1rem; background: #f8fbfc; border: 1px solid rgba(7, 136, 173, .2); border-radius: .8rem; }
.quote-option-box .form-check-input { width: 3rem; height: 1.5rem; margin-right: .55rem; cursor: pointer; }
.quote-option-box .form-check-label { font-weight: 700; cursor: pointer; }
.price-list-controls .form-select { min-width: 6rem; }
.price-list-guests { margin-right: 1rem; }
.price-list-linen { width: auto; min-width: min(100%, 310px); margin-left: .75rem; }
@media (max-width: 575.98px) { .price-list-guests { margin-right: 0; } .price-list-linen { width: 100%; margin-top: .35rem; margin-left: 0; } }
.price-year-tabs { gap: .45rem; }
.price-year-tabs .nav-link { color: var(--sea-dark); background: #eef6f8; border: 1px solid rgba(6, 75, 99, .18); font-weight: 800; }
.price-year-tabs .nav-link.active { color: white; background: var(--sea-dark); box-shadow: 0 .25rem .7rem rgba(6, 75, 99, .22); }
.price-list-apartment { overflow: hidden; }
.price-list-apartment .card-header, .price-detail-header { color: white; background: linear-gradient(90deg, var(--sea-dark), var(--sea)); }
.price-month-card { display: grid; gap: .45rem; width: 100%; min-height: 150px; padding: 1rem; color: var(--ink); text-align: left; background: #fff; border: 1px solid rgba(6, 75, 99, .16); border-radius: 1rem; box-shadow: 0 .35rem 1rem rgba(0, 0, 0, .06); transition: transform .16s ease, border-color .16s ease, box-shadow .16s ease; }
button.price-month-card:hover, button.price-month-card:focus-visible, .price-month-card.is-active { transform: translateY(-2px); border-color: var(--sea); box-shadow: 0 .55rem 1.4rem rgba(6, 75, 99, .16); }
.price-month-card.is-active { outline: 3px solid rgba(255, 193, 7, .7); outline-offset: 2px; }
.price-month-card.is-missing { justify-content: center; color: #6c757d; background: #f2f5f6; border-style: dashed; box-shadow: none; }
.price-month-title { color: var(--sea-dark); font-size: 1.15rem; font-weight: 900; }
.price-month-row { display: flex; justify-content: space-between; gap: 1rem; font-size: .92rem; }
.price-detail-card { overflow: hidden; }
.price-detail-empty { padding: 1.25rem; color: #5f6b70; text-align: center; background: #eef6f8; border: 2px dashed rgba(7, 136, 173, .35); border-radius: 1rem; }
.price-detail-table th { white-space: nowrap; }
@media print {
    .navbar, .price-list-hero, .price-year-tabs, .price-list-controls, .price-detail-card, footer, .print-list-button { display: none !important; }
    .price-list-hero + .py-5 { padding: 0 !important; }
    .price-list-hero + .py-5 .container { width: 100% !important; max-width: none !important; padding: 0 9mm !important; }
    .tab-content > .tab-pane:not(.active) { display: none !important; }
    .tab-pane.active { display: block !important; opacity: 1 !important; }
    .tab-pane.active > .row { display: block !important; }
    .tab-pane.active > .row > .col-12 { width: 100% !important; max-width: 100% !important; padding: 0 !important; break-after: auto !important; page-break-after: auto !important; }
    .tab-pane.active > .row > .col-12 + .col-12 { break-before: page; page-break-before: always; }
    .tab-pane.active > .row > .col-12:last-child { break-after: auto !important; page-break-after: auto !important; }
    .price-list-apartment .card-body > .row { display: flex !important; flex-wrap: wrap !important; gap: 0 !important; }
    .price-list-apartment .card-body > .row > [class*="col-"] { flex: 0 0 33.3333% !important; width: 33.3333% !important; max-width: 33.3333% !important; padding: 1.8mm !important; }
    .price-month-card { min-height: 0 !important; gap: 1.4mm !important; padding: 4mm !important; break-inside: avoid; border-radius: 4mm !important; box-shadow: none; }
    .price-month-title { font-size: 12pt !important; line-height: 1.05 !important; }
    .price-month-row { display: grid !important; grid-template-columns: 18mm 1fr !important; gap: 2mm !important; align-items: baseline !important; font-size: 9pt !important; line-height: 1.18 !important; }
    .price-month-row strong { white-space: nowrap !important; font-size: 9pt !important; }
    .price-list-apartment { margin: 0 !important; overflow: visible !important; border: 0 !important; break-after: auto !important; page-break-after: auto !important; box-shadow: none !important; }
    .price-list-apartment .card-header { padding: 4mm 0 3mm !important; color: var(--ink) !important; background: transparent !important; border-bottom: 1px solid #d8e1e4 !important; }
    .price-list-apartment .card-header h2 { font-size: 16pt !important; line-height: 1.1 !important; }
    .price-list-apartment .card-header small { font-size: 9pt !important; }
    .price-list-apartment .card-body { padding: 4mm 0 0 !important; }
    button.price-month-card { appearance: none; }
}
.public-calendar { overflow: hidden; }
.public-calendar .card-header { color: white; background: var(--sea); }
.public-calendar-weekdays, .public-calendar-grid { display: grid; grid-template-columns: repeat(7, 1fr); }
.public-calendar-weekdays > div { padding: .55rem .2rem; text-align: center; font-size: .82rem; font-weight: 700; background: #eef2f3; border-right: 1px solid #dde2e4; }
.public-calendar-empty, .public-calendar-day { min-height: 76px; border-top: 1px solid #dde2e4; border-right: 1px solid #dde2e4; }
.public-calendar-empty { background: #f7f8f8; }
.public-calendar-day { position: relative; padding: .4rem; }
.public-calendar-day.free { background: #d8f1e1; }
.public-calendar-day.occupied { background: #f8d7da; }
.public-calendar-day.outside { opacity: .48; }
.public-calendar-day.past { color: #7b8589; background: #eceff0; opacity: .75; }
.public-calendar-day.outside.past { opacity: .48; }
.public-calendar-day.today { box-shadow: inset 0 0 0 3px #ffc107; }
.public-day-number { font-weight: 700; }
.public-day-icons { position: absolute; right: .35rem; bottom: .3rem; display: flex; gap: .22rem; color: var(--sea-dark); }
.public-checkout-icon { opacity: .72; }
.public-checkin-icon { font-weight: 900; filter: drop-shadow(0 0 .01px currentColor); -webkit-text-stroke: .35px currentColor; }
@media (max-width: 575.98px) { .public-calendar-empty, .public-calendar-day { min-height: 58px; padding: .28rem; } .public-day-icons { font-size: .75rem; } }

.calendar-weekdays, .calendar-grid { display: grid; grid-template-columns: repeat(7, minmax(120px, 1fr)); }
.calendar-weekdays div { padding: .8rem; text-align: center; font-weight: 700; background: #e9ecef; border-right: 1px solid #d6dadd; }
.calendar-day { position: relative; min-height: 125px; padding: .6rem; border-top: 1px solid #d6dadd; border-right: 1px solid #d6dadd; background: white; }
.calendar-day.outside { color: #8b949a; background: #f4f4f4; }
.calendar-day.checkin { background: #d8f1e1; }
.calendar-day.checkout { background: #e5f5ea; }
.calendar-day.occupied { background: #f8d7da; }
.calendar-day.blocked { background: #f5bfc7; }
.calendar-day.turnover { background: linear-gradient(155deg, #d8f1e1 0 49%, #f8d7da 51% 100%); }
.calendar-day.calendar-range-selectable { cursor: pointer; }
.calendar-day.range-pending, .calendar-day.range-start, .calendar-day.range-end { z-index: 1; box-shadow: inset 0 0 0 4px #ffc107; }
.calendar-day.range-inside { box-shadow: inset 0 0 0 999px rgba(255, 193, 7, .22); }
.calendar-day.range-invalid { box-shadow: inset 0 0 0 999px rgba(220, 53, 69, .22); }
.calendar-day.range-start::after, .calendar-day.range-end::after, .calendar-day.range-pending::after { position: absolute; right: .45rem; bottom: .35rem; padding: .12rem .35rem; color: #212529; background: #ffc107; border-radius: 999px; font-size: .68rem; font-weight: 800; line-height: 1; }
.calendar-day.range-start::after, .calendar-day.range-pending::after { content: 'arrivo'; }
.calendar-day.range-end::after { content: 'partenza'; }
.stay-range-input { font-weight: 700; }
.day-number { display: block; text-align: right; font-weight: 700; }
.day-events { display: flex; flex-wrap: wrap; justify-content: center; gap: .35rem; margin-top: .75rem; }
.calendar-status-icon { display: inline-grid; place-items: center; width: 2rem; height: 2rem; padding: 0; color: var(--channel-color); background: white; border: 2px solid currentColor; border-radius: .45rem; font-size: 1.15rem; line-height: 1; box-shadow: 0 .12rem .25rem rgba(0, 0, 0, .12); cursor: pointer; }
.calendar-status-icon.is-checkout { border-style: dashed; background: rgba(255, 255, 255, .96); }
.calendar-status-icon.is-checkin { border-width: 3px; background: color-mix(in srgb, var(--channel-color) 12%, white); font-weight: 900; }
.calendar-status-icon.is-checkin .bi { -webkit-text-stroke: .35px currentColor; }
.calendar-status-icon.is-blocked { color: #b02a37; background: #fff5f6; }
.calendar-status-icon:focus-visible { outline: 3px solid #ffc107; outline-offset: 2px; }
.calendar-price-adjustment { position: absolute; left: .45rem; bottom: .4rem; display: inline-flex; align-items: center; gap: .12rem; padding: .16rem .38rem; border: 1px solid currentColor; border-radius: 999px; font-size: .78rem; font-weight: 800; line-height: 1; background: rgba(255, 255, 255, .9); box-shadow: 0 .12rem .25rem rgba(0, 0, 0, .1); cursor: pointer; }
.calendar-price-adjustment.is-up { color: #b45f00; }
.calendar-price-adjustment.is-down { color: #0d6efd; }
.calendar-price-adjustment:focus-visible { outline: 3px solid #ffc107; outline-offset: 2px; }
.calendar-popover { --bs-popover-max-width: min(310px, calc(100vw - 24px)); --bs-popover-header-bg: var(--sea-dark); --bs-popover-header-color: white; --bs-popover-border-color: rgba(6, 75, 99, .35); --bs-popover-body-padding-x: 1rem; --bs-popover-body-padding-y: .8rem; }
.channel-legend-icon { font-size: 1.15rem; }
.calendar-legend { font-size: .9rem; }
.calendar-cleaner-header { color: var(--ink); background: rgba(255, 255, 255, .92); border-bottom: 1px solid #d6dadd; box-shadow: 0 .2rem .8rem rgba(0, 0, 0, .06); }
.calendar-cleaner-brand { color: var(--sea-dark); font-size: 1.25rem; font-weight: 800; }
.legend-box { display: inline-block; width: 1rem; height: 1rem; vertical-align: -.15rem; border: 1px solid #c9cdd0; background: white; }
.legend-box.checkin, .legend-box.checkout { background: #d8f1e1; }
.legend-box.occupied { background: #f8d7da; }
.legend-box.blocked { background: #f5bfc7; }
.legend-box.turnover { background: linear-gradient(155deg, #d8f1e1 0 49%, #f8d7da 51% 100%); }
.admin-calendar-card { touch-action: pan-y; }
.calendar-mobile-nav { position: sticky; top: 0; z-index: 4; display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: .65rem; padding: .65rem; text-align: center; background: rgba(255, 255, 255, .96); border-bottom: 1px solid #d6dadd; backdrop-filter: blur(8px); }
.calendar-mobile-nav strong, .calendar-mobile-nav small { display: block; }
.calendar-mobile-nav small { margin-top: .1rem; color: #6c757d; font-size: .72rem; }
.calendar-jump-nav { width: 100%; min-width: 0; }
.calendar-jump-nav-desktop { flex: 0 1 20rem; max-width: 20rem; text-align: center; }
.calendar-month-jump { font-weight: 800; color: var(--sea-dark); border-color: rgba(6, 75, 99, .25); }
@media (max-width: 991.98px) {
    .admin-calendar-card { width: 100%; overflow: hidden !important; }
    .calendar-weekdays, .calendar-grid { grid-template-columns: repeat(7, minmax(0, 1fr)); width: 100%; min-width: 0; }
    .calendar-weekdays div { min-width: 0; padding: .55rem .1rem; overflow: hidden; font-size: .78rem; }
    .calendar-day { min-width: 0; min-height: 88px; padding: .35rem .2rem; overflow: hidden; }
    .day-number { text-align: center; font-size: .9rem; }
    .day-events { gap: .12rem; margin-top: .4rem; }
    .calendar-status-icon { width: 1.45rem; height: 1.45rem; border-width: 1px; font-size: .82rem; }
    .calendar-price-adjustment { left: .18rem; bottom: .16rem; padding: .12rem .24rem; font-size: .62rem; }
    .calendar-desktop-nav { display: none !important; }
}
@media (max-width: 575.98px) {
    .calendar-legend { gap: .45rem .8rem !important; font-size: .78rem; }
    .calendar-day { min-height: 64px; padding: .22rem .08rem; }
    .calendar-weekdays div { padding-block: .45rem; font-size: .7rem; }
    .day-number { font-size: .78rem; line-height: 1; }
    .day-events { flex-wrap: wrap; gap: .05rem; margin-top: .25rem; }
    .calendar-status-icon { width: 1.25rem; height: 1.25rem; color: var(--channel-color); background: rgba(255, 255, 255, .88); border: 1px solid currentColor; border-radius: .25rem; box-shadow: none; font-size: .72rem; }
    .calendar-price-adjustment { gap: 0; padding: .1rem .16rem; font-size: .54rem; }
    .calendar-price-adjustment .bi { display: none; }
}

.qr-print-body { background: #e9edef; }
.qr-screen-container { max-width: 1100px; }
.qr-print-sheet { box-sizing: border-box; width: 210mm; min-height: 297mm; margin: 0 auto 2rem; padding: 15mm 17mm 12mm; color: #202428; background: white; box-shadow: 0 .5rem 2rem rgba(0, 0, 0, .15); }
.qr-sheet-header { display: flex; align-items: flex-start; gap: .8rem; margin-bottom: 12mm; }
.qr-sheet-header > i { margin-top: .15rem; color: #493568; font-size: 1.75rem; }
.qr-sheet-header h1 { margin: 0; font-size: 1.65rem; font-weight: 700; }
.qr-sheet-header p { margin: .2rem 0 0; color: #657178; font-size: .95rem; }
.qr-video-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 9mm 11mm; }
.qr-video-item { min-height: 66mm; text-align: center; break-inside: avoid; }
.qr-video-icon { display: block; margin-bottom: 2mm; color: var(--qr-accent); font-size: 2.4rem; line-height: 1; }
.qr-video-item h2 { min-height: 1.5em; margin: 0 0 2mm; font-size: 1rem; font-weight: 500; }
.video-qr { box-sizing: border-box; display: block; width: 38mm; height: 38mm; margin: 0 auto; padding: 1.5mm; background: white; }
.video-qr img, .video-qr canvas { width: 100% !important; height: 100% !important; }
.qr-sheet-footer { margin-top: 6mm; padding: 0; color: #657178; background: transparent; font-size: .75rem; text-align: center; }
.qr-generation-error::after { display: block; color: #dc3545; content: 'QR non generato'; font-weight: 700; }

@page { size: A4 portrait; margin: 0; }
@media print {
    html, body { width: 210mm; margin: 0 !important; padding: 0 !important; background: white !important; }
    .no-print { display: none !important; }
    .qr-screen-container { width: 210mm; max-width: none; margin: 0; padding: 0 !important; }
    .qr-print-sheet { min-height: 297mm; margin: 0; box-shadow: none; page-break-after: always; break-after: page; }
    .qr-print-sheet:last-child { page-break-after: auto; break-after: auto; }
}

.sql-console-container { max-width: 1800px; margin-inline: auto; }
.sql-console-editor { min-height: 460px; font-family: Consolas, "Courier New", monospace; font-size: 1rem; line-height: 1.6; tab-size: 4; }
.sql-console-results { max-height: 70vh; }
.sql-console-results th { position: sticky; top: 0; z-index: 1; white-space: nowrap; background: #eef2f3; }
.sql-console-results td { min-width: 10rem; max-width: 70rem; padding: .75rem; vertical-align: top; }
.sql-console-results pre { max-height: 32rem; margin: 0; overflow: auto; white-space: pre-wrap; overflow-wrap: anywhere; font: inherit; line-height: 1.55; }

.stats-apartment-tabs .nav-link { padding: .8rem 1rem; color: var(--sea-dark); background: white; box-shadow: 0 .2rem .7rem rgba(0, 0, 0, .08); }
.stats-apartment-tabs .nav-link.active { color: white; background: var(--sea); }
.stats-year-tabs { gap: .35rem; padding-bottom: .2rem; border-bottom: 3px solid #d8e1e4; scrollbar-width: thin; }
.stats-year-tabs .nav-link { color: var(--ink); background: #eef2f3; border: 1px solid #d8e1e4; border-bottom: 0; font-weight: 700; }
.stats-year-tabs .nav-link:hover { color: var(--sea-dark); background: #dcecf1; }
.stats-year-tabs .nav-link.active { color: white; background: var(--sea-dark); border-color: var(--sea-dark); box-shadow: 0 .2rem .55rem rgba(6, 75, 99, .28); }
.stats-year-tabs .nav-link.active .badge { color: #212529 !important; background: #ffc107 !important; }
.stats-month-table th, .stats-month-table td { padding: .75rem 1.25rem; }
.stats-month-table thead th { color: white; background: var(--sea-dark); }
.stats-month-table tfoot th { color: white; background: var(--sea); font-size: 1.05rem; }
.stats-night-value { display: inline-grid; place-items: center; min-width: 2.6rem; padding: .25rem .6rem; color: white; background: var(--sea); border-radius: 999px; font-weight: 700; }
.stats-night-value.is-zero { color: #6c757d; background: #e9ecef; }
.stats-absolute-total { color: white; background: #198754; font-size: 1.15rem; }
.stats-absolute-total span { font-size: 1.5rem; font-weight: 800; }
.stats-grand-total { color: white; background: linear-gradient(120deg, var(--sea-dark), var(--sea)); }
.stats-grand-total strong { font-size: clamp(1.8rem, 5vw, 3rem); }
.pricing-filter-card .form-select { min-width: min(22rem, 100%); }
.pricing-month-table { min-width: 920px; }
.pricing-month-table thead th { color: white; background: var(--sea-dark); white-space: nowrap; }
.pricing-month-table tbody th { min-width: 12rem; color: var(--sea-dark); }
.pricing-month-table .input-group { min-width: 11rem; }
.pricing-month-number { display: inline-grid; place-items: center; width: 2.1rem; height: 2.1rem; margin-right: .45rem; color: white; background: var(--sea); border-radius: 50%; font-size: .85rem; font-weight: 800; }
.pricing-parameters-table { min-width: 680px; }
.pricing-parameters-table thead th { color: white; background: #345; white-space: nowrap; }
.pricing-parameters-table tbody th { width: 35%; }
.pricing-param-value { max-width: 16rem; }
.pricing-new-param-row { background: #f8fbfc; }
.special-year-input { min-width: 7rem; }
.special-category-badge { color: white; background: var(--special-color, #6c757d); border: 1px solid rgba(255, 255, 255, .5); }
.special-days-card { overflow: hidden; }
.special-days-table { min-width: 720px; }
.special-days-table thead th, .special-adjustment-table thead th { color: white; background: var(--sea-dark); white-space: nowrap; }
.special-days-table td, .special-adjustment-table td { vertical-align: middle; }
.special-days-table form { display: inline-block; }
.special-adjustment-table small { line-height: 1.3; }
.procedure-admin-container { max-width: 1800px; }
.procedure-count-badge { white-space: nowrap; }
.procedure-group-link { display: flex; align-items: center; gap: .75rem; height: 100%; padding: 1rem 1.1rem; color: var(--sea-dark); text-decoration: none; background: white; border: 1px solid rgba(6, 75, 99, .12); border-radius: 1rem; box-shadow: 0 .2rem .7rem rgba(0, 0, 0, .07); font-weight: 800; }
.procedure-group-link:hover { color: white; background: var(--sea); }
.procedure-group-link i { font-size: 1.35rem; }
.procedure-card { overflow: hidden; }
.procedure-card .card-header h3 { color: var(--sea-dark); font-weight: 800; }
.procedure-call { padding: .25rem .45rem; color: var(--sea-dark); background: #eef6f8; border-radius: .45rem; font-size: .82rem; }
.procedure-checkout-preview { padding: .55rem .75rem; background: #f5f9fa; border: 1px dashed rgba(6, 75, 99, .25); border-radius: .65rem; }
.procedure-result-card { overflow: hidden; }
.procedure-result-table { max-height: 65vh; }
.procedure-result-table th { position: sticky; top: 0; z-index: 1; color: white; background: var(--sea-dark); white-space: nowrap; }
.procedure-result-table td { white-space: nowrap; }
.ical-feeds-container { max-width: 1800px; }
.ical-feeds-table { min-width: 980px; }
.ical-feeds-table thead th { color: white; background: var(--sea-dark); white-space: nowrap; }
.ical-feed-url { min-width: 34rem; }
.admin-avatar { display: inline-block; flex: 0 0 auto; object-fit: cover; border-radius: 50%; background: #fff; border: 2px solid rgba(255, 255, 255, .75); box-shadow: 0 .15rem .4rem rgba(0, 0, 0, .16); vertical-align: middle; }
.admin-avatar-sm { width: 1.6rem; height: 1.6rem; }
.admin-avatar-lg { width: 6rem; height: 6rem; }
.admin-avatar-placeholder { display: inline-grid; flex: 0 0 auto; place-items: center; color: #fff; background: linear-gradient(135deg, var(--sea), var(--sea-dark)); border-radius: 50%; border: 2px solid rgba(255, 255, 255, .75); box-shadow: 0 .15rem .4rem rgba(0, 0, 0, .16); vertical-align: middle; }
.admin-avatar-placeholder.admin-avatar-sm { font-size: .95rem; }
.admin-avatar-placeholder.admin-avatar-lg { font-size: 3rem; }
.profile-avatar-panel { padding: 1rem; background: #f7fbfc; border: 1px solid rgba(6, 75, 99, .12); border-radius: 1rem; }
.navbar .btn .admin-avatar { margin-top: -.15rem; margin-bottom: -.15rem; }
@media (max-width: 575.98px) {
    .pricing-filter-card .card-body > div, .pricing-filter-card .btn { width: 100%; }
    .pricing-filter-card .form-select, .pricing-filter-card .form-control { width: 100%; }
    .pricing-month-table { min-width: 820px; font-size: .85rem; }
    .pricing-month-table .input-group { min-width: 9rem; }
    .pricing-parameters-table { min-width: 620px; font-size: .85rem; }
    .special-days-table { min-width: 680px; font-size: .85rem; }
    .procedure-count-badge { width: 100%; }
    .procedure-result-table { font-size: .84rem; }
}
.access-live-card { overflow: hidden; }
.access-live-interval { width: auto; min-width: 6rem; }
.access-live-body { min-height: 18rem; max-height: 28rem; overflow: auto; color: #d7f5df; background: #101820; border-top: 1px solid rgba(255, 255, 255, .12); }
.access-live-empty { padding: 1rem 1.25rem; color: #9fb3bd !important; }
.access-live-lines { display: flex; flex-direction: column; gap: .25rem; padding: .75rem; font-size: .875rem; line-height: 1.45; }
.access-live-line { padding: .45rem .65rem; color: #d7f5df; background: rgba(255, 255, 255, .045); border-left: .25rem solid #6c757d; border-radius: .35rem; white-space: pre-wrap; overflow-wrap: anywhere; animation: accessLiveIn .22s ease-out; }
.access-live-user-agent { margin-top: .18rem; color: #8fb0bd; font-size: .78rem; }
.access-live-line.is-page { border-left-color: #0dcaf0; }
.access-live-line.is-internal { border-left-color: #ffc107; }
.access-live-line.is-external { border-left-color: #20c997; }
.access-live-line.is-email { border-left-color: #6f42c1; }
.access-live-line.is-confirmed { border-left-color: #198754; }
.access-live-line.is-cancelled { border-left-color: #dc3545; }
.access-live-line.is-not-found { border-left-color: #ff4d6d; background: rgba(255, 77, 109, .10); }
@keyframes accessLiveIn { from { opacity: 0; transform: translateY(-.25rem); } to { opacity: 1; transform: translateY(0); } }

.booking-dashboard-table { width: 100%; table-layout: fixed; font-size: .88rem; }
.booking-dashboard-table th, .booking-dashboard-table td { padding: .55rem; overflow-wrap: anywhere; }
.booking-dashboard-table th:nth-child(1) { width: 8%; }
.booking-dashboard-table th:nth-child(2) { width: 10%; }
.booking-dashboard-table th:nth-child(3) { width: 10%; }
.booking-dashboard-table th:nth-child(4) { width: 10%; }
.booking-dashboard-table th:nth-child(5) { width: 15%; }
.booking-dashboard-table th:nth-child(6) { width: 17%; }
.booking-dashboard-table th:nth-child(7) { width: 9%; }
.booking-dashboard-table th:nth-child(8) { width: 9%; }
.booking-dashboard-table th:nth-child(9) { width: 12%; }
.booking-note-cell { min-width: 0; max-width: 390px; }
.booking-note-text { max-height: 7rem; overflow: auto; white-space: normal; overflow-wrap: anywhere; font-size: .9rem; line-height: 1.4; }
.booking-quote-badge { display: inline-flex; align-items: center; max-width: 100%; padding: .35rem .6rem; color: #0f5132; background: rgba(25, 135, 84, .12); border: 1px solid rgba(25, 135, 84, .32); border-radius: 999px; font-size: .82rem; font-weight: 800; overflow-wrap: anywhere; }
.booking-guest-cell { overflow-wrap: anywhere; }
.booking-guest-cell a { overflow-wrap: anywhere; word-break: break-word; }
.booking-channel-row > td { background-color: var(--booking-channel-tint) !important; }
.booking-apartment-cell { border-left: 10px solid var(--booking-channel-color); }
.booking-channel-row:hover > td { filter: saturate(1.2) brightness(.97); }
.booking-channel-badge { display: inline-flex; align-items: center; justify-content: center; width: 100%; min-width: 0; padding: .5rem .35rem; white-space: normal; color: white !important; background-color: var(--booking-channel-color) !important; border: 2px solid rgba(255, 255, 255, .65); box-shadow: 0 .15rem .4rem rgba(0, 0, 0, .18); font-size: .82rem; }
.booking-actions-header, .booking-actions-cell { position: sticky; right: 0; z-index: 2; width: 165px !important; min-width: 165px; box-shadow: -.4rem 0 .7rem rgba(0, 0, 0, .08); }
.booking-actions-header { z-index: 3; background: #fff !important; }
.booking-actions-cell { background: var(--booking-channel-tint) !important; }
.booking-actions-cell > div, .booking-actions-cell form { width: 100%; }
.booking-actions-cell .btn { width: 100%; white-space: normal; }
@media (max-width: 1399.98px) {
    .booking-dashboard-table { min-width: 980px; }
    .booking-dashboard-table th:nth-child(2) { width: 12%; }
    .booking-dashboard-table th:nth-child(3) { width: 13%; }
    .booking-dashboard-table th:nth-child(5) { width: 17%; }
    .booking-dashboard-table th:nth-child(6) { width: 20%; }
    .booking-dashboard-table th:nth-child(7), .booking-dashboard-table th:nth-child(8) { width: 10%; }
}
@media (max-width: 767.98px) {
    .booking-dashboard-table { min-width: 820px; font-size: .8rem; }
    .booking-actions-header, .booking-actions-cell { width: 140px !important; min-width: 140px; }
    .booking-dashboard-table th, .booking-dashboard-table td { padding: .4rem; }
}
.booking-mobile-list { display: grid; gap: 1rem; }
.booking-mobile-card { overflow: hidden; background: var(--booking-channel-tint); border: 0; border-left: 8px solid var(--booking-channel-color); }
.booking-mobile-card .card-header { padding: 1rem; background: rgba(255, 255, 255, .5); border-bottom-color: rgba(0, 0, 0, .08); }
.booking-mobile-card .card-body { padding: 1rem; }
.booking-mobile-badge { width: auto; max-width: 50%; padding-inline: .7rem; }
.booking-mobile-details { display: grid; grid-template-columns: 1fr 1fr; gap: .8rem; }
.booking-mobile-details > div { min-width: 0; }
.booking-mobile-details span:first-child, .booking-mobile-label { display: block; margin-bottom: .2rem; color: #5f6b70; font-size: .72rem; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; }
.booking-mobile-details strong { display: block; overflow-wrap: anywhere; }
.booking-mobile-section { margin-top: 1rem; padding-top: 1rem; overflow-wrap: anywhere; border-top: 1px solid rgba(0, 0, 0, .1); }
.booking-mobile-actions { display: grid; gap: .6rem; margin-top: 1rem; padding-top: 1rem; border-top: 1px solid rgba(0, 0, 0, .1); }
.booking-mobile-actions form { display: grid; gap: .6rem; width: 100%; }
@media (max-width: 575.98px) {
    .booking-dashboard-filters .card-body > div { width: 100%; }
    .booking-dashboard-filters .form-select, .booking-dashboard-filters .btn { width: 100%; }
}
