:root {
    --brand-orange: #ff7300;
    --brand-orange-dark: #d95f00;
    --ink: #171717;
    --ink-soft: #5f6368;
    --paper: #ffffff;
    --canvas: #f5f6f8;
    --line: #e4e6ea;
    --success: #177245;
    --radius-sm: 10px;
    --radius-md: 16px;
    --radius-lg: 24px;
    --shadow-sm: 0 8px 24px rgba(23, 23, 23, 0.07);
    --shadow-md: 0 18px 48px rgba(23, 23, 23, 0.10);
}

html { scroll-behavior: smooth; }

body.modern-booking,
body.modern-booking button,
body.modern-booking input,
body.modern-booking select,
body.modern-booking textarea {
    font-family: "Inter", Arial, sans-serif !important;
}

body.modern-booking {
    display: flex;
    min-height: 100vh;
    flex-direction: column;
    margin: 0;
    padding: 0 !important;
    overflow-x: hidden;
    color: var(--ink);
    background: var(--canvas);
    font-size: 16px;
    line-height: 1.6;
}

.skip-link {
    position: fixed;
    z-index: 2000;
    top: 12px;
    left: 12px;
    padding: 10px 14px;
    transform: translateY(-150%);
    border-radius: 8px;
    color: #fff;
    background: var(--ink);
}

.skip-link:focus { transform: translateY(0); color: #fff; }

.site-header {
    position: sticky;
    z-index: 1030;
    top: 0;
    border-bottom: 1px solid rgba(255, 255, 255, 0.08);
    background: rgba(23, 23, 23, 0.96);
    box-shadow: 0 8px 30px rgba(0, 0, 0, 0.12);
    backdrop-filter: blur(14px);
}

.modern-navbar { min-height: 88px; padding: 12px 0; }
.nav-shell { max-width: 1180px; }

.brand-lockup {
    display: inline-flex;
    align-items: center;
    gap: 14px;
    margin: 0;
    padding: 0;
}

.brand-logo-surface {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
    min-width: 150px;
    height: 54px;
    padding: 8px 13px;
    border-radius: 12px;
    background: #fff;
}

.brand-logo { display: block; width: 128px; height: auto; max-height: 38px; object-fit: contain; }
.brand-copy { display: flex; flex-direction: column; color: #fff; line-height: 1.25; }
.brand-copy strong { font-size: 15px; font-weight: 700; letter-spacing: -0.01em; }
.brand-copy small { margin-top: 3px; color: #b8bbc0; font-size: 12px; }

.modern-nav-list { align-items: center; gap: 4px; }
.modern-nav-list .nav-link,
.modern-nav-list a {
    margin: 0 !important;
    padding: 10px 13px !important;
    border-radius: 9px;
    color: #f4f4f4 !important;
    font-size: 14px;
    font-weight: 600;
    text-decoration: none;
    transition: background-color .2s ease, color .2s ease, transform .2s ease;
}

.modern-nav-list .nav-link:hover,
.modern-nav-list .nav-link:focus {
    border: 0;
    color: #fff !important;
    background: rgba(255, 255, 255, 0.10);
    transform: translateY(-1px);
}

.modern-nav-list .nav-admin .nav-link { margin-left: 6px !important; color: var(--ink) !important; background: #fff; }
.modern-nav-list .nav-admin .nav-link:hover { background: var(--brand-orange); }
.modern-toggler { border: 1px solid rgba(255, 255, 255, .25); }
.modern-toggler .navbar-toggler-icon {
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255,255,255,0.92%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
}

.site-main { flex: 1 0 auto; padding: 44px 16px 64px; }
.page-surface { max-width: 1180px; min-height: 420px; padding: 36px 42px; border: 1px solid var(--line); border-radius: var(--radius-lg); background: var(--paper); box-shadow: var(--shadow-sm); }
.page-surface > br:first-child { display: none; }

body.modern-booking h1,
body.modern-booking h2,
body.modern-booking h3,
body.modern-booking h4,
body.modern-booking h5,
body.modern-booking .font-graziato,
body.modern-booking .font-non-graziato {
    font-family: "Inter", Arial, sans-serif !important;
}

body.modern-booking h1 { color: var(--ink); font-size: clamp(28px, 5vw, 46px); font-weight: 800; letter-spacing: -0.04em; line-height: 1.08; }
body.modern-booking h2 { color: var(--ink); font-size: clamp(24px, 4vw, 34px); font-weight: 750; letter-spacing: -0.03em; }
body.modern-booking h3 { font-size: 22px; font-weight: 700; }
body.modern-booking a { color: var(--brand-orange-dark); }

body.modern-booking .btn,
body.modern-booking input[type="submit"],
body.modern-booking input[type="button"] {
    min-height: 46px;
    padding: 11px 20px;
    border: 0;
    border-radius: var(--radius-sm);
    box-shadow: none;
    font-size: 15px;
    font-weight: 700;
    line-height: 1.4;
    transition: transform .15s ease, box-shadow .2s ease, background-color .2s ease;
}

body.modern-booking .btn:hover,
body.modern-booking input[type="submit"]:hover,
body.modern-booking input[type="button"]:hover { transform: translateY(-1px); box-shadow: 0 8px 20px rgba(23,23,23,.14); }
body.modern-booking .btn-success,
body.modern-booking .btn-green,
body.modern-booking .btn-081,
body.modern-booking .btn-round { color: #fff !important; background: var(--brand-orange) !important; }
body.modern-booking .btn-success:hover,
body.modern-booking .btn-green:hover,
body.modern-booking .btn-081:hover,
body.modern-booking .btn-round:hover { background: var(--brand-orange-dark) !important; }

body.modern-booking .btn-success-custom {
    min-width: 112px;
    color: #fff !important;
    background: var(--ink) !important;
}

body.modern-booking .btn-success-custom:hover { color: #fff !important; text-decoration: none; background: var(--brand-orange) !important; }

body.modern-booking .card { overflow: hidden; border: 1px solid var(--line); border-radius: var(--radius-md); background: #fff; box-shadow: none; }
body.modern-booking .card .header { padding: 28px !important; border-bottom: 1px solid var(--line); background: linear-gradient(135deg, #fff7f0, #fff); }
body.modern-booking .card .header h1 { margin: 0; }
body.modern-booking .card .body { padding: 24px; }
body.modern-booking .page-surface > .font-non-graziato > div[style*="background-color:#bbd6d4"] {
    padding: 24px !important;
    border: 1px solid #ffe0c7;
    border-radius: var(--radius-md);
    background: #fff8f2 !important;
}

body.modern-booking .table-responsive { overflow-x: auto; border: 1px solid var(--line); border-radius: var(--radius-md); -webkit-overflow-scrolling: touch; }
body.modern-booking table { width: 100% !important; margin: 0 !important; border-collapse: separate !important; border-spacing: 0; color: var(--ink); background: #fff; }
body.modern-booking table.dataTable.no-footer { border-bottom: 0; }
body.modern-booking table th,
body.modern-booking table td { padding: 16px 18px !important; border: 0 !important; border-bottom: 1px solid var(--line) !important; vertical-align: middle !important; }
body.modern-booking table tbody tr:last-child td { border-bottom: 0 !important; }
body.modern-booking .tr_lista_sportelli,
body.modern-booking .trHead { height: auto; background: var(--ink) !important; }
body.modern-booking .custom-table-row { color: #fff; border-color: #303030 !important; font-size: 12px; letter-spacing: .06em; text-transform: uppercase; }
body.modern-booking table tbody td { color: var(--ink) !important; background: #fff !important; font-weight: 500; }

body.modern-booking .form-control,
body.modern-booking .chosen-container-single .chosen-single,
body.modern-booking select,
body.modern-booking textarea {
    min-height: 46px;
    padding: 10px 13px;
    border: 1px solid #ced1d6;
    border-radius: var(--radius-sm);
    color: var(--ink);
    background: #fff;
    box-shadow: none;
}

body.modern-booking .form-control:focus,
body.modern-booking select:focus,
body.modern-booking textarea:focus { border-color: var(--brand-orange); box-shadow: 0 0 0 3px rgba(255,115,0,.16); outline: 0; }
body.modern-booking input[type="checkbox"] { width: 20px; height: 20px; margin-right: 8px; accent-color: var(--brand-orange); vertical-align: middle; }

body.modern-booking .modal { padding-right: 0 !important; }
body.modern-booking .modal-dialog { max-width: 720px; margin: 24px auto; }
body.modern-booking .modal-content { overflow: hidden; border: 0; border-radius: var(--radius-lg); box-shadow: var(--shadow-md); }
body.modern-booking .modal-header { align-items: center; padding: 22px 26px; border: 0; background: var(--ink) !important; }
body.modern-booking .modal-title { margin: 0; color: #fff !important; font-size: 23px; }
body.modern-booking .modal-body { padding: 28px; }

body.modern-booking #calendar { padding: 16px; border: 1px solid var(--line); border-radius: var(--radius-md); color: var(--ink); background: #fff; }
body.modern-booking .fc-button-primary { border-color: var(--ink) !important; background: var(--ink) !important; }
body.modern-booking .fc-button-primary:hover,
body.modern-booking .fc-button-primary:not(:disabled).fc-button-active { border-color: var(--brand-orange-dark) !important; background: var(--brand-orange) !important; }
body.modern-booking .fc-event { border-color: var(--brand-orange-dark) !important; background: var(--brand-orange) !important; }
body.modern-booking #calendar .fc-view-container { overflow: hidden; border: 1px solid #dfe2e6; border-radius: 12px; background: #fff; }
body.modern-booking #calendar .fc-widget-header,
body.modern-booking #calendar .fc-head-container,
body.modern-booking #calendar .fc-day-header {
    border-color: #dfe2e6 !important;
    color: var(--ink) !important;
    background: #f2f4f7 !important;
}
body.modern-booking #calendar .fc-day-header { padding: 14px 8px !important; font-size: 14px; font-weight: 700; text-transform: capitalize; }
body.modern-booking #calendar .fc-day-header a { color: var(--ink) !important; }
body.modern-booking #calendar .fc-widget-content,
body.modern-booking #calendar .fc-bg td,
body.modern-booking #calendar .fc-content-skeleton td {
    border-color: #e3e6ea !important;
    color: var(--ink) !important;
    background: #fff !important;
}
body.modern-booking #calendar .fc-axis {
    min-width: 72px;
    padding: 0 12px !important;
    color: #4f555c !important;
    background: #fafafa !important;
    font-size: 13px;
    font-weight: 700;
    text-align: right;
}
body.modern-booking #calendar .fc-time-grid .fc-slats td {
    height: 46px;
    border-color: #e3e6ea !important;
    color: #4f555c !important;
    background: #fff !important;
}
body.modern-booking #calendar .fc-time-grid .fc-slats tr:nth-child(2n) td:not(.fc-axis) { background: #fcfcfd !important; }
body.modern-booking #calendar .fc-nonbusiness { background: #eef0f3 !important; opacity: .82; }
body.modern-booking #calendar .fc-highlight { background: rgba(255, 115, 0, .20) !important; }
body.modern-booking #calendar .fc-time-grid-event .fc-time,
body.modern-booking #calendar .fc-time-grid-event .fc-title,
body.modern-booking #calendar .fc-list-item-title,
body.modern-booking #calendar .fc-list-item-time { color: #fff !important; }
body.modern-booking #calendar .fc-now-indicator { border-color: var(--brand-orange) !important; }

.confirmation-page { justify-content: center; }
.booking-confirmation { max-width: 720px; margin: 0 auto; padding: 34px 38px; color: var(--ink); text-align: center; }
.booking-confirmation__logo { display: inline-flex; align-items: center; justify-content: center; width: 190px; height: 72px; margin-bottom: 28px; padding: 10px 16px; border: 1px solid var(--line); border-radius: 15px; background: #fff; box-shadow: var(--shadow-sm); }
.booking-confirmation__logo img { display: block; width: 154px; height: auto; }
.booking-confirmation__eyebrow { display: block; margin-bottom: 10px; color: var(--brand-orange-dark); font-size: 13px; font-weight: 800; letter-spacing: .09em; text-transform: uppercase; }
.booking-confirmation h1 { max-width: 620px; margin: 0 auto 20px; }
.booking-confirmation p { max-width: 610px; margin: 0 auto 14px; color: #4f555c; font-size: 16px; line-height: 1.7; }
.booking-confirmation .booking-confirmation__lead { color: var(--ink); font-size: 20px; font-weight: 650; }
.booking-confirmation__notice { max-width: 610px; margin: 28px auto 0; padding: 16px 18px; border-left: 4px solid var(--brand-orange); border-radius: 10px; color: #4f555c; background: #fff7f0; font-size: 14px; line-height: 1.6; text-align: left; }
.confirmation-download { min-width: 210px; }

.site-footer { flex: 0 0 auto; padding: 28px 16px; color: #fff; background: var(--ink); }
.footer-shell { display: flex; align-items: center; justify-content: space-between; gap: 28px; max-width: 1180px; }
.footer-brand { display: flex; align-items: center; gap: 16px; }
.brand-logo-surface--footer { min-width: 122px; height: 46px; padding: 7px 10px; }
.brand-logo-surface--footer .brand-logo { width: 104px; }
.footer-brand div { display: flex; flex-direction: column; }
.footer-brand strong { font-size: 14px; }
.footer-brand span { color: #aeb1b6; font-size: 12px; }
.footer-meta { display: flex; align-items: center; gap: 18px; color: #aeb1b6; font-size: 12px; }
.footer-meta a { color: #fff !important; font-weight: 700; }

@media (max-width: 991.98px) {
    .modern-navbar { min-height: 74px; padding: 10px 16px; }
    .brand-logo-surface { min-width: 118px; height: 46px; padding: 7px 10px; }
    .brand-logo { width: 102px; max-height: 32px; }
    .brand-copy small { display: none; }
    .modern-navbar .navbar-collapse { margin-top: 14px; padding: 12px; border-top: 1px solid rgba(255,255,255,.1); border-radius: 12px; background: #222; }
    .modern-nav-list { align-items: stretch; }
    .modern-nav-list .nav-link,
    .modern-nav-list a { display: block; margin: 2px 0 !important; padding: 12px 14px !important; }
    .modern-nav-list .nav-admin .nav-link { margin: 8px 0 0 !important; text-align: center; }
    .site-main { padding: 24px 12px 40px; }
    .page-surface { padding: 24px 20px; border-radius: 18px; }
    body.modern-booking .card .header { padding: 22px 18px !important; }
    body.modern-booking .card .body { padding: 14px; }
    body.modern-booking .modal-dialog { margin: 12px; }
    body.modern-booking .modal-body { padding: 22px 18px; }
    body.modern-booking .modal-body .col-xs-6 { width: 100%; flex: 0 0 100%; max-width: 100%; }
    body.modern-booking .fc-toolbar { flex-wrap: wrap; gap: 8px; }
    body.modern-booking .fc-toolbar h2 { font-size: 20px; }
    .footer-shell,
    .footer-brand { align-items: flex-start; flex-direction: column; }
    .footer-meta { width: 100%; justify-content: space-between; }
}

@media (max-width: 575.98px) {
    .brand-copy { display: none; }
    .page-surface { padding: 20px 14px; }
    body.modern-booking h1 { font-size: 29px; }
    body.modern-booking h2 { font-size: 24px; }
    body.modern-booking .table-responsive { border-radius: 12px; }
    body.modern-booking table th,
    body.modern-booking table td { min-width: 150px; padding: 13px 12px !important; }
    body.modern-booking table th:last-child,
    body.modern-booking table td:last-child { min-width: 126px; }
    body.modern-booking .fc-toolbar { display: grid; grid-template-columns: 1fr; }
    body.modern-booking .fc-toolbar > * { justify-self: center; }
    body.modern-booking #calendar { padding: 10px; }
    body.modern-booking #calendar .fc-axis { min-width: 58px; padding: 0 7px !important; font-size: 11px; }
    body.modern-booking #calendar .fc-time-grid .fc-slats td { height: 42px; }
    .booking-confirmation { padding: 20px 4px; }
    .booking-confirmation__logo { width: 160px; height: 62px; margin-bottom: 22px; }
    .booking-confirmation__logo img { width: 132px; }
    .booking-confirmation .booking-confirmation__lead { font-size: 18px; }
    .booking-confirmation__notice { margin-top: 22px; }
    .site-footer { padding-bottom: max(28px, env(safe-area-inset-bottom)); }
}

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { scroll-behavior: auto !important; transition-duration: .01ms !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; }
}

/* Area amministrativa: conserva la struttura applicativa esistente e ne
   uniforma navigazione, contenuti e marchio al tema pubblico. */
body.modern-admin > .navbar {
    position: sticky;
    top: 0;
    z-index: 1030;
    min-height: 82px;
    padding: 12px max(18px, calc((100vw - 1180px) / 2));
    background: var(--ink) !important;
    box-shadow: 0 8px 30px rgba(0, 0, 0, .12);
}

body.modern-admin > .body-content {
    width: calc(100% - 32px);
    max-width: 1180px;
    min-height: 540px;
    margin: 36px auto 56px;
    padding: 36px 42px;
    border: 1px solid var(--line);
    border-radius: var(--radius-lg);
    background: #fff;
    box-shadow: var(--shadow-sm);
}

body.modern-admin > #footer { position: static; min-height: auto; }
body.modern-admin > #footer .footer { min-height: 96px; padding: 22px 24px; background: var(--ink); }
body.modern-admin > #footer .row { align-items: center; }

@media (max-width: 767.98px) {
    body.modern-admin > .navbar { padding: 12px 16px; }
    body.modern-admin > .body-content { width: calc(100% - 24px); margin: 24px auto 40px; padding: 22px 16px; border-radius: 18px; }
}

body.modern-login {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 100vh;
    padding: 32px 16px !important;
    background:
        radial-gradient(circle at 15% 15%, rgba(255,115,0,.18), transparent 30%),
        linear-gradient(145deg, #111 0%, #252525 100%);
}

body.modern-login .login-box { width: 100%; max-width: 430px; margin: 0; }
body.modern-login .card { padding: 34px; border: 0; border-radius: var(--radius-lg); box-shadow: 0 30px 80px rgba(0,0,0,.28); }
body.modern-login .card .logo { margin-bottom: 28px; text-align: center; }
body.modern-login .login-brand-surface { width: 178px; height: 64px; margin: 0 auto; }
body.modern-login .login-brand-surface .brand-logo { width: 148px; max-height: 44px; }
body.modern-login .card .body { padding: 0; }
body.modern-login .msg { margin-bottom: 24px; color: var(--ink); font-size: 19px; font-weight: 750; text-align: center; }
body.modern-login .input-group { margin-bottom: 20px; }
body.modern-login .input-group-addon { border: 0; color: var(--brand-orange); background: transparent; }
body.modern-login .form-line { border-bottom: 0 !important; }
body.modern-login .form-control { width: 100%; }
body.modern-login button[type="submit"] { width: 100%; color: #fff !important; background: var(--brand-orange) !important; }
body.modern-login button[type="submit"]:hover { background: var(--brand-orange-dark) !important; }

@media (max-width: 575.98px) {
    body.modern-login { padding: 20px 12px !important; }
    body.modern-login .card { padding: 28px 20px; }
}
