html,body{min-height:100%}
body{background:#f6f7f9}
.navbar{min-height:58px}
.app-card{border:0;border-radius:1rem;box-shadow:0 .25rem 1.25rem rgba(0,0,0,.06)}
.stat-card{border:0;border-radius:1rem}
.offcanvas{width:min(88vw,360px)!important}
.table-responsive{border-radius:.75rem}
.btn,.form-control,.form-select{min-height:44px}
.login-shell{min-height:calc(100vh - 58px);display:grid;place-items:center;padding:1rem}
.login-card{width:min(100%,430px);border:0;border-radius:1.25rem;box-shadow:0 .5rem 2rem rgba(0,0,0,.08)}
@media (max-width:575.98px){
  .container{padding-left:1rem;padding-right:1rem}
  h1{font-size:1.65rem}
  .mobile-stack .btn{width:100%;margin-bottom:.5rem}
}

.academic-tabs{gap:.25rem;white-space:nowrap}
.academic-tabs .nav-link{flex:0 0 auto}
.module-check{cursor:pointer;background:#fff}
.module-check:has(input:checked){border-color:#0d6efd!important;background:#f0f6ff}

.role-check{cursor:pointer;background:#fff}
.role-check:has(input:checked){border-color:#0d6efd!important;background:#f0f6ff}

.submenu-chevron{font-size:1.1rem;line-height:1;color:#6c757d}
#academicMenu .list-group-item{font-size:.95rem;border-left:0;border-right:0}
#academicMenu .list-group-item:hover{background:#e9ecef!important}
.profile-choice{min-height:58px;border-radius:.9rem}

.teacher-hero{padding:.25rem 0}
.academic-year-selector{width:min(100%,260px)}
.teacher-subject-card{
  border:0;
  border-radius:1rem;
  box-shadow:0 .25rem 1.25rem rgba(0,0,0,.06);
  transition:transform .15s ease,box-shadow .15s ease;
}
.teacher-subject-card:hover{
  transform:translateY(-2px);
  box-shadow:0 .5rem 1.5rem rgba(0,0,0,.09);
}
.teacher-subject-meta{display:grid;gap:.65rem}
.teacher-subject-meta>div{display:grid;grid-template-columns:105px 1fr;gap:.75rem}
.teacher-subject-meta dt{
  font-size:.78rem;
  text-transform:uppercase;
  letter-spacing:.03em;
  color:#6c757d;
  margin:0;
}
.teacher-subject-meta dd{margin:0;font-weight:600}
@media(max-width:575.98px){
  .academic-year-selector{width:100%}
  .teacher-subject-meta>div{grid-template-columns:90px 1fr}
}

.ra-description-preview{max-width:430px}

.admin-page-header{
  display:flex;justify-content:space-between;align-items:flex-end;gap:1rem;margin-bottom:1.5rem
}
.admin-page-actions{display:flex;gap:.5rem;flex-wrap:wrap}
.admin-table-card{overflow:hidden}
.admin-table-card .table{margin-bottom:0}
.admin-table-card thead th{white-space:nowrap}
.admin-empty{padding:3rem 1.5rem;text-align:center;color:#6c757d}
.modal-content{border:0;border-radius:1rem;box-shadow:0 1rem 3rem rgba(0,0,0,.18)}
.modal-header,.modal-footer{border-color:#edf0f3}
.modal-body{padding:1.25rem}
.modal-lg{--bs-modal-width:760px}
.ra-description-preview{max-width:520px}
@media(max-width:767.98px){
  .admin-page-header{align-items:stretch;flex-direction:column}
  .admin-page-actions .btn,.admin-page-actions .form-select{width:100%}
}

.gradebook-table th,.gradebook-table td{white-space:nowrap}
.gradebook-table .sticky-student{position:sticky;left:0;z-index:2;background:var(--bs-body-bg)}
.gradebook-table thead .sticky-student{z-index:3}


/* =========================================================
   V9 PATCH - INTERFÍCIE DE NOTES ESTIL CLASSROOM
   ========================================================= */

.notes-imported-card{
    border:1px solid #d7dfeb;
    border-radius:14px;
}

.ra-toggle-bar{
    align-items:center;
}

.ra-toggle-btn{
    background:#eef3f8;
    border:1px solid #cfdae7;
    color:#243447;
    border-radius:10px;
    padding:.65rem .9rem;
    font-size:.95rem;
}

.ra-toggle-btn:hover{
    background:#e4ebf3;
}

.ra-toggle-btn.active{
    background:#3164f4;
    border-color:#3164f4;
    color:#fff;
}

.gradebook-scroll{
    border:1px solid #d7dfeb;
    border-radius:10px;
}

.gradebook-table-classroom{
    --bs-table-border-color:#dce3ec;
    font-size:.9rem;
}

.gradebook-table-classroom thead th{
    background:#f8fafc;
    color:#111827;
    font-weight:700;
    vertical-align:middle;
}

.gradebook-table-classroom td,
.gradebook-table-classroom th{
    padding:.48rem .62rem;
}

.gradebook-table-classroom .student-head,
.gradebook-table-classroom .student-name-cell{
    min-width:260px;
}

.student-name-cell{
    background:#fff !important;
}

.grade-cell{
    min-width:92px;
    font-variant-numeric:tabular-nums;
}

.ra-summary-cell,
.final-grade-cell{
    min-width:115px;
    font-variant-numeric:tabular-nums;
}

.grade-pass{
    background:#eaf9ef !important;
    color:#1c5d34;
}

.grade-fail{
    background:#fff1eb !important;
    color:#8c3318;
}

.grade-pass-summary{
    background:#e3f6e9 !important;
    color:#174d2c;
}

.grade-fail-summary{
    background:#fff0e8 !important;
    color:#7e2d16;
}

.grade-empty{
    background:#fff !important;
    color:#6c757d;
}

.grade-edit-link{
    color:inherit !important;
    font-size:.95rem;
}

.manual-grade-indicator{
    margin-top:2px;
    font-size:.64rem;
    line-height:1;
    text-transform:uppercase;
    letter-spacing:.04em;
    opacity:.65;
}

.ra-grade-head,
.final-grade-head{
    background:#edf2ff !important;
}

.gradebook-table-classroom .sticky-student{
    box-shadow:1px 0 0 #dce3ec;
}

@media(max-width:767.98px){
    .gradebook-table-classroom .student-head,
    .gradebook-table-classroom .student-name-cell{
        min-width:210px;
    }

    .ra-toggle-btn{
        padding:.55rem .7rem;
        font-size:.88rem;
    }
}


/* Tooltip / popover d'informació dels RA */
.ra-toggle-btn[data-bs-toggle="popover"],
.gradebook-table-classroom th[data-bs-toggle="popover"]{
    cursor:help;
}

.popover{
    --bs-popover-max-width:360px;
}

.popover-body{
    line-height:1.45;
    font-size:.88rem;
}

.popover-header{
    font-weight:700;
}


/* =========================================================
   PATCH - CONFIGURACIÓ DE PESOS RA / PAC
   ========================================================= */

.weight-global-status{
    border:1px solid #d8e1ec;
    border-radius:.75rem;
    padding:.6rem .85rem;
    background:#fff;
    white-space:nowrap;
}

.weight-status-ok{
    border-color:#a9dfb9;
    background:#eefaf2;
    color:#176b35;
}

.weight-status-error{
    border-color:#f2b8b5;
    background:#fff2f0;
    color:#a22b25;
}

.weight-ra-card{
    overflow:hidden;
    border:1px solid #d5deea;
}

.weight-ra-card .card-header{
    border-bottom:1px solid #e4eaf1 !important;
}

.ra-weight-input-group{
    width:125px;
}

.weight-config-table thead th{
    font-size:.78rem;
    color:#58677b;
    text-transform:none;
    background:#fbfcfe;
}

.weight-config-table td,
.weight-config-table th{
    padding:.55rem .7rem;
}

.weight-config-table tfoot td{
    background:#fbfcfe;
    border-top:1px solid #dde5ee;
}

.weight-ra-valid{
    border-color:#bcdcc6;
}

.weight-ra-invalid{
    border-color:#efc0bc;
}

.sticky-weight-actions{
    position:sticky;
    bottom:0;
    z-index:10;
    margin-top:1rem;
    padding:.8rem 1rem;
    border:1px solid #d8e1ec;
    border-radius:.8rem;
    background:rgba(255,255,255,.96);
    box-shadow:0 -.3rem 1rem rgba(0,0,0,.05);
    backdrop-filter:blur(7px);
}

@media(max-width:767.98px){
    .weight-global-status{
        width:100%;
        white-space:normal;
    }

    .ra-weight-input-group{
        width:110px;
    }

    .sticky-weight-actions{
        position:static;
    }
}


.teacher-card-stats .badge{
    font-size:.78rem;
    font-weight:600;
    padding:.45rem .65rem;
    border:1px solid #dfe5ec;
}


/* =========================================================
   PATCH PAC: PES FINAL + POPOVER + COLORS DE NOTES
   ========================================================= */

.pac-header{
    min-width:94px;
    cursor:help;
}

.pac-header-title{
    font-weight:700;
    line-height:1.15;
}

.pac-final-weight{
    margin-top:.25rem;
    font-size:.68rem;
    line-height:1.1;
    font-weight:600;
    color:#68758a;
    white-space:nowrap;
}

/* Activitats / PAC: colors molt suaus */
.gradebook-table-classroom td.grade-pass{
    background:#eefbf2 !important;
    color:#184d2d !important;
}

.gradebook-table-classroom td.grade-fail{
    background:#fff2f0 !important;
    color:#7f2f28 !important;
}

.gradebook-table-classroom td.grade-empty{
    background:#ffffff !important;
    color:#6c757d !important;
}

/* Nota final del RA i nota final: una mica més intenses */
.gradebook-table-classroom td.grade-pass-summary{
    background:#d9f4e2 !important;
    color:#123f25 !important;
}

.gradebook-table-classroom td.grade-fail-summary{
    background:#ffe1dc !important;
    color:#70241d !important;
}

.gradebook-table-classroom .ra-summary-cell.grade-empty,
.gradebook-table-classroom .final-grade-cell.grade-empty{
    background:#ffffff !important;
    color:#6c757d !important;
}

.ra-summary-cell .grade-edit-link,
.final-grade-cell .grade-edit-link{
    color:inherit !important;
}

/* Popup PAC una mica més ample perquè hi càpiga la descripció */
.pac-header + .popover,
.popover{
    --bs-popover-max-width:420px;
}


/* =========================================================
   CORRECCIÓ PES PAC + COLORS NOTA RA / FINAL
   ========================================================= */

/* Pes PAC dins del RA: petit, discret i només percentatge */
.pac-ra-weight{
    margin-top:.20rem;
    font-size:.66rem;
    line-height:1;
    font-weight:500;
    color:#788395;
    text-transform:none;
    letter-spacing:0;
    white-space:nowrap;
}

/* Anul·lem l'estil anterior si encara existeix */
.pac-final-weight{
    display:none !important;
}

/* Cel·les PAC: molt suaus */
.gradebook-table-classroom tbody td.grade-pass:not(.summary-grade-cell){
    background-color:#eefbf2 !important;
    color:#184d2d !important;
}

.gradebook-table-classroom tbody td.grade-fail:not(.summary-grade-cell){
    background-color:#fff2f0 !important;
    color:#7f2f28 !important;
}

.gradebook-table-classroom tbody td.grade-empty:not(.summary-grade-cell){
    background-color:#ffffff !important;
    color:#6c757d !important;
}

/* Nota RA / Nota final: més marcades */
.gradebook-table-classroom tbody td.summary-grade-cell.grade-pass-summary{
    background-color:#cfeeda !important;
    color:#0e4b28 !important;
}

.gradebook-table-classroom tbody td.summary-grade-cell.grade-fail-summary{
    background-color:#ffd7d1 !important;
    color:#7a2018 !important;
}

.gradebook-table-classroom tbody td.summary-grade-cell.grade-empty{
    background-color:#ffffff !important;
    color:#6c757d !important;
}

/* El botó de la nota no ha de tapar el color del TD */
.gradebook-table-classroom .summary-grade-cell .grade-edit-link{
    background:transparent !important;
    border:0 !important;
    color:inherit !important;
    width:100%;
    min-width:42px;
}

/* També mantenim el text blau fora quan no toca */
.gradebook-table-classroom .summary-grade-cell .grade-edit-link:hover,
.gradebook-table-classroom .summary-grade-cell .grade-edit-link:focus{
    color:inherit !important;
}


/* =========================================================
   TAULES: FILES ALTERNES + HOVER SUAU
   ========================================================= */

/* ---------------------------------------------------------
   TAULA DE NOTES
   --------------------------------------------------------- */

/* Files alternes sobre cel·les normals */
.gradebook-table-classroom tbody tr:nth-child(odd) td:not(.grade-pass):not(.grade-fail):not(.grade-pass-summary):not(.grade-fail-summary){
    background-color:#ffffff !important;
}

.gradebook-table-classroom tbody tr:nth-child(even) td:not(.grade-pass):not(.grade-fail):not(.grade-pass-summary):not(.grade-fail-summary){
    background-color:#f7f9fc !important;
}

/* La columna fixa de l'alumne també segueix el zebra */
.gradebook-table-classroom tbody tr:nth-child(odd) .student-name-cell{
    background-color:#ffffff !important;
}

.gradebook-table-classroom tbody tr:nth-child(even) .student-name-cell{
    background-color:#f7f9fc !important;
}

/* Hover de fila completa: blau molt clar */
.gradebook-table-classroom tbody tr{
    transition:background-color .15s ease, box-shadow .15s ease;
}

.gradebook-table-classroom tbody tr:hover td{
    box-shadow:inset 0 0 0 9999px rgba(215,231,255,.36);
}

/* Manté visibles els colors semàntics de notes */
.gradebook-table-classroom tbody tr:hover td.grade-pass{
    box-shadow:inset 0 0 0 9999px rgba(191,230,203,.32);
}

.gradebook-table-classroom tbody tr:hover td.grade-fail{
    box-shadow:inset 0 0 0 9999px rgba(244,190,184,.30);
}

.gradebook-table-classroom tbody tr:hover td.grade-pass-summary{
    box-shadow:inset 0 0 0 9999px rgba(165,219,181,.35);
}

.gradebook-table-classroom tbody tr:hover td.grade-fail-summary{
    box-shadow:inset 0 0 0 9999px rgba(235,166,157,.35);
}


/* ---------------------------------------------------------
   TAULES DE CONFIGURACIÓ
   --------------------------------------------------------- */

.weight-config-table tbody tr:nth-child(odd) td,
.admin-table-card .table tbody tr:nth-child(odd) td{
    background-color:#ffffff;
}

.weight-config-table tbody tr:nth-child(even) td,
.admin-table-card .table tbody tr:nth-child(even) td{
    background-color:#f8fafc;
}

/* Hover clar i uniforme */
.weight-config-table tbody tr,
.admin-table-card .table tbody tr{
    transition:background-color .15s ease, box-shadow .15s ease;
}

.weight-config-table tbody tr:hover td,
.admin-table-card .table tbody tr:hover td{
    background-color:#eef5ff !important;
}

/* Evita que el hover quedi massa fort en controls dins la fila */
.weight-config-table tbody tr:hover input,
.weight-config-table tbody tr:hover select,
.admin-table-card .table tbody tr:hover input,
.admin-table-card .table tbody tr:hover select{
    background-color:#ffffff;
}


/* ---------------------------------------------------------
   CAPÇALERES
   --------------------------------------------------------- */

.gradebook-table-classroom thead th,
.weight-config-table thead th,
.admin-table-card .table thead th{
    background-color:#f3f6fa !important;
}


/* ---------------------------------------------------------
   MÒBIL
   --------------------------------------------------------- */

@media(max-width:767.98px){
    .gradebook-table-classroom tbody tr:hover td,
    .weight-config-table tbody tr:hover td,
    .admin-table-card .table tbody tr:hover td{
        box-shadow:none;
    }
}


/* =========================================================
   BOOTSTRAP STRIPED + BORDE HOVER DE FILA
   ========================================================= */

/*
 * Bootstrap table-striped treballa amb --bs-table-accent-bg.
 * Algunes regles antigues forçaven background-color a cada TD
 * i impedien veure l'efecte zebra. Les neutralitzem en cel·les
 * normals de la taula de notes.
 */
.gradebook-table-classroom.table-striped > tbody > tr:nth-of-type(odd) > *:not(.grade-pass):not(.grade-fail):not(.grade-pass-summary):not(.grade-fail-summary){
    --bs-table-bg-type:#f6f8fb;
    background-color:#f6f8fb !important;
}

.gradebook-table-classroom.table-striped > tbody > tr:nth-of-type(even) > *:not(.grade-pass):not(.grade-fail):not(.grade-pass-summary):not(.grade-fail-summary){
    --bs-table-bg-type:#ffffff;
    background-color:#ffffff !important;
}

/* La columna fixa Alumne també segueix el zebra */
.gradebook-table-classroom.table-striped > tbody > tr:nth-of-type(odd) > .student-name-cell{
    background-color:#f6f8fb !important;
}

.gradebook-table-classroom.table-striped > tbody > tr:nth-of-type(even) > .student-name-cell{
    background-color:#ffffff !important;
}

/* Configuració: zebra Bootstrap més visible */
.weight-config-table.table-striped > tbody > tr:nth-of-type(odd) > *,
.admin-table-card .table-striped > tbody > tr:nth-of-type(odd) > *{
    background-color:#f7f9fc;
}

.weight-config-table.table-striped > tbody > tr:nth-of-type(even) > *,
.admin-table-card .table-striped > tbody > tr:nth-of-type(even) > *{
    background-color:#ffffff;
}

/*
 * Hover de fila en Notes:
 * outline no altera amplades de columnes ni provoca salts.
 */
.gradebook-table-classroom tbody tr.gradebook-student-row{
    position:relative;
}

.gradebook-table-classroom tbody tr.gradebook-student-row:hover{
    outline:2px solid #111;
    outline-offset:-2px;
    position:relative;
    z-index:4;
}

/* Una mica de ressaltat clar a les cel·les normals al hover */
.gradebook-table-classroom tbody tr.gradebook-student-row:hover > td:not(.grade-pass):not(.grade-fail):not(.grade-pass-summary):not(.grade-fail-summary){
    box-shadow:inset 0 0 0 9999px rgba(221,234,252,.38);
}

/* Conservem els colors semàntics durant el hover */
.gradebook-table-classroom tbody tr.gradebook-student-row:hover > td.grade-pass{
    background-color:#e5f8eb !important;
}

.gradebook-table-classroom tbody tr.gradebook-student-row:hover > td.grade-fail{
    background-color:#ffe9e6 !important;
}

.gradebook-table-classroom tbody tr.gradebook-student-row:hover > td.grade-pass-summary{
    background-color:#c4e9d0 !important;
}

.gradebook-table-classroom tbody tr.gradebook-student-row:hover > td.grade-fail-summary{
    background-color:#ffc9c1 !important;
}

/* Configuració: hover clar + borde negre de 2px */
.weight-config-table tbody tr,
.admin-table-card .table tbody tr{
    position:relative;
}

.weight-config-table tbody tr:hover,
.admin-table-card .table tbody tr:hover{
    outline:2px solid #111;
    outline-offset:-2px;
    z-index:3;
}

.weight-config-table tbody tr:hover > td,
.admin-table-card .table tbody tr:hover > td{
    background-color:#eef5ff !important;
}

/* Els camps continuen blancs perquè es llegeixin bé */
.weight-config-table tbody tr:hover input,
.weight-config-table tbody tr:hover select,
.admin-table-card .table tbody tr:hover input,
.admin-table-card .table tbody tr:hover select{
    background-color:#fff !important;
}

/* En pantalles tàctils no mantenim el ressaltat hover */
@media (hover:none){
    .gradebook-table-classroom tbody tr.gradebook-student-row:hover,
    .weight-config-table tbody tr:hover,
    .admin-table-card .table tbody tr:hover{
        outline:none;
    }
}


/* =========================================================
   PÀGINA DE MATÈRIA DEL PROFESSOR
   ========================================================= */
.subject-page-hero{
    border-left:6px solid var(--subject-color,#fff);
    padding-left:1rem;
}

.subject-option-card{
    border:1px solid #e1e6ed;
    border-radius:1rem;
    box-shadow:0 .25rem 1.15rem rgba(0,0,0,.055);
    transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease;
    background:#fff;
}

.subject-option-card:hover{
    transform:translateY(-3px);
    box-shadow:0 .65rem 1.6rem rgba(0,0,0,.095);
    border-color:#bdc9d8;
}

.subject-option-button{
    padding:0;
    border:1px solid #e1e6ed;
    background:#fff;
}

.subject-option-icon{
    display:flex;
    align-items:center;
    justify-content:center;
    width:44px;
    height:44px;
    border-radius:.8rem;
    background:#eef3fb;
    color:#1f5dd6;
    font-weight:800;
    font-size:1.05rem;
}

.subject-color-preview{
    display:inline-block;
    width:25px;
    height:25px;
    border-radius:50%;
    border:1px solid rgba(0,0,0,.18);
}

.teacher-subject-card .text-secondary,
.teacher-subject-card .small{
    color:inherit!important;
    opacity:.72;
}

.teacher-subject-card .badge.text-bg-light{
    color:#212529!important;
    opacity:1;
}


/* =========================================================
   BANC DE PREGUNTES
   ========================================================= */

.question-ra-card{
    border:1px solid #e0e6ee;
    border-radius:1rem;
    background:#fff;
    box-shadow:0 .25rem 1.1rem rgba(0,0,0,.05);
    transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease;
}

.question-ra-card:hover{
    transform:translateY(-3px);
    box-shadow:0 .65rem 1.5rem rgba(0,0,0,.09);
    border-color:#b8c7da;
}

.question-ra-number{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    min-height:38px;
    padding:.4rem .75rem;
    border-radius:.7rem;
    background:#edf3ff;
    color:#1957c8;
    font-weight:800;
}

.question-ra-description{
    display:-webkit-box;
    -webkit-line-clamp:3;
    -webkit-box-orient:vertical;
    overflow:hidden;
    min-height:4.25rem;
}

.difficulty-threshold-summary{
    min-width:190px;
    padding:.7rem .9rem;
    border-radius:.75rem;
    background:#f7f9fc;
    border:1px solid #e0e6ee;
    font-size:.9rem;
}

.question-list-table tbody tr:hover{
    outline:2px solid #111;
    outline-offset:-2px;
}

.question-list-table td{
    vertical-align:middle;
}


/* =========================================================
   ORDRE PER COLUMNES + AJUDA JSON
   ========================================================= */

.question-th{
    display:flex;
    align-items:center;
    gap:.35rem;
    white-space:nowrap;
}

.question-sort-buttons{
    display:inline-flex;
    gap:.1rem;
}

.question-sort-btn{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    width:22px;
    height:22px;
    border-radius:.3rem;
    text-decoration:none;
    color:#6c757d;
    font-size:.78rem;
    line-height:1;
}

.question-sort-btn:hover{
    background:#e9eef5;
    color:#111;
}

.question-sort-btn.active{
    background:#212529;
    color:#fff;
}

.json-format-example{
    font-size:.78rem;
    white-space:pre-wrap;
    word-break:break-word;
}


/* =========================================================
   PERFIL D'USUARI
   ========================================================= */

.profile-page{
    max-width:1200px;
    margin:0 auto;
}

.profile-avatar{
    width:56px;
    height:56px;
    border-radius:50%;
    display:flex;
    align-items:center;
    justify-content:center;
    background:#e9f0ff;
    color:#1558d6;
    font-size:1.4rem;
    font-weight:800;
    flex:0 0 auto;
}

.profile-page .app-card{
    border:1px solid #e1e6ed;
}

@media(max-width:767.98px){
    .profile-page{
        max-width:none;
    }
}


/* =========================================================
   EXÀMENS TIPUS TEST
   ========================================================= */
.exam-list-table th{white-space:nowrap}
.exam-list-table td{vertical-align:middle}
.exam-editor-section{border:1px solid #e1e6ed}
.exam-active-switch .form-check-input{width:3rem;height:1.5rem}
.exam-ra-selector{display:flex;flex-wrap:wrap;gap:.6rem}
.exam-ra-chip{cursor:pointer;margin:0}
.exam-ra-chip input{position:absolute;opacity:0;pointer-events:none}
.exam-ra-chip span{
    display:inline-flex;align-items:center;justify-content:center;
    min-width:62px;padding:.55rem .85rem;border-radius:.75rem;
    border:1px solid #cfd8e3;background:#f7f9fc;color:#334155;
    font-weight:700;transition:.15s ease;
}
.exam-ra-chip:hover span{border-color:#86aaf2;background:#f1f6ff}
.exam-ra-chip input:checked + span{
    background:#0d6efd;border-color:#0d6efd;color:#fff;
    box-shadow:0 .15rem .55rem rgba(13,110,253,.18)
}
.exam-question-panel{
    border:1px solid #dfe6ef;border-radius:1rem;background:#fbfcfe;
    overflow:hidden;min-height:520px;display:flex;flex-direction:column
}
.exam-question-panel-head{padding:1rem;border-bottom:1px solid #e6ebf1;background:#fff}
.exam-question-search{flex:1 1 260px}
.exam-difficulty-filter{flex:0 1 210px}
.exam-question-list{padding:.75rem;display:flex;flex-direction:column;gap:.65rem;overflow:auto;max-height:620px}
.exam-question-item{
    border:1px solid #dce3ec;border-radius:.8rem;background:#fff;padding:.8rem .9rem;
    transition:border-color .12s ease,box-shadow .12s ease,transform .12s ease
}
.exam-question-item:hover{border-color:#adc0d8;box-shadow:0 .2rem .8rem rgba(0,0,0,.05)}
.exam-question-item.dragging{opacity:.45}
.exam-question-item.drag-over{border-color:#0d6efd;transform:translateY(2px)}
.exam-question-item .form-check{margin:0;display:flex;gap:.55rem;align-items:flex-start}
.exam-question-item .form-check-input{margin-top:.22rem;flex:0 0 auto}
.exam-question-item .form-check-label{cursor:pointer}
.question-text{line-height:1.35}
.question-position{font-weight:800;color:#52606d}
.drag-handle{cursor:grab;color:#8795a5;font-weight:800;letter-spacing:-.12em;padding-right:.25rem}
.selected-question-list .exam-question-item{background:#fff}
.exam-question-empty{padding:2.2rem 1rem;text-align:center;color:#7a8795}
@media(max-width:1199.98px){
    .exam-question-panel{min-height:430px}
    .exam-question-list{max-height:500px}
}


/* =========================================================
   EXÀMENS V2 · DISTRIBUCIÓ COMPACTA
   ========================================================= */
.exam-schedule-grid{
    display:grid;
    grid-template-columns:1.25fr 1.25fr 1fr 1fr .9fr .9fr;
    gap:1rem;
    align-items:end;
}
.exam-generation-grid{
    display:grid;
    grid-template-columns:1.35fr 1fr 1fr 1fr 1.45fr;
    gap:1rem;
    align-items:end;
}
.exam-generate-button-wrap{display:flex;align-items:end}
@media(max-width:991.98px){
    .exam-schedule-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
    .exam-generation-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
    .exam-generate-button-wrap{grid-column:1/-1}
}
@media(max-width:575.98px){
    .exam-schedule-grid,.exam-generation-grid{grid-template-columns:1fr}
    .exam-generate-button-wrap{grid-column:auto}
}

/* =========================================================
   EXÀMENS V3 · FORMULARIS COMPACTES EN UNA SOLA FILA
   ========================================================= */
.exam-details-grid{
    display:grid;
    grid-template-columns:minmax(180px,2fr) minmax(128px,1.15fr) minmax(128px,1.15fr) minmax(92px,.8fr) minmax(105px,.85fr) minmax(80px,.7fr) minmax(86px,.72fr);
    gap:.7rem;
    align-items:end;
}
.exam-details-grid .form-label,
.exam-generation-grid .form-label{
    margin-bottom:.35rem;
    font-size:.86rem;
    white-space:nowrap;
}
.exam-details-grid .form-control,
.exam-details-grid .form-select,
.exam-details-grid .input-group-text,
.exam-generation-grid .form-control,
.exam-generation-grid .form-select,
.exam-generation-grid .btn{
    min-height:40px;
}
.exam-editor-section .card-body{padding:1.15rem 1.35rem!important}
.exam-editor-section .exam-active-switch{margin-top:.05rem}
.exam-generation-grid{
    grid-template-columns:minmax(115px,1.15fr) minmax(90px,.8fr) minmax(90px,.8fr) minmax(90px,.8fr) minmax(145px,1.2fr);
    gap:.7rem;
    align-items:end;
}
.exam-generate-button-wrap{display:flex;align-items:end}

/* En escriptori i tauleta horitzontal mantenim una sola fila. */
@media(min-width:768px){
    .exam-details-grid,.exam-generation-grid{grid-template-rows:1fr}
    .exam-generate-button-wrap{grid-column:auto}
}

/* Només en pantalles realment petites es reordena. */
@media(max-width:767.98px){
    .exam-details-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
    .exam-field-name{grid-column:1/-1}
    .exam-generation-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
    .exam-generate-button-wrap{grid-column:1/-1}
}
@media(max-width:480px){
    .exam-details-grid,.exam-generation-grid{grid-template-columns:1fr}
    .exam-field-name,.exam-generate-button-wrap{grid-column:auto}
}


/* =========================================================
   EXÀMENS V4 · ACCIONS ALINEADES EN UNA SOLA FILA
   ========================================================= */

/*
 * Evita que els formularis inline facin que un botó quedi més amunt
 * que la resta i evita que les accions es parteixin en diverses línies.
 * Si la pantalla és estreta, la taula ja disposa de scroll horitzontal.
 */
.exam-list-table th:last-child,
.exam-list-table td:last-child{
    min-width:310px;
    white-space:nowrap;
}

.exam-row-actions{
    display:flex;
    flex-wrap:nowrap;
    justify-content:flex-end;
    align-items:center;
    gap:.4rem;
    white-space:nowrap;
}

.exam-row-actions form{
    display:flex;
    align-items:center;
    margin:0;
    padding:0;
}

.exam-row-actions .btn{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    min-height:38px;
    line-height:1.1;
    white-space:nowrap;
    margin:0;
}

/* En mòbil mantenim les accions en línia i desplacem la taula horitzontalment. */
@media(max-width:767.98px){
    .exam-list-card .table-responsive{
        overflow-x:auto;
        -webkit-overflow-scrolling:touch;
    }

    .exam-list-table{
        min-width:1180px;
    }

    .exam-list-table th:last-child,
    .exam-list-table td:last-child{
        min-width:310px;
    }
}


/* =========================================================
   EXÀMENS V5 · EDITOR REALMENT COMPACTE
   ========================================================= */
.exam-details-grid{
    display:grid!important;
    grid-template-columns:minmax(220px,2.25fr) minmax(135px,1.1fr) minmax(135px,1.1fr) minmax(100px,.8fr) minmax(115px,.9fr) minmax(88px,.7fr) minmax(95px,.75fr)!important;
    gap:.65rem!important;
    align-items:end!important;
}
.exam-details-grid > div,
.exam-generation-grid > div{min-width:0!important}
.exam-details-grid .form-control,
.exam-details-grid .form-select,
.exam-details-grid .input-group,
.exam-generation-grid .form-control,
.exam-generation-grid .form-select{
    width:100%!important;
    min-width:0!important;
}
.exam-generation-grid{
    display:grid!important;
    grid-template-columns:minmax(120px,1.15fr) minmax(90px,.8fr) minmax(90px,.8fr) minmax(90px,.8fr) minmax(155px,1.25fr)!important;
    gap:.65rem!important;
    align-items:end!important;
}
@media(max-width:1050px){
    .exam-details-grid{grid-template-columns:repeat(4,minmax(0,1fr))!important}
    .exam-field-name{grid-column:span 2!important}
}
@media(max-width:760px){
    .exam-details-grid,.exam-generation-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
    .exam-field-name,.exam-generate-button-wrap{grid-column:1/-1!important}
}
@media(max-width:480px){
    .exam-details-grid,.exam-generation-grid{grid-template-columns:1fr!important}
    .exam-field-name,.exam-generate-button-wrap{grid-column:auto!important}
}


/* =========================================================
   EXÀMENS V6 · DADES EN DUES FILES
   ========================================================= */
.exam-details-row{
    display:grid!important;
    gap:.75rem!important;
    align-items:end!important;
    width:100%!important;
}
.exam-details-row-top{
    grid-template-columns:minmax(320px,2.4fr) minmax(120px,.75fr) minmax(120px,.75fr)!important;
}
.exam-details-row-bottom{
    grid-template-columns:minmax(150px,1fr) minmax(150px,1fr) minmax(120px,.8fr) minmax(140px,.9fr)!important;
    margin-top:.7rem!important;
}
.exam-details-row > div{min-width:0!important}
.exam-details-row .form-control,
.exam-details-row .form-select,
.exam-details-row .input-group{
    width:100%!important;
    min-width:0!important;
}
@media(max-width:900px){
    .exam-details-row-top{grid-template-columns:1fr 1fr!important}
    .exam-details-row-top > div:first-child{grid-column:1/-1!important}
    .exam-details-row-bottom{grid-template-columns:repeat(2,minmax(0,1fr))!important}
}
@media(max-width:520px){
    .exam-details-row-top,.exam-details-row-bottom{grid-template-columns:1fr!important}
    .exam-details-row-top > div:first-child{grid-column:auto!important}
}


/* =========================================================
   EXÀMENS V7 · AMPLADES COMPACTES
   ========================================================= */
.exam-details-row-top{
    grid-template-columns:minmax(380px,1fr) 120px 120px!important;
}
.exam-details-row-top > div:nth-child(2),
.exam-details-row-top > div:nth-child(3){
    max-width:120px!important;
}
.exam-details-row-bottom{
    grid-template-columns:170px 170px 125px 135px!important;
    justify-content:start!important;
}
.exam-details-row-bottom > div:nth-child(1),
.exam-details-row-bottom > div:nth-child(2){
    max-width:170px!important;
}
.exam-details-row-bottom > div:nth-child(3){
    max-width:125px!important;
}
.exam-details-row-bottom > div:nth-child(4){
    max-width:135px!important;
}
@media(max-width:900px){
    .exam-details-row-top{
        grid-template-columns:1fr 120px 120px!important;
    }
    .exam-details-row-bottom{
        grid-template-columns:170px 170px 125px 135px!important;
    }
}
@media(max-width:700px){
    .exam-details-row-top,
    .exam-details-row-bottom{
        grid-template-columns:1fr 1fr!important;
    }
    .exam-details-row-top > div,
    .exam-details-row-bottom > div{
        max-width:none!important;
    }
    .exam-details-row-top > div:first-child{
        grid-column:1/-1!important;
    }
}
@media(max-width:480px){
    .exam-details-row-top,
    .exam-details-row-bottom{
        grid-template-columns:1fr!important;
    }
    .exam-details-row-top > div:first-child{
        grid-column:auto!important;
    }
}


/* =========================================================
   EXÀMENS V8 · DURADA + GENERACIÓ COMPACTA
   ========================================================= */

/* Evita que "min" salti sota el camp de durada */
.exam-details-row-bottom > div:nth-child(4) .input-group{
    display:flex!important;
    flex-wrap:nowrap!important;
    width:135px!important;
}
.exam-details-row-bottom > div:nth-child(4) .input-group > .form-control{
    min-width:0!important;
    flex:1 1 auto!important;
    width:1%!important;
}
.exam-details-row-bottom > div:nth-child(4) .input-group > .input-group-text{
    flex:0 0 auto!important;
    white-space:nowrap!important;
}

/* Generació automàtica més compacta */
.exam-generation-grid{
    grid-template-columns:150px 105px 105px 105px 180px!important;
    justify-content:start!important;
}
.exam-generation-grid > div:nth-child(1){max-width:150px!important}
.exam-generation-grid > div:nth-child(2),
.exam-generation-grid > div:nth-child(3),
.exam-generation-grid > div:nth-child(4){max-width:105px!important}
.exam-generation-grid > div:nth-child(5){max-width:180px!important}

@media(max-width:760px){
    .exam-generation-grid{
        grid-template-columns:repeat(2,minmax(0,1fr))!important;
    }
    .exam-generation-grid > div{
        max-width:none!important;
    }
    .exam-generate-button-wrap{
        grid-column:1/-1!important;
    }
}

@media(max-width:480px){
    .exam-generation-grid{
        grid-template-columns:1fr!important;
    }
    .exam-generate-button-wrap{
        grid-column:auto!important;
    }
}


/* =========================================================
   EXÀMENS · ASSIGNACIÓ D'ALUMNES
   ========================================================= */

/* Accions del llistat més compactes */
.exam-row-actions{
    gap:.2rem!important;
}
.exam-row-actions .btn{
    min-height:32px!important;
    padding:.22rem .42rem!important;
    font-size:.78rem!important;
    border-radius:.35rem!important;
}
.exam-row-actions form{
    margin:0!important;
}

.exam-students-cell{
    min-width:150px;
    max-width:220px;
}
.exam-student-names{
    max-width:210px;
    margin-top:.25rem;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
}

.exam-student-panel{
    border:1px solid #e1e6ed;
    overflow:hidden;
}
.exam-student-list{
    display:flex;
    flex-direction:column;
    gap:.55rem;
    min-height:360px;
    max-height:560px;
    overflow:auto;
    padding:.25rem;
}
.exam-student-item{
    display:flex;
    align-items:flex-start;
    gap:.7rem;
    padding:.75rem .85rem;
    border:1px solid #dfe5ec;
    border-radius:.75rem;
    background:#fff;
    cursor:pointer;
    transition:border-color .12s ease,background .12s ease,box-shadow .12s ease;
}
.exam-student-item:hover{
    border-color:#aebdd0;
    background:#f8fbff;
    box-shadow:0 .15rem .5rem rgba(0,0,0,.04);
}
.exam-student-item .form-check-input{
    margin-top:.22rem;
    flex:0 0 auto;
}
.exam-student-empty{
    padding:2.5rem 1rem;
    text-align:center;
    color:#6c757d;
}
