:root{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;color:#17344c;background:#edf5fb}
*{box-sizing:border-box}body{margin:0;min-height:100vh;background:linear-gradient(145deg,#f9fcff,#eef7fd 48%,#dcecf8)}
.topbar{background:linear-gradient(115deg,#092f50,#11699f 55%,#56afe0);color:#fff;padding:12px 24px;display:flex;align-items:center;gap:28px;box-shadow:0 5px 22px #19415c38}
.brand{display:flex;align-items:center;gap:12px;color:#fff;text-decoration:none;min-width:250px}.brand strong,.brand small{display:block}.brand small{opacity:.8;margin-top:2px}
.logo-box{background:#fff;border-radius:13px;padding:5px 9px}.logo-box img{height:54px;display:block}
nav{display:flex;gap:6px;flex-wrap:wrap}nav a{color:#fff;text-decoration:none;font-weight:650;padding:9px 11px;border-radius:9px}nav a:hover{background:#ffffff20}
main{max-width:1320px;margin:auto;padding:32px}.page-head{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:22px}.page-head h1{margin:0;color:#123f60}.page-head p{margin:6px 0 0;color:#617b8f}
.panel,.stat,.mini-card,.empty-card{background:#fff;border:1px solid #d8e8f3;border-radius:16px;box-shadow:0 7px 22px #275c7c16}.panel{padding:22px}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:18px}.stat{padding:24px;text-decoration:none;color:#17344c}.stat b{font-size:36px;color:#167ab8;display:block}.stat span{color:#667d90}
.settings-section{margin:28px 0 38px}.section-title{display:flex;justify-content:space-between;align-items:end;gap:20px;margin-bottom:14px}.section-title h2{margin:0;color:#184d70}.section-title p{margin:4px 0 0;color:#6b8090}
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:15px}.mini-card,.empty-card{padding:18px}.mini-card h3{margin:9px 0}.mini-actions{display:flex;gap:14px}
.pill{display:inline-block;background:#def1fc;color:#126b9f;border-radius:999px;padding:5px 9px;font-size:11px;font-weight:800}
.btn,button{display:inline-block;border:0;border-radius:10px;background:linear-gradient(110deg,#126ca6,#42a9dd);color:#fff;text-decoration:none;padding:10px 16px;font-weight:750;cursor:pointer}
.btn.secondary{background:#e7f0f7;color:#315a75}.danger{background:#fbe7e7;color:#9b2d2d;padding:7px 10px}
.link{color:#0879b8;text-decoration:none;font-weight:750}
table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:12px 9px;border-bottom:1px solid #e5eef4}th{font-size:13px;color:#4b687d;background:#f5faff}.empty{text-align:center!important;color:#7d909e;padding:28px!important}
.form h2{color:#245e81;margin-top:28px;border-bottom:1px solid #dfeaf2;padding-bottom:8px}.fields,.subgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.wide{grid-column:1/-1}
label{font-weight:700;color:#294e68}input,select,textarea{width:100%;margin-top:6px;padding:11px 12px;border:1px solid #bfd4e2;border-radius:9px;background:#fbfdff;font:inherit}textarea{min-height:80px}
.actions{display:flex;justify-content:flex-end;gap:10px;margin-top:25px}.checks{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;background:#f5faff;padding:15px;border-radius:12px}.checks input{width:auto;margin-right:6px}
.option-grid{display:grid;gap:11px}.option-row{display:grid;grid-template-columns:1fr 180px;gap:14px;align-items:end;background:#f5faff;border-radius:12px;padding:12px}.option-row input[type=checkbox]{width:auto;margin-right:6px}
.two-cols{display:grid;grid-template-columns:1fr 1fr;gap:20px}.compact-form{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin-bottom:20px}.compact-form button{align-self:end}.hint{color:#6a8090}.info-box{background:#e7f4fc;color:#24556f;padding:13px;border-radius:10px;margin-top:15px}
.login{max-width:460px;margin:55px auto;text-align:center;padding:32px}.login-logo{max-width:300px;width:80%}.login label{text-align:left;display:block;margin:13px 0}.login form button{width:100%}.error{color:#a12626}
@media(max-width:850px){.topbar{flex-direction:column;align-items:flex-start}.two-cols,.fields,.subgrid,.compact-form{grid-template-columns:1fr}.page-head,.section-title{flex-direction:column;align-items:flex-start}.option-row{grid-template-columns:1fr}main{padding:20px}}

.person-card{padding:13px 0;border-bottom:1px solid #e5eef4}.person-card:last-child{border-bottom:0}.person-card p{margin:5px 0;color:#657d90}.checkline{display:flex!important;align-items:center;gap:8px}.checkline input{width:auto!important;margin:0!important}

.identity-banner{display:flex;align-items:center;gap:12px;background:#eef8fe;border:1px solid #d4eaf6;border-radius:12px;padding:14px;margin:20px 0}
.registration-list{margin-top:10px;display:grid;gap:7px}
.registration-chip{background:#f4f9fd;border-radius:9px;padding:8px 10px;font-size:13px}

.package-preview{padding:10px 0;border-bottom:1px solid #e5eef4;color:#49697f}.package-preview:last-child{border-bottom:0}

.timetable-wrap{overflow-x:auto;margin-top:18px}
.timetable-table{min-width:1150px;border-collapse:collapse;width:100%}
.timetable-table th,.timetable-table td{border:1px solid #dfeaf2;vertical-align:top}
.timetable-table thead th{background:#eef6fb;position:sticky;top:0;z-index:1}
.time-cell{width:68px;background:#f7fafc;font-weight:600}
.slot-cell{min-width:150px;height:52px;padding:3px}
.course-block{border-left:5px solid;padding:6px 8px;border-radius:8px;margin:2px 0}
.complete-name{font-weight:700}
.incomplete-name{font-style:italic}
.course-sub{font-size:12px;opacity:.78;margin-top:2px}
.mini-status{display:inline-block;font-size:11px;padding:2px 6px;border-radius:999px;background:#fff8d8;margin-top:4px}
.tiny-link{display:inline-block;font-size:11px;margin-top:4px}
.pickup-alert{font-weight:800;text-decoration:underline}
@media print{.topbar,.no-print{display:none!important}.print-panel{border:0!important;box-shadow:none!important}.print-panel table{font-size:14px}}

.color-palette{display:flex;flex-wrap:wrap;gap:10px;margin-top:8px}
.color-choice{cursor:pointer}
.color-choice input{position:absolute;opacity:0;pointer-events:none}
.color-choice span{display:block;width:34px;height:34px;border-radius:50%;border:3px solid transparent;box-shadow:0 0 0 1px #c9d7e2}
.color-choice input:checked+span{border-color:#1d2c38;box-shadow:0 0 0 3px #fff,0 0 0 5px #1d2c38}

.schedule-shell{display:flex;align-items:flex-start;overflow-x:auto;margin-top:18px;border:1px solid #dfeaf2;border-radius:12px;background:#fff}
.schedule-time-column{flex:0 0 72px}
.schedule-room-column{flex:1 0 190px;border-left:1px solid #dfeaf2}
.schedule-room-head{height:54px;padding:8px;text-align:center;font-weight:700;background:#eef6fb;border-bottom:1px solid #dfeaf2;position:sticky;top:0;z-index:4}
.schedule-time-slot{height:34px;padding:5px;font-size:12px;border-bottom:1px solid #e7eef3;background:#f9fbfc}
.schedule-track{position:relative;height:1768px}
.schedule-grid-line{height:34px;border-bottom:1px solid #e7eef3}
.schedule-event{position:absolute;left:4px;right:4px;z-index:2;border:0;border-left:5px solid;padding:5px 7px;border-radius:7px;text-align:left;overflow:hidden;text-decoration:none;color:inherit;display:flex;flex-direction:column;gap:2px;cursor:pointer}
.schedule-event small{font-size:11px;opacity:.8}
.schedule-event span{font-size:11px}
.quick-event em{font-style:italic;font-weight:600}
.group-event strong{font-size:13px}
.modal-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.35);z-index:100;display:flex;align-items:center;justify-content:center;padding:20px}
.modal-backdrop[hidden]{display:none}
.group-modal{background:#fff;border-radius:14px;max-width:850px;width:100%;max-height:85vh;overflow:auto;padding:20px}
.modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px}
.modal-head h2{margin:0}
.modal-head p{margin:5px 0;color:#637b8c}
.modal-close{border:0;background:transparent;font-size:28px;cursor:pointer}
.occupancy-line{padding:10px 0 14px}


/* V5.5.1 — emploi du temps robuste en tableau */
.timetable-table-wrap{
  overflow-x:auto;
  margin-top:18px;
  border:1px solid #dfeaf2;
  border-radius:12px;
  background:#fff;
}
.timetable15{
  width:100%;
  min-width:1100px;
  border-collapse:collapse;
  table-layout:fixed;
}
.timetable15 th,
.timetable15 td{
  border-right:1px solid #dfeaf2;
  border-bottom:1px solid #e6eef4;
  vertical-align:top;
}
.timetable15 thead th{
  background:#eef6fb;
  padding:10px 8px;
  text-align:center;
  position:sticky;
  top:0;
  z-index:3;
}
.timetable15 .time-col{
  width:70px;
  min-width:70px;
  background:#f7fafc;
  padding:5px 6px;
  text-align:center;
  font-size:12px;
  font-weight:600;
}
.timetable15 tbody tr{
  height:30px;
}
.timetable15 .empty-slot{
  background:#fff;
  height:30px;
}
.timetable15 .course-cell{
  padding:3px;
  background:#fff;
}
.course-card{
  width:100%;
  height:100%;
  min-height:100%;
  display:flex;
  flex-direction:column;
  justify-content:center;
  align-items:flex-start;
  gap:2px;
  border:0;
  border-left:5px solid;
  border-radius:8px;
  padding:7px 8px;
  color:inherit;
  text-decoration:none;
  text-align:left;
  overflow:hidden;
}
.course-card small{
  font-size:11px;
  opacity:.8;
}
.course-card span{
  font-size:11px;
}
.group-event{
  cursor:pointer;
}


/* V5.5.3 — lisibilité des couleurs dans l'emploi du temps */
.timetable15 .course-card,
.timetable15 .course-card strong,
.timetable15 .course-card em,
.timetable15 .course-card span,
.timetable15 .course-card small{
  color:#111 !important;
}
.timetable15 .course-card{
  font-weight:600;
}
.timetable15 .course-card small{
  opacity:.9;
}
.timetable15 .group-event strong{
  font-weight:800;
}


/* V5.5.4 — blocs sur toute la durée réelle */
.timetable15 .course-cell{
  padding:3px;
  vertical-align:stretch;
}
.timetable15 .course-card{
  box-sizing:border-box;
  height:100%;
  justify-content:center;
}
.timetable15 .group-event strong{
  display:block;
  width:100%;
  text-align:center;
  font-weight:800;
  line-height:1.2;
}
.timetable15 .group-counter{
  display:block;
  width:100%;
  text-align:center;
  font-size:13px !important;
  font-weight:700;
  margin-top:4px;
}

/* V5.5.5 — plages pleines */
.timetable15 .course-cell{padding:0!important}
.timetable15 td[rowspan]{padding:0!important}
.timetable15 .course-card{
  margin:0!important;
  border-radius:0!important;
  width:100%!important;
  height:100%!important;
  min-height:100%!important;
}
.timetable15 .quick-event{color:#111!important}
.same-address-option{
  display:flex!important;
  align-items:center;
  gap:8px;
}

.settings-tabs{display:flex;flex-wrap:wrap;gap:8px;margin:16px 0 20px}
.settings-tab-btn{border:1px solid #c9ddeb;background:#edf6fb;padding:10px 14px;border-radius:10px;font-weight:700;color:#214f70;cursor:pointer}
.settings-tab-btn.active{background:#2d8fc5;color:white;border-color:#2d8fc5}
.settings-tab-panel[hidden]{display:none!important}

/* V5.6.5 - vrais onglets paramètres */
.settings-tabs{position:sticky;top:0;z-index:5;background:#eef7fc;padding:10px 0}
.settings-tab-panel{margin-top:0}


.check-installment-row{
  display:grid;
  grid-template-columns:90px 1fr 1fr 150px 1fr;
  gap:10px;
  align-items:end;
  padding:10px 0;
  border-bottom:1px solid #dbe8f0;
}
.check-installment-row label{margin:0}
@media(max-width:900px){
  .check-installment-row{grid-template-columns:1fr 1fr}
}

/* V5.8.1 - restaurer le rendu historique des listes principales */
.page-head h1{font-family:inherit}
.panel table{font-family:inherit}
.main-nav a:nth-child(-n+3){
  font-family:inherit;
  font-size:inherit;
  font-weight:inherit;
}
.check-total-box{
  margin-top:12px;
  padding:12px;
  border-radius:10px;
  background:#eef6fb;
  display:flex;
  gap:18px;
  flex-wrap:wrap;
}
.ok-text{color:#267326;font-weight:700}
.warning-text{color:#a33;font-weight:700}
.check-installment-row{
  grid-template-columns:90px 1fr 1fr 1fr 130px !important;
}

/* V5.9 — interface principale */
.user-corner{margin-left:auto;display:grid;grid-template-columns:auto auto;column-gap:8px;align-items:center;padding:7px 11px;border-radius:12px;background:rgba(255,255,255,.82)}
.user-corner span{font-weight:800}.user-corner small{opacity:.7}.user-corner a{grid-column:1/3;font-size:12px;text-align:right}
.dashboard-cards{display:grid;grid-template-columns:repeat(4,minmax(180px,1fr));gap:18px;margin-top:20px}
.dash-card{min-height:155px;border-radius:20px;padding:22px;text-decoration:none;color:#173954!important;display:flex;flex-direction:column;box-shadow:0 12px 28px rgba(38,75,99,.10);border:1px solid rgba(255,255,255,.7)}
.dash-card span{font-size:18px;font-weight:800}.dash-card b{font-size:42px;line-height:1.1;margin:8px 0}.dash-card small{margin-top:auto;font-size:14px}
.dash-a{background:linear-gradient(135deg,#e1f4ff,#b9dff5)}
.dash-b{background:linear-gradient(135deg,#f2e7ff,#d9c7f2)}
.dash-c{background:linear-gradient(135deg,#e6f8ec,#c2e7ce)}
.dash-d{background:linear-gradient(135deg,#fff0df,#f5d4af)}
.search-panel{display:flex;gap:10px;align-items:center}.search-panel input{flex:1}
.family-directory{display:grid;gap:18px}.family-card{background:linear-gradient(135deg,#fff,#f3f9fd);border:1px solid #cfe2ef;border-radius:18px;padding:18px;box-shadow:0 8px 22px rgba(38,75,99,.07)}
.family-card-head{display:flex;justify-content:space-between;gap:20px;align-items:center;border-bottom:1px solid #dceaf2;padding-bottom:12px}
.family-card-head h2{margin:0}.family-card-head p{margin:4px 0 0}
.member-cards{display:grid;gap:8px;margin-top:12px}.member-card{display:grid;grid-template-columns:1.3fr 1fr auto;gap:14px;align-items:center;padding:12px;border-radius:12px;background:#fff}
.member-card small{display:block}
.status-choice-grid{display:grid;grid-template-columns:repeat(2,minmax(220px,1fr));gap:14px;margin:12px 0}
.status-choice{position:relative}.status-choice input{position:absolute;opacity:0}
.status-choice span{display:block;border:2px solid #d3e3ec;border-radius:14px;padding:15px;background:#f7fbfd;cursor:pointer}
.status-choice span small{display:block;margin-top:5px}.status-choice input:checked+span{border-color:#2286bc;background:linear-gradient(135deg,#e0f4ff,#c7e7f7)}
@media(max-width:900px){.dashboard-cards{grid-template-columns:1fr 1fr}.family-card-head,.member-card{display:block}.member-card .actions{margin-top:8px}}

/* V5.10 — corrections d'affichage et analyses */
.user-corner{margin-left:32px!important;min-width:150px;padding:9px 14px!important;column-gap:12px!important}
.user-corner a{margin-top:4px;text-decoration:none;font-weight:700}
.dashboard-cards{display:grid!important;grid-template-columns:repeat(4,minmax(180px,1fr))!important;gap:18px!important;margin:20px 0 24px!important}
.dash-card{display:flex!important;flex-direction:column!important;min-height:145px!important;border-radius:20px!important;padding:20px!important;text-decoration:none!important;color:#173954!important;box-shadow:0 10px 26px rgba(30,66,91,.10)!important;border:1px solid rgba(255,255,255,.8)!important}
.dash-card span{font-size:17px!important;font-weight:800!important}.dash-card b{font-size:38px!important;margin:8px 0!important}.dash-card small{margin-top:auto!important}
.dash-a{background:linear-gradient(135deg,#dff4ff,#a9d9f3)!important}.dash-b{background:linear-gradient(135deg,#f3e7ff,#d4c0ef)!important}.dash-c{background:linear-gradient(135deg,#e4f8ea,#b9e3c7)!important}.dash-d{background:linear-gradient(135deg,#fff0df,#efc997)!important}
.analytics-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.analysis-card{background:#fff;border:1px solid #d7e6ef;border-radius:18px;padding:18px;box-shadow:0 8px 22px rgba(28,67,92,.06)}
.analysis-card h2{margin-top:0}.pie-layout{display:grid;grid-template-columns:180px 1fr;gap:22px;align-items:center}.pie-chart{width:170px;height:170px;border-radius:50%;box-shadow:inset 0 0 0 1px rgba(0,0,0,.04)}
.chart-legend{display:grid;gap:7px}.chart-legend>div{display:grid;grid-template-columns:14px 1fr auto;gap:8px;align-items:center}.legend-dot{width:11px;height:11px;border-radius:50%}
.dot-0{background:#8ecae6}.dot-1{background:#cdb4db}.dot-2{background:#a8dadc}.dot-3{background:#ffd6a5}.dot-4{background:#bde0fe}.dot-5{background:#cdeac0}.dot-6{background:#ffc8dd}.dot-7{background:#e9c46a}.dot-8{background:#bee1e6}.dot-9{background:#d8e2dc}
.bar-chart{display:grid;gap:10px}.bar-row{display:grid;grid-template-columns:145px 1fr 65px;gap:10px;align-items:center}.bar-track{height:14px;background:#eaf2f6;border-radius:8px;overflow:hidden}.bar-track i{display:block;height:100%;background:linear-gradient(90deg,#8ecae6,#62b1df);border-radius:8px}
.guardian-block{border-top:1px solid #d8e7ef;padding-top:8px;margin-top:18px}.guardian-title{display:flex;justify-content:space-between;align-items:flex-start}.guardian-flags{display:flex;gap:22px;margin:2px 0 12px}.guardian-flags label,.same-address-inline{display:flex!important;align-items:center!important;gap:7px!important;width:auto!important}.same-address-inline{grid-column:1/-1!important;justify-self:start!important}
.guardian-address-fields{display:block}.compact-fields{margin-top:10px}.package-current{border:1px solid #cfe1eb;border-radius:14px;margin:12px 0;overflow:hidden}.package-current-head{display:flex;justify-content:space-between;align-items:center;padding:14px;background:linear-gradient(135deg,#edf8fe,#dceff9)}.package-current-head>div{display:flex;gap:10px;align-items:center}.package-components{padding:6px 14px 12px}.package-component{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:9px 4px;border-bottom:1px solid #edf2f5}.package-component:last-child{border-bottom:0}.member-registrations{margin-top:18px}
.incomplete-name{font-style:italic!important;font-weight:500!important}.complete-name{font-style:normal!important;font-weight:800!important}
@media(max-width:900px){.dashboard-cards,.analytics-grid{grid-template-columns:1fr 1fr!important}.pie-layout{grid-template-columns:1fr}.user-corner{margin-left:10px!important}.guardian-flags{flex-direction:column;gap:5px}}

/* V5.11 */
.status-simple .status-choice span{min-height:64px;display:flex!important;align-items:center!important;justify-content:center!important}
.status-simple .status-choice b{font-size:20px!important;font-weight:900!important;letter-spacing:.3px}
.guardian-flags{display:flex!important;align-items:center!important;gap:28px!important;flex-wrap:wrap!important;margin:4px 0 14px!important}
.guardian-flags label{display:inline-flex!important;align-items:center!important;gap:7px!important;white-space:nowrap!important;margin:0!important}
.guardian-flags input,.same-address-inline input{margin:0!important;flex:0 0 auto!important}
.same-address-inline{display:inline-flex!important;align-items:center!important;gap:8px!important;white-space:nowrap!important;width:auto!important;max-width:max-content!important}
.member-card-with-regs{grid-template-columns:1.1fr .8fr 1fr auto!important}.member-regs{display:flex;flex-wrap:wrap;gap:6px}.registration-chip{display:inline-block;padding:6px 9px;border-radius:9px;text-decoration:none;font-size:12px;font-weight:800}.registration-chip.validated{background:#dff2e5;color:#225f37}.registration-chip.pending{background:#fff0d8;color:#8a5b12}
.package-component b{display:flex;gap:10px;align-items:center}

/* V5.12 — espace professeur */
.room-usage-checks{display:grid;grid-template-columns:repeat(2,minmax(240px,1fr));gap:10px}.room-usage-checks label{display:flex;align-items:center;gap:8px}
.professor-date-bar{display:flex;gap:18px;align-items:end}.professor-date-bar label{min-width:220px}
.professor-day-title{display:flex;gap:12px;align-items:center;margin:18px 0 10px}.teacher-schedule{display:grid;gap:14px}
.teacher-course-card{position:relative;background:#fff;border:1px solid #d8e7ef;border-left:7px solid;border-radius:16px;padding:16px;box-shadow:0 7px 20px rgba(32,71,96,.06)}
.teacher-course-head{display:grid;grid-template-columns:80px 1fr auto;gap:14px;align-items:center}.teacher-course-head h3{margin:0}.teacher-course-head p{margin:4px 0 0}.time-badge{font-size:22px;font-weight:900}
.teacher-attendance-form{margin-top:14px}.individual-attendance{display:grid;grid-template-columns:180px 1fr 220px;gap:12px;align-items:center;padding:10px 0;border-top:1px solid #edf2f5}.attendance-options{display:flex;gap:15px;flex-wrap:wrap}.attendance-options label{display:flex;align-items:center;gap:5px}
.makeup-inline{position:absolute;right:16px;bottom:14px}.journal-preview{margin:14px 0 45px;padding:10px;background:#f3f8fb;border-radius:10px}.makeup-panel{margin-top:20px}.teacher-group-modal{max-width:1000px}
@media(max-width:900px){.teacher-course-head,.individual-attendance{grid-template-columns:1fr}.makeup-inline{position:static;margin-top:12px}.room-usage-checks{grid-template-columns:1fr}}

/* V5.12.2 — année scolaire et calendrier */
.calendar-layout{align-items:start}
.calendar-layout .panel{overflow-x:auto}
.sub-form{margin-top:20px;padding-top:16px;border-top:1px solid #dbe7ee}
.check-due-grid{display:grid;grid-template-columns:repeat(5,minmax(150px,1fr));gap:12px;margin:14px 0 20px}
.check-due-grid label{display:flex;flex-direction:column;gap:5px}
@media(max-width:1000px){.check-due-grid{grid-template-columns:repeat(2,minmax(150px,1fr))}}

/* V5.12.3 — calendrier : largeur complète */
.calendar-layout{
  display:grid !important;
  grid-template-columns:minmax(0,1fr) !important;
  width:100% !important;
  max-width:none !important;
  gap:24px !important;
}
.calendar-layout .panel{
  width:100% !important;
  max-width:none !important;
  box-sizing:border-box !important;
  overflow:visible !important;
}
.calendar-layout table{
  width:100% !important;
  table-layout:auto !important;
}
.calendar-layout th,
.calendar-layout td{
  white-space:normal !important;
}
.calendar-layout .sub-form .fields{
  grid-template-columns:repeat(2,minmax(0,1fr)) !important;
}
@media(max-width:800px){
  .calendar-layout .sub-form .fields{
    grid-template-columns:1fr !important;
  }
}

/* V5.12.4 — calendrier annuel */
.weekday-summary{display:grid;grid-template-columns:repeat(7,minmax(100px,1fr));gap:10px}
.weekday-card{border-radius:14px;padding:14px;text-align:center;background:linear-gradient(135deg,#edf8fe,#dceff9)}
.weekday-card span{display:block;font-weight:800}.weekday-card b{display:block;font-size:28px;margin:4px 0}.weekday-card small{opacity:.75}
.calendar-legend{display:flex;gap:20px;flex-wrap:wrap;margin-bottom:15px}.calendar-legend span{display:flex;align-items:center;gap:7px}.calendar-legend i{width:14px;height:14px;border-radius:4px;display:inline-block}
.legend-course{background:#bfe7c8}.legend-break{background:#ffe5a8}.legend-closure{background:#f7b8b8}
.annual-calendar{display:grid;grid-template-columns:repeat(3,minmax(250px,1fr));gap:16px}
.month-card{border:1px solid #d8e7ef;border-radius:14px;padding:12px;background:#fff}.month-card h3{text-align:center;margin:0 0 10px}
.month-weekdays,.month-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}.month-weekdays span{text-align:center;font-weight:800;font-size:12px;padding:4px 0}
.calendar-day{aspect-ratio:1/1;display:flex;align-items:center;justify-content:center;border-radius:6px;font-size:12px;background:#f5f8fa}.calendar-day.out-month{background:transparent}
.calendar-day.effective-course{background:#bfe7c8;font-weight:800}.calendar-day.school-break{background:#ffe5a8!important;color:#725500}.calendar-day.school-closure{background:#f7b8b8!important;color:#8d2525;font-weight:800}
@media(max-width:1100px){.annual-calendar{grid-template-columns:repeat(2,minmax(250px,1fr))}.weekday-summary{grid-template-columns:repeat(4,1fr)}}
@media(max-width:700px){.annual-calendar{grid-template-columns:1fr}.weekday-summary{grid-template-columns:repeat(2,1fr)}}

/* V5.13 — présences et emploi du temps professeur */
.individual-attendance-clean,.group-attendance-row{display:grid;grid-template-columns:170px minmax(360px,1fr) 220px;gap:16px;align-items:center;padding:14px 0;border-top:1px solid #e8eff3}
.presence-choice{display:grid;grid-template-columns:repeat(3,minmax(105px,1fr));gap:9px}
.presence-pill{position:relative;margin:0!important}.presence-pill input{position:absolute;opacity:0;pointer-events:none}
.presence-pill span{display:flex;align-items:center;justify-content:center;min-height:44px;border:2px solid #d9e5eb;border-radius:12px;background:#f6fafc;font-weight:800;cursor:pointer;text-align:center;padding:6px 9px}
.presence-pill.present input:checked+span{background:#dff3e5;border-color:#6dbb81;color:#205c31}
.presence-pill.absent input:checked+span{background:#fde4e4;border-color:#df8585;color:#8b2828}
.presence-pill.a_rattraper input:checked+span{background:#fff0cf;border-color:#e3b85c;color:#7b5812}
.attendance-note{width:100%}.journal-field{margin-top:10px}
.group-attendance-list{max-height:55vh;overflow:auto}
.makeup-list{display:grid;gap:12px}.makeup-card{border:1px solid #d8e6ed;border-radius:14px;padding:14px;background:#fbfdfe}
.makeup-main{display:flex;justify-content:space-between;gap:12px;align-items:center}.makeup-main small{display:block;margin-top:3px}
.makeup-plan-form{display:grid;grid-template-columns:1fr 1fr 1.2fr;gap:10px;align-items:end;margin-top:12px}.makeup-plan-form .wide{grid-column:1/-1}.makeup-plan-form button{justify-self:start}
.planned-makeup{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:10px;padding:10px;background:#e9f5ec;border-radius:10px}
.teacher-week-grid{display:grid;grid-template-columns:repeat(7,minmax(170px,1fr));gap:10px;align-items:start}
.week-day-column{background:#f7fafc;border:1px solid #dce8ee;border-radius:13px;padding:9px;min-height:220px}.week-day-column h2{text-align:center;font-size:16px;margin:3px 0 10px}
.week-course{background:#fff;border:1px solid #dae6ec;border-left:6px solid;border-radius:10px;padding:9px;margin-bottom:8px;break-inside:avoid}.week-course-time{font-weight:900;margin-bottom:4px}.week-course b,.week-course small{display:block}.week-empty{text-align:center;color:#9aaab4}
.print-title{display:none}
@media(max-width:1200px){.teacher-week-grid{grid-template-columns:repeat(4,1fr)}}
@media(max-width:900px){.individual-attendance-clean,.group-attendance-row{grid-template-columns:1fr}.presence-choice{grid-template-columns:repeat(3,1fr)}.makeup-plan-form{grid-template-columns:1fr 1fr}.teacher-week-grid{grid-template-columns:repeat(2,1fr)}}
@media print{
  .topbar,.no-print{display:none!important}
  main{max-width:none!important;padding:0!important;margin:0!important}
  .print-title{display:block!important;text-align:center;margin-bottom:14px}
  .teacher-week-grid{grid-template-columns:repeat(7,1fr)!important;gap:5px!important}
  .week-day-column{min-height:0!important;padding:5px!important;border-color:#aaa!important}
  .week-day-column h2{font-size:12px!important}
  .week-course{padding:5px!important;font-size:9px!important;box-shadow:none!important}
  .week-course-time{font-size:9px!important}.week-course small{font-size:8px!important}
  @page{size:landscape;margin:8mm}
}

/* V5.13.1 — calendrier annuel corrigé, styles isolés */
.school-weekday-summary{
  display:grid !important;
  grid-template-columns:repeat(6,minmax(120px,1fr)) !important;
  gap:12px !important;
  margin-top:18px !important;
}
.school-weekday-card{
  display:flex !important;
  flex-direction:column !important;
  align-items:center !important;
  justify-content:center !important;
  min-height:105px !important;
  padding:14px !important;
  border:1px solid #d4e4ed !important;
  border-radius:15px !important;
  background:linear-gradient(135deg,#eef8fe,#d9edf8) !important;
  text-align:center !important;
}
.school-weekday-card span{font-weight:800 !important}
.school-weekday-card b{font-size:30px !important;line-height:1 !important;margin:7px 0 !important}
.school-weekday-card small{opacity:.72 !important}

.school-calendar-legend{
  display:flex !important;
  flex-wrap:wrap !important;
  gap:18px !important;
  align-items:center !important;
  margin-bottom:18px !important;
}
.school-calendar-legend span{
  display:inline-flex !important;
  align-items:center !important;
  gap:7px !important;
}
.school-calendar-legend i{
  display:inline-block !important;
  width:15px !important;
  height:15px !important;
  border-radius:4px !important;
}
.school-legend-course{background:#bfe6c8 !important}
.school-legend-break{background:#ffe4a3 !important}
.school-legend-closure{background:#f4b6b6 !important}
.school-legend-sunday{background:#e8edf0 !important}

.school-annual-calendar{
  display:grid !important;
  grid-template-columns:repeat(3,minmax(270px,1fr)) !important;
  gap:18px !important;
  align-items:start !important;
}
.school-month-card{
  display:block !important;
  min-width:0 !important;
  padding:14px !important;
  border:1px solid #d5e5ed !important;
  border-radius:15px !important;
  background:#fff !important;
}
.school-month-card h3{
  margin:0 0 12px !important;
  text-align:center !important;
  font-size:18px !important;
}
.school-month-weekdays,
.school-month-grid{
  display:grid !important;
  grid-template-columns:repeat(7,minmax(0,1fr)) !important;
  gap:4px !important;
  width:100% !important;
}
.school-month-weekdays span{
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  min-width:0 !important;
  height:24px !important;
  font-size:12px !important;
  font-weight:900 !important;
}
.school-calendar-day{
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  width:100% !important;
  min-width:0 !important;
  aspect-ratio:1 / 1 !important;
  border-radius:7px !important;
  background:#f5f8fa !important;
  font-size:13px !important;
  line-height:1 !important;
}
.school-calendar-day.school-out-month{
  background:transparent !important;
}
.school-calendar-day.school-effective-course{
  background:#bfe6c8 !important;
  color:#214e2d !important;
  font-weight:900 !important;
}
.school-calendar-day.school-break-day{
  background:#ffe4a3 !important;
  color:#715300 !important;
  font-weight:800 !important;
}
.school-calendar-day.school-closure-day{
  background:#f4b6b6 !important;
  color:#842929 !important;
  font-weight:900 !important;
}
.school-calendar-day.school-sunday{
  background:#e8edf0 !important;
  color:#7c898f !important;
  font-weight:500 !important;
}
.calendar-actions{
  display:flex !important;
  gap:8px !important;
  align-items:center !important;
  flex-wrap:wrap !important;
}
.calendar-actions form{margin:0 !important}

.school-periods-panel,
.school-closures-panel,
.school-annual-panel,
.school-calendar-summary{
  width:100% !important;
  max-width:none !important;
  box-sizing:border-box !important;
}
.school-periods-panel table,
.school-closures-panel table{
  width:100% !important;
  table-layout:auto !important;
}

@media(max-width:1150px){
  .school-annual-calendar{grid-template-columns:repeat(2,minmax(250px,1fr)) !important}
  .school-weekday-summary{grid-template-columns:repeat(3,1fr) !important}
}
@media(max-width:720px){
  .school-annual-calendar{grid-template-columns:1fr !important}
  .school-weekday-summary{grid-template-columns:repeat(2,1fr) !important}
}

/* V5.14 — barre supérieure lisible */
.topbar{background:linear-gradient(115deg,#d9eef9,#b9e1f4 55%,#93d0ee)!important;color:#102f45!important}
.topbar a,.topbar nav a,.brand,.brand strong,.brand small,.user-corner,.user-corner span,.user-corner small,.user-corner a{color:#102f45!important}
.topbar nav a{font-weight:800!important;text-shadow:none!important}
.logo-box{width:76px!important;height:76px!important;min-width:76px!important;display:flex!important;align-items:center!important;justify-content:center!important}
.logo-box img{width:72px!important;height:72px!important;object-fit:contain!important}
.brand{min-width:310px!important}.brand strong{font-size:18px!important}.brand small{opacity:.9!important}
.user-corner{margin-left:auto!important}
