:where(.sdi-orario, .sdi-class-information-section, .sdi-orario-index, .sdi-information-cards, .sdi-front-dialog) {
    --sdi-border: #d6d9dd;
    --sdi-head: #b7d3ed;
    --sdi-head-text: #17324d;
    --sdi-official: #e6f1fb;
    --sdi-personal: #fff4d6;
    --sdi-conflict: #fee2e2;
    --sdi-button-bg: #f7f7f7;
    --sdi-button-bg-hover: #f2f3f4;
    --sdi-button-bg-active: #e9ecef;
    --sdi-button-border: #dce2e8;
    --sdi-button-border-hover: #aeb9c3;
    --sdi-button-text: #60758a;
    --sdi-button-text-hover: #46525d;
    --sdi-panel-border: #e7ebef;
    --sdi-panel-accent: #066ac9;
    --sdi-panel-shadow: 0 1px 8px rgb(23 50 77 / 10%);
}

.sdi-orario {
    margin: 1.5rem 0;
    padding: 1.25rem;
    border: 1px solid var(--sdi-panel-border);
    border-bottom: 4px solid var(--sdi-panel-accent);
    border-radius: 0.6rem;
    background: #fff;
    box-shadow: var(--sdi-panel-shadow);
}

.sdi-orario > header {
    margin-bottom: 1rem;
}

.sdi-orario > header h2,
.sdi-orario > header p {
    margin: 0.25rem 0;
}

.sdi-orario > header.sdi-schedule-heading {
    display: flex;
    min-height: 3.25rem;
    align-items: center;
    justify-content: flex-end;
    margin: 0 0 1rem;
    padding: 0.75rem 1rem;
    border: 1px solid var(--sdi-panel-border);
    border-radius: 0.5rem;
    background: #fff;
    box-shadow: var(--sdi-panel-shadow);
}

.sdi-schedule-heading p {
    color: #526b82;
    font-size: 0.86rem;
    font-weight: 700;
    letter-spacing: 0.07em;
    text-align: right;
    text-transform: uppercase;
}

.sdi-schedule-heading strong {
    font-weight: 800;
}

.sdi-schedule-heading span {
    white-space: nowrap;
}

.sdi-orario-information {
    margin: 0 0 1rem;
    padding: 0.8rem 1rem;
    border: 1px solid var(--sdi-border);
    border-left: 4px solid #2271b1;
    border-radius: 0.5rem;
    background: #f8fafc;
}

.sdi-orario-information h3,
.sdi-orario-information p {
    margin: 0.25rem 0;
}

.sdi-orario-information dl {
    display: grid;
    grid-template-columns: minmax(12rem, max-content) 1fr;
    gap: 0.35rem 1rem;
    margin: 0.5rem 0 0;
}

.sdi-orario-information dt {
    font-weight: 700;
}

.sdi-orario-information dd {
    margin: 0;
}

.sdi-orario-scroll {
    max-width: 100%;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

/* Cornice comune derivata dai riquadri dell'indice delle classi. */
.sdi-orario-table-frame {
    border: 1px solid var(--sdi-panel-border);
    border-bottom: 4px solid var(--sdi-panel-accent);
    border-radius: 0.6rem;
    background: #fff;
    box-shadow: var(--sdi-panel-shadow);
    overflow: hidden;
}

.sdi-orario-table-frame > table {
    margin: 0;
}

.sdi-orario-grid,
.sdi-class-information-table {
    width: 100%;
    border-collapse: collapse;
    border-spacing: 0;
    font-size: 0.92rem;
}

.sdi-orario-grid {
    min-width: 600px;
    table-layout: fixed;
}

.sdi-orario-grid th,
.sdi-orario-grid td,
.sdi-class-information-table th,
.sdi-class-information-table td {
    padding: 0.5rem 0.6rem;
    border: 1px solid var(--sdi-border);
    vertical-align: middle;
}

.sdi-orario-grid thead th,
.sdi-class-information-table thead th {
    background: var(--sdi-head);
    color: var(--sdi-head-text);
    text-align: center;
    font-weight: 700;
}

.sdi-orario-grid tbody th {
    background: #f2f4f7;
    text-align: center;
}

.sdi-orario-grid thead th:first-child,
.sdi-orario-grid tbody th {
    width: 8%;
}

.sdi-orario-grid thead th:not(:first-child) {
    width: 15.33%;
}

.sdi-orario-grid tbody tr:not(.sdi-orario-break) td {
    min-height: 100px;
    height: 100px;
    text-align: center;
}

.sdi-orario-grid td strong,
.sdi-orario-grid td span,
.sdi-orario-grid td small {
    display: block;
}

.sdi-orario-grid td[style*="background-color"] > strong,
.sdi-orario-grid td[style*="background-color"] > span,
.sdi-orario-grid td[style*="background-color"] > small {
    color: inherit;
}

.sdi-orario-grid .sdi-event-links {
    display: flex;
    flex-direction: column;
    gap: 0.28rem;
    align-items: stretch;
    justify-content: center;
    margin-top: 0.3rem;
}

.sdi-orario .sdi-orario-grid a.sdi-orario-cell-button {
    display: inline-flex;
    width: 100%;
    max-width: 100%;
    min-height: 1.8rem;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
    padding: 0.2rem 0.45rem;
    white-space: normal;
    text-align: center;
}

.sdi-orario .sdi-orario-grid .sdi-teacher-button {
    flex-direction: column;
    line-height: 1.18;
}

.sdi-orario .sdi-orario-grid .sdi-teacher-button .sdi-teacher-name-first,
.sdi-orario .sdi-orario-grid .sdi-teacher-button .sdi-teacher-name-surname {
    display: block;
}

.sdi-official {
    background: var(--sdi-official);
}

/* Quando il colore della materia è sul pulsante, la cella resta neutra. */
.sdi-orario-grid td.sdi-subject-color-buttons-cell {
    background: #f7f7f7;
}

.sdi-personal {
    background: var(--sdi-personal);
}

.sdi-conflict {
    background: var(--sdi-conflict);
    box-shadow: inset 0 0 0 2px #b91c1c;
}

.sdi-free {
    background: #fff;
}

.sdi-free-editable {
    padding: 0 !important;
    background: #fff;
}

.sdi-free-cell-button {
    width: 100%;
    min-height: 100px;
    padding: 0.65rem 0.4rem;
    border: 0;
    color: #60758a;
    background: transparent;
    font: inherit;
    cursor: pointer;
}

.sdi-free-cell-button span,
.sdi-free-cell-button small {
    display: block;
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.15s ease;
}

.sdi-free-cell-button span {
    font-weight: 700;
}

.sdi-free-cell-button small {
    margin-top: 0.25rem;
    font-size: 0.72rem;
}

.sdi-free-cell-button:hover,
.sdi-free-cell-button:focus-visible {
    color: #17324d;
    background: #eaf4fd;
    box-shadow: inset 0 0 0 2px #8abbe8;
}

.sdi-free-cell-button:hover span,
.sdi-free-cell-button:hover small,
.sdi-free-cell-button:focus-visible span,
.sdi-free-cell-button:focus-visible small {
    opacity: 1;
    visibility: visible;
}

.sdi-personal-event-button {
    width: 100%;
    min-height: 4rem;
    padding: 0.45rem;
    border: 1px solid #d4a72c;
    border-radius: 0.45rem;
    color: #4f3c00;
    background: #fff8df;
    font: inherit;
    cursor: pointer;
}

.sdi-personal-event-button strong,
.sdi-personal-event-button span {
    display: block;
}

.sdi-personal-event-button:hover,
.sdi-personal-event-button:focus-visible {
    border-color: #a87900;
    color: #342700;
    background: #ffefb8;
    box-shadow: 0 1px 4px rgb(79 60 0 / 22%);
}

.sdi-orario-break th,
.sdi-orario-break td {
    background: #f7f7f7;
}

.sdi-orario-break td {
    color: #50575e;
    text-align: center;
    vertical-align: middle;
}

.sdi-personal-editor {
    margin-top: 1.5rem;
    padding: 1rem;
    border: 1px solid var(--sdi-border);
    border-radius: 0.6rem;
}

.sdi-personal-fields {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    align-items: end;
}

.sdi-personal-fields label {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.sdi-personal-editor textarea {
    width: min(100%, 45rem);
}

.sdi-personal-list {
    padding: 0;
    list-style: none;
}

.sdi-personal-list li {
    display: flex;
    gap: 1rem;
    align-items: center;
    justify-content: space-between;
    padding: 0.5rem 0;
    border-bottom: 1px solid var(--sdi-border);
}

.sdi-personal-list form {
    margin: 0;
}

.sdi-delete {
    color: #991b1b;
}

.sdi-notice,
.sdi-orario-message {
    padding: 0.75rem 1rem;
    border-left: 4px solid #2271b1;
    border-radius: 0.5rem;
    background: #f0f6fc;
}

.sdi-notice-error {
    border-color: #b91c1c;
    background: #fef2f2;
}

.sdi-notice-success {
    border-color: #15803d;
    background: #f0fdf4;
}

.sdi-orario-index .sdi-orario-index-buttons {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr));
    gap: 0.65rem;
    margin: 0;
    padding: 0;
    list-style: none;
}

.sdi-teacher-index-group {
    margin: 1.25rem 0 1.75rem;
    padding: 1.25rem;
    border: 1px solid var(--sdi-panel-border);
    border-bottom: 4px solid var(--sdi-panel-accent);
    border-radius: 0.6rem;
    background: #fff;
    box-shadow: var(--sdi-panel-shadow);
}

.sdi-orario-index.sdi-orario-index-teachers .sdi-teacher-index-group > h3 {
    margin: 0 0 0.75rem;
    color: #17324d;
    font-size: 1.4rem;
    font-weight: 700;
    letter-spacing: 0.08em;
}

.sdi-orario-index.sdi-orario-index-teachers .sdi-teacher-index-buttons {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 0.65rem;
    margin: 0;
    padding: 0;
    list-style: none;
}

.sdi-orario-index.sdi-orario-index-teachers .sdi-teacher-index-buttons li,
.sdi-orario-index.sdi-orario-index-teachers .sdi-teacher-index-buttons a {
    width: 100%;
    min-width: 0;
    box-sizing: border-box;
}

.sdi-orario-index.sdi-orario-index-teachers .sdi-teacher-index-buttons a {
    min-height: 4.25rem;
}

.sdi-orario-index.sdi-orario-index-teachers .sdi-teacher-index-buttons small {
    display: block;
    margin-top: 0.18rem;
    color: #646970;
    font-size: 0.76rem;
    font-weight: 500;
    line-height: 1.2;
}

.sdi-orario-index.sdi-orario-index-teachers .sdi-teacher-index-buttons a:hover small,
.sdi-orario-index.sdi-orario-index-teachers .sdi-teacher-index-buttons a:focus-visible small {
    color: inherit;
}

.sdi-orario-index .sdi-teacher-index-buttons li,
.sdi-orario-index .sdi-class-index-buttons li {
    margin: 0;
    padding: 0;
    list-style: none;
}

.sdi-class-index-group {
    position: relative;
    margin: 0 0 0.8rem;
    padding: 2.8rem 3rem 3.25rem;
    border: 1px solid var(--sdi-panel-border);
    border-bottom: 4px solid var(--sdi-panel-accent);
    border-radius: 0.6rem;
    background: #fff;
    box-shadow: var(--sdi-panel-shadow);
}

.sdi-orario-index-rooms {
    margin: 1.25rem 0;
    padding: 1.25rem;
    border: 1px solid var(--sdi-panel-border);
    border-bottom: 4px solid var(--sdi-panel-accent);
    border-radius: 0.6rem;
    background: #fff;
    box-shadow: var(--sdi-panel-shadow);
}

.sdi-class-index-group > h3 {
    position: absolute;
    top: 1rem;
    right: 1.1rem;
    margin: 0;
    color: #526b82;
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

.sdi-class-index-track + .sdi-class-index-track {
    margin-top: 1.5rem;
}

.sdi-class-index-track > h4 {
    margin: 0 0 0.55rem;
    color: #17324d;
    font-size: 1rem;
    font-weight: 700;
    letter-spacing: 0.04em;
}

.sdi-orario-index .sdi-class-index-buttons {
    display: flex;
    flex-wrap: wrap;
    gap: 0.65rem;
    margin: 0 0 0 2.75rem;
    padding: 0;
    list-style: none;
}

.sdi-orario-index.sdi-orario-index-classes a.sdi-class-index-button,
.sdi-orario-index.sdi-orario-index-classes a.sdi-class-index-button:link,
.sdi-orario-index.sdi-orario-index-classes a.sdi-class-index-button:visited {
    display: flex;
    width: 6.1rem;
    min-height: 2.9rem;
    align-items: center;
    justify-content: center;
    border-radius: 0.25rem;
    font-size: 0.95rem;
    font-weight: 700;
}

.sdi-orario-index .sdi-orario-index-buttons li {
    margin: 0;
    padding: 0;
    list-style: none;
}

.sdi-orario-index .sdi-orario-index-button {
    display: flex;
    min-height: 2.75rem;
    width: 100%;
    box-sizing: border-box;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
}

.sdi-orario-index .sdi-orario-index-button small {
    display: block;
    margin-top: 0.15rem;
    color: #646970;
    font-size: 0.78rem;
}

.sdi-orario-index .sdi-orario-index-button:hover small,
.sdi-orario-index .sdi-orario-index-button:focus small {
    color: inherit;
}

.sdi-class-information-section {
    margin: 1.25rem 0;
    padding: 1.25rem;
    border: 1px solid var(--sdi-panel-border);
    border-bottom: 4px solid var(--sdi-panel-accent);
    border-radius: 0.6rem;
    background: #fff;
    box-shadow: var(--sdi-panel-shadow);
}

.sdi-class-information-section h2 {
    margin: 0 0 0.5rem;
    color: #526b82;
    font-size: 1.05rem;
    font-weight: 600;
}

.sdi-class-information-table {
    min-width: 42rem;
}

/* Dentro le celle ogni comando usa tutta la larghezza disponibile. */
.sdi-orario-grid td a.sdi-orario-button,
.sdi-orario-grid td span.sdi-orario-button,
.sdi-orario-grid td button,
.sdi-class-information-table td a.sdi-orario-button,
.sdi-class-information-table td span.sdi-orario-button,
.sdi-class-information-table td button {
    display: flex;
    width: 100%;
    max-width: 100%;
    box-sizing: border-box;
    align-items: center;
    justify-content: center;
    text-align: center;
}

.sdi-class-information-table tbody th {
    width: 25%;
    text-align: center;
    font-weight: 700;
}

.sdi-class-teachers th:first-child,
.sdi-class-teachers td:first-child {
    text-align: center;
}

.sdi-class-teachers td:nth-child(2) {
    text-align: center;
}

.sdi-class-teachers th:nth-child(3),
.sdi-class-teachers td:nth-child(3) {
    width: 4.5rem;
    text-align: center;
}

.sdi-class-teachers td:nth-child(4) {
    text-align: center;
    font-style: italic;
}

.sdi-class-teachers td:nth-child(4) strong {
    font-style: normal;
}

.sdi-class-figures td,
.sdi-class-representatives td {
    text-align: center;
}

.sdi-orario span.sdi-orario-button.is-disabled,
.sdi-class-information-section span.sdi-orario-button.is-disabled {
    display: inline-block;
    padding: 0.28rem 0.6rem;
    border: 1px solid #d8dde2;
    border-radius: 0.2rem;
    color: #7b8792;
    background: #f5f6f7;
    font-size: 0.875rem;
    font-weight: 600;
    line-height: 1.35;
    cursor: not-allowed;
}

.sdi-orario a.sdi-orario-button,
.sdi-class-information-section a.sdi-orario-button,
.sdi-orario-index a.sdi-orario-button {
    display: inline-block;
    padding: 0.28rem 0.6rem;
    border: 1px solid var(--sdi-button-border);
    border-radius: 0.2rem;
    color: var(--sdi-button-text);
    background: var(--sdi-button-bg);
    box-shadow: none;
    font-size: 0.875rem;
    font-weight: 600;
    line-height: 1.35;
    text-decoration: none !important;
    transition: color 120ms ease, background-color 120ms ease,
        border-color 120ms ease, box-shadow 120ms ease, transform 60ms ease;
}

.sdi-orario a.sdi-orario-button:link,
.sdi-orario a.sdi-orario-button:visited,
.sdi-class-information-section a.sdi-orario-button:link,
.sdi-class-information-section a.sdi-orario-button:visited,
.sdi-orario-index a.sdi-orario-button:link,
.sdi-orario-index a.sdi-orario-button:visited {
    color: var(--sdi-button-text);
    text-decoration: none !important;
}

.sdi-orario a.sdi-orario-button:hover,
.sdi-orario a.sdi-orario-button:focus-visible,
.sdi-class-information-section a.sdi-orario-button:hover,
.sdi-class-information-section a.sdi-orario-button:focus-visible,
.sdi-orario-index a.sdi-orario-button:hover,
.sdi-orario-index a.sdi-orario-button:focus-visible {
    border-color: var(--sdi-button-border-hover);
    color: var(--sdi-button-text-hover);
    background: var(--sdi-button-bg-hover);
    box-shadow: 0 1px 3px rgb(23 50 77 / 16%);
    text-decoration: none !important;
}

.sdi-orario a.sdi-orario-button:active,
.sdi-class-information-section a.sdi-orario-button:active,
.sdi-orario-index a.sdi-orario-button:active {
    border-color: #8795a1;
    color: #35414b;
    background: var(--sdi-button-bg-active);
    box-shadow: inset 0 1px 2px rgb(23 50 77 / 18%);
    transform: translateY(1px);
    text-decoration: none !important;
}

/* Le classi mantengono il colore blu anche quando il pulsante si trova
 * all'interno di una cella dell'orario di un docente o di un'aula. */
.sdi-orario a.sdi-orario-cell-button.sdi-class-button,
.sdi-orario a.sdi-orario-cell-button.sdi-class-button:link,
.sdi-orario a.sdi-orario-cell-button.sdi-class-button:visited {
    border-color: #066ac9;
    color: #fff;
    background: #066ac9;
}

.sdi-orario a.sdi-orario-cell-button.sdi-class-button:hover,
.sdi-orario a.sdi-orario-cell-button.sdi-class-button:focus-visible {
    border-color: #0054a6;
    color: #fff;
    background: #005eb8;
    box-shadow: 0 2px 5px rgb(0 75 145 / 28%);
}

.sdi-orario a.sdi-orario-cell-button.sdi-class-button:active {
    border-color: #00417f;
    color: #fff;
    background: #004d99;
    box-shadow: inset 0 2px 3px rgb(0 0 0 / 22%);
}

/* In modalità a colori il colore della materia può essere limitato ai
 * pulsanti collegati, mantenendo leggibile il testo in ogni stato. */
.sdi-orario .sdi-orario-grid .sdi-orario-button.is-subject-colored,
.sdi-orario .sdi-orario-grid .sdi-orario-button.is-subject-colored:link,
.sdi-orario .sdi-orario-grid .sdi-orario-button.is-subject-colored:visited {
    border-color: var(--sdi-subject-button-bg) !important;
    color: var(--sdi-subject-button-text) !important;
    background: var(--sdi-subject-button-bg) !important;
}

.sdi-orario .sdi-orario-grid .sdi-orario-button.is-subject-colored:hover,
.sdi-orario .sdi-orario-grid .sdi-orario-button.is-subject-colored:focus-visible {
    border-color: var(--sdi-subject-button-text) !important;
    color: var(--sdi-subject-button-text) !important;
    background: var(--sdi-subject-button-bg) !important;
    filter: brightness(0.92);
}

.sdi-orario .sdi-orario-grid .sdi-orario-button.is-subject-colored:active {
    color: var(--sdi-subject-button-text) !important;
    background: var(--sdi-subject-button-bg) !important;
    filter: brightness(0.84);
}

.sdi-orario-index a.sdi-orario-index-button.is-current,
.sdi-orario-index a.sdi-orario-index-button[aria-current="page"] {
    border-color: #96a4af;
    color: var(--sdi-button-text-hover);
    background: #f4f4f4;
    box-shadow: 0 0 0 3px #b7c1c9;
}

.sdi-orario-index a.sdi-orario-index-button.is-current:hover,
.sdi-orario-index a.sdi-orario-index-button.is-current:focus-visible,
.sdi-orario-index a.sdi-orario-index-button[aria-current="page"]:hover,
.sdi-orario-index a.sdi-orario-index-button[aria-current="page"]:focus-visible {
    border-color: #7f8e9a;
    color: #35414b;
    background: #eff1f2;
    box-shadow: 0 0 0 3px #9eabb5, 0 2px 4px rgb(23 50 77 / 18%);
}

.sdi-orario-index a.sdi-orario-index-button.is-current:active,
.sdi-orario-index a.sdi-orario-index-button[aria-current="page"]:active {
    border-color: #6f7f8b;
    color: #26333d;
    background: #e5e9ec;
    box-shadow: 0 0 0 3px #8998a3, inset 0 1px 3px rgb(23 50 77 / 24%);
    transform: translateY(1px);
}

/* I pulsanti delle classi restano blu anche dopo le regole comuni e gli
 * eventuali stili del tema. */
.sdi-orario-index.sdi-orario-index-classes a.sdi-class-index-button,
.sdi-orario-index.sdi-orario-index-classes a.sdi-class-index-button:link,
.sdi-orario-index.sdi-orario-index-classes a.sdi-class-index-button:visited {
    border-color: #066ac9;
    color: #fff;
    background: #066ac9;
}

.sdi-orario-index.sdi-orario-index-classes a.sdi-class-index-button:hover,
.sdi-orario-index.sdi-orario-index-classes a.sdi-class-index-button:focus-visible {
    border-color: #0054a6;
    color: #fff;
    background: #005eb8;
    box-shadow: 0 2px 5px rgb(0 75 145 / 28%);
}

.sdi-orario-index.sdi-orario-index-classes a.sdi-class-index-button:active {
    border-color: #00417f;
    color: #fff;
    background: #004d99;
    box-shadow: inset 0 2px 3px rgb(0 0 0 / 22%);
}

.sdi-orario-index.sdi-orario-index-classes a.sdi-class-index-button.is-current,
.sdi-orario-index.sdi-orario-index-classes a.sdi-class-index-button[aria-current="page"] {
    border-color: #003f7d;
    color: #fff;
    background: #00509e;
    box-shadow: 0 0 0 3px rgb(6 106 201 / 28%);
}

.sdi-orario-index.sdi-orario-index-classes a.sdi-class-index-button.is-current:hover,
.sdi-orario-index.sdi-orario-index-classes a.sdi-class-index-button.is-current:focus-visible,
.sdi-orario-index.sdi-orario-index-classes a.sdi-class-index-button[aria-current="page"]:hover,
.sdi-orario-index.sdi-orario-index-classes a.sdi-class-index-button[aria-current="page"]:focus-visible {
    border-color: #00366c;
    color: #fff;
    background: #004b94;
    box-shadow: 0 0 0 3px rgb(6 106 201 / 36%), 0 2px 5px rgb(0 75 145 / 28%);
}

.sdi-orario-index.sdi-orario-index-classes a.sdi-class-index-button.is-current:active,
.sdi-orario-index.sdi-orario-index-classes a.sdi-class-index-button[aria-current="page"]:active {
    border-color: #002a55;
    color: #fff;
    background: #003f7d;
    box-shadow: 0 0 0 3px rgb(6 106 201 / 42%), inset 0 2px 3px rgb(0 0 0 / 24%);
}

.sdi-muted {
    color: #646970;
}

/* Schede informative riutilizzabili da tutti gli shortcode del plugin. */
.sdi-information-cards {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 0.65rem;
    margin: 1.25rem 0;
}

.sdi-information-card {
    position: relative;
    min-width: 0;
    padding: 3rem;
    border: 1px solid var(--sdi-panel-border);
    border-bottom: 4px solid var(--sdi-panel-accent);
    border-radius: 0.6rem;
    background: #fff;
    box-shadow: var(--sdi-panel-shadow);
}

.sdi-information-card h2 {
    margin: 0.25rem 0 1.35rem;
    color: #17324d;
    font-size: clamp(1.35rem, 2.2vw, 1.75rem);
    font-weight: 800;
    text-transform: uppercase;
}

.sdi-information-ribbon {
    position: absolute;
    top: 0;
    left: 3rem;
    width: 2rem;
    height: 3rem;
    background: #066ac9;
    clip-path: polygon(0 0, 100% 0, 100% 100%, 50% 72%, 0 100%);
}

.sdi-information-year {
    margin: 0 0 2.6rem;
    color: #526b82;
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-align: right;
    text-transform: uppercase;
}

.sdi-information-label {
    margin: 1.35rem 0 0.55rem;
    color: #60758a;
    font-family: Georgia, "Times New Roman", serif;
    font-size: 1rem;
    font-style: italic;
}

.sdi-information-value,
.sdi-information-reception {
    margin: 0;
    color: #29445f;
    font-size: 1.12rem;
}

.sdi-information-value a {
    color: #526b82;
    overflow-wrap: anywhere;
}

.sdi-information-reception {
    margin: 0.8rem 0 1.8rem;
}

.sdi-information-note {
    color: #60758a;
    font-family: Georgia, "Times New Roman", serif;
    font-style: italic;
}

.sdi-information-note p {
    margin: 0.45rem 0;
}

.sdi-information-action,
.sdi-information-action:link,
.sdi-information-action:visited {
    display: inline-block;
    padding: 0.75rem 1.25rem;
    border: 1px solid #066ac9;
    border-radius: 0.25rem;
    color: #fff;
    background: #066ac9;
    font-weight: 700;
    text-decoration: none !important;
}

button.sdi-information-action {
    font: inherit;
    cursor: pointer;
}

.sdi-information-action:hover,
.sdi-information-action:focus-visible {
    border-color: #0054a6;
    color: #fff;
    background: #005eb8;
    text-decoration: none !important;
}

.sdi-information-classes-label {
    margin-top: 1.8rem;
}

.sdi-information-class-groups {
    display: flex;
    flex-wrap: wrap;
    gap: 0;
    border: 1px solid var(--sdi-panel-border);
    border-bottom: 3px solid var(--sdi-panel-accent);
    border-radius: 0.5rem;
    box-shadow: var(--sdi-panel-shadow);
    overflow: hidden;
}

.sdi-information-class-groups > section {
    min-width: 10rem;
    flex: 1 1 12rem;
    padding: 1rem 1.35rem;
    border-right: 1px solid var(--sdi-panel-border);
}

.sdi-information-class-groups > section:last-child {
    border-right: 0;
}

.sdi-information-class-groups h3 {
    margin: 0 0 0.7rem;
    color: #17324d;
    font-size: 1.05rem;
}

.sdi-information-class-buttons {
    display: flex;
    flex-wrap: wrap;
    gap: 0.65rem;
}

.sdi-information-cards a.sdi-orario-button,
.sdi-information-cards a.sdi-orario-button:link,
.sdi-information-cards a.sdi-orario-button:visited {
    display: inline-flex;
    min-width: 4.6rem;
    min-height: 2.75rem;
    align-items: center;
    justify-content: center;
    padding: 0.28rem 0.6rem;
    border: 1px solid var(--sdi-button-border);
    border-radius: 0.2rem;
    color: var(--sdi-button-text);
    background: var(--sdi-button-bg);
    font-weight: 700;
    text-decoration: none !important;
}

.sdi-information-cards a.sdi-orario-button:hover,
.sdi-information-cards a.sdi-orario-button:focus-visible {
    border-color: var(--sdi-button-border-hover);
    color: var(--sdi-button-text-hover);
    background: var(--sdi-button-bg-hover);
    box-shadow: 0 1px 3px rgb(23 50 77 / 16%);
}

.sdi-information-empty {
    margin: 0.5rem 0 0;
}

/* Finestre front-end per ricevimento e informazioni speciali. */
.sdi-front-dialog {
    width: min(46rem, calc(100% - 2rem));
    max-height: calc(100vh - 2rem);
    padding: 0;
    border: 0;
    border-radius: 0.6rem;
    color: #17324d;
    background: transparent;
    box-shadow: 0 1rem 3rem rgb(0 0 0 / 28%);
}

.sdi-front-dialog::backdrop {
    background: rgb(23 50 77 / 62%);
}

.sdi-front-dialog-panel {
    padding: 1.5rem;
    border: 1px solid var(--sdi-panel-border, #e7ebef);
    border-bottom: 4px solid var(--sdi-panel-accent, #066ac9);
    border-radius: 0.6rem;
    background: #fff;
    overflow-y: auto;
}

.sdi-front-dialog-panel > header {
    display: flex;
    gap: 1rem;
    align-items: flex-start;
    justify-content: space-between;
    margin-bottom: 1.25rem;
}

.sdi-front-dialog-panel h3 {
    margin: 0;
    color: #17324d;
    font-size: 1.35rem;
}

.sdi-dialog-close {
    width: 2.25rem;
    height: 2.25rem;
    padding: 0;
    border: 1px solid #cbd5df;
    border-radius: 50%;
    color: #526b82;
    background: #fff;
    font-size: 1.6rem;
    line-height: 1;
    cursor: pointer;
}

.sdi-dialog-fields {
    display: grid;
    grid-template-columns: 2fr 1fr 1fr;
    gap: 0.85rem;
}

.sdi-dialog-fields-three {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.sdi-front-dialog label {
    display: block;
    margin: 0 0 1rem;
    color: #526b82;
    font-weight: 700;
}

.sdi-front-dialog input,
.sdi-front-dialog select,
.sdi-front-dialog textarea {
    width: 100%;
    box-sizing: border-box;
    margin-top: 0.35rem;
    padding: 0.65rem 0.7rem;
    border: 1px solid #b8c4cf;
    border-radius: 0.2rem;
    color: #17324d;
    background: #fff;
    font: inherit;
}

.sdi-front-dialog input[readonly] {
    background: #f2f4f7;
}

.sdi-front-dialog select:disabled {
    color: #17324d;
    background: #f2f4f7;
    opacity: 1;
    cursor: not-allowed;
}

.sdi-dialog-actions {
    display: flex;
    gap: 0.65rem;
    justify-content: flex-end;
    margin-top: 0.5rem;
}

.sdi-primary-button,
.sdi-secondary-button,
.sdi-danger-button {
    padding: 0.65rem 1rem;
    border: 1px solid transparent;
    border-radius: 0.2rem;
    font: inherit;
    font-weight: 700;
    cursor: pointer;
}

.sdi-primary-button {
    border-color: #066ac9;
    color: #fff;
    background: #066ac9;
}

.sdi-secondary-button {
    border-color: #b8c4cf;
    color: #526b82;
    background: #fff;
}

.sdi-danger-button {
    margin-top: 0.75rem;
    border-color: #b91c1c;
    color: #991b1b;
    background: #fff;
}

.sdi-schedule-edit-reception {
    margin: 0 0 1rem;
}

/* Compatibilità con CSS personalizzati salvati da versioni precedenti.
 * La doppia classe aumenta soltanto la specificità delle nuove regole
 * strutturali, lasciando personalizzabili colori, caratteri e spaziature. */
.sdi-orario.sdi-orario,
.sdi-teacher-index-group.sdi-teacher-index-group,
.sdi-class-index-group.sdi-class-index-group,
.sdi-orario-index-rooms.sdi-orario-index-rooms,
.sdi-class-information-section.sdi-class-information-section,
.sdi-information-card.sdi-information-card {
    border-radius: 0.6rem;
}

.sdi-orario-information.sdi-orario-information,
.sdi-information-class-groups.sdi-information-class-groups,
.sdi-front-dialog.sdi-front-dialog,
.sdi-front-dialog-panel.sdi-front-dialog-panel,
.sdi-notice.sdi-notice,
.sdi-orario-message.sdi-orario-message {
    border-radius: 0.5rem;
}

.sdi-orario-table-frame.sdi-orario-table-frame,
.sdi-information-class-groups.sdi-information-class-groups {
    overflow: hidden;
}

.sdi-orario .sdi-orario-grid .sdi-event-links {
    flex-direction: column;
    align-items: stretch;
}

.sdi-orario .sdi-orario-grid td a.sdi-orario-button,
.sdi-orario .sdi-orario-grid td span.sdi-orario-button,
.sdi-orario .sdi-orario-grid td button,
.sdi-class-information-section .sdi-class-information-table td a.sdi-orario-button,
.sdi-class-information-section .sdi-class-information-table td span.sdi-orario-button,
.sdi-class-information-section .sdi-class-information-table td button {
    display: flex;
    width: 100%;
    max-width: 100%;
    box-sizing: border-box;
    align-items: center;
    justify-content: center;
    text-align: center;
}

@media (max-width: 640px) {
    .sdi-orario,
    .sdi-class-information-section,
    .sdi-teacher-index-group,
    .sdi-orario-index-rooms {
        padding: 0.8rem;
    }

    .sdi-class-index-group {
        padding: 2.75rem 1rem 2rem;
    }

    .sdi-orario-index .sdi-class-index-buttons {
        margin-left: 0;
    }

    .sdi-orario-index a.sdi-class-index-button,
    .sdi-orario-index a.sdi-class-index-button:link,
    .sdi-orario-index a.sdi-class-index-button:visited {
        width: 5.4rem;
    }

    .sdi-orario-grid,
    .sdi-class-information-table {
        font-size: 0.84rem;
    }

    .sdi-orario-grid th,
    .sdi-orario-grid td,
    .sdi-class-information-table th,
    .sdi-class-information-table td {
        padding: 0.4rem;
    }

    .sdi-information-cards {
        grid-template-columns: 1fr;
    }

    .sdi-information-card {
        padding: 2.75rem 1.25rem 2rem;
    }

    .sdi-information-ribbon {
        left: 1.25rem;
    }

    .sdi-dialog-fields,
    .sdi-dialog-fields-three {
        grid-template-columns: 1fr;
        gap: 0;
    }

    .sdi-front-dialog-panel {
        padding: 1rem;
    }
}

@media (max-width: 1100px) {
    .sdi-orario-index.sdi-orario-index-teachers .sdi-teacher-index-buttons {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}

@media (max-width: 850px) {
    .sdi-orario-index.sdi-orario-index-teachers .sdi-teacher-index-buttons {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

@media (max-width: 640px) {
    .sdi-orario-index.sdi-orario-index-teachers .sdi-teacher-index-buttons {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 420px) {
    .sdi-orario-index.sdi-orario-index-teachers .sdi-teacher-index-buttons {
        grid-template-columns: 1fr;
    }
}
.sdi-substitution-information ul {
    margin: 0;
    padding-left: 1.2rem;
}

.sdi-substitution-information li + li {
    margin-top: .55rem;
}

.sdi-substitution-information li > span {
    display: block;
    margin-top: .2rem;
}
