* {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

@font-face {
  font-family: "Brown-M";
  src: url("fonts/BrownCondLL-Medium.otf") format("opentype");
}

@font-face {
  font-family: "Brown-L";
  src: url("fonts/BrownCondLLTT-Light.ttf") format("opentype");
}

@font-face {
  font-family: "Brown-LI";
  src: url("fonts/BrownCondLLTT-LightItalic.ttf") format("opentype");
}

html, body {
  font-family: 'Open Sans', 'Segoe UI', sans-serif;
  background-color: rgb(252, 252, 252);
  color: #232323;
  line-height: 1.6;
}

input, button, textarea, select {
  font: inherit;
  color: inherit;
}

a {
  color: inherit;
  text-decoration: underline;
  transition: color 0.2s;
}

a:hover {
  color: #bd1e0c;
}

img, svg {
  display: block;
  max-width: 100%;
}

/* Layout */
.container.formulaire-page {
  max-width: 1000px;
  margin: 0 auto;
  padding: 60px 50px;
  background-color: white;
}

form {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 40px;
}

h1 {
  font-size: 3.5rem;
  font-weight: 700;
  margin-top: 5rem;
  margin-bottom: 5rem;
  line-height: 1.1;
}

h2 {
  grid-column: 1 / -1;
  font-size: 1.1rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  margin-top: 2rem;
  margin-bottom: 1rem;
  padding-bottom: 0.4rem;
  border-bottom: 1.5px solid #232323;
}

p {
  color: #666666;
  font-size: 0.95rem;
  margin-bottom: 1.5rem;
}

.form-subtitle {
  margin-bottom: 2.5rem;
  line-height: 1.6;
}

.required-star {
  color: #bd1e0c;
  font-weight: 800;
  font-size: 1.3rem;
  display: inline-block;
  transform: rotate(-20deg);
  line-height: 0;
  vertical-align: middle;
  margin: 0 0.25rem;
}

strong {
  font-weight: 600;
}

small {
  display: block;
  font-size: 0.85rem;
  color: #666666;
}

/* Forms */
.form-group {
  display: flex;
  flex-direction: column;
}

.form-group label {
  font-size: 0.8rem;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  margin-bottom: 0.5rem;
  font-weight: 600;
}

.form-group label:has(input[type="checkbox"]) {
  display: flex;
  align-items: flex-start;
  text-transform: none;
  letter-spacing: normal;
  font-weight: 400;
  font-size: 0.95rem;
}

input[type="text"],
input[type="date"],
input[type="time"],
input[type="number"],
input[type="tel"],
input[type="url"],
input[type="email"],
textarea,
select {
  width: 100%;
  padding: 12px 0;
  background-color: transparent;
  border: none;
  border-bottom: 1px solid #232323;
  font-size: 0.95rem;
  transition: border-color 0.2s;
}

input::placeholder,
textarea::placeholder {
  color: #666666;
  opacity: 0.6;
}

input:focus,
textarea:focus,
select:focus {
  outline: none;
  border-bottom-color: #bd1e0c;
  background-color: #bd1e0c10;
}

textarea {
  resize: none;
  min-height: 120px;
  overflow: hidden;
}

select {
  appearance: none;
  background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23232323' stroke-width='2'%3e%3cpolyline points='6 9 12 15 18 9'%3e%3c/polyline%3e%3c/svg%3e");
  background-repeat: no-repeat;
  background-position: right 0 center;
  background-size: 16px;
  padding-right: 20px;
  cursor: pointer;
}

input[type="checkbox"] {
  width: 18px;
  height: 18px;
  margin-right: 10px;
  cursor: pointer;
  accent-color: #bd1e0c;
  flex-shrink: 0;
  margin-top: 4px;
}

.form-group:has(textarea),
.form-group:has(.checkbox-label) {
  grid-column: 1 / -1;
}

/* class utilitaire pour forcer un form-group à occuper les deux colonnes */
.form-group.full-width {
  grid-column: 1 / -1;
}

/* DISCIPLINE */
.disciplines-section {
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 40px;
  align-items: start;
}

.disciplines-inputs {
  display: flex;
  flex-direction: column;
  gap: 0;
}

.disciplines-inputs .form-group {
  margin-bottom: 1.5rem;
}

.disciplines-note {
  padding: 20px;
}

.distribution-note {
  margin-bottom: 1rem;
}

.distribution-note small {
  color: #888;
  font-style: italic;
  line-height: 1.4;
}

.disciplines-note p {
  margin-bottom: 0.75rem;
  font-size: 0.9rem;
  line-height: 1.5;
}

.disciplines-note p:first-child {
  font-size: 1rem;
  margin-bottom: 1rem;
}

.disciplines-note p:last-child {
  margin-bottom: 0;
  color: #666666;
}

/* Media & Files */
.media-entry,
.date-entry,
.previewDate-entry,
.contact-entry,
.distribution-entry {
  display: grid;
  grid-template-columns: 1fr auto auto;
  gap: 15px;
  align-items: end;
  padding: 12px 0;
  border-bottom: 1px solid #e0e0e0;
}

/* Prévient les images de grandes tailles intrinsèques (par ex. largeur naturelle de l'image) de forcer la colonne 1fr
   à être plus large que l'espace disponible. Sans cela, une <img> avec min-width:auto
   rend la colonne "1fr" au moins aussi large que la largeur intrinsèque de l'image,
   provoquant un débordement horizontal de toute la grille du formulaire. */
.media-entry > * {
  min-width: 0;
}

.media-entry:last-child,
.date-entry:last-child,
.previewDate-entry:last-child,
.contact-entry:last-child,
.distribution-entry:last-child {
  border-bottom: none;
}

.contact-entry,
.distribution-entry {
  grid-column: 1 / -1;
  display: flex;
  flex-wrap: wrap;
  gap: 15px;
  align-items: flex-end;
  padding: 12px 0;
  border-bottom: 1px solid #e0e0e0;
}

.contact-type {
  flex: 0 0 200px;
  padding: 12px 0;
  background-color: transparent;
  border: none;
  border-bottom: 1px solid #232323;
  font-size: 0.95rem;
  cursor: pointer;
  transition: border-color 0.2s;
}

.contact-type:focus {
  outline: none;
  border-bottom-color: #bd1e0c;
  background-color: #bd1e0c10;
}

.contact-name,
.contact-email,
.contact-phone,
.contact-mobile {
  flex: 1;
  min-width: 140px;
  padding: 12px 0;
  background-color: transparent;
  border: none;
  border-bottom: 1px solid #232323;
  font-size: 0.95rem;
  transition: border-color 0.2s;
}

.dist-role,
.dist-name {
  flex: 1;
  min-width: 200px;
}

.distribution-entry textarea,
.dist-shortbio {
  flex-basis: 100%;
  width: 100%;
  min-height: 100px;
  margin-top: 6px;
  padding: 10px 0;
  border: none;
  border-bottom: 1px solid #232323;
  background-color: transparent;
}


.char-counter {
  font-size: 0.85rem;
  color: #666;
  margin-top: 6px;
}

.dist-print-toggle {
  display: flex;
  flex-direction: column;
  gap: 5px;
}

.dist-print-toggle label {
  font-size: 0.7rem;
  text-transform: uppercase;
  font-weight: 600;
}

.dist-print-toggle select {
  padding: 8px 0;
  min-width: 80px;
}

.btn-remove-dist {
  background-color: transparent;
  border: 1px solid #666666;
  color: #666666;
  padding: 6px 12px;
  font-size: 0.85rem;
  cursor: pointer;
  transition: all 0.2s;
  align-self: flex-end;
}

.btn-remove-dist:hover {
  background-color: #bd1e0c;
  border: 1px solid #bd1e0c;
  color: white;
}

.contact-name:focus,
.contact-email:focus,
.contact-phone:focus,
.contact-mobile:focus {
  outline: none;
  border-bottom-color: #bd1e0c;
  background-color: #bd1e0c10;
}

.media-input {
  display: none;
}

.file-name {
  color: #666666;
  font-size: 0.8rem;
  cursor: pointer;
  border: 1px solid #666666;
  padding: 6px 12px;
  max-width: 150px;
  overflow-wrap: break-word;
}

#dates-container,
#previewDates-container,
#contacts-container,
#images-container,
#videos-container,
#dossierInformatif-container,
#dossierPedagogique-container {
  margin-bottom: 1rem;
  padding-bottom: 1rem;
  border-bottom: 1px solid #e0e0e0;
}

/* Buttons */
.btn-remove-media,
.btn-secondary,
.btn-remove-date,
.btn-remove-contact {
  background-color: transparent;
  border: 1px solid #666666;
  color: #666666;
  padding: 6px 12px;
  font-size: 0.85rem;
  cursor: pointer;
  transition: all 0.2s;
}

.btn-remove-media:hover,
.btn-secondary:hover,
.btn-remove-date:hover,
.btn-remove-contact:hover {
  background-color: #bd1e0c;
    border: 1px solid #bd1e0c;
  color: white;
}

.btn-secondary {
  margin-top: 1rem;
  padding: 10px 16px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.5px;
}

button[type="submit"],
input[type="submit"],
.btn.btn-primary {
  grid-column: span 2;
  margin-top: 2rem;
  padding: 12px 32px;
  background-color: black;
  color: white;
  border: none;
  font-weight: 600;
  cursor: pointer;
  transition: background-color 0.2s;
  width: fit-content;
  align-self: center;
}

button[type="submit"]:hover,
input[type="submit"]:hover {
  background-color: #333333;
}

.title-section {
  grid-column: 1 / -1;
  margin-bottom: 7rem;
}

.main-title-group input[type="text"] {
  font-size: 3.5rem;
  font-weight: 700;
  line-height: 1.1;
  border: none;
  border-bottom: 2px solid transparent;
  padding: 0;
  margin-top: 2rem;
  font-family: 'Open Sans', 'Segoe UI', sans-serif;
}

.main-title-group input[type="text"]:focus {
  border-bottom-color: #bd1e0c;
  background-color: #bd1e0c10;
}

/* Messages */
.alert {
  margin-bottom: 2rem;
  padding: 1.5rem;
}

.success {
  background-color: #f0f8f5;
  display: flex;
  flex-direction: column;
  align-items: center;
}

.success p {
  text-align: center;
}

.errors {
  background-color: #fef5f5;
  color: #bd1e0c;
  border-left: 4px solid #bd1e0c;
}

.errors ul {
  list-style: none;
}

.errors li {
  margin-bottom: 0.5rem;
}

.errors li:last-child {
  margin-bottom: 0;
}

.alert.alert-info {
  background-color: #f0f8ff;
  color: #2c3e50;
}

.form-group p {
  display: inline;
  margin-bottom: 0;
  margin-left: 8px;
  font-size: 0.85rem;
  color: #666666;
}

.checkbox-label {
  width: 100%;
}

/* Responsive */
@media (max-width: 768px) {
  .container.formulaire-page {
    padding: 50px 40px;
  }

  h1 {
    font-size: 2.5rem;
    margin-bottom: 1.5rem;
  }

  form {
    grid-template-columns: 1fr;
    gap: 30px;
  }

  /* Make media/file upload rows stack on small screens so buttons and hints don't overflow */
  .media-entry {
    grid-template-columns: 1fr;
    gap: 10px;
    align-items: start;
  }

  .media-entry .file-name {
    max-width: 100%;
    display: block;
    white-space: normal;
    overflow-wrap: anywhere;
    word-break: break-word;
  }

  .media-entry .btn-remove-media {
    justify-self: start;
  }

  /* Force contact and distribution rows to stack and prevent min-width overflow */
  .contact-entry,
  .distribution-entry,
  .date-entry,
  .previewDate-entry {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 10px;
    padding: 8px 0;
  }

  .contact-type {
    flex: none !important;
    width: 100% !important;
    min-width: 0 !important;
    padding: 8px 0;
  }

  .contact-name,
  .contact-email,
  .contact-phone,
  .contact-mobile,
  .dist-role,
  .dist-name {
    flex: none !important;
    width: 100% !important;
    min-width: 0 !important;
  }

  /* Ensure distribution textareas and short bios expand full width without forcing the layout */
  .distribution-entry textarea,
  .dist-shortbio {
    width: 100% !important;
    min-width: 0 !important;
  }

  button[type="submit"],
  input[type="submit"],
  .btn.btn-primary {
    grid-column: 1;
  }
}

@media (max-width: 480px) {
  .container.formulaire-page {
    padding: 40px 30px;
  }

  h1 {
    font-size: 2rem;
  }

  form {
    gap: 20px;
  }

  input,
  textarea,
  select {
    padding: 8px 0;
    font-size: 16px;
  }
}

/* Language badges pour champs bilingues (FR/EN) */
.lang-label {
  display: inline-block;
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  padding: 1px 6px;
  border-radius: 3px;
  margin-right: 4px;
  vertical-align: middle;
}
.lang-fr {
  background-color: #00239520;
  color: #002395;
}
.lang-en {
  background-color: #CF142B20;
  color: #CF142B;
}

.tags-field {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 8px;
  align-items: center;
}

.tag-checkbox {
  display: inline-flex;
  align-items: center;
  font-size: 0.85rem;
  padding: 4px 10px;
  border: 1px solid #ccc;
  border-radius: 4px;
  cursor: pointer;
  transition: all 0.2s;
  user-select: none;
}

.tag-checkbox:hover {
  border-color: #bd1e0c;
  background-color: #bd1e0c10;
}

.tag-checkbox:has(input:checked) {
  border-color: #bd1e0c;
  background-color: #bd1e0c15;
}

.tag-checkbox input[type="checkbox"] {
  width: 14px;
  height: 14px;
  margin-right: 6px;
  margin-top: 0;
}

.tag-other {
  padding: 6px 10px;
  border: 1px solid #ccc;
  border-radius: 4px;
  font-size: 0.85rem;
  background: transparent;
  min-width: 160px;
}

.tag-other:focus {
  outline: none;
  border-color: #bd1e0c;
  background-color: #bd1e0c10;
}

[lang]:not(html) {
    display: none;
}

html[lang="fr"] [lang="fr"]:not(html),
html[lang="en"] [lang="en"]:not(html) {
    display: revert;
}