*{box-sizing:border-box}

:root{
    --partner-primary:#1f2937;
    --partner-secondary:#6b7280;
    --payment:#0d47a1;
    --payment-soft:#eef5ff;
    --funded:#e64a19;
    --funded-soft:#fff3ee;
    --border:#d9dee5;
    --text:#1f2937;
    --muted:#667085;
    --surface:#fff;
    --page:#f6f7f9;
}

body{
    margin:0;
    font-family:Arial,Helvetica,sans-serif;
    background:var(--page);
    color:var(--text);
}

.topbar{
    width:100%;
    background:#fff;
    border-bottom:1px solid #e5e7eb;
}

.public-topbar{
    border-top:4px solid var(--partner-primary);
}

/*
 * L'header usa la stessa larghezza massima del calendario.
 * In questo modo il logo resta sempre allineato a titolo, ricerca e tabella,
 * sia a finestra intera sia riducendo la larghezza del browser.
 */
.topbar-inner{
    width:100%;
    max-width:1440px;
    margin:0 auto;
    padding:18px 20px;
    min-height:136px;
    display:flex;
    align-items:center;
}

/*
 * Standard logo Partner: file consigliato 300 x 100 px, preferibilmente PNG
 * trasparente e senza margini vuoti rilevanti.
 */
.partner-logo{
    display:block;
    width:auto;
    height:auto;
    max-width:300px;
    max-height:100px;
    object-fit:contain;
    object-position:left center;
}

.brand{
    font-size:22px;
    font-weight:700;
    color:var(--partner-primary);
}

.container{
    max-width:1180px;
    margin:0 auto;
    padding:32px 20px;
}

.calendar-container{
    max-width:1440px;
}

.narrow{max-width:760px}
.center{text-align:center}

h1{margin-top:0}
h2{margin-top:24px}
.lead{color:#6b7280}

.calendar-intro{
    display:flex;
    justify-content:space-between;
    align-items:flex-end;
    gap:24px;
    margin-bottom:24px;
}

.calendar-intro h1{
    margin:0 0 7px;
    font-size:30px;
}

.calendar-intro .lead{
    margin:0;
}

.calendar-legend{
    display:flex;
    flex-wrap:wrap;
    gap:16px;
    font-size:13px;
    color:var(--muted);
}

.legend-item{
    display:inline-flex;
    align-items:center;
    gap:7px;
    font-weight:700;
}

.legend-item span{
    width:11px;
    height:11px;
    border-radius:50%;
}

.legend-payment span{background:var(--payment)}
.legend-funded span{background:var(--funded)}

.course-search{
    background:#fff;
    border:1px solid var(--border);
    border-radius:10px;
    padding:16px 18px;
    margin-bottom:20px;
}

.course-search>label{
    display:block;
    margin:0 0 8px;
    font-size:13px;
    font-weight:700;
    color:#475467;
}

.search-row{
    display:flex;
    align-items:center;
    gap:9px;
}

.search-row input{
    width:min(620px,100%);
}

.grid{
    display:grid;
    grid-template-columns:repeat(auto-fit,minmax(290px,1fr));
    gap:18px;
}

.card,.form-card,.course-summary,.success-card{
    background:#fff;
    border:1px solid #e5e7eb;
    border-radius:12px;
    padding:22px;
    box-shadow:0 2px 8px rgba(0,0,0,.04);
}

.card h2{font-size:20px;margin:10px 0 16px}
.tag{font-size:12px;font-weight:700;color:#6b7280}
.meta{display:grid;gap:8px;font-size:14px}
.actions{margin-top:20px}

.btn{
    display:inline-block;
    background:var(--partner-primary);
    color:#fff;
    text-decoration:none;
    border:1px solid var(--partner-primary);
    border-radius:7px;
    padding:10px 16px;
    font-weight:700;
    cursor:pointer;
    font:inherit;
}

.btn:hover{filter:brightness(.94)}

.btn-outline{
    background:#fff;
    color:var(--partner-primary);
    border:1px solid #cfd5dd;
}

.disabled{opacity:.45;cursor:not-allowed}

.form-grid{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:14px;
}

.form-grid .wide{grid-column:1/-1}

label{
    display:grid;
    gap:6px;
    font-size:14px;
    font-weight:700;
    margin-bottom:14px;
}

input{
    padding:10px 11px;
    border:1px solid #cfd5dd;
    border-radius:7px;
    font:inherit;
    background:#fff;
}

input:focus{
    outline:2px solid color-mix(in srgb,var(--partner-primary) 24%,transparent);
    border-color:var(--partner-primary);
}

.error,.notice,.success{
    padding:12px 14px;
    border-radius:8px;
    margin:12px 0;
    background:#fff;
    border:1px solid #d1d5db;
}

.error{border-color:#ef4444}
.success{border-color:#22c55e}

.stats{
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:16px;
    margin:20px 0 32px;
}

.stat{
    background:#fff;
    border:1px solid #e5e7eb;
    border-radius:12px;
    padding:20px;
}

.stat span{font-size:30px;font-weight:700;display:block}
.stat small{color:#6b7280}

.table-wrap{
    overflow:auto;
    background:#fff;
    border:1px solid #e5e7eb;
    border-radius:12px;
}

.data-table{
    width:100%;
    border-collapse:collapse;
}

.data-table th,.data-table td{
    padding:12px 14px;
    border-bottom:1px solid #e5e7eb;
    text-align:left;
    font-size:14px;
}

.data-table th{background:#f9fafb}
.status{font-weight:700;font-size:12px}
.nav{display:flex;gap:8px}
.small{font-size:13px;color:#6b7280}

/* -----------------------------------------------------------------------
   Calendario pubblico - tabella corsi
------------------------------------------------------------------------ */

.courses-table-wrap{
    background:#fff;
    border:1px solid var(--border);
    border-radius:10px;
    overflow-x:auto;
    box-shadow:0 2px 8px rgba(16,24,40,.04);
}

.courses-table{
    width:100%;
    border-collapse:collapse;
    table-layout:fixed;
}

.courses-table thead th{
    padding:13px 12px;
    border-bottom:1px solid #cfd5dd;
    background:#fff;
    color:#344054;
    font-size:12px;
    line-height:1.2;
    text-transform:uppercase;
    letter-spacing:.035em;
    text-align:left;
}

.courses-table .col-enrol{width:16%}
.courses-table .col-title{width:25%}
.courses-table .col-method{width:17%}
.courses-table .col-dates{width:18%}
.courses-table .col-notes{width:24%}

.course-row td{
    vertical-align:top;
    padding:12px 12px 14px;
    border-bottom:1px solid #dfe3e8;
    font-size:12px;
    line-height:1.42;
    overflow-wrap:anywhere;
}

.course-row:last-child td{border-bottom:0}

.course-row.course-payment td:first-child{
    box-shadow:inset 4px 0 0 var(--payment);
}

.course-row.course-funded td:first-child{
    box-shadow:inset 4px 0 0 var(--funded);
}

.course-row.course-other td:first-child{
    box-shadow:inset 4px 0 0 #667085;
}

.course-row:hover{
    background:#fafbfc;
}

.enrol-button{
    display:block;
    width:100%;
    padding:4px 7px;
    color:#fff;
    font-size:12px;
    font-weight:800;
    line-height:1.2;
    text-align:left;
    text-decoration:none;
    border-radius:2px;
    margin-bottom:5px;
}

.course-payment .enrol-button{background:var(--payment)}
.course-funded .enrol-button{background:var(--funded)}
.course-other .enrol-button{background:#667085}

.enrol-button:hover{filter:brightness(.93)}
.enrol-disabled{opacity:.65;cursor:default}
.enrol-disabled:hover{filter:none}

.availability,
.price-line,
.funded-line,
.course-id{
    margin-top:3px;
}

.price-line{color:#475467}
.funded-line{font-weight:700;color:var(--funded)}
.course-id{color:#667085}

.course-type-badge{
    display:inline-block;
    padding:3px 7px;
    margin-bottom:7px;
    border-radius:999px;
    font-size:10px;
    font-weight:800;
    letter-spacing:.035em;
}

.course-payment .course-type-badge{
    color:var(--payment);
    background:var(--payment-soft);
}

.course-funded .course-type-badge{
    color:var(--funded);
    background:var(--funded-soft);
}

.course-other .course-type-badge{
    color:#475467;
    background:#f2f4f7;
}

.course-title-link{
    display:block;
    margin-bottom:4px;
    font-size:13px;
    line-height:1.35;
    font-weight:700;
    text-decoration:none;
    text-transform:uppercase;
}

.course-payment .course-title-link{color:var(--payment)}
.course-funded .course-title-link{color:var(--funded)}
.course-other .course-title-link{color:#344054}
.course-title-link:hover{text-decoration:underline}
.course-title-link.no-link:hover{text-decoration:none}

.course-category{
    margin:3px 0 7px;
    color:#475467;
    font-style:italic;
}

.course-details{
    display:grid;
    gap:2px;
    color:#344054;
}

.method-name{
    margin-bottom:4px;
    font-weight:700;
    text-transform:uppercase;
    color:#344054;
}

.course-method>div,
.course-dates>div,
.course-notes>div{
    margin-bottom:3px;
}

.rich-text{
    white-space:normal;
}

.empty-note{color:#98a2b3}

@media(max-width:980px){
    .calendar-intro{align-items:flex-start;flex-direction:column}

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

    .courses-table thead{display:none}

    .courses-table-wrap{
        border:0;
        background:transparent;
        box-shadow:none;
        overflow:visible;
    }

    .course-row{
        display:block;
        background:#fff;
        border:1px solid var(--border);
        border-radius:10px;
        margin-bottom:14px;
        overflow:hidden;
        box-shadow:0 2px 7px rgba(16,24,40,.04);
    }

    .course-row td{
        position:relative;
        padding:11px 14px 11px 130px;
        min-height:44px;
        border-bottom:1px solid #edf0f3;
    }

    .course-row td:last-child{border-bottom:0}

    .course-row td::before{
        content:attr(data-label);
        position:absolute;
        left:14px;
        top:11px;
        width:102px;
        color:#667085;
        font-size:10px;
        font-weight:800;
        text-transform:uppercase;
        letter-spacing:.03em;
    }

    .course-row.course-payment td:first-child,
    .course-row.course-funded td:first-child,
    .course-row.course-other td:first-child{
        box-shadow:none;
        border-top:4px solid;
    }

    .course-row.course-payment td:first-child{border-top-color:var(--payment)}
    .course-row.course-funded td:first-child{border-top-color:var(--funded)}
    .course-row.course-other td:first-child{border-top-color:#667085}

    .enrol-button{max-width:320px}
}

@media(max-width:700px){
    .form-grid,.stats{grid-template-columns:1fr}
    .form-grid .wide{grid-column:auto}
    .topbar-inner{padding:14px;min-height:108px}
    .nav{flex-wrap:wrap}
    .container{padding:24px 14px}
    .search-row{align-items:stretch;flex-direction:column}
    .search-row input{width:100%}
    .search-row .btn{width:100%;text-align:center}
}

@media(max-width:520px){
    .calendar-intro h1{font-size:25px}
    .partner-logo{max-width:220px;max-height:74px}
    .brand{font-size:18px}

    .course-row td{
        padding:34px 12px 11px;
    }

    .course-row td::before{
        left:12px;
        top:10px;
        width:auto;
    }
}
