/* Socle commun : navigation et densité cohérentes, sans styles métier déplacés. */
:root {
  --ui-space: 1rem;
  --ui-radius: .75rem;
  --ui-border: #d8e2dc;
  --ui-ink: #173c32;
}
.app-header { padding: 1rem max(1rem, calc((100vw - 1180px) / 2)); gap: 1rem; }
.app-header .header-actions { gap: .75rem; justify-content: flex-end; }
.app-header .badge { font-size: .7rem; padding: .35rem .6rem; }
.app-header .user-link { max-width: 15rem; }
.app-nav { padding: .5rem max(1rem, calc((100vw - 1180px) / 2)); gap: .25rem; }
.app-nav a { min-height: 44px; display: inline-flex; align-items: center; font-weight: 600; }
.app-nav a[aria-current] { box-shadow: inset 0 -3px #215e4e; }
.settings { position: relative; }
.settings summary {
  list-style: none; display: flex; align-items: center; justify-content: center;
  gap: .5rem; min-height: 44px; padding: .6rem .8rem; border: 1px solid var(--ui-border);
  border-radius: .5rem; color: var(--ui-ink); background: white; cursor: pointer; font-size: .875rem;
}
.settings summary::-webkit-details-marker { display: none; }
.settings summary span[aria-hidden] { font-size: 1.3rem; line-height: 1; }
.settings[open] summary { background: #e7efe7; }
.settings nav {
  position: absolute; z-index: 30; right: 0; top: calc(100% + .5rem);
  width: min(21rem, calc(100vw - 2rem)); display: flex; flex-direction: column;
  gap: .25rem; padding: .5rem; border: 1px solid var(--ui-border); border-radius: var(--ui-radius);
  box-shadow: 0 .5rem 1.5rem #173c3220;
}
.settings:not([open]) nav { display: none; }
.settings nav a { display: flex; align-items: center; min-height: 44px; overflow-wrap: anywhere; }
.global-search { max-width: 1180px; margin: 0 auto; padding: 1rem 2rem 0; }
#contenu { padding: 2rem; }
#contenu h1 { font-size: clamp(1.75rem, 3.5vw, 2.35rem); line-height: 1.2; letter-spacing: -.04em; margin: .75rem 0 1rem; }
#contenu h2 { font-size: 1.35rem; line-height: 1.3; letter-spacing: -.015em; }
#contenu .intro { font-size: 1rem; line-height: 1.6; }
.page-heading { align-items: flex-start; gap: 1.5rem; flex-wrap: wrap; }
.panel { padding: 1.5rem; margin: 1.5rem 0; border-color: var(--ui-border); border-radius: var(--ui-radius); }
.actions { gap: .75rem; margin-top: 1rem; }
.button { border-radius: .5rem; }
.button.small { min-height: 44px; }
.stack input:not([type=checkbox]):not([type=radio]), .stack select, .stack textarea { border-radius: .5rem; }
.stack input[type=checkbox], .stack input[type=radio] { flex: 0 0 auto; }
.table-wrap { border-radius: .5rem; }
.notice { line-height: 1.5; }
.skip:focus { z-index: 50; }
summary:focus-visible, textarea:focus-visible { outline: 3px solid #b26d23; outline-offset: 3px; }
@media (max-width: 700px) {
  .app-header { align-items: flex-start; flex-wrap: wrap; }
  .app-header .header-actions { flex: 1 1 100%; gap: .5rem; }
  .app-header .user-link { margin-right: auto; max-width: 11rem; }
  .app-header .badge { display: none; }
  .app-nav { flex-wrap: nowrap; overflow-x: auto; padding: .5rem 1rem; }
  .app-nav a { flex-shrink: 0; white-space: nowrap; }
  #contenu { padding: 1.5rem 1rem; }
  .global-search { padding: 1rem 1rem 0; }
  .panel { padding: 1rem; }
  .page-heading { gap: .75rem; }
}
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }
/* Shared production landmarks and camera capture. */
.production-journey { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:1rem; padding:0; list-style:none; margin:2rem 0; }
.production-journey li { background:#fff; border:1px solid #d9e2e8; border-radius:12px; padding:1.25rem; }
.journey-number { display:inline-grid; place-items:center; width:2.25rem; height:2.25rem; border-radius:50%; background:#164e63; color:white; font-weight:700; }
.production-sections { display:flex; flex-wrap:wrap; align-items:start; gap:1rem; padding:1rem 0; background:transparent; }
.production-sections details { padding:.4rem; }
.production-sections details[open] { background:#f1f5f9; border-radius:8px; }
.production-sections details a { display:block; padding:.5rem; }
.camera-entry { background:#edf7f7; padding:1.25rem; border-radius:12px; margin:1.5rem 0; }
.camera-entry select { display:block; width:min(100%,32rem); margin:.5rem 0 1rem; }
#proof-camera { width:min(42rem,calc(100vw - 2rem)); max-height:90vh; overflow:auto; border:1px solid #bccdd5; border-radius:12px; padding:1.5rem; }
#proof-camera::backdrop { background:rgba(15,23,42,.65); }
#camera-video { display:block; width:100%; max-height:45vh; background:#17212d; margin:1rem 0; }
#camera-device { max-width:100%; }
.manual-proof { margin-top:.75rem; }
@media(max-width:900px) { .production-journey { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media(max-width:550px) { .production-journey { grid-template-columns:1fr; } }
.settings-icon { width:1.3rem; height:1.3rem; flex:none; }
#instruction-preview { max-width:100%; height:auto; border-radius:.5rem; }

/* Preserve native hidden semantics against the shared button display rule. */
.button[hidden] { display: none !important; }
