/* ========================================
   Calendario Settimanale — Grid Layout
   ======================================== */

/* --- Config variabili --- */
:root {
    --cal-row-h: 22px;
    --cal-time-w: 72px;
    --cal-room-min-w: 180px;
    --cal-header-h: 36px;
    --cal-hour-border: rgba(71,85,105,0.42);
    --cal-half-border: rgba(71,85,105,0.26);
    --cal-quarter-border: rgba(71,85,105,0.16);
    --cal-room-border: rgba(71,85,105,0.26);
    --cal-header-bg: #25927d;
    --cal-header-time-bg: #1f7a69;
    --cal-header-time-text: #ffffff;
    --cal-bg: #fff;
    --cal-text-time: #374151;
    --cal-text-time-sub: #6b7280;
    --cal-room-header-text: #ffffff;
    --cal-week-badge-bg: #334155;
}

.dark {
    --cal-header-bg: #1f2937;
    --cal-header-time-bg: rgb(31 41 55);
    --cal-header-time-text: #e5e7eb;
    --cal-bg: rgb(17 24 39);
    --cal-hour-border: rgba(255,255,255,0.20);
    --cal-half-border: rgba(255,255,255,0.12);
    --cal-quarter-border: rgba(255,255,255,0.07);
    --cal-room-border: rgba(255,255,255,0.14);
    --cal-text-time: #9ca3af;
    --cal-text-time-sub: #4b5563;
    --cal-room-header-text: #e5e7eb;
    --cal-week-badge-bg: rgba(15,23,42,0.45);
}

/* --- Container --- */
.cal-container {
    border-radius: 8px;
    border: 1px solid rgba(71,85,105,0.22);
    background: var(--cal-bg);
    overflow: hidden;
    box-shadow: 0 1px 2px rgba(15,23,42,0.06);
}

.cal-weekly-calendar-shell {
    position: relative;
    border: 1px solid rgba(71,85,105,0.22);
    border-radius: 8px;
    background: var(--cal-bg);
    box-shadow: 0 1px 2px rgba(15,23,42,0.06);
}

.cal-weekly-calendar-shell > .cal-container {
    border: 0;
    border-radius: 0 0 7px 7px;
    box-shadow: none;
}

.cal-weekly-sticky-room-scroll {
    position: sticky;
    top: 0;
    z-index: 30;
    overflow: hidden;
    border-radius: 7px 7px 0 0;
    background: var(--cal-header-bg);
    box-shadow: 0 8px 18px -16px rgba(15,23,42,0.7);
}

.cal-weekly-header-grid {
    min-width: var(--cal-grid-min-w, 100%);
    width: max(100%, var(--cal-grid-min-w, 100%));
}

.cal-weekly-sticky-room-scroll .cal-header {
    position: relative;
    top: auto;
    z-index: 1;
}

.cal-scroll {
    overflow-x: auto;
    overflow-y: visible;
}

.cal-grid {
    min-width: var(--cal-grid-min-w, 100%);
    width: max(100%, var(--cal-grid-min-w, 100%));
}

/* --- Header --- */
.cal-header {
    display: flex;
    position: sticky;
    top: 0;
    z-index: 20;
    min-height: var(--cal-header-h);
    background: var(--cal-header-bg);
    border-bottom: 1px solid var(--cal-hour-border);
}

.cal-header-time {
    width: var(--cal-time-w);
    min-width: var(--cal-time-w);
    flex-shrink: 0;
    position: sticky;
    left: 0;
    z-index: 35;
    padding: 4px;
    min-height: var(--cal-header-h);
    font-size: 9px;
    font-weight: 700;
    color: var(--cal-header-time-text);
    text-transform: uppercase;
    letter-spacing: 0.1em;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--cal-header-time-bg);
    border-right: 1px solid var(--cal-hour-border);
    box-shadow: 8px 0 12px -12px rgba(0,0,0,0.75);
}

.cal-header-room {
    flex: var(--cal-room-grow, 1) 0 var(--cal-room-min-w);
    min-width: var(--cal-room-min-w);
    min-height: var(--cal-header-h);
    padding: 4px 8px;
    font-size: 13px;
    font-weight: 700;
    text-align: center;
    color: var(--cal-room-header-text);
    border-right: 1px solid var(--cal-room-border);
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
}
.cal-header-room:last-child { border-right: none; }

.cal-header-room-label {
    display: -webkit-box;
    max-width: 100%;
    overflow: hidden;
    line-height: 1.15;
    text-overflow: ellipsis;
    overflow-wrap: anywhere;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
}

/* --- Body --- */
.cal-body {
    display: flex;
}

/* --- Time column --- */
.cal-time-col {
    width: var(--cal-time-w);
    min-width: var(--cal-time-w);
    flex-shrink: 0;
    position: sticky;
    left: 0;
    z-index: 15;
    background: var(--cal-bg);
    border-right: 1px solid var(--cal-hour-border);
}

.cal-time-slot {
    height: var(--cal-row-h);
    display: flex;
    align-items: center;
    justify-content: flex-end;
    padding-right: 6px;
    user-select: none;
}

.cal-time-slot.is-hour {
    border-top: 1px solid var(--cal-hour-border);
}
.cal-time-slot.is-half {
    border-top: 1px solid var(--cal-half-border);
}
.cal-time-slot.is-quarter {
    border-top: 1px solid var(--cal-quarter-border);
}

.cal-time-label {
    font-variant-numeric: tabular-nums;
    line-height: 1;
}
.cal-time-label.hour {
    font-size: 10px;
    font-weight: 700;
    color: var(--cal-text-time);
}
.cal-time-label.sub {
    font-size: 9px;
    font-weight: 400;
    color: var(--cal-text-time-sub);
}

/* --- Room column --- */
.cal-room-col {
    flex: var(--cal-room-grow, 1) 0 var(--cal-room-min-w);
    min-width: var(--cal-room-min-w);
    position: relative;
    border-right: 1px solid var(--cal-room-border);
}
.cal-room-col:last-child { border-right: none; }

/* Background rows */
.cal-room-row {
    height: var(--cal-row-h);
}
.cal-room-row.is-hour  { border-top: 1px solid var(--cal-hour-border); }
.cal-room-row.is-half  { border-top: 1px solid var(--cal-half-border); }
.cal-room-row.is-quarter { border-top: 1px solid var(--cal-quarter-border); }

/* --- Card lezione --- */
.cal-card {
    position: absolute;
    left: 3px;
    right: 3px;
    border-radius: 4px;
    overflow: hidden;
    cursor: pointer;
    z-index: 10;
    transition: filter 0.12s, box-shadow 0.12s;
    box-shadow: 0 1px 2px rgba(0,0,0,0.06);
}
.cal-card:hover {
    filter: brightness(0.92);
    box-shadow: 0 2px 8px rgba(0,0,0,0.12);
}
.dark .cal-card:hover {
    filter: brightness(1.15);
}
.cal-card.has-overlap {
    box-shadow: inset 0 0 0 1px rgba(248,113,113,0.5), 0 1px 2px rgba(0,0,0,0.08);
}

.cal-card-inner {
    padding: 6px 8px;
    height: 100%;
    display: flex;
    flex-direction: column;
    gap: 5px;
    overflow: hidden;
}

.cal-card-header {
    display: flex;
    align-items: center;
    gap: 3px;
    min-width: 0;
}

.cal-card-title {
    font-weight: 700;
    font-size: 10px;
    line-height: 1.2;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    flex: 1;
    min-width: 0;
}

.cal-card-week-badge {
    flex-shrink: 0;
    font-size: 7px;
    font-weight: 800;
    color: #fff;
    padding: 0 4px;
    border-radius: 2px;
    line-height: 12px;
    text-transform: uppercase;
    background: var(--cal-week-badge-bg);
}

.cal-card-sub {
    font-size: 9px;
    line-height: 1.25;
    margin-top: 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.cal-card-trial-summary {
    display: flex;
    align-items: baseline;
    gap: 8px;
    opacity: .85;
}
.cal-card-trial-participant {
    flex: 1;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
}
.cal-card-trial-date {
    flex-shrink: 0;
}

/* --- Card colors per tipo --- */
.cal-card[data-tipo="INDIVIDUALE"] {
    background: #d6e8ff;
    border-left: 3px solid #3b82f6;
    color: #173b8f;
}
.cal-card[data-tipo="CONDIVISO"] {
    background: #e7ddff;
    border-left: 3px solid #8b5cf6;
    color: #4c1d95;
}
.cal-card[data-tipo="COLLETTIVO"] {
    background: #fde9a8;
    border-left: 3px solid #f59e0b;
    color: #78350f;
}
.cal-card[data-tipo="EXTRA"] {
    background: #ccfbf1;
    border-left: 3px solid #14b8a6;
    color: #0f766e;
}
/* Dark mode cards */
.dark .cal-card[data-tipo="INDIVIDUALE"] { background: rgba(59,130,246,0.2); color: #93c5fd; }
.dark .cal-card[data-tipo="CONDIVISO"]   { background: rgba(139,92,246,0.2); color: #c4b5fd; }
.dark .cal-card[data-tipo="COLLETTIVO"]  { background: rgba(245,158,11,0.26); color: #fde68a; }
.dark .cal-card[data-tipo="EXTRA"]       { background: rgba(20,184,166,0.24); color: #99f6e4; }

/* --- Day selector --- */
.cal-toolbar {
    margin-bottom: 16px;
}

.cal-day-row,
.cal-week-row {
    display: flex;
    align-items: center;
    justify-content: center;
}

.cal-day-row {
    flex-wrap: wrap;
    gap: 8px;
}

.cal-week-row {
    margin-top: 16px;
}

.cal-day-btn {
    min-width: 94px;
    padding: 8px 14px;
    border-radius: 6px;
    font-size: 12px;
    font-weight: 700;
    transition: all 0.1s;
    border: none;
    cursor: pointer;
    text-align: center;
    line-height: 1.4;
    text-transform: uppercase;
}
.cal-day-btn.active {
    background: var(--c-600, #25927D);
    color: #fff;
    box-shadow: 0 1px 4px rgba(0,0,0,0.15);
}
.cal-day-btn:not(.active) {
    background: var(--cal-bg);
    color: var(--cal-text-time);
    border: 1px solid rgba(128,128,128,0.2);
}
.cal-day-btn:not(.active):hover {
    background: rgba(128,128,128,0.08);
}

.cal-week-switch {
    display: inline-flex;
    align-items: center;
    gap: 2px;
    padding: 3px;
    margin-left: 0;
    border-radius: 8px;
    border: 1px solid rgba(128,128,128,0.18);
    background: rgba(128,128,128,0.06);
}

.cal-week-btn {
    padding: 6px 10px;
    border: 0;
    border-radius: 6px;
    background: transparent;
    color: var(--cal-text-time);
    font-size: 12px;
    font-weight: 700;
    cursor: pointer;
    line-height: 1.2;
}

.cal-week-btn.active {
    background: var(--c-600, #25927D);
    color: #fff;
    box-shadow: 0 1px 4px rgba(0,0,0,0.14);
}

.cal-week-btn:not(.active):hover {
    background: rgba(128,128,128,0.1);
}

/* --- Legenda --- */
.cal-legend {
    margin-top: 8px;
    display: flex;
    align-items: center;
    gap: 16px;
    font-size: 10px;
    color: var(--cal-text-time);
}
.cal-legend-dot {
    display: inline-block;
    width: 10px;
    height: 10px;
    border-radius: 2px;
    margin-right: 4px;
    vertical-align: middle;
}

/* --- Pulsante "+" posizionamento --- */
.cal-room-row {
    position: relative;
}

.cal-place-btn {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(16, 185, 129, 0.08);
    border: none;
    cursor: pointer;
    color: #10b981;
    font-size: 14px;
    font-weight: 800;
    z-index: 5;
    transition: background 0.1s;
    opacity: 0.22;
}

.cal-room-row:hover .cal-place-btn {
    opacity: 1;
    background: rgba(16, 185, 129, 0.15);
}

.cal-place-btn:hover {
    background: rgba(16, 185, 129, 0.25) !important;
    opacity: 1 !important;
}

/* Show subtle indicator when corso is selected */
.cal-room-row:has(.cal-place-btn) {
    background: rgba(16, 185, 129, 0.03);
}

/* --- Ghost card (lezione in spostamento) --- */
.cal-card.is-ghost {
    opacity: 0.3;
    border-style: dashed;
    pointer-events: none;
    filter: grayscale(0.5);
}
.cal-card.is-ghost:hover {
    filter: grayscale(0.5);
    box-shadow: none;
}

/* --- Prova selezionata: stessa struttura del riepilogo corso --- */
.cal-trial-placement { margin-bottom:16px; border-radius:12px; padding:16px 20px; background:#ecfeff; border:1px solid #a5f3fc; color:#155e75; }
.cal-trial-placement-row { display:flex; align-items:center; gap:12px; }
.cal-trial-placement-card { flex:1; min-width:0; display:flex; align-items:center; justify-content:space-between; gap:10px; padding:10px 14px; border-radius:8px; background:#cffafe; border:1px solid #67e8f9; }
.cal-trial-placement-details { flex:1; min-width:0; display:flex; flex-direction:column; gap:3px; overflow-wrap:anywhere; }
.cal-trial-placement-details strong { font-size:13px; font-weight:600; }
.cal-trial-placement-details span { font-size:11px; opacity:.8; }
.cal-trial-placement-duration { flex-shrink:0; padding:2px 6px; border-radius:4px; font-size:10px; font-weight:600; background:#0891b220; }
.cal-trial-placement-cancel { display:flex; align-items:center; justify-content:center; flex-shrink:0; padding:8px; border-radius:8px; border:0; background:#ef44441a; color:#ef4444; cursor:pointer; }
.cal-trial-placement-cancel:hover { background:#ef444430; }
.cal-trial-placement-cancel:focus-visible { outline:2px solid currentColor; outline-offset:2px; }
.cal-trial-placement > p { font-size:11px; text-align:center; margin:10px 0 0; font-weight:500; }
.dark .cal-trial-placement { background:#0891b20f; border-color:#0891b240; color:#67e8f9; }
.dark .cal-trial-placement-card { background:#0891b226; border-color:#0891b259; }
@media (max-width:640px) {
    .cal-trial-placement { padding:12px; }
    .cal-trial-placement-card { flex-wrap:wrap; }
    .cal-trial-placement-details { flex-basis:100%; }
}

/* --- Modal card hover --- */
.cal-modal-card:hover {
    transform: translateY(-1px);
    box-shadow: 0 4px 12px rgba(0,0,0,0.1);
}
.dark .cal-modal-card:hover {
    box-shadow: 0 4px 12px rgba(0,0,0,0.3);
}

/* --- Modal search input dark mode --- */
.dark input[style*="border:2px solid #25927D"] {
    background: rgba(16,185,129,0.08) !important;
    color: #e5e7eb !important;
    border-color: #25927D !important;
}

/* ========================================
   RESPONSIVE: Schermi grandi (>1600px)
   ======================================== */
@media (min-width: 1600px) {
    :root, .dark {
        --cal-row-h: 28px;
        --cal-time-w: 68px;
        --cal-room-min-w: 210px;
        --cal-header-h: 40px;
    }
    .cal-header-time {
        font-size: 11px;
        padding: 5px 6px;
    }
    .cal-header-room {
        font-size: 15px;
        padding: 5px 10px;
    }
    .cal-time-label.hour {
        font-size: 12px;
    }
    .cal-time-label.sub {
        font-size: 10px;
    }
    .cal-card-inner {
        padding: 3px 8px;
    }
    .cal-card-title {
        font-size: 12px;
    }
    .cal-card-sub {
        font-size: 11px;
    }
    .cal-day-btn {
        font-size: 14px;
        padding: 8px 20px;
    }
    .cal-legend {
        font-size: 12px;
    }
}

/* RESPONSIVE: Schermi molto grandi (>2000px) */
@media (min-width: 2000px) {
    :root, .dark {
        --cal-row-h: 34px;
        --cal-time-w: 80px;
        --cal-room-min-w: 240px;
        --cal-header-h: 42px;
    }
    .cal-header-time {
        font-size: 12px;
        padding: 5px 8px;
    }
    .cal-header-room {
        font-size: 16px;
        padding: 5px 12px;
    }
    .cal-time-label.hour {
        font-size: 14px;
    }
    .cal-time-label.sub {
        font-size: 11px;
    }
    .cal-card-inner {
        padding: 4px 10px;
    }
    .cal-card-title {
        font-size: 13px;
    }
    .cal-card-sub {
        font-size: 12px;
        margin-top: 3px;
    }
    .cal-card {
        left: 4px;
        right: 4px;
        border-radius: 6px;
    }
    .cal-day-btn {
        font-size: 15px;
        padding: 10px 22px;
        border-radius: 8px;
    }
    .cal-legend {
        font-size: 13px;
        gap: 20px;
    }
}

/* --- Modal card dark mode overrides --- */
.dark .cal-modal-card[style*="background:#eff6ff"] {
    background: rgba(59,130,246,0.15) !important;
    border-color: rgba(59,130,246,0.35) !important;
    color: #93c5fd !important;
}
.dark .cal-modal-card[style*="background:#f5f3ff"] {
    background: rgba(139,92,246,0.15) !important;
    border-color: rgba(139,92,246,0.35) !important;
    color: #c4b5fd !important;
}
.dark .cal-modal-card[style*="background:#fffbeb"] {
    background: rgba(245,158,11,0.15) !important;
    border-color: rgba(245,158,11,0.35) !important;
    color: #fcd34d !important;
}
.dark .cal-modal-card span[style*="color:#be185d"] {
    color: #f9a8d4 !important;
    background: rgba(236,72,153,0.2) !important;
}

/* ========================================
   RESPONSIVE: Tablet e smartphone
   ======================================== */
@media (max-width: 767px) {
    :root,
    .dark {
        --cal-row-h: 24px;
        --cal-time-w: 56px;
        --cal-room-min-w: 160px;
        --cal-header-h: 44px;
    }

    /*
     * Durante il posizionamento ogni riga da 15 minuti deve diventare un
     * bersaglio touch autonomo. Lasciare la griglia a 24px farebbe
     * sovrapporre i pulsanti "+" portati a 44px dal contratto globale.
     */
    .cal-container.is-placement-mode {
        --cal-row-h: 44px;
    }

    .cal-container,
    .cal-scroll {
        width: 100%;
        max-width: 100%;
        min-width: 0;
    }

    .cal-scroll {
        overflow-x: auto;
        overscroll-behavior-inline: contain;
        scrollbar-width: thin;
        scrollbar-color: rgba(148,163,184,0.55) transparent;
        touch-action: pan-x pan-y;
        -webkit-overflow-scrolling: touch;
    }

    .cal-scroll::-webkit-scrollbar {
        display: block;
        height: 6px;
    }

    .cal-scroll::-webkit-scrollbar-thumb {
        border-radius: 999px;
        background: rgba(148,163,184,0.55);
    }

    .cal-header-time {
        padding-inline: 2px;
        font-size: 8px;
    }

    .cal-header-room {
        padding-inline: 6px;
        font-size: 12px;
    }

    .cal-card-inner {
        padding: 4px 6px;
        gap: 3px;
    }

    .cal-day-btn {
        min-height: 44px;
        padding: 7px 11px;
    }

    .cal-legend {
        align-items: flex-start;
        gap: 8px 12px;
    }
}
/* Prenotazioni senza iscrizione o generazione di lezioni. */
.cal-card[data-tipo="PROVA"][data-conferma="tutte"] { background:#d1fae5; border-left:3px solid #059669; color:#064e3b; }
.dark .cal-card[data-tipo="PROVA"][data-conferma="tutte"] { background:#064e3b; border-left-color:#34d399; color:#d1fae5; }
.cal-card[data-tipo="PROVVISORIA"] {
    background: #fce7f3;
    border-left: 3px dashed #db2777;
    color: #9d174d;
}
.dark .cal-card[data-tipo="PROVVISORIA"] {
    background: rgba(219, 39, 119, 0.24);
    border-left-color: #f472b6;
    color: #fbcfe8;
}

.cal-card[data-tipo="PROVA"] { background:#cffafe; border-left:3px solid #0891b2; color:#155e75; }
.dark .cal-card[data-tipo="PROVA"] { background:#164e63; color:#a5f3fc; }
.cal-card[data-tipo="PROVA"][data-conferma="alcune"] { border-left-color:#10b981; }

/* Trial editor: scroll only the fields, keeping room around footer actions. */
.cal-trial-dialog {
    display: flex;
    flex-direction: column;
    max-height: 90vh;
    max-height: 90dvh;
    overflow: hidden;
}
.cal-trial-header { flex-shrink: 0; padding: 24px 24px 16px; border-bottom: 1px solid #e2e8f0; }
.dark .cal-trial-header { border-bottom-color: #334155; }
.cal-trial-body {
    min-height: 0;
    overflow-y: auto;
    padding: 16px 24px 24px;
    display: flex;
    flex-direction: column;
    gap: 20px;
}
.cal-trial-footer {
    flex-shrink: 0;
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    align-items: center;
    gap: 12px;
    padding: 20px 24px 24px;
    border-top: 1px solid #e2e8f0;
}
.dark .cal-trial-footer { border-top-color: #334155; }
.cal-trial-footer button { min-height: 44px; padding: 10px 16px; }
.cal-trial-date-duration { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.cal-trial-date-duration > div { min-width: 0; }
.cal-trial-date-duration input,
.cal-trial-date-duration select {
    box-sizing: border-box;
    width: 100%;
    min-width: 0;
    height: 48px;
    min-height: 48px;
    padding: 10px 12px;
    font: inherit;
    line-height: 24px;
    border-radius: 12px;
    -webkit-appearance: none;
    appearance: none;
}
.cal-trial-date-duration select {
    padding-right: 36px;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none' stroke='%2394a3b8' stroke-width='1.8'%3E%3Cpath d='m6 8 4 4 4-4'/%3E%3C/svg%3E");
    background-size: 20px;
    background-position: right 10px center;
    background-repeat: no-repeat;
}
.cal-trial-dialog .cal-trial-results,
.cal-trial-dialog .cal-trial-participant-results {
    margin-top: 8px;
    max-height: 192px;
    overflow-y: auto;
    border: 1px solid #cbd5e1;
    border-radius: 12px;
    background: #f1f5f9;
    box-shadow: 0 4px 12px rgb(15 23 42 / .12);
}
.dark .cal-trial-dialog .cal-trial-results,
.dark .cal-trial-dialog .cal-trial-participant-results { background: #1e293b; border-color: #475569; }
.cal-trial-dialog .cal-trial-results button,
.cal-trial-dialog .cal-trial-participant-results button {
    display: flex;
    align-items: center;
    width: 100%;
    min-height: 48px;
    padding: 12px 16px;
    text-align: left;
    color: #0f172a;
}
.cal-trial-dialog .cal-trial-results button + button,
.cal-trial-dialog .cal-trial-participant-results button + button { border-top: 1px solid #cbd5e1; }
.dark .cal-trial-dialog .cal-trial-results button,
.dark .cal-trial-dialog .cal-trial-participant-results button { color: #f8fafc; border-color: #475569; }
.cal-trial-dialog :is(.cal-trial-results, .cal-trial-participant-results) button:is(:hover, :focus-visible) { background: #dbeafe; outline: 2px solid #38bdf8; outline-offset: -2px; }
.dark .cal-trial-dialog :is(.cal-trial-results, .cal-trial-participant-results) button:is(:hover, :focus-visible) { background: #334155; }
@media (max-width: 480px) {
    .cal-trial-header { padding: 20px 16px 12px; }
    .cal-trial-body { padding: 16px 16px 20px; }
    .cal-trial-footer { padding: 16px 16px 20px; }
    .cal-trial-footer button:last-child { flex: 1; }
}

/* Menu di inserimento e calendario delle date della prova. */
/* Menu condiviso dai calendari settimanale ed effettivo. */
.cal-eff-context-menu {
    position: fixed;
    z-index: 13000;
    width: 210px;
    max-height: calc(100dvh - 16px);
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior: contain;
    border: 1px solid rgba(148,163,184,0.32);
    border-radius: 12px;
    background: #fff;
    box-shadow: 0 18px 45px rgba(15,23,42,0.22);
    padding: 6px;
}

.dark .cal-eff-context-menu {
    border-color: rgba(100,116,139,0.55);
    background: #111827;
}

.cal-eff-context-title {
    padding: 7px 9px 6px;
    color: #64748b;
    font-size: 10px;
    font-weight: 800;
    letter-spacing: .04em;
    text-transform: uppercase;
}

.cal-eff-context-action {
    display: flex;
    width: 100%;
    align-items: center;
    gap: 10px;
    border: 0;
    border-radius: 9px;
    background: transparent;
    padding: 9px;
    color: #1e293b;
    cursor: pointer;
    text-align: left;
}

.cal-eff-context-action:hover {
    background: #f1f5f9;
}

.dark .cal-eff-context-action {
    color: #f8fafc;
}

.dark .cal-eff-context-action:hover {
    background: rgba(51,65,85,0.75);
}

.cal-eff-context-action > span:last-child {
    display: flex;
    min-width: 0;
    flex-direction: column;
}

.cal-eff-context-action strong {
    font-size: 13px;
    line-height: 1.2;
}

.cal-eff-context-action small {
    margin-top: 2px;
    color: #64748b;
    font-size: 10px;
    font-weight: 600;
}

.cal-eff-context-icon {
    display: inline-flex;
    width: 28px;
    height: 28px;
    flex: 0 0 28px;
    align-items: center;
    justify-content: center;
    border-radius: 8px;
    font-size: 11px;
    font-weight: 900;
}

.cal-eff-context-icon.is-prova {
    background: rgba(37,146,125,0.14);
    color: #176a5b;
}

.cal-eff-context-icon.is-lezione {
    background: rgba(245,158,11,0.16);
    color: #b45309;
}

.cal-eff-context-icon.is-evento {
    background: rgba(234,88,12,0.13);
    color: #c2410c;
}

.cal-trial-month-nav { display:flex; justify-content:space-between; align-items:center; gap:12px; text-transform:capitalize; }
.cal-trial-month-nav button { width:44px; height:44px; font-size:28px; border:1px solid #64748b; border-radius:8px; }
.cal-trial-date-grid { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:6px; }
.cal-trial-weekday { text-align:center; padding:8px 0; font-size:13px; color:#64748b; }
.cal-trial-date-grid button { min-height:42px; border-radius:8px; font-weight:700; background:#d1fae5; color:#065f46; border:1px solid #6ee7b7; }
.cal-trial-date-grid button:disabled { background:transparent; border-color:transparent; color:#94a3b8; font-weight:400; cursor:default; }
.cal-trial-date-grid button[aria-pressed="true"] { background:#047857; color:white; outline:2px solid #34d399; }
.cal-trial-date-grid button:focus-visible { outline:2px solid #0284c7; outline-offset:2px; }
.cal-trial-month-nav button:disabled, .cal-trial-footer button:disabled { opacity:.4; cursor:default; }
.dark .cal-trial-weekday { color:#94a3b8; }
.dark .cal-trial-date-grid button:disabled { color:#64748b; }
.cal-trial-slot-summary { display:flex; flex-wrap:wrap; gap:8px 16px; padding:12px; border:1px solid #64748b; border-radius:12px; }

/* Modulo prova: anagrafiche affiancate, poi contatto e appuntamento. */
.cal-trial-editor { max-width: 880px; }
.cal-trial-people-row { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:24px; align-items:start; }
.cal-trial-details-row { grid-template-columns:repeat(3,minmax(0,1fr)); gap:24px; }
.cal-trial-people-row > div, .cal-trial-details-row > div { min-width:0; }
.cal-trial-editor .cal-trial-body label { font-size:14px; font-weight:700; line-height:20px; }
.cal-trial-people-row input { height:48px; font-size:14px; }
@media (max-width:640px) {
    .cal-trial-people-row, .cal-trial-details-row { grid-template-columns:minmax(0,1fr); gap:20px; }
}

.cal-eff-context-icon.is-provvisoria { background:rgba(219,39,119,.14); color:#be185d; }
.dark .cal-eff-context-icon.is-provvisoria { color:#f472b6; }

/* Dettaglio delle prove: informazioni e azioni hanno righe separate. */
.cal-trial-list-dialog { max-width:800px; }
.cal-trial-entry { padding:20px; border:1px solid #cbd5e1; border-radius:14px; background:#f8fafc; }
.cal-trial-entry-heading { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:12px; }
.cal-trial-entry-time { font-size:15px; }
.cal-trial-status { padding:5px 10px; border-radius:20px; font-size:12px; line-height:18px; font-weight:700; color:#155e75; background:#cffafe; }
.cal-trial-status.is-confirmed { color:#065f46; background:#d1fae5; }
.cal-trial-entry-details { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; margin:16px 0; }
.cal-trial-entry-details > div { min-width:0; display:flex; flex-direction:column; gap:5px; padding:12px 14px; border:1px solid #cbd5e1; border-radius:10px; background:#fff; }
.cal-trial-entry-details strong { font-size:16px; overflow-wrap:anywhere; }
.cal-trial-detail-label { color:#64748b; font-size:12px; }
.cal-trial-entry-actions { display:flex; align-items:center; flex-wrap:wrap; gap:10px; padding-top:16px; border-top:1px solid #cbd5e1; }
.cal-trial-action { min-height:40px; padding:9px 14px; border:1px solid #cbd5e1; border-radius:9px; font-size:13px; font-weight:700; background:white; color:#334155; cursor:pointer; }
.cal-trial-action:hover { background:#e2e8f0; }
.cal-trial-action:focus-visible { outline:2px solid #0284c7; outline-offset:2px; }
.cal-trial-action:disabled { opacity:.5; cursor:default; }
.cal-trial-action.is-primary { background:#059669; border-color:#059669; color:white; }
.cal-trial-action.is-primary:hover { background:#047857; }
.cal-trial-action.is-remove { margin-left:auto; color:#b91c1c; border-color:transparent; background:transparent; }
.cal-trial-action.is-remove:hover { background:#fee2e2; }
.dark .cal-trial-entry { background:#172033; border-color:#334155; }
.dark .cal-trial-entry-details > div { background:#1e293b; border-color:#475569; }
.dark .cal-trial-entry-actions { border-color:#334155; }
.dark .cal-trial-detail-label { color:#94a3b8; }
.dark .cal-trial-action:not(.is-primary):not(.is-remove) { background:#1e293b; color:#f1f5f9; border-color:#475569; }
.dark .cal-trial-action:not(.is-primary):not(.is-remove):hover { background:#334155; }
.dark .cal-trial-action.is-remove { color:#fca5a5; }
.dark .cal-trial-action.is-remove:hover { background:#7f1d1d40; }
.dark .cal-trial-status { background:#164e63; color:#a5f3fc; }
.dark .cal-trial-status.is-confirmed { background:#064e3b; color:#a7f3d0; }
@media (max-width:640px) {
    .cal-trial-entry { padding:16px; }
    .cal-trial-entry-details { grid-template-columns:minmax(0,1fr); gap:12px; }
    .cal-trial-entry-actions .cal-trial-action { flex:1 1 auto; }
    .cal-trial-entry-actions .is-remove { margin-left:0; }
}
