/* Harmonisation des pages encore sans design dédié.
   L'activation est explicite dans le bloc page_class de chaque template.
   Les styles ne modifient ni l'affichage des widgets pilotés par JS, ni les permissions. */
.izilab-polish {
  --polish-ink: #17253f;
  --polish-muted: #647999;
  --polish-border: #e3ebf2;
  --polish-teal: #008b85;
  --text-muted: var(--polish-muted);
  --color-text-secondary: var(--polish-muted);
  --primary: var(--polish-teal);
  --primary-dark: #087970;
  color: var(--polish-ink);
  min-width: 0;
}
.app-shell:has(> .izilab-polish) {
  background: radial-gradient(ellipse at 95% 0, #edf8f7, transparent 48%), #f7fafc;
}
.app-shell > .izilab-polish { grid-column: 2; }
.izilab-polish :is(.page-head, .hero-row, .welcome-row, .pub-hero, .adm2-hero, .dashboard-header) {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  margin-bottom: 28px;
}
.izilab-polish :is(.page-head, .hero-row, .welcome-row, .pub-hero, .adm2-hero, .dashboard-header) > div { min-width: 0; }
.izilab-polish h1 { color: var(--polish-ink); font-size: clamp(27px, 2.7vw, 36px); line-height: 1.2; letter-spacing: -.035em; font-weight: 800; overflow-wrap: anywhere; }
.izilab-polish :is(.page-head, .hero-row, .welcome-row, .pub-hero, .dashboard-header) h1 { margin: 0 0 10px; }
.izilab-polish :is(.page-head, .hero-row, .welcome-row, .pub-hero, .dashboard-header) p { color: var(--polish-muted); line-height: 1.65; font-size: 14px; margin: 0; }
.izilab-polish .breadcrumb { flex-wrap: wrap; gap: 9px; font-size: 12px; line-height: 1.6; margin-bottom: 18px; }
.izilab-polish .breadcrumb a { color: var(--polish-teal); }
.izilab-polish :is(.admin-panel, .panel, .form-card, .section-card, .pub-table-card) {
  background: #fff;
  border: 1px solid var(--polish-border);
  border-radius: 18px;
  box-shadow: 0 8px 26px #203c5905;
  min-width: 0;
}
.izilab-polish :is(.admin-panel-header, .panel-heading, .panel-header, .structure-header) {
  padding: 24px;
  border-bottom: 1px solid #edf2f7;
}
.izilab-polish :is(.admin-panel-header, .panel-heading, .panel-header, .structure-header) h2 {
  margin: 0 0 6px;
  font-size: 19px;
  letter-spacing: -.025em;
  color: var(--polish-ink);
}
.izilab-polish :is(.admin-panel-header, .panel-heading, .panel-header, .structure-header) p { margin: 0; font-size: 13px; color: var(--polish-muted); line-height: 1.6; }
.izilab-polish :is(.section-block, .review-form-body) { padding: 24px; }
.izilab-polish .section-block h2 { font-size: 18px; letter-spacing: -.02em; margin-bottom: 20px; }
.izilab-polish .section-block.bordered { border-top: 1px solid #edf2f7; }
.izilab-polish .form-card { margin-bottom: 24px; }
.izilab-polish :is(.field, .form-field, .form-group) { min-width: 0; }
.izilab-polish :is(label, .form-label) { color: #334866; line-height: 1.5; font-size: 13px; }
/* !important uniquement pour les propriétés visuelles déjà définies en ligne. */
.izilab-polish :is(input:not([type=checkbox]):not([type=radio]):not([type=hidden]):not([type=file]):not([type=submit]), select, textarea) {
  box-sizing: border-box;
  max-width: 100%;
  min-width: 0;
  border: 1px solid #dce5ee !important;
  border-radius: 10px !important;
  padding: 12px 14px !important;
  background-color: #fff;
  color: var(--polish-ink);
  font: inherit;
  font-size: 14px !important;
  line-height: 1.45;
  box-shadow: 0 1px 2px #233c5503;
}
.izilab-polish textarea { width: 100%; resize: vertical; min-height: 108px; }
.izilab-polish :is(input, select, textarea):focus-visible { outline: 3px solid #0b9c8f24; outline-offset: 1px; border-color: #0c9c92 !important; }
.izilab-polish input::placeholder, .izilab-polish textarea::placeholder { color: #8b9aaf; opacity: 1; }
.izilab-polish input:disabled { color: #73839a; background-color: #f4f7fa !important; box-shadow: none; }
.izilab-polish :is(.has-error input, .has-error textarea, .has-error select) { border-color: #cf6471 !important; background-color: #fffafb; }
.izilab-polish :is(input[type=checkbox], input[type=radio]) { accent-color: var(--polish-teal); width: 17px; height: 17px; flex-shrink: 0; vertical-align: middle; }
.izilab-polish :is(.radio-option, .form-radio) { padding: 12px 16px; border: 1px solid #e1e9f1; border-radius: 10px; background: #fbfcfe; }
.izilab-polish :is(.radio-option, .form-radio):has(input:checked) { border-color: #99d7cd; background: #edf9f5; color: #087a72; }
.izilab-polish :is(.form-radio-group, .radio-group) { display: flex; gap: 10px; flex-wrap: wrap; }
.izilab-polish :is(.field small, .field-help, .form-help) { line-height: 1.65; }
.izilab-polish :is(.btn, .pub-btn) { border-radius: 10px !important; font-size: 13px; min-height: 42px; align-items: center; justify-content: center; gap: 8px; text-decoration: none; }
.izilab-polish .btn-primary { color: #fff; background: linear-gradient(115deg, #009c92, #00867e); border-color: #008c84; box-shadow: 0 4px 12px #008d8510; }
.izilab-polish .btn-primary:hover { background: #007c76; }
.izilab-polish :is(.btn-outline, .btn-secondary, .btn-ghost) { color: #466080; border: 1px solid #dce6ef; background: #fff; }
.izilab-polish :is(.btn-outline, .btn-secondary, .btn-ghost):hover { color: #00877f; border-color: #b4dcd4; background: #f3fbf8; }
.izilab-polish :is(button:disabled, [aria-disabled=true]) { box-shadow: none; }
.izilab-polish :is(a, button, summary, .table-wrap, .pub-table-wrap):focus-visible { outline: 3px solid #008b85; outline-offset: 3px; }
.izilab-polish .form-actions { gap: 12px; padding: 20px 24px; border-top: 1px solid #edf2f7; background: #fbfcfd; border-radius: 0 0 18px 18px; }
.izilab-polish :is(.table-wrap, .pub-table-wrap) { overflow-x: auto; max-width: 100%; overscroll-behavior-inline: contain; border-radius: 18px; }
.izilab-polish :is(.formations-table, .pub-table) { width: 100%; border-collapse: collapse; table-layout: auto; min-width: 900px; font-size: 13px; }
.izilab-polish :is(.formations-table, .pub-table) th { text-align: left; padding: 18px 20px; background: #f5f8fb; border-bottom: 1px solid var(--polish-border); font-size: 10px; line-height: 1.5; letter-spacing: .065em; font-weight: 750; color: #6b7c97; white-space: nowrap; }
.izilab-polish :is(.formations-table, .pub-table) td { padding: 20px; border-bottom: 1px solid #edf2f7; line-height: 1.6; vertical-align: middle; }
.izilab-polish :is(.formations-table, .pub-table) tr:last-child td { border-bottom: 0; }
.izilab-polish :is(.formations-table, .pub-table) tbody tr:hover { background: #f9fcfc; }
.polish-users .formations-table td:nth-last-child(-n+2),
.polish-organizations .formations-table td:nth-child(6),
.polish-trainer-applications-list .formations-table td:nth-child(5),
.polish-courses .formations-table td:nth-child(4) { white-space: nowrap; }
.izilab-polish :is(.formation-cell, .pub-formation-cell) { display: flex; align-items: center; gap: 14px; min-width: 240px; max-width: 360px; }
.izilab-polish .formation-cell > div:last-child { min-width: 0; }
.izilab-polish .formation-cell strong { color: #233a58; font-size: 13px; overflow-wrap: anywhere; }
.izilab-polish :is(.queue-thumb, .course-thumb) { width: 46px; height: 46px; flex: 0 0 46px; display: grid; place-items: center; border-radius: 12px; font-size: 16px; font-weight: 750; }
.izilab-polish .queue-thumb-placeholder { color: #00887f; background: #e2f5ef; }
.izilab-polish :is(.status, .pill) { display: inline-flex; align-items: center; gap: 6px; padding: 5px 9px; font-size: 11px; line-height: 1.4; border-radius: 7px; white-space: nowrap; }
.izilab-polish .pill { background: #edf3fa; color: #526887; margin: 3px 2px; }
.izilab-polish .status.published { background: #e5f8ee; color: #168451; }
.izilab-polish .status.rejected { background: #fff0f1; color: #b34355; }
.izilab-polish .status.draft { background: #f0f3f7; color: #677990; }
.izilab-polish .status.submitted, .izilab-polish .status.review { background: #fff3df; color: #ae7525; }
.izilab-polish .actions { display: flex; justify-content: flex-end; align-items: center; gap: 8px; }
.izilab-polish .action-btn { width: 36px; height: 36px; border: 1px solid #dfe8f0; border-radius: 9px; background: #fff; color: #526886; }
.polish-courses .row-menu-dropdown { top: calc(100% + 6px); bottom: auto; min-width: 180px; }
.polish-courses .table-wrap:has(.row-menu.open) { padding-bottom: 200px; }
.polish-courses .formations-table td { height: 100px; }
.izilab-polish:is(.polish-users, .polish-audit) .form-input { width: 100%; }
.polish-trainer-application-detail .admin-panel { padding: 24px; }
.polish-settings .adm2-hero { flex-direction: column; align-items: flex-start; gap: 8px; }
.polish-settings .adm2-hero h1, .polish-settings .adm2-hero p { margin: 0; }
  .polish-settings .adm2-hero p { color: var(--polish-muted); font-size: 14px; line-height: 1.6; }
.izilab-polish :is(.queue-empty, .empty-state, .structure-empty) { color: var(--polish-muted); padding: 36px 24px; text-align: center; line-height: 1.7; }
.izilab-polish :is(.submission-banner, .structure-alert, .alert, .adm2-flash) { border-radius: 12px; line-height: 1.6; }
.izilab-polish pre { max-width: 100%; overflow: auto; }
/* Modules : conserver les états .editing et les formulaires masqués existants. */
.polish-course-edit .structure-card { padding: 0; }
.polish-course-edit .module-list { padding: 0 24px; }
.polish-course-edit .module-row { border-color: #e2ebf1; border-radius: 13px; margin-top: 16px; background: #fff; }
.polish-course-edit .module-position { background: #e3f5ef; color: #00887e; border-radius: 9px; }
.polish-course-edit .lessons-section { background: #f9fbfd; border-top: 1px solid #edf1f6; border-radius: 0 0 13px 13px; }
.polish-course-edit .lesson-row { border-color: #e6edf4; border-radius: 9px; }
.polish-course-edit :is(.module-add-form, .lesson-add-form) { padding: 18px 24px; gap: 12px; }
.polish-course-edit :is(.module-add-form, .lesson-add-form) input { flex: 1; }
.polish-lesson-edit :is(.media-drop, #resource-upload) { background: #f5faf9 !important; border-color: #bcded5 !important; border-radius: 13px !important; }
.polish-lesson-edit #resource-list li { border-radius: 10px !important; }
/* Les profils apprenant et admin partagent déjà leur composant Jinja. */
.polish-profile .dashboard > .container { width: 100%; max-width: none; margin: 0; padding: 0; }
.polish-profile .dashboard { padding: 0; }
.polish-profile .section-card { padding: 26px; margin-bottom: 24px; }
.polish-profile .section-card:has(.profile-avatar) { background: radial-gradient(ellipse at right bottom, #e3f9f3, transparent 65%), #fff; }
.polish-profile .profile-avatar { flex-shrink: 0; width: 84px; height: 84px; display: grid; place-items: center; background: linear-gradient(130deg, #00a6a1, #008e84); color: #fff; font-size: 30px; font-weight: 750; border-radius: 50%; }
.polish-profile .role-badge { display: inline-block; padding: 6px 12px; border-radius: 24px; background: #e0f5f0; color: #00867e; font-size: 12px; font-weight: 650; }
.polish-profile .section-card h2 { font-size: 21px; margin-top: 0; letter-spacing: -.02em; }
.polish-profile .profile-field { display: flex; justify-content: space-between; align-items: center; gap: 24px; border-bottom: 1px solid #edf2f7; padding: 18px 0; line-height: 1.5; font-size: 14px; }
.polish-profile .profile-field:last-child { border-bottom: 0; padding-bottom: 0; }
.polish-profile .profile-field .label { color: var(--polish-muted); }
.polish-profile .profile-field .value { text-align: right; overflow-wrap: anywhere; }
/* Pages publiques secondaires : navigation publique et contenu existants conservés. */
.izilab-polish--public { background: radial-gradient(ellipse at 90% 0, #eaf7f4, transparent 48%), #f7fafc; }
.izilab-polish--public .auth-page { padding: 56px 0; }
.izilab-polish--public .auth-card { border: 1px solid var(--polish-border); border-radius: 20px; box-shadow: 0 12px 40px #23476708; padding: 32px; }
.izilab-polish--public .auth-card h1 { letter-spacing: -.03em; }
.izilab-polish--public .form-group { margin-bottom: 20px; }
.izilab-polish--public .form-label { display: block; margin-bottom: 8px; font-weight: 650; }
.izilab-polish--public .form-input { width: 100%; }
.izilab-polish--public :is(.subtitle, .auth-footer) { line-height: 1.65; }
.izilab-polish--public .btn-primary { min-height: 46px; }
.polish-application-folder article { border-radius: 18px !important; border-color: var(--polish-border) !important; box-shadow: 0 7px 26px #25436304; }
.polish-application-folder article h2 { color: #233a58; letter-spacing: -.02em; }
.polish-application-folder article > ul li { border-color: #e3ebf2 !important; border-radius: 10px !important; }
.izilab-polish input[type=file]:not([hidden]) { max-width: 100%; color: #647999; font-size: 12px; }
.izilab-polish input[type=file]::file-selector-button { border: 1px solid #bfded5; background: #eaf7f1; color: #087b72; border-radius: 8px; padding: 10px 12px; margin-right: 10px; cursor: pointer; font-weight: 650; }
.izilab-polish--public:is(.polish-contact, .polish-faq, .polish-legal-conditions, .polish-legal-confidentialite, .polish-legal-partenaires) > section > div { background: #fff; border: 1px solid var(--polish-border); border-radius: 20px; padding: 30px; }
.polish-faq details { border: 1px solid #e3ebf2 !important; border-radius: 12px !important; margin-bottom: 10px; }
.polish-faq summary { padding: 16px 18px; color: #334866; }
.polish-faq details[open] { background: #f6fbf9; border-color: #bcdfd3 !important; }
@media (max-width: 1100px) {
  .izilab-polish :is(.page-head, .hero-row, .pub-hero) { flex-wrap: wrap; }
  .izilab-polish :is(.page-head, .hero-row, .pub-hero) > .btn { flex-shrink: 0; }
}
@media (max-width: 720px) {
  /* admin.css réapplique display:flex après sa règle mobile : fermer réellement le menu. */
  .app-shell:has(> .izilab-polish--admin) > .sidebar:not(.mobile-open) { display: none; }
  .izilab-polish .btn { max-width: 100%; white-space: normal; text-align: center; }
  .izilab-polish :is(.page-head, .hero-row, .welcome-row, .pub-hero, .dashboard-header) { flex-direction: column; align-items: stretch; gap: 18px; }
  .izilab-polish h1 { font-size: 28px !important; }
  .izilab-polish :is(.admin-panel-header, .panel-heading, .panel-header, .section-block, .review-form-body, .structure-header) { padding: 20px 16px; }
  .izilab-polish .form-actions { padding: 18px 16px; flex-wrap: wrap; }
  .izilab-polish .two-col, .izilab-polish .three-col { grid-template-columns: 1fr; }
  /* Colonnes en ligne des nouveaux formulaires ; aucun état caché n'est modifié. */
  .izilab-polish :is(form, #resource-upload) div[style*="min-width"] { min-width: 0 !important; flex-basis: 100% !important; }
  .izilab-polish input[style*="min-width"] { min-width: 0 !important; flex-basis: 100% !important; }
  .izilab-polish form div:has(> div > input):not(:has(> button)) { flex-wrap: wrap; }
  .izilab-polish form div[style*="grid-template-columns"] { grid-template-columns: 1fr !important; }
  .izilab-polish form div[style*="flex: 1"]:has(> input) { flex-basis: 100% !important; min-width: 0; }
  .polish-settings .panel > div > div:has(> strong) { flex-direction: column; gap: 6px !important; }
  .polish-settings .panel strong { overflow-wrap: anywhere; }
  .izilab-polish :is(.formations-table, .pub-table) th, .izilab-polish :is(.formations-table, .pub-table) td { padding: 16px; }
  .izilab-polish .pub-head-actions { flex-wrap: wrap; }
  .polish-trainer-application-detail > div[style*="grid-template-columns"] { grid-template-columns: minmax(0, 1fr) !important; }
  .polish-trainer-application-detail .admin-panel { padding: 20px 16px; }
  .polish-contact div[style*="grid-template-columns"] { grid-template-columns: minmax(0, 1fr) !important; }
  .polish-course-edit .module-list { padding: 0 12px; }
  .polish-course-edit :is(.module-display, .lesson-display) { flex-wrap: wrap; }
  .polish-course-edit :is(.module-actions, .lesson-actions) { flex-wrap: wrap; justify-content: flex-end; margin-left: auto; }
  .polish-course-edit :is(.module-add-form, .lesson-add-form, .module-edit-form, .lesson-edit-form) { flex-wrap: wrap; gap: 10px; }
  .polish-course-edit :is(.module-add-form, .lesson-add-form, .module-edit-form, .lesson-edit-form) input { min-width: 0; flex-basis: 100%; }
  .polish-profile .section-card { padding: 20px 18px; }
  .polish-profile .section-card:has(.profile-avatar) { flex-wrap: wrap; gap: 16px !important; }
  .polish-profile .section-card > .btn { width: 100%; }
  .polish-profile .section-card > div:has(> h2) { min-width: 0; overflow-wrap: anywhere; }
  .polish-profile .profile-field { flex-direction: column; align-items: flex-start; gap: 6px; }
  .polish-profile .profile-field .value { text-align: left; }
  .izilab-polish--public .auth-page { padding: 32px 0; }
  .izilab-polish--public .auth-card { padding: 26px 20px; }
  .polish-application-folder article { padding: 22px 18px !important; }
  .polish-application-folder article > ul li { flex-wrap: wrap; }
  .polish-application-folder article > ul li > div { min-width: 0; overflow-wrap: anywhere; }
  .izilab-polish--public:is(.polish-contact, .polish-faq, .polish-legal-conditions, .polish-legal-confidentialite, .polish-legal-partenaires) > section > div { padding: 24px 18px; }
}
@media (max-width: 360px) {
  body:has(.app-shell > .izilab-polish) > .topbar { padding-inline: 12px; }
  body:has(.app-shell > .izilab-polish) > .topbar :is(.topbar-left, .topbar-right) { gap: 8px; }
  body:has(.app-shell > .izilab-polish) > .topbar .profile-mini { padding: 6px; }
  body:has(.app-shell > .izilab-polish) > .topbar .brand { font-size: 18px; }
}
@media (prefers-reduced-motion: reduce) {
  .izilab-polish *, .izilab-polish *::before, .izilab-polish *::after { transition: none !important; scroll-behavior: auto !important; }
}
