/* Sestante - tema su Ant Design Blazor con accento bordeaux (Collegio San Carlo) */

:root {
    --sestante: #ba0c2f;
    --sestante-hover: #d4294d;
    --sestante-active: #8f0924;
    --sestante-tint: #fdf0f3;
    --sestante-tint-2: #f9d3dc;
    --sestante-testo: #4d0613;
}

html, body, #app, app {
    height: 100%;
}

body {
    margin: 0;
    background: #f6f4f4;
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
}

::selection {
    background: var(--sestante-tint-2);
}

/* ------------------------------------------------------------------ colore di accento */
a { color: var(--sestante); }
a:hover { color: var(--sestante-hover); }
a:active { color: var(--sestante-active); }

.ant-btn-primary {
    background: var(--sestante);
    border-color: var(--sestante);
}
.ant-btn-primary:hover, .ant-btn-primary:focus {
    background: var(--sestante-hover);
    border-color: var(--sestante-hover);
}
.ant-btn-primary:active {
    background: var(--sestante-active);
    border-color: var(--sestante-active);
}
.ant-btn-primary[disabled], .ant-btn-primary[disabled]:hover {
    background: #f5f5f5;
    border-color: #d9d9d9;
}
.ant-btn:hover, .ant-btn:focus {
    color: var(--sestante-hover);
    border-color: var(--sestante-hover);
}
.ant-btn-link { color: var(--sestante); }
.ant-btn-link:hover, .ant-btn-link:focus { color: var(--sestante-hover); border-color: transparent; }
.ant-btn-primary:hover, .ant-btn-primary:focus { color: #fff; }

.ant-input:hover, .ant-input-affix-wrapper:hover,
.ant-input:focus, .ant-input-focused, .ant-input-affix-wrapper:focus, .ant-input-affix-wrapper-focused {
    border-color: var(--sestante-hover);
}
.ant-input:focus, .ant-input-focused, .ant-input-affix-wrapper:focus, .ant-input-affix-wrapper-focused {
    box-shadow: 0 0 0 2px rgba(186, 12, 47, 0.15);
}

.ant-checkbox-checked .ant-checkbox-inner, .ant-checkbox-indeterminate .ant-checkbox-inner {
    background-color: var(--sestante);
    border-color: var(--sestante);
}
.ant-checkbox-wrapper:hover .ant-checkbox-inner, .ant-checkbox:hover .ant-checkbox-inner, .ant-checkbox-input:focus + .ant-checkbox-inner {
    border-color: var(--sestante);
}
.ant-checkbox-checked::after { border-color: var(--sestante); }

.ant-radio-checked .ant-radio-inner { border-color: var(--sestante); }
.ant-radio-inner::after { background-color: var(--sestante); }
.ant-radio-wrapper:hover .ant-radio, .ant-radio:hover .ant-radio-inner, .ant-radio-input:focus + .ant-radio-inner { border-color: var(--sestante); }
.ant-radio-button-wrapper:hover { color: var(--sestante); }
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) {
    color: var(--sestante);
    border-color: var(--sestante);
    box-shadow: -1px 0 0 0 var(--sestante);
}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled)::before { background-color: var(--sestante); }
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover { color: var(--sestante-hover); border-color: var(--sestante-hover); }
.ant-radio-button-wrapper-checked:first-child { border-color: var(--sestante); box-shadow: none; }
.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) {
    color: #fff;
    background: var(--sestante);
    border-color: var(--sestante);
}
.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover {
    background: var(--sestante-hover);
    border-color: var(--sestante-hover);
    color: #fff;
}

.ant-select:not(.ant-select-disabled):hover .ant-select-selector, .ant-select-focused:not(.ant-select-disabled) .ant-select-selector {
    border-color: var(--sestante-hover) !important;
}
.ant-select-item-option-selected:not(.ant-select-item-option-disabled) { background: var(--sestante-tint); }

.ant-menu-item-selected, .ant-menu-item-selected a { color: var(--sestante); }
.ant-menu-light .ant-menu-item:hover, .ant-menu-light .ant-menu-item-active { color: var(--sestante); }
.ant-menu-inline .ant-menu-item-selected::after { border-right-color: var(--sestante); }
.ant-menu:not(.ant-menu-horizontal) .ant-menu-item-selected { background-color: var(--sestante-tint); }

.ant-spin { color: var(--sestante); }
.ant-spin-dot-item { background-color: var(--sestante); }
.ant-pagination-item-active, .ant-pagination-item-active a { border-color: var(--sestante); color: var(--sestante); }
.ant-progress-bg { background-color: var(--sestante); }
.ant-switch-checked { background-color: var(--sestante); }
.ant-tabs-tab:hover, .ant-tabs-tab-active .ant-tabs-tab-btn { color: var(--sestante); }
.ant-tabs-ink-bar { background: var(--sestante); }
.ant-tag-processing { color: var(--sestante); background: var(--sestante-tint); border-color: var(--sestante-tint-2); }

/* ------------------------------------------------------------------ intestazione e menu (ProLayout) */
.ant-pro-global-header, .ant-pro-global-header-layout-mix,
.ant-pro-fixed-header .ant-pro-global-header-layout-mix {
    background: var(--sestante) !important;
    box-shadow: 0 2px 8px rgba(77, 6, 19, 0.25);
}
.ant-pro-global-header-logo a img { height: 34px; }
.ant-pro-global-header-logo h1, .ant-pro-global-header-logo a h1 {
    color: #fff !important;
    font-weight: 600;
    letter-spacing: 0.04em;
}
.ant-pro-sider-menu-logo h1 { color: var(--sestante) !important; }
.ant-pro-setting-drawer-handle { display: none; }

.sestante-utente {
    display: flex;
    align-items: center;
    gap: 16px;
    color: #fff;
    padding-right: 8px;
}
.sestante-utente-nome { font-size: 14px; }
.sestante-utente .ant-btn-background-ghost {
    color: #fff;
    border-color: rgba(255, 255, 255, 0.7);
}
.sestante-utente .ant-btn-background-ghost:hover, .sestante-utente .ant-btn-background-ghost:focus {
    color: var(--sestante);
    background: #fff;
    border-color: #fff;
}

.ant-pro-footer-bar, .ant-pro-global-footer { background: transparent; }

/* ------------------------------------------------------------------ contenuto */
.sestante-contenuto {
    max-width: 1280px;
    margin: 0 auto;
    padding: 8px 0 32px;
}

.sestante-titolo {
    color: var(--sestante-testo);
    font-size: 26px;
    font-weight: 600;
    margin: 4px 0 4px;
}
.sestante-sottotitolo {
    color: rgba(0, 0, 0, 0.55);
    font-size: 15px;
    margin: 0 0 16px;
}
.sestante-azioni {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin: 12px 0 16px;
}
.sestante-nav-studenti {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin: 4px 0 16px;
}
.sestante-card { margin-bottom: 16px; }
.sestante-testo-ricco { white-space: pre-wrap; }
.sestante-riquadro { margin: 12px 0; }

.sestante-caricamento {
    display: flex;
    justify-content: center;
    align-items: center;
    min-height: 240px;
    width: 100%;
}

/* Tabelle */
.ant-table-thead > tr > th {
    background: var(--sestante-tint);
    color: var(--sestante-testo);
    font-weight: 600;
}
.ant-table-tbody > tr.ant-table-row:hover > td { background: #faf6f6; }
.sestante-gruppo td {
    background: var(--sestante-tint-2) !important;
    color: var(--sestante-testo);
    font-weight: 600;
}
.sestante-valutazione .ant-radio-group { white-space: nowrap; }
.sestante-docente-incompleto { border-left: 4px solid #e0707f; background: #fff3f4; }
.sestante-docente-completo { border-left: 4px solid #52a56a; }
.sestante-docente { padding: 8px 12px; margin-bottom: 8px; border-radius: 2px; background: #fafafa; }
.sestante-contatore { color: rgba(0, 0, 0, 0.45); font-size: 12px; }

/* Notifiche */
.notifica-sestante { width: 420px; max-width: calc(100vw - 32px); }
.notifica-sestante .ant-notification-notice-description { white-space: pre-wrap; max-height: 40vh; overflow-y: auto; }

/* ------------------------------------------------------------------ accesso */
.sestante-login {
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 24px 16px;
    /* mappa con bussola in vettoriale, sopra il colore di sfondo; si adatta a qualunque dimensione della finestra */
    background:
        url("/assets/mappa-bussola.svg") center / cover no-repeat,
        linear-gradient(160deg, var(--sestante-tint) 0%, #f7e1e6 55%, #efc9d2 100%);
}
@media (max-width: 700px) {
    /* su schermi stretti si tiene in vista la bussola */
    .sestante-login { background-position: 82% 0, center; }
}
.sestante-login-scheda {
    width: 100%;
    max-width: 400px;
    background: #fff;
    border-radius: 8px;
    padding: 32px 32px 24px;
    border-top: 4px solid var(--sestante);
    box-shadow: 0 8px 28px rgba(77, 6, 19, 0.14);
}
.sestante-login-marchio { text-align: center; margin-bottom: 8px; }
.sestante-login-marchio img { width: 72px; height: 72px; }
.sestante-login-titolo { text-align: center; font-size: 22px; font-weight: 600; margin: 4px 0 0; color: var(--sestante-testo); }
.sestante-login-sottotitolo { text-align: center; color: rgba(0, 0, 0, 0.55); margin: 4px 0 20px; }
.sestante-login-errore { margin-bottom: 16px; }
.sestante-login-link { text-align: center; margin-top: 4px; font-size: 13px; }
.sestante-login-piede { margin-top: 20px; color: rgba(77, 6, 19, 0.75); font-size: 12px; text-shadow: 0 0 4px #fdf0f3, 0 0 8px #fdf0f3, 0 0 12px #fdf0f3; }

/* ------------------------------------------------------------------ schermata di avvio */
#avvio-sestante {
    position: fixed;
    inset: 0;
    z-index: 2000;
    background: #fff;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 24px;
    transition: opacity 0.25s ease;
}
#avvio-sestante.nascosta { opacity: 0; pointer-events: none; }
#avvio-sestante img { width: 96px; height: 96px; }
.avvio-barra { width: 160px; height: 3px; background: var(--sestante-tint-2); overflow: hidden; border-radius: 2px; }
.avvio-barra span {
    display: block;
    width: 40%;
    height: 100%;
    background: var(--sestante);
    animation: avvio-scorri 1.1s ease-in-out infinite;
}
@keyframes avvio-scorri {
    0% { transform: translateX(-100%); }
    100% { transform: translateX(260%); }
}

/* ------------------------------------------------------------------ errori Blazor */
#blazor-error-ui {
    background: #fff7e6;
    border-top: 2px solid #ffa940;
    bottom: 0;
    box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2);
    display: none;
    left: 0;
    padding: 0.6rem 1.25rem 0.7rem 1.25rem;
    position: fixed;
    width: 100%;
    z-index: 3000;
}
#blazor-error-ui .dismiss { cursor: pointer; position: absolute; right: 0.75rem; top: 0.5rem; }

.validation-message { color: #cf1322; }

@media (max-width: 575px) {
    .sestante-login-scheda { padding: 24px 20px 16px; }
    .sestante-titolo { font-size: 22px; }
}

.sestante-salvato { color: #237804; background: #f6ffed; border-color: #b7eb8f; }

.sestante-riquadro .ant-alert-description { white-space: pre-wrap; }

/* Menu laterale e pulsanti "ghost" nel colore di accento */
.ant-menu-item-selected, .ant-menu-item-selected a, .ant-menu-item-selected .anticon,
.ant-menu-item:hover, .ant-menu-item:hover a, .ant-menu-item-active, .ant-menu-item-active a {
    color: var(--sestante) !important;
}
.ant-btn-background-ghost.ant-btn-primary {
    color: var(--sestante);
    border-color: var(--sestante);
    background: transparent;
}
.ant-btn-background-ghost.ant-btn-primary:hover, .ant-btn-background-ghost.ant-btn-primary:focus {
    color: var(--sestante-hover);
    border-color: var(--sestante-hover);
}
.ant-table-wrapper { overflow-x: auto; }

/* Anteprima dei documenti */
.sestante-anteprima-barra { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-bottom: 12px; }
.sestante-anteprima-area { position: relative; }
.sestante-anteprima-pdf { width: 100%; height: calc(100vh - 360px); min-height: 320px; border: 1px solid #d9d9d9; border-radius: 2px; background: #f5f5f5; }
.sestante-anteprima-attesa {
    position: absolute; inset: 0; z-index: 2;
    display: flex; align-items: center; justify-content: center;
    background: rgba(255, 255, 255, 0.8);
}
.sestante-azioni .anticon, .sestante-nav-studenti .anticon { margin-right: 2px; }

.sestante-report-riga { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; padding: 6px 0; }
.sestante-report-riga + .sestante-report-riga { border-top: 1px solid #f0f0f0; }
.sestante-report-nome { flex: 1 1 220px; font-weight: 600; color: var(--sestante-testo); }

/* Studente in primo piano */
.sestante-studente {
    display: flex;
    align-items: center;
    gap: 16px;
    margin: 4px 0 16px;
    padding: 14px 18px;
    background: #fff;
    border-left: 5px solid var(--sestante);
    border-radius: 2px;
    box-shadow: 0 1px 3px rgba(77, 6, 19, 0.08);
}
.sestante-studente-icona {
    flex: 0 0 auto;
    width: 52px;
    height: 52px;
    border-radius: 50%;
    background: var(--sestante);
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 26px;
}
.sestante-studente-nome {
    font-size: 28px;
    line-height: 1.2;
    font-weight: 700;
    color: var(--sestante-testo);
    overflow-wrap: anywhere;
}
.sestante-studente-dettaglio { color: rgba(0, 0, 0, 0.55); font-size: 14px; margin-top: 2px; }
@media (max-width: 575px) {
    .sestante-studente { padding: 10px 12px; gap: 12px; }
    .sestante-studente-icona { width: 44px; height: 44px; font-size: 22px; }
    .sestante-studente-nome { font-size: 22px; }
}

.sestante-piede { text-align: center; color: rgba(0, 0, 0, 0.45); font-size: 13px; padding: 16px 0 20px; }
